From ae882462049ad75fceb6240f28ef66571896e4e6 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Mon, 30 Jan 2023 12:37:18 +0100 Subject: [PATCH 001/136] Update version to 1.9.0-dev --- .github/ISSUE_TEMPLATE/bug-oder-fehler.md | 2 +- build.gradle | 2 +- src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java | 2 +- src/main/resources/mcmod.info | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-oder-fehler.md b/.github/ISSUE_TEMPLATE/bug-oder-fehler.md index 52e9f384a..671106af9 100644 --- a/.github/ISSUE_TEMPLATE/bug-oder-fehler.md +++ b/.github/ISSUE_TEMPLATE/bug-oder-fehler.md @@ -25,4 +25,4 @@ Füge gegebenenfalls Screenshots hinzu, um das Problem zu erläutern. **Weitere Informationen (bitte ausfüllen):** Minecraft Version: `1.12.2` -Addon Version: `1.8.0` +Addon Version: `1.9.0-dev` diff --git a/build.gradle b/build.gradle index f4c7c6314..3be9d1552 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ apply plugin: 'net.minecraftforge.gradle' apply plugin: 'idea' apply plugin: 'maven-publish' -version = '1.8.0' +version = '1.9.0-dev' group = 'com.rettichlp' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'UnicacityAddon' diff --git a/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java b/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java index 95faf6acc..e693f445b 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java +++ b/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java @@ -34,7 +34,7 @@ @Mod(name = "UnicacityAddon", modid = "unicacityaddon", version = UnicacityAddon.VERSION, clientSideOnly = true, acceptedMinecraftVersions = "[1.12,1.12.2]") public class UnicacityAddon extends LabyModAddon { - public static final String VERSION = "1.8.0"; + public static final String VERSION = "1.9.0-dev"; public static final Minecraft MINECRAFT = Minecraft.getMinecraft(); public static UnicacityAddon ADDON; public static final Logger LOGGER = LogManager.getLogger(); diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 19a8ace03..e0e91ea5c 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "unicacityaddon", "name": "UnicacityAddon", "description": "This addon is a modification for UnicaCity providing specialized and nice-to-have features and utilities for everyday gameplay.", - "version": "1.8.0", + "version": "1.9.0-dev", "mcversion": "1.12.2", "url": "", "updateUrl": "", From 99237163bd4510180ada7a795d6c5f205e587aae Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 31 Jan 2023 12:30:14 +0100 Subject: [PATCH 002/136] Add weapon enum and Armament scratch --- .../unicacityaddon/base/enums/Weapon.java | 33 +++++++++++++++++++ .../unicacityaddon/base/models/Armament.java | 18 ++++++++++ .../unicacityaddon/base/models/Data.java | 3 ++ .../events/WeaponClickEventHandler.java | 14 ++------ 4 files changed, 57 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/base/enums/Weapon.java create mode 100644 src/main/java/com/rettichlp/unicacityaddon/base/models/Armament.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/enums/Weapon.java b/src/main/java/com/rettichlp/unicacityaddon/base/enums/Weapon.java new file mode 100644 index 000000000..aaf6dcf4e --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/base/enums/Weapon.java @@ -0,0 +1,33 @@ +package com.rettichlp.unicacityaddon.base.enums; + +import com.rettichlp.unicacityaddon.base.text.ColorCode; + +import java.util.Arrays; + +public enum Weapon { + M4("M4"), + MP5("MP5"), + PISTOLE("Pistole"), + HUNTING_RIFLE("Jagdflinte"); + + private final String name; + + Weapon(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public String getItemName() { + return ColorCode.DARK_GRAY.getCode() + name; + } + + public static Weapon getWeaponByItemName(String displayName) { + return Arrays.stream(Weapon.values()) + .filter(weapon -> displayName.equalsIgnoreCase(weapon.getItemName())) + .findFirst() + .orElse(null); + } +} diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/Armament.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/Armament.java new file mode 100644 index 000000000..7392c4178 --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/Armament.java @@ -0,0 +1,18 @@ +package com.rettichlp.unicacityaddon.base.models; + +public class Armament { + + // TODO: 29.01.2023 Variablen: + // Waffe -> Enum TODO: Anlegen + // Ammunition -> Integer (int) + + // TODO: 29.01.2023 Constructor + // alle Variablen + + // TODO: 29.01.2023 Getter + // alle Variablen +} + + +// TODO: 29.01.2023 not last as name +// TODO: 29.01.2023 add last event listener + pattern (Du hast deine xyz mit abc Kugeln beladen usw.) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java index 2e056584d..9b5e52d54 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java @@ -25,6 +25,9 @@ @Setter public class Data { + @Builder.Default + private List armamentList = Collections.emptyList(); + @Builder.Default private int bankBalance = 0; diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/WeaponClickEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/WeaponClickEventHandler.java index cc4923076..071c36247 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/WeaponClickEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/WeaponClickEventHandler.java @@ -1,8 +1,8 @@ package com.rettichlp.unicacityaddon.events; -import com.google.common.collect.ImmutableSet; import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.enums.Weapon; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.ColorCode; import net.minecraft.item.ItemStack; @@ -13,7 +13,6 @@ import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import java.util.Set; import java.util.concurrent.TimeUnit; /** @@ -23,7 +22,6 @@ @UCEvent public class WeaponClickEventHandler { - private static final Set WEAPONS = ImmutableSet.of("§8M4", "§8MP5", "§8Pistole", "§8Jagdflinte"); public static boolean tazerLoaded = false; private long tazerLastWarningSend = 0; @@ -33,7 +31,8 @@ public void onPlayerInteract(PlayerInteractEvent e) { return; ItemStack is = e.getItemStack(); - if (!isWeapon(is)) + Weapon weapon = Weapon.getWeaponByItemName(is.getDisplayName()); + if (weapon == null) return; tazerLoaded = false; @@ -69,13 +68,6 @@ private static String getText(ItemStack is) { return (--munition < 1 ? ColorCode.RED.getCode() + "0" : ColorCode.GOLD.getCode() + munition) + ColorCode.GRAY.getCode() + "/" + ColorCode.GOLD.getCode() + splittedLore[1]; } - private boolean isWeapon(ItemStack is) { - if (is == null) - return false; - - return WEAPONS.contains(is.getDisplayName()); - } - @SubscribeEvent public void onChat(ClientChatReceivedEvent e) { String message = e.getMessage().getUnformattedText(); From 4fa42f7ad83dc112588eab05caf6a90c56ab2377 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 31 Jan 2023 12:56:24 +0100 Subject: [PATCH 003/136] Update WeaponEventHandler and add ammunition get pattern to PatternHandler --- .../base/text/PatternHandler.java | 15 +-- .../events/WeaponClickEventHandler.java | 94 ------------------- .../events/WeaponEventHandler.java | 77 +++++++++++++++ 3 files changed, 79 insertions(+), 107 deletions(-) delete mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/WeaponClickEventHandler.java create mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/WeaponEventHandler.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index a8a06a738..165adcd5e 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -143,7 +143,6 @@ public class PatternHandler { public static final Pattern RECIPE_ACCEPT_PATTERN = Pattern.compile("^((?:\\[UC])*\\w+) möchte dir ein Rezept für 200\\$ verkaufen\\.$"); public static final Pattern RECIPE_GIVE_PATTERN = Pattern.compile("^Du hast ((?:\\[UC])*\\w+) ein Rezept für (Antibiotika|Hustensaft|Schmerzmittel) ausgestellt\\.$"); public static final Pattern REVIVE_BY_MEDIC_START_PATTERN = Pattern.compile("^Du wirst von (?:\\[UC])*(\\w+) wiederbelebt\\.$"); - // TODO: 22.01.2023 public static final Pattern REVIVE_BY_MEDIC_FINISH_PATTERN = Pattern.compile("^Du lebst nun wieder\\.$"); public static final Pattern REVIVE_START_PATTERN = Pattern.compile("^Du beginnst mit der Wiederbelebung von ((?:\\[UC])*\\w+)\\."); public static final Pattern REVIVE_FAILURE_PATTERN = Pattern.compile("^Verdammt\\.\\. mein Kopf dröhnt so\\.\\.\\.$"); public static final Pattern FIRST_AID_RECEIVE_PATTERN = Pattern.compile("^\\[Erste-Hilfe] Notarzt (?:\\[UC])*(\\w+) hat dir einen Erste-Hilfe-Schein für 14 Tage ausgestellt\\.$"); @@ -269,6 +268,7 @@ public class PatternHandler { /** * Pattern for house interaction * + * @see com.rettichlp.unicacityaddon.events.WeaponEventHandler * @see com.rettichlp.unicacityaddon.events.house.HouseDataEventHandler * @see com.rettichlp.unicacityaddon.events.house.HouseInteractionEventHandler * @see com.rettichlp.unicacityaddon.events.house.HouseRenterEventHandler @@ -284,6 +284,7 @@ public class PatternHandler { public static final Pattern HOUSE_STORAGE_REMOVE_COMMAND_PATTERN = Pattern.compile("^/drogenlager get (?.+) (?\\d+) (?\\d)$"); public static final Pattern HOUSE_AKKU_PATTERN = Pattern.compile("^Du hast begonnen deinen Akku aufzuladen\\.\\.\\.$"); public static final Pattern HOUSE_HEAL_PATTERN = Pattern.compile("^Du hast begonnen dich zu heilen\\.\\.\\.$"); + public static final Pattern HOUSE_AMMUNITION_PATTERN = Pattern.compile("^\\[Waffenschrank] Du hast deine (?.+) mit (?\\d+) Kugeln beladen\\.$"); /** * Pattern for equip interaction @@ -309,16 +310,4 @@ public class PatternHandler { */ public static final Pattern BUY_INTERRUPTED_PATTERN = Pattern.compile("^Verkäufer: (Tut (uns|mir) Leid|Verzeihung), unser Lager ist derzeit leer\\.$" + "|^Verkäufer: Dieses Produkt kostet \\d+\\$\\.$" + "|^Verkäufer: Du hast leider nicht genug Geld dabei\\.$"); - - /** - * Pattern for Duty Check - * - * @see com.rettichlp.unicacityaddon.events.faction.DutyEventHandler - */ - public static final Pattern DUTY_JOIN_PATTERN = Pattern.compile("^Du bist nun als Arzt im Dienst!$" + - "|^Du bist nun im FBI Dienst!$" + - "|^Du bist nun im Polizei Dienst!$"); - public static final Pattern DUTY_LEAVE_PATTERN = Pattern.compile("^Du bist nun nicht mehr als Arzt Dienst!$" + - "|^Du bist nun nicht mehr im FBI Dienst!$" + - "|^Du bist nun nicht mehr im Polizei Dienst!$"); } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/WeaponClickEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/WeaponClickEventHandler.java deleted file mode 100644 index 071c36247..000000000 --- a/src/main/java/com/rettichlp/unicacityaddon/events/WeaponClickEventHandler.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.rettichlp.unicacityaddon.events; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; -import com.rettichlp.unicacityaddon.base.enums.Weapon; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import net.minecraftforge.common.util.Constants; -import net.minecraftforge.event.entity.player.PlayerInteractEvent; -import net.minecraftforge.fml.common.eventhandler.EventPriority; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; - -import java.util.concurrent.TimeUnit; - -/** - * @author RettichLP - * @see UCUtils by paulzhng - */ -@UCEvent -public class WeaponClickEventHandler { - - public static boolean tazerLoaded = false; - private long tazerLastWarningSend = 0; - - @SubscribeEvent(priority = EventPriority.HIGHEST) - public void onPlayerInteract(PlayerInteractEvent e) { - if (!(e instanceof PlayerInteractEvent.RightClickItem || e instanceof PlayerInteractEvent.RightClickBlock || e instanceof PlayerInteractEvent.EntityInteractSpecific)) - return; - - ItemStack is = e.getItemStack(); - Weapon weapon = Weapon.getWeaponByItemName(is.getDisplayName()); - if (weapon == null) - return; - - tazerLoaded = false; - handleMunitionDisplay(is); - } - - private static void handleMunitionDisplay(ItemStack is) { - String text = getText(is); - if (text == null) - return; - - UnicacityAddon.MINECRAFT.ingameGUI.setOverlayMessage(text, true); - } - - private static String getText(ItemStack is) { - NBTTagCompound nbt = is.getTagCompound(); - if (nbt == null) - return null; - - NBTTagCompound display = nbt.getCompoundTag("display"); - - String lore = display.getTagList("Lore", Constants.NBT.TAG_STRING).getStringTagAt(0); - String[] splittedLore = lore.split("/"); - if (splittedLore.length != 2) - return null; - - String munitionString = splittedLore[0]; - if (munitionString.length() < 2) - return null; - - int munition = Integer.parseInt(munitionString.substring(2)); - - return (--munition < 1 ? ColorCode.RED.getCode() + "0" : ColorCode.GOLD.getCode() + munition) + ColorCode.GRAY.getCode() + "/" + ColorCode.GOLD.getCode() + splittedLore[1]; - } - - @SubscribeEvent - public void onChat(ClientChatReceivedEvent e) { - String message = e.getMessage().getUnformattedText(); - if (message.equals("Dein Tazer ist nun bereit!")) { - tazerLoaded = true; - } else if (message.equals("Dein Tazer ist nun nicht mehr bereit!") || message.equals("Dein Tazer muss sich noch aufladen...")) { - tazerLoaded = false; - } - } - - @SubscribeEvent - public void onWeaponInteract(PlayerInteractEvent e) { - if (!tazerLoaded) - return; - if (!(e instanceof PlayerInteractEvent.LeftClickBlock || e instanceof PlayerInteractEvent.EntityInteractSpecific || e instanceof PlayerInteractEvent.LeftClickEmpty)) - return; - - if (System.currentTimeMillis() - tazerLastWarningSend < TimeUnit.SECONDS.toMillis(5)) - return; - - AbstractionLayer.getPlayer().sendInfoMessage("Achtung! Dein Tazer ist geladen!"); - tazerLastWarningSend = System.currentTimeMillis(); - } -} \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/WeaponEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/WeaponEventHandler.java new file mode 100644 index 000000000..369520325 --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/events/WeaponEventHandler.java @@ -0,0 +1,77 @@ +package com.rettichlp.unicacityaddon.events; + +import com.rettichlp.unicacityaddon.UnicacityAddon; +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.enums.Weapon; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.common.util.Constants; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.fml.common.eventhandler.EventPriority; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.util.concurrent.TimeUnit; + +/** + * @author RettichLP + * @see UCUtils by paulzhng + */ +@UCEvent +public class WeaponEventHandler { + + public static boolean tazerLoaded = false; + private long tazerLastWarningSend = 0; + + @SubscribeEvent + public void onChatReceived(ClientChatReceivedEvent e) { + String message = e.getMessage().getUnformattedText(); + if (message.equals("Dein Tazer ist nun bereit!")) { + tazerLoaded = true; + } else if (message.equals("Dein Tazer ist nun nicht mehr bereit!") || message.equals("Dein Tazer muss sich noch aufladen...")) { + tazerLoaded = false; + } + } + + @SubscribeEvent(priority = EventPriority.HIGHEST) + public void onPlayerInteract(PlayerInteractEvent e) { + if (tazerLoaded && System.currentTimeMillis() - tazerLastWarningSend > TimeUnit.SECONDS.toMillis(5) && (e instanceof PlayerInteractEvent.LeftClickBlock || e instanceof PlayerInteractEvent.LeftClickEmpty || e instanceof PlayerInteractEvent.EntityInteractSpecific)) { + AbstractionLayer.getPlayer().sendInfoMessage("Achtung! Dein Tazer ist geladen!"); + tazerLastWarningSend = System.currentTimeMillis(); + } + + if (e instanceof PlayerInteractEvent.RightClickItem || e instanceof PlayerInteractEvent.RightClickBlock || e instanceof PlayerInteractEvent.EntityInteractSpecific) { + ItemStack is = e.getItemStack(); + Weapon weapon = Weapon.getWeaponByItemName(is.getDisplayName()); + if (weapon != null) { + tazerLoaded = false; + handleMunitionDisplay(is); + } + } + } + + private void handleMunitionDisplay(ItemStack is) { + String text = getText(is); + UnicacityAddon.MINECRAFT.ingameGUI.setOverlayMessage(text != null ? text : "", true); + } + + private String getText(ItemStack is) { + NBTTagCompound nbt = is.getTagCompound(); + if (nbt != null) { + NBTTagCompound display = nbt.getCompoundTag("display"); + String lore = display.getTagList("Lore", Constants.NBT.TAG_STRING).getStringTagAt(0); + String[] splittedLore = lore.split("/"); + + if (splittedLore.length == 2) { + String munitionString = splittedLore[0]; + if (munitionString.length() >= 2) { + int munition = Integer.parseInt(munitionString.substring(2)); + return (--munition < 1 ? ColorCode.RED.getCode() + "0" : ColorCode.GOLD.getCode() + munition) + ColorCode.GRAY.getCode() + "/" + ColorCode.GOLD.getCode() + splittedLore[1]; + } + } + } + return null; + } +} \ No newline at end of file From c426ca40c104e726715b1a44fc4c033f7a3c5fe6 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 31 Jan 2023 17:21:09 +0100 Subject: [PATCH 004/136] Add HouseBankGetCommand to get all in house bank --- .../unicacityaddon/base/models/HouseData.java | 4 + .../commands/house/HouseBankGetCommand.java | 94 +++++++++++++++++++ .../events/house/HouseDataEventHandler.java | 5 +- 3 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/HouseData.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/HouseData.java index f141d39d0..b5e7644b2 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/models/HouseData.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/HouseData.java @@ -59,6 +59,10 @@ public HouseData(int houseNumber) { DrugPurity.BAD, 0)); } + public int getHouseBank() { + return houseBank; + } + public HouseData setHouseBank(int houseBank) { this.houseBank = houseBank; return this; diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java new file mode 100644 index 000000000..5339eb64e --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java @@ -0,0 +1,94 @@ +package com.rettichlp.unicacityaddon.commands.house; + +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; +import com.rettichlp.unicacityaddon.base.manager.HouseDataManager; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; +import com.rettichlp.unicacityaddon.base.utils.TextUtils; +import com.rettichlp.unicacityaddon.events.house.HouseDataEventHandler; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.client.IClientCommand; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.Collections; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +/** + * @author RettichLP + */ +@UCCommand +public class HouseBankGetCommand implements IClientCommand { + + @Override + @Nonnull + public String getName() { + return "hauskasse"; + } + + @Override + @Nonnull + public String getUsage(@Nonnull ICommandSender sender) { + return "/hauskasse"; + } + + @Override + @Nonnull + public List getAliases() { + return Collections.singletonList("hkasse"); + } + + @Override + public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender) { + return true; + } + + @Override + @Nonnull + public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { + return TabCompletionBuilder.getBuilder(args) + .addAtIndex(1, "get", "drop", "info") + .addAtIndex(2, "all") + .build(); + } + + @Override + public boolean isUsernameIndex(@Nonnull String[] args, int index) { + return false; + } + + @Override + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { + UPlayer p = AbstractionLayer.getPlayer(); + if (args.length > 1 && args[1].equalsIgnoreCase("all")) { + p.sendChatMessage("/hkasse"); + HouseDataEventHandler.lastCheck = System.currentTimeMillis(); + new Timer().schedule(new TimerTask() { + @Override + public void run() { + int houseBankBalance = HouseDataManager.getHouseData(HouseDataEventHandler.lastCheckedHouseNumber).getHouseBank(); + p.sendChatMessage("/hauskasse get " + houseBankBalance); + } + }, 1000); + return; + } + + p.sendChatMessage("/hauskasse " + TextUtils.makeStringByArgs(args, "")); + } + + @Override + public boolean allowUsageWithoutPrefix(ICommandSender sender, String message) { + return false; + } + + @Override + public int compareTo(@Nonnull ICommand o) { + return 0; + } +} \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/house/HouseDataEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/house/HouseDataEventHandler.java index 3e0b099bc..3d1353ab2 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/house/HouseDataEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/house/HouseDataEventHandler.java @@ -25,8 +25,9 @@ @UCEvent public class HouseDataEventHandler { - private static int lastCheckedHouseNumber = 0; - private static long lastCheck = -1; + public static int lastCheckedHouseNumber = 0; + public static long lastCheck = -1; + private static String waitingCommand = Strings.EMPTY; @SubscribeEvent From 7900e622ecc34100750fe896752b516c548fa711 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Wed, 1 Feb 2023 19:05:28 +0100 Subject: [PATCH 005/136] Migrate DBankMessageEventHandler to DrugInteractionEventHandler --- .../base/text/PatternHandler.java | 1 - .../badfaction/DBankMessageEventHandler.java | 92 ------------------- .../DrugInteractionEventHandler.java | 38 ++++++++ 3 files changed, 38 insertions(+), 93 deletions(-) delete mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DBankMessageEventHandler.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 1e31b337b..8f6c71ae7 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -169,7 +169,6 @@ public class PatternHandler { * Pattern for bad faction interaction * * @see com.rettichlp.unicacityaddon.events.faction.badfaction.BannerEventHandler - * @see com.rettichlp.unicacityaddon.events.faction.badfaction.DBankMessageEventHandler * @see com.rettichlp.unicacityaddon.events.faction.badfaction.GiftEigenbedarfEventHandler * @see com.rettichlp.unicacityaddon.events.faction.badfaction.PlantEventHandler */ diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DBankMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DBankMessageEventHandler.java deleted file mode 100644 index 3c6a36724..000000000 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DBankMessageEventHandler.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.rettichlp.unicacityaddon.events.faction.badfaction; - -import com.rettichlp.unicacityaddon.base.config.ConfigElements; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.base.text.PatternHandler; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; - -import java.text.NumberFormat; -import java.util.Locale; -import java.util.regex.Matcher; - -/** - * @author Dimiikou - */ -@UCEvent -public class DBankMessageEventHandler { - - @SubscribeEvent - public void onClientChatReceived(ClientChatReceivedEvent e) { - String msg = e.getMessage().getUnformattedText(); - - if (!ConfigElements.getDrugBankMessagesActivated()) - return; - - Matcher dropMatcher = PatternHandler.DBANK_GIVE_PATTERN.matcher(msg); - if (dropMatcher.find()) { - NumberFormat numberFormat = NumberFormat.getNumberInstance(new Locale("da", "DK")); - DrugPurity purity = null; - DrugType type = null; - - for (DrugPurity drugPurity : DrugPurity.values()) - if (drugPurity.getPurityString().equals(dropMatcher.group(4))) - purity = drugPurity; - - for (DrugType drugType : DrugType.values()) - if (drugType.getDrugName().equals(dropMatcher.group(3))) - type = drugType; - - assert purity != null; - assert type != null; - e.setMessage(Message.getBuilder().of("D").color(ColorCode.GOLD).bold().advance() - .of("-").color(ColorCode.GRAY).advance() - .of("Bank").color(ColorCode.GOLD).bold().advance().space() - .of("●").color(ColorCode.DARK_GRAY).advance().space() - .of("+").color(ColorCode.GREEN).advance() - .of(dropMatcher.group(2) + "g").color(ColorCode.DARK_AQUA).bold().advance().space() - .of(purity.getPurity() + "er").color(ColorCode.DARK_AQUA).bold().advance().space() - .of(type.getShortName()).color(ColorCode.DARK_AQUA).bold().advance().space() - .of("»").color(ColorCode.GRAY).advance().space() - .of(numberFormat.format(Integer.parseInt(dropMatcher.group(5))) + "g").color(ColorCode.DARK_AQUA).bold().advance().space() - .of("|").color(ColorCode.GRAY).advance().space() - .of(dropMatcher.group(1)).color(ColorCode.DARK_AQUA).bold().advance() - .createComponent()); - } - - Matcher getMatcher = PatternHandler.DBANK_GET_PATTERN.matcher(msg); - if (getMatcher.find()) { - NumberFormat numberFormat = NumberFormat.getNumberInstance(new Locale("da", "DK")); - DrugPurity purity = null; - DrugType type = null; - - for (DrugPurity drugPurity : DrugPurity.values()) - if (drugPurity.getPurityString().equals(getMatcher.group(4))) - purity = drugPurity; - - for (DrugType drugType : DrugType.values()) - if (drugType.getDrugName().equals(getMatcher.group(3))) - type = drugType; - - assert purity != null; - assert type != null; - e.setMessage(Message.getBuilder().of("D").color(ColorCode.GOLD).bold().advance() - .of("-").color(ColorCode.GRAY).advance() - .of("Bank").color(ColorCode.GOLD).bold().advance().space() - .of("●").color(ColorCode.DARK_GRAY).advance().space() - .of("-").color(ColorCode.RED).advance() - .of(getMatcher.group(2) + "g").color(ColorCode.DARK_AQUA).bold().advance().space() - .of(purity.getPurity() + "er").color(ColorCode.DARK_AQUA).bold().advance().space() - .of(type.getShortName()).color(ColorCode.DARK_AQUA).bold().advance().space() - .of("»").color(ColorCode.GRAY).advance().space() - .of(numberFormat.format(Integer.parseInt(getMatcher.group(5))) + "g").color(ColorCode.DARK_AQUA).bold().advance().space() - .of("|").color(ColorCode.GRAY).advance().space() - .of(getMatcher.group(1)).color(ColorCode.DARK_AQUA).bold().advance() - .createComponent()); - } - } -} diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DrugInteractionEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DrugInteractionEventHandler.java index 91a1def97..d828fc6cd 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DrugInteractionEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DrugInteractionEventHandler.java @@ -7,11 +7,15 @@ import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; import com.rettichlp.unicacityaddon.base.manager.FileManager; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.base.text.Message; import com.rettichlp.unicacityaddon.base.text.PatternHandler; import net.minecraftforge.client.event.ClientChatEvent; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import java.text.NumberFormat; +import java.util.Locale; import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; @@ -52,6 +56,23 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { DrugType drugType = DrugType.getDrugType(dbankGetMatcher.group("drugType")); DrugPurity drugPurity = DrugPurity.getDrugPurity(dbankGetMatcher.group("drugPurity")); FileManager.DATA.addDrugToInventory(drugType, drugPurity, amount); + + if (ConfigElements.getDrugBankMessagesActivated()) { + NumberFormat numberFormat = NumberFormat.getNumberInstance(new Locale("da", "DK")); + e.setMessage(Message.getBuilder().of("D").color(ColorCode.GOLD).bold().advance() + .of("-").color(ColorCode.GRAY).advance() + .of("Bank").color(ColorCode.GOLD).bold().advance().space() + .of("●").color(ColorCode.DARK_GRAY).advance().space() + .of("-").color(ColorCode.RED).advance() + .of(amount + "g").color(ColorCode.DARK_AQUA).bold().advance().space() + .of(drugPurity.getPurity() + "er").color(ColorCode.DARK_AQUA).bold().advance().space() + .of(drugType.getShortName()).color(ColorCode.DARK_AQUA).bold().advance().space() + .of("»").color(ColorCode.GRAY).advance().space() + .of(numberFormat.format(Integer.parseInt(dbankGetMatcher.group(5))) + "g").color(ColorCode.DARK_AQUA).bold().advance().space() + .of("|").color(ColorCode.GRAY).advance().space() + .of(dbankGetMatcher.group(1)).color(ColorCode.DARK_AQUA).bold().advance() + .createComponent()); + } return; } @@ -61,6 +82,23 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { DrugType drugType = DrugType.getDrugType(dbankGiveMatcher.group("drugType")); DrugPurity drugPurity = DrugPurity.getDrugPurity(dbankGiveMatcher.group("drugPurity")); FileManager.DATA.removeDrugFromInventory(drugType, drugPurity, amount); + + if (ConfigElements.getDrugBankMessagesActivated()) { + NumberFormat numberFormat = NumberFormat.getNumberInstance(new Locale("da", "DK")); + e.setMessage(Message.getBuilder().of("D").color(ColorCode.GOLD).bold().advance() + .of("-").color(ColorCode.GRAY).advance() + .of("Bank").color(ColorCode.GOLD).bold().advance().space() + .of("●").color(ColorCode.DARK_GRAY).advance().space() + .of("+").color(ColorCode.GREEN).advance() + .of(amount + "g").color(ColorCode.DARK_AQUA).bold().advance().space() + .of(drugPurity.getPurity() + "er").color(ColorCode.DARK_AQUA).bold().advance().space() + .of(drugType.getShortName()).color(ColorCode.DARK_AQUA).bold().advance().space() + .of("»").color(ColorCode.GRAY).advance().space() + .of(numberFormat.format(Integer.parseInt(dbankGiveMatcher.group(5))) + "g").color(ColorCode.DARK_AQUA).bold().advance().space() + .of("|").color(ColorCode.GRAY).advance().space() + .of(dbankGiveMatcher.group(1)).color(ColorCode.DARK_AQUA).bold().advance() + .createComponent()); + } return; } From bbca09bc3ad7f9c29ec6479238a014d050990020 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Mon, 6 Feb 2023 14:37:16 +0100 Subject: [PATCH 006/136] Add play time to stats command and migrate ACCOUNT_TREUEBONUS_PATTERN handling to AccountEventHandler --- .../events/AccountEventHandler.java | 49 +++++++++++++++++++ .../events/DeathsKillsEventHandler.java | 37 -------------- 2 files changed, 49 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java index a1cf9b418..eae645b2c 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java @@ -1,12 +1,17 @@ package com.rettichlp.unicacityaddon.events; +import com.google.gson.JsonObject; import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.config.ConfigElements; import com.rettichlp.unicacityaddon.base.manager.FileManager; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.base.text.Message; import com.rettichlp.unicacityaddon.base.text.PatternHandler; +import com.rettichlp.unicacityaddon.base.utils.MathUtils; import com.rettichlp.unicacityaddon.base.utils.UpdateUtils; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -80,6 +85,50 @@ public void run() { return; } + if (PatternHandler.ACCOUNT_TREUEBONUS_PATTERN.matcher(msg).find()) { + JsonObject response = APIRequest.sendStatisticRequest(); + if (response != null) { + JsonObject gameplayJsonObject = response.getAsJsonObject("gameplay"); + int deaths = gameplayJsonObject.get("deaths").getAsInt(); + int kills = gameplayJsonObject.get("kills").getAsInt(); + float kd = gameplayJsonObject.get("kd").getAsFloat(); + int playTime = gameplayJsonObject.get("playTime").getAsInt(); + + p.sendMessage(Message.getBuilder() + .space().space() + .of("-").color(ColorCode.DARK_GRAY).advance().space() + .of("Tode").color(ColorCode.GOLD).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(deaths + " Tode").color(ColorCode.RED).advance() + .createComponent()); + + p.sendMessage(Message.getBuilder() + .space().space() + .of("-").color(ColorCode.DARK_GRAY).advance().space() + .of("Kills").color(ColorCode.GOLD).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(kills + " Kills").color(ColorCode.RED).advance() + .createComponent()); + + p.sendMessage(Message.getBuilder() + .space().space() + .of("-").color(ColorCode.DARK_GRAY).advance().space() + .of("K/D").color(ColorCode.GOLD).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(MathUtils.DECIMAL_FORMAT.format(kd)).color(ColorCode.RED).advance() + .createComponent()); + + p.sendMessage(Message.getBuilder() + .space().space() + .of("-").color(ColorCode.DARK_GRAY).advance().space() + .of("Spielzeit").color(ColorCode.GOLD).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(String.valueOf(playTime)).color(ColorCode.RED).advance() + .createComponent()); + } + return; + } + Matcher accountPayDayMatcher = PatternHandler.ACCOUNT_PAYDAY_PATTERN.matcher(msg); if (accountPayDayMatcher.find()) FileManager.DATA.setPayDayTime(Integer.parseInt(accountPayDayMatcher.group(1))); diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/DeathsKillsEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/DeathsKillsEventHandler.java index 33a27e693..8214488d1 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/DeathsKillsEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/DeathsKillsEventHandler.java @@ -1,15 +1,11 @@ package com.rettichlp.unicacityaddon.events; -import com.google.gson.JsonObject; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.enums.api.StatisticType; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; import com.rettichlp.unicacityaddon.base.text.PatternHandler; -import com.rettichlp.unicacityaddon.base.utils.MathUtils; import com.rettichlp.unicacityaddon.commands.faction.AFbankEinzahlenCommand; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -40,39 +36,6 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { APIRequest.sendStatisticAddRequest(StatisticType.KILL); AFbankEinzahlenCommand.sendClockMessage(); } - return; - } - - if (PatternHandler.ACCOUNT_TREUEBONUS_PATTERN.matcher(msg).find()) { - JsonObject response = APIRequest.sendStatisticRequest(); - if (response == null) - return; - - JsonObject gameplayJsonObject = response.getAsJsonObject("gameplay"); - int deaths = gameplayJsonObject.get("deaths").getAsInt(); - int kills = gameplayJsonObject.get("kills").getAsInt(); - float kd = gameplayJsonObject.get("kd").getAsFloat(); - - p.sendMessage(Message.getBuilder() - .of(" - ").color(ColorCode.DARK_GRAY).advance() - .of("Tode").color(ColorCode.GOLD).advance() - .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(deaths + " Tode").color(ColorCode.RED).advance() - .createComponent()); - - p.sendMessage(Message.getBuilder() - .of(" - ").color(ColorCode.DARK_GRAY).advance() - .of("Kills").color(ColorCode.GOLD).advance() - .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(kills + " Kills").color(ColorCode.RED).advance() - .createComponent()); - - p.sendMessage(Message.getBuilder() - .of(" - ").color(ColorCode.DARK_GRAY).advance() - .of("K/D").color(ColorCode.GOLD).advance() - .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(MathUtils.DECIMAL_FORMAT.format(kd)).color(ColorCode.RED).advance() - .createComponent()); } } } \ No newline at end of file From 0fdb771cee9a5b9aff7b9859908bb6c7199c9c80 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Mon, 6 Feb 2023 14:42:41 +0100 Subject: [PATCH 007/136] Add unit to play time value --- .../rettichlp/unicacityaddon/events/AccountEventHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java index eae645b2c..ef5c18b4c 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java @@ -123,7 +123,7 @@ public void run() { .of("-").color(ColorCode.DARK_GRAY).advance().space() .of("Spielzeit").color(ColorCode.GOLD).advance() .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(String.valueOf(playTime)).color(ColorCode.RED).advance() + .of(playTime + (playTime == 1 ? " Stunde" : " Stunden")).color(ColorCode.RED).advance() .createComponent()); } return; From 58008f6c5301179c50d679cd3fbf84c76c55c293 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Mon, 6 Feb 2023 17:48:41 +0100 Subject: [PATCH 008/136] Add automatisation for car interaction commands --- .../events/CarEventHandler.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/CarEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/CarEventHandler.java index 89cd1601b..47dab96ef 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/CarEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/CarEventHandler.java @@ -1,5 +1,6 @@ package com.rettichlp.unicacityaddon.events; +import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.config.ConfigElements; @@ -8,11 +9,17 @@ import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; import com.rettichlp.unicacityaddon.base.text.PatternHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.inventory.ClickType; +import net.minecraft.inventory.ContainerChest; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.scoreboard.Score; import net.minecraft.scoreboard.Scoreboard; import net.minecraft.util.text.event.ClickEvent; import net.minecraft.util.text.event.HoverEvent; import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.client.event.GuiContainerEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import java.util.ArrayList; @@ -84,6 +91,27 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { } } + @SubscribeEvent + public void onGuiOpen(GuiContainerEvent.DrawForeground e) { + if (e.getGuiContainer().inventorySlots instanceof ContainerChest) { + ContainerChest containerChest = (ContainerChest) e.getGuiContainer().inventorySlots; + + if (containerChest.getLowerChestInventory().getDisplayName().getUnformattedText().equals("§6CarControl")) { + int numberOfCars = (int) containerChest.getInventory().stream() + .filter(itemStack -> !itemStack.isEmpty()) + .filter(itemStack -> itemStack.getDisplayName().startsWith(ColorCode.GOLD.getCode())) + .map(ItemStack::getItem) + .filter(item -> item.equals(Item.getItemById(328)) || item.equals(Item.getItemById(331)) || item.equals(Item.getItemById(388))) + .count(); + + if (numberOfCars == 1) { + UnicacityAddon.MINECRAFT.playerController.windowClick(containerChest.windowId, 0, 0, ClickType.PICKUP, UnicacityAddon.MINECRAFT.player); + Minecraft.getMinecraft().player.closeScreen(); + } + } + } + } + public static void checkTank(Scoreboard scoreboard) { UPlayer p = AbstractionLayer.getPlayer(); Score tankScore = scoreboard.getScores().stream() From 1c925052717900fc2a8b066ed609b0040a7382ca Mon Sep 17 00:00:00 2001 From: rettichlp Date: Mon, 6 Feb 2023 17:50:50 +0100 Subject: [PATCH 009/136] Merge filters --- .../com/rettichlp/unicacityaddon/events/CarEventHandler.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/CarEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/CarEventHandler.java index 47dab96ef..4c05addf3 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/CarEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/CarEventHandler.java @@ -98,8 +98,7 @@ public void onGuiOpen(GuiContainerEvent.DrawForeground e) { if (containerChest.getLowerChestInventory().getDisplayName().getUnformattedText().equals("§6CarControl")) { int numberOfCars = (int) containerChest.getInventory().stream() - .filter(itemStack -> !itemStack.isEmpty()) - .filter(itemStack -> itemStack.getDisplayName().startsWith(ColorCode.GOLD.getCode())) + .filter(itemStack -> !itemStack.isEmpty() && itemStack.getDisplayName().startsWith(ColorCode.GOLD.getCode())) .map(ItemStack::getItem) .filter(item -> item.equals(Item.getItemById(328)) || item.equals(Item.getItemById(331)) || item.equals(Item.getItemById(388))) .count(); From 22a2ddf1744c7f8fc24ecee6740e300153bdb8ee Mon Sep 17 00:00:00 2001 From: rettichlp Date: Mon, 6 Feb 2023 20:23:00 +0100 Subject: [PATCH 010/136] Fix spacing in ChannelActivityCommand --- .../teamspeak/ChannelActivityCommand.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/teamspeak/ChannelActivityCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/teamspeak/ChannelActivityCommand.java index f038fc7cf..cd858e99b 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/teamspeak/ChannelActivityCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/teamspeak/ChannelActivityCommand.java @@ -108,21 +108,21 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of("»").color(ColorCode.GRAY).advance().space() .of(playerName).color(isOnline ? ColorCode.GREEN : ColorCode.RED).advance().space() .of(isOnline ? "[¡]" : "").color(ColorCode.BLUE) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Finde " + playerName + " auf dem TS").color(ColorCode.RED).advance().createComponent()) - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/tsfind " + playerName) - .advance().space() + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Finde " + playerName + " auf dem TS").color(ColorCode.RED).advance().createComponent()) + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/tsfind " + playerName) + .advance().space() .of(isOnline ? "[↓]" : "").color(ColorCode.BLUE) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Move " + playerName + " zu dir").color(ColorCode.RED).advance().createComponent()) - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/movehere " + playerName) - .advance() + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Move " + playerName + " zu dir").color(ColorCode.RED).advance().createComponent()) + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/movehere " + playerName) + .advance() .createComponent())); p.sendMessage(Message.getBuilder() .of("➡").color(ColorCode.GRAY).advance().space() .of("Nicht anwesende Spieler kopieren").color(ColorCode.GREEN) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Nicht anwesende Spieler kopieren").color(ColorCode.RED).advance().createComponent()) - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/channelactivity copy") - .advance() + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Nicht anwesende Spieler kopieren").color(ColorCode.RED).advance().createComponent()) + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/channelactivity copy") + .advance() .createComponent()); p.sendEmptyMessage(); From 9683f2b6567a396b2e93661e2f32c07d0e2bfaf8 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Mon, 6 Feb 2023 20:27:30 +0100 Subject: [PATCH 011/136] Rename displayName to directoryName in ScreenshotType --- .../base/enums/ScreenshotType.java | 24 +++++++++---------- .../commands/ScreenCommand.java | 8 +++++-- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/enums/ScreenshotType.java b/src/main/java/com/rettichlp/unicacityaddon/base/enums/ScreenshotType.java index 3ae74e4f8..60066bdf7 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/enums/ScreenshotType.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/enums/ScreenshotType.java @@ -5,26 +5,26 @@ */ public enum ScreenshotType { - KILLS("kills"), - GROSSEREIGNIS("großeinsatz"), + ANDERE("andere"), + BLACKLIST("blacklist"), DROGENEINNAHME("drogeneinnahme"), EQUIP("equip"), + GROSSEREIGNIS("großeinsatz"), + KILLS("kills"), + KORRUPTION("korruption"), + NOTRUF("notruf"), REINFORCEMENT("reinforcement"), ROLEPLAY("roleplay"), - VERHAFTUNG("verhaftung"), - KORRUPTION("korruption"), TICKET("ticket"), - BLACKLIST("blacklist"), - NOTRUF("notruf"), - ANDERE("andere"); + VERHAFTUNG("verhaftung"); - private final String displayName; + private final String directoryName; - ScreenshotType(String displayName) { - this.displayName = displayName; + ScreenshotType(String directoryName) { + this.directoryName = directoryName; } - public String getDisplayName() { - return this.displayName; + public String getDirectoryName() { + return this.directoryName; } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/ScreenCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/ScreenCommand.java index 1f20f457d..212934fe6 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/ScreenCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/ScreenCommand.java @@ -61,7 +61,11 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen return; } - ScreenshotType screenshotType = Arrays.stream(ScreenshotType.values()).filter(st -> st.getDisplayName().equals(args[0])).findFirst().orElse(null); + ScreenshotType screenshotType = Arrays.stream(ScreenshotType.values()) + .filter(st -> st.getDirectoryName().equals(args[0])) + .findFirst() + .orElse(null); + if (screenshotType == null) { p.sendSyntaxMessage(getUsage(sender)); return; @@ -82,7 +86,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen @Nonnull public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { return TabCompletionBuilder.getBuilder(args) - .addAtIndex(1, Arrays.stream(ScreenshotType.values()).map(ScreenshotType::getDisplayName).collect(Collectors.toList())) + .addAtIndex(1, Arrays.stream(ScreenshotType.values()).map(ScreenshotType::getDirectoryName).collect(Collectors.toList())) .build(); } From bf4632739bb312c123431c5437e5eabd871558fa Mon Sep 17 00:00:00 2001 From: rettichlp Date: Mon, 6 Feb 2023 20:31:24 +0100 Subject: [PATCH 012/136] Add ActivityCommand --- .../commands/ActivityCommand.java | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/commands/ActivityCommand.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/ActivityCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/ActivityCommand.java new file mode 100644 index 000000000..3b90708ab --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/ActivityCommand.java @@ -0,0 +1,125 @@ +package com.rettichlp.unicacityaddon.commands; + +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; +import com.rettichlp.unicacityaddon.base.enums.ScreenshotType; +import com.rettichlp.unicacityaddon.base.manager.FileManager; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.base.text.Message; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.event.ClickEvent; +import net.minecraft.util.text.event.HoverEvent; +import net.minecraftforge.client.IClientCommand; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author RettichLP + */ +@UCCommand +public class ActivityCommand implements IClientCommand { + + @Override + @Nonnull + public String getName() { + return "activity"; + } + + @Override + @Nonnull + public String getUsage(@Nonnull ICommandSender sender) { + return "/activity (Typ)"; + } + + @Override + @Nonnull + public List getAliases() { + return Collections.emptyList(); + } + + @Override + public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender) { + return true; + } + + @Override + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { + UPlayer p = AbstractionLayer.getPlayer(); + + List screenshotTypeList = args.length < 1 ? + new ArrayList<>(Arrays.asList(ScreenshotType.values())) : + Arrays.stream(ScreenshotType.values()) + .filter(screenshotType -> screenshotType.getDirectoryName().equalsIgnoreCase(args[0])) + .collect(Collectors.toList()); + + p.sendEmptyMessage(); + p.sendMessage(Message.getBuilder() + .of("Aktivitäten:").color(ColorCode.DARK_AQUA).bold().advance() + .createComponent()); + + int screenshotCount = FileManager.getAddonScreenshotDir().listFiles((dir, name) -> name.endsWith(".jpg")).length; + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.GRAY).advance().space() + .of("keine Zuordnung").color(ColorCode.GRAY).advance() + .of(":").color(ColorCode.GRAY).advance().space() + .of(String.valueOf(screenshotCount)).color(ColorCode.AQUA).advance().space() + .of("[↗]").color(ColorCode.BLUE) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Ordner öffnen").color(ColorCode.RED).advance().createComponent()) + .clickEvent(ClickEvent.Action.OPEN_FILE, FileManager.getAddonScreenshotDir().getAbsolutePath()) + .advance() + .createComponent()); + + screenshotTypeList.stream().map(ScreenshotType::getDirectoryName).sorted().forEach(s -> { + int entryCount = FileManager.getAddonActivityScreenDir(s) + .listFiles((dir, name) -> name.endsWith("-" + s + ".jpg")) + .length; + + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.GRAY).advance().space() + .of(Character.toUpperCase(s.charAt(0)) + s.substring(1)).color(ColorCode.GRAY).advance() + .of(":").color(ColorCode.GRAY).advance().space() + .of(String.valueOf(entryCount)).color(ColorCode.AQUA).advance().space() + .of("[↗]").color(ColorCode.BLUE) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Ordner öffnen").color(ColorCode.RED).advance().createComponent()) + .clickEvent(ClickEvent.Action.OPEN_FILE, FileManager.getAddonActivityScreenDir(s).getAbsolutePath()) + .advance() + .createComponent()); + }); + + p.sendEmptyMessage(); + } + + @Override + @Nonnull + public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { + return TabCompletionBuilder.getBuilder(args) + .addAtIndex(1, Arrays.stream(ScreenshotType.values()).map(ScreenshotType::getDirectoryName).collect(Collectors.toList())) + .build(); + } + + @Override + public boolean isUsernameIndex(@Nonnull String[] args, int index) { + return false; + } + + @Override + public boolean allowUsageWithoutPrefix(ICommandSender sender, String message) { + return false; + } + + @Override + public int compareTo(@Nonnull ICommand o) { + return 0; + } +} \ No newline at end of file From 3a2d67c70536ca68f37bb8f2f42289b4954a14eb Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 7 Feb 2023 02:30:07 +0100 Subject: [PATCH 013/136] Fix merge conflicts --- .../unicacityaddon/commands/house/HouseBankGetCommand.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java index 5339eb64e..c4805dbfa 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java @@ -3,7 +3,7 @@ import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; -import com.rettichlp.unicacityaddon.base.manager.HouseDataManager; +import com.rettichlp.unicacityaddon.base.manager.FileManager; import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; import com.rettichlp.unicacityaddon.base.utils.TextUtils; import com.rettichlp.unicacityaddon.events.house.HouseDataEventHandler; @@ -72,7 +72,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen new Timer().schedule(new TimerTask() { @Override public void run() { - int houseBankBalance = HouseDataManager.getHouseData(HouseDataEventHandler.lastCheckedHouseNumber).getHouseBank(); + int houseBankBalance = FileManager.DATA.getHouseData(HouseDataEventHandler.lastCheckedHouseNumber).getHouseBank(); p.sendChatMessage("/hauskasse get " + houseBankBalance); } }, 1000); From 762012012cc22915d21b7502d31e12b75e06edf1 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 7 Feb 2023 18:20:11 +0100 Subject: [PATCH 014/136] Add debug message support --- .../com/rettichlp/unicacityaddon/UnicacityAddon.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java b/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java index e693f445b..740884422 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java +++ b/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java @@ -1,5 +1,6 @@ package com.rettichlp.unicacityaddon; +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.api.Syncer; import com.rettichlp.unicacityaddon.base.api.TokenManager; import com.rettichlp.unicacityaddon.base.api.checks.BroadcastChecker; @@ -10,6 +11,8 @@ import com.rettichlp.unicacityaddon.base.registry.KeyBindRegistry; import com.rettichlp.unicacityaddon.base.registry.ModuleRegistry; import com.rettichlp.unicacityaddon.base.teamspeak.TSClientQuery; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.base.text.Message; import com.rettichlp.unicacityaddon.base.utils.UpdateUtils; import com.rettichlp.unicacityaddon.events.chatlog.ChatLogReceiveChatEventHandler; import com.rettichlp.unicacityaddon.events.chatlog.ChatLogSendChatEventHandler; @@ -92,4 +95,13 @@ public static boolean isUnicacity() { return ip.toLowerCase().endsWith("unicacity.de"); } + + public static void debug(String debugMessage) { + AbstractionLayer.getPlayer().sendMessage(Message.getBuilder() + .of("[").color(ColorCode.DARK_GRAY).advance() + .of("DEBUG").color(ColorCode.YELLOW).advance() + .of("]").color(ColorCode.DARK_GRAY).advance().space() + .add(debugMessage) + .createComponent()); + } } \ No newline at end of file From b4244ac2c5e1490c1a5823058b57f8aa492b3e5e Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 7 Feb 2023 18:21:13 +0100 Subject: [PATCH 015/136] Add activity count and hide empty activity directories --- .../commands/ActivityCommand.java | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/ActivityCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/ActivityCommand.java index 3b90708ab..2942e13b2 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/ActivityCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/ActivityCommand.java @@ -22,6 +22,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -68,35 +69,34 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of("Aktivitäten:").color(ColorCode.DARK_AQUA).bold().advance() .createComponent()); - int screenshotCount = FileManager.getAddonScreenshotDir().listFiles((dir, name) -> name.endsWith(".jpg")).length; - p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.GRAY).advance().space() - .of("keine Zuordnung").color(ColorCode.GRAY).advance() - .of(":").color(ColorCode.GRAY).advance().space() - .of(String.valueOf(screenshotCount)).color(ColorCode.AQUA).advance().space() - .of("[↗]").color(ColorCode.BLUE) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Ordner öffnen").color(ColorCode.RED).advance().createComponent()) - .clickEvent(ClickEvent.Action.OPEN_FILE, FileManager.getAddonScreenshotDir().getAbsolutePath()) - .advance() - .createComponent()); - + AtomicInteger overallCount = new AtomicInteger(); screenshotTypeList.stream().map(ScreenshotType::getDirectoryName).sorted().forEach(s -> { int entryCount = FileManager.getAddonActivityScreenDir(s) .listFiles((dir, name) -> name.endsWith("-" + s + ".jpg")) .length; - p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.GRAY).advance().space() - .of(Character.toUpperCase(s.charAt(0)) + s.substring(1)).color(ColorCode.GRAY).advance() - .of(":").color(ColorCode.GRAY).advance().space() - .of(String.valueOf(entryCount)).color(ColorCode.AQUA).advance().space() - .of("[↗]").color(ColorCode.BLUE) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Ordner öffnen").color(ColorCode.RED).advance().createComponent()) - .clickEvent(ClickEvent.Action.OPEN_FILE, FileManager.getAddonActivityScreenDir(s).getAbsolutePath()) - .advance() - .createComponent()); + overallCount.addAndGet(entryCount); + if (entryCount > 0) { + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.GRAY).advance().space() + .of(Character.toUpperCase(s.charAt(0)) + s.substring(1)).color(ColorCode.GRAY).advance() + .of(":").color(ColorCode.GRAY).advance().space() + .of(String.valueOf(entryCount)).color(ColorCode.AQUA).advance().space() + .of("[↗]").color(ColorCode.BLUE) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Ordner öffnen").color(ColorCode.RED).advance().createComponent()) + .clickEvent(ClickEvent.Action.OPEN_FILE, FileManager.getAddonActivityScreenDir(s).getAbsolutePath()) + .advance() + .createComponent()); + } }); + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.GRAY).advance().space() + .of("Gesamt").color(ColorCode.DARK_AQUA).advance() + .of(":").color(ColorCode.GRAY).advance().space() + .of(String.valueOf(overallCount.get())).color(ColorCode.AQUA).advance().space() + .createComponent()); + p.sendEmptyMessage(); } From 5b02a6e918f933cf8c1cfefeb7af8cdf352318df Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 7 Feb 2023 18:36:48 +0100 Subject: [PATCH 016/136] Update DBankDropAllCommand and rename it to DropDrugAllCommand --- .../badfaction/DBankDropAllCommand.java | 107 -------- .../badfaction/DropDrugAllCommand.java | 228 ++++++++++++++++++ .../events/TickEventHandler.java | 12 +- 3 files changed, 235 insertions(+), 112 deletions(-) delete mode 100644 src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DBankDropAllCommand.java create mode 100644 src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DBankDropAllCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DBankDropAllCommand.java deleted file mode 100644 index 17d90b2a4..000000000 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DBankDropAllCommand.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.rettichlp.unicacityaddon.commands.faction.badfaction; - -import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; -import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; -import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; -import com.rettichlp.unicacityaddon.base.manager.FileManager; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; -import net.minecraft.command.ICommand; -import net.minecraft.command.ICommandSender; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.client.IClientCommand; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; -import java.util.concurrent.TimeUnit; - -/** - * @author RettichLP - */ -@UCCommand -public class DBankDropAllCommand implements IClientCommand { - - @Override - @Nonnull - public String getName() { - return "dbankdropall"; - } - - @Override - @Nonnull - public String getUsage(@Nonnull ICommandSender sender) { - return "/dbankdropall"; - } - - @Override - @Nonnull - public List getAliases() { - return Collections.emptyList(); - } - - @Override - public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender) { - return true; - } - - @Override - public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { - UPlayer p = AbstractionLayer.getPlayer(); - - // reset drug inventory tracker - if (args.length > 0 && args[0].equalsIgnoreCase("reset")) { - FileManager.DATA.setDrugInventoryMap(new HashMap<>()); - return; - } - - List commandQueue = new ArrayList<>(); - FileManager.DATA.getDrugInventoryMap() - .forEach((drugType, drugPurityIntegerMap) -> drugPurityIntegerMap - .forEach((drugPurity, integer) -> { - if (integer > 0) - commandQueue.add("/dbank drop " + drugType.getShortName() + " " + integer + " " + drugPurity.getPurity()); - })); - - Timer timer = new Timer(); - timer.scheduleAtFixedRate(new TimerTask() { - @Override - public void run() { - if (commandQueue.isEmpty()) { - timer.cancel(); - } else { - p.sendChatMessage(commandQueue.get(0)); - commandQueue.remove(0); - } - } - }, 0, TimeUnit.SECONDS.toMillis(1)); - } - - @Override - @Nonnull - public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { - return TabCompletionBuilder.getBuilder(args) - .addAtIndex(1, "reset") - .build(); - } - - @Override - public boolean isUsernameIndex(@Nonnull String[] args, int index) { - return false; - } - - @Override - public boolean allowUsageWithoutPrefix(ICommandSender sender, String message) { - return false; - } - - @Override - public int compareTo(@Nonnull ICommand o) { - return 0; - } -} diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java new file mode 100644 index 000000000..1ba300d02 --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java @@ -0,0 +1,228 @@ +package com.rettichlp.unicacityaddon.commands.faction.badfaction; + +import com.rettichlp.unicacityaddon.UnicacityAddon; +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; +import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; +import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; +import com.rettichlp.unicacityaddon.base.manager.FileManager; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; +import net.minecraft.client.gui.GuiHopper; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.inventory.GuiChest; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.inventory.ClickType; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.client.IClientCommand; +import net.minecraftforge.common.util.Constants; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author RettichLP + */ +@UCCommand +public class DropDrugAllCommand implements IClientCommand { + + private static final Map> drugInventoryMap = new HashMap<>(); + private static boolean cocaineCheck = true; + private static boolean marihuanaCheck = true; + private static boolean methCheck = true; + private static boolean active = false; + private static int lastWindowId = 0; + + @Override + @Nonnull + public String getName() { + return "dropdrugall"; + } + + @Override + @Nonnull + public String getUsage(@Nonnull ICommandSender sender) { + return "/dropdrugall"; + } + + @Override + @Nonnull + public List getAliases() { + return Collections.singletonList("dda"); + } + + @Override + public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender) { + return true; + } + + @Override + @Nonnull + public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { + return TabCompletionBuilder.getBuilder(args) + .addAtIndex(1, "reset") + .build(); + } + + @Override + public boolean isUsernameIndex(@Nonnull String[] args, int index) { + return false; + } + + @Override + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { + UPlayer p = AbstractionLayer.getPlayer(); + + if (args.length > 0 && args[0].equalsIgnoreCase("reset")) { + FileManager.DATA.setDrugInventoryMap(new HashMap<>()); + return; + } + + active = cocaineCheck = marihuanaCheck = methCheck = true; + p.sendChatMessage("/inv"); + } + + @Override + public boolean allowUsageWithoutPrefix(ICommandSender sender, String message) { + return false; + } + + @Override + public int compareTo(@Nonnull ICommand o) { + return 0; + } + + public static void process() { + GuiScreen guiScreen = UnicacityAddon.MINECRAFT.currentScreen; + if (guiScreen instanceof GuiChest && active) { + GuiContainer guiContainer = (GuiContainer) guiScreen; + + int windowId = guiContainer.inventorySlots.windowId; + if (windowId == lastWindowId) + return; + + lastWindowId = windowId; + + if (cocaineCheck) { + cocaineCheck = false; + // select cocaine to check drug purity + UnicacityAddon.MINECRAFT.playerController.windowClick(windowId, 0, 0, ClickType.PICKUP, UnicacityAddon.MINECRAFT.player); + } else if (marihuanaCheck) { + marihuanaCheck = false; + // select marihuana to check drug purity + UnicacityAddon.MINECRAFT.playerController.windowClick(windowId, 1, 0, ClickType.PICKUP, UnicacityAddon.MINECRAFT.player); + } else if (methCheck) { + methCheck = false; + // select meth to check drug purity + UnicacityAddon.MINECRAFT.playerController.windowClick(windowId, 2, 0, ClickType.PICKUP, UnicacityAddon.MINECRAFT.player); + } else { + guiContainer.inventorySlots.getInventory().stream() + .filter(itemStack -> !itemStack.isEmpty()) + .filter(itemStack -> !itemStack.getDisplayName().contains("Kokain") && !itemStack.getDisplayName().contains("Marihuana") && !itemStack.getDisplayName().contains("Methamphetamin")) + .forEach(itemStack -> { + + NBTTagCompound nbtTagCompound = itemStack.getSubCompound("display"); + assert nbtTagCompound != null; + String lore = nbtTagCompound.getTagList("Lore", Constants.NBT.TAG_STRING).getStringTagAt(0); + + Matcher loreMatcher = Pattern.compile("» (?\\d)(g| Pillen| Flaschen| Päckchen| Stück| Kisten)").matcher(lore); + if (loreMatcher.find()) { + int amount = Integer.parseInt(loreMatcher.group("amount")); + DrugType drugType = DrugType.getDrugType(itemStack.getDisplayName().substring(2)); + + if (drugType != null) { + UnicacityAddon.debug("CHEST: PUT " + drugType + " " + DrugPurity.BEST + " " + amount); + + Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); + drugPurityMap.put(DrugPurity.BEST, amount); + drugInventoryMap.put(drugType, drugPurityMap); + + UnicacityAddon.debug(drugInventoryMap.toString()); + } + } + + }); + + active = false; + dropCommandExecution(); + } + } else if (guiScreen instanceof GuiHopper && active) { + GuiHopper guiHopper = (GuiHopper) guiScreen; + + int windowId = guiHopper.inventorySlots.windowId; + if (windowId == lastWindowId) + return; + + lastWindowId = windowId; + + guiHopper.inventorySlots.getInventory().stream() + .filter(itemStack -> !itemStack.isEmpty()) + .forEach(itemStack -> { + NBTTagCompound nbtTagCompound = itemStack.getSubCompound("display"); + assert nbtTagCompound != null; + String drugPurityNbt = nbtTagCompound.getTagList("Lore", Constants.NBT.TAG_STRING).getStringTagAt(1); + String amountNbt = nbtTagCompound.getTagList("Lore", Constants.NBT.TAG_STRING).getStringTagAt(2); + + Matcher loreMatcher = Pattern.compile("» (?\\d)g").matcher(amountNbt); + if (loreMatcher.find()) { + int amount = Integer.parseInt(loreMatcher.group("amount")); + DrugType drugType = DrugType.getDrugType(itemStack.getDisplayName().substring(4)); + DrugPurity drugPurity = DrugPurity.getDrugPurity(drugPurityNbt.split(" ")[0].substring(2)); + + if (drugType != null) { + UnicacityAddon.debug("HOPPER: PUT " + drugType + " " + drugPurity + " " + amount); + + Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); + drugPurityMap.put(drugPurity, amount); + drugInventoryMap.put(drugType, drugPurityMap); + + UnicacityAddon.debug(drugInventoryMap.toString()); + } + } + }); + + // go back to inventory container + UnicacityAddon.MINECRAFT.playerController.windowClick(guiHopper.inventorySlots.windowId, 4, 0, ClickType.PICKUP, UnicacityAddon.MINECRAFT.player); + } + } + + private static void dropCommandExecution() { + UPlayer p = AbstractionLayer.getPlayer(); + p.getPlayer().closeScreen(); + + List commandQueue = new ArrayList<>(); + drugInventoryMap.forEach((drugType, drugPurityIntegerMap) -> drugPurityIntegerMap + .forEach((drugPurity, integer) -> { + if (integer > 0) + commandQueue.add("/dbank drop " + drugType.getShortName() + " " + integer + " " + drugPurity.getPurity()); + })); + + Timer timer = new Timer(); + timer.scheduleAtFixedRate(new TimerTask() { + @Override + public void run() { + if (commandQueue.isEmpty()) { + timer.cancel(); + } else { + UnicacityAddon.debug(commandQueue.get(0)); + p.sendChatMessage(commandQueue.get(0)); + commandQueue.remove(0); + } + } + }, 0, TimeUnit.SECONDS.toMillis(1)); + } +} \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java index 50f3d0b98..49ee3cc26 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java @@ -11,6 +11,7 @@ import com.rettichlp.unicacityaddon.base.utils.MathUtils; import com.rettichlp.unicacityaddon.base.utils.TextUtils; import com.rettichlp.unicacityaddon.commands.BusCommand; +import com.rettichlp.unicacityaddon.commands.faction.badfaction.DropDrugAllCommand; import com.rettichlp.unicacityaddon.events.faction.ReinforcementEventHandler; import com.rettichlp.unicacityaddon.events.house.HouseInteractionEventHandler; import com.rettichlp.unicacityaddon.modules.BombTimerModule; @@ -40,7 +41,12 @@ public void onTick(TickEvent.ClientTickEvent event) { // EVERY TICK handleReinforcementScreenshot(); handleDamageTracker(); - handleBusTracker(); + + // 0,25 SECONDS + if (currentTick % 5 == 0) { + BusCommand.process(); + DropDrugAllCommand.process(); + } // 1 SECOND if (currentTick % 20 == 0) { @@ -88,10 +94,6 @@ private void handleDamageTracker() { } } - private void handleBusTracker() { - BusCommand.process(); - } - private void handleNameTag() { List items = UnicacityAddon.MINECRAFT.world.getEntities(EntityItem.class, (ent) -> ent != null && ent.hasCustomName() && ent.getItem().getItem() instanceof ItemSkull); items.forEach(entityItem -> { From 8de95e46d84a2a880879807061154654d9e4f14c Mon Sep 17 00:00:00 2001 From: Duqlo Date: Wed, 8 Feb 2023 17:04:12 +0100 Subject: [PATCH 017/136] update armament --- .../unicacityaddon/base/models/Armament.java | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/Armament.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/Armament.java index 7392c4178..73cfd25cb 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/models/Armament.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/Armament.java @@ -1,18 +1,32 @@ package com.rettichlp.unicacityaddon.base.models; +import com.rettichlp.unicacityaddon.base.enums.Weapon; + public class Armament { - // TODO: 29.01.2023 Variablen: - // Waffe -> Enum TODO: Anlegen - // Ammunition -> Integer (int) + private final String name; + private final Weapon weapon; + private final int amount; + + public Armament(String name, Weapon weapon, int amount) { + this.name = name; + this.weapon = weapon; + this.amount = amount; + } + + public String getName() { + return name; + } - // TODO: 29.01.2023 Constructor - // alle Variablen + public Weapon getWeapon() { + return weapon; + } + + public int getAmount() { + return amount; + } - // TODO: 29.01.2023 Getter - // alle Variablen } -// TODO: 29.01.2023 not last as name -// TODO: 29.01.2023 add last event listener + pattern (Du hast deine xyz mit abc Kugeln beladen usw.) + From b0e892cbd1b6a728bf5ccf24a37cca1fc864eb02 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 10 Feb 2023 02:15:17 +0100 Subject: [PATCH 018/136] Fix NullPointerException --- .../badfaction/DropDrugAllCommand.java | 55 ++++++++----------- 1 file changed, 23 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java index 1ba300d02..54abd0630 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java @@ -131,12 +131,10 @@ public static void process() { UnicacityAddon.MINECRAFT.playerController.windowClick(windowId, 2, 0, ClickType.PICKUP, UnicacityAddon.MINECRAFT.player); } else { guiContainer.inventorySlots.getInventory().stream() - .filter(itemStack -> !itemStack.isEmpty()) - .filter(itemStack -> !itemStack.getDisplayName().contains("Kokain") && !itemStack.getDisplayName().contains("Marihuana") && !itemStack.getDisplayName().contains("Methamphetamin")) + .filter(itemStack -> !itemStack.isEmpty() && !itemStack.getDisplayName().contains("Kokain") && !itemStack.getDisplayName().contains("Marihuana") && !itemStack.getDisplayName().contains("Methamphetamin")) .forEach(itemStack -> { - - NBTTagCompound nbtTagCompound = itemStack.getSubCompound("display"); - assert nbtTagCompound != null; + NBTTagCompound nbtTagCompound = itemStack.getSubCompound("display"); + if (nbtTagCompound != null) { String lore = nbtTagCompound.getTagList("Lore", Constants.NBT.TAG_STRING).getStringTagAt(0); Matcher loreMatcher = Pattern.compile("» (?\\d)(g| Pillen| Flaschen| Päckchen| Stück| Kisten)").matcher(lore); @@ -145,16 +143,12 @@ public static void process() { DrugType drugType = DrugType.getDrugType(itemStack.getDisplayName().substring(2)); if (drugType != null) { - UnicacityAddon.debug("CHEST: PUT " + drugType + " " + DrugPurity.BEST + " " + amount); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); drugPurityMap.put(DrugPurity.BEST, amount); drugInventoryMap.put(drugType, drugPurityMap); - - UnicacityAddon.debug(drugInventoryMap.toString()); } } - + } }); active = false; @@ -173,24 +167,21 @@ public static void process() { .filter(itemStack -> !itemStack.isEmpty()) .forEach(itemStack -> { NBTTagCompound nbtTagCompound = itemStack.getSubCompound("display"); - assert nbtTagCompound != null; - String drugPurityNbt = nbtTagCompound.getTagList("Lore", Constants.NBT.TAG_STRING).getStringTagAt(1); - String amountNbt = nbtTagCompound.getTagList("Lore", Constants.NBT.TAG_STRING).getStringTagAt(2); - - Matcher loreMatcher = Pattern.compile("» (?\\d)g").matcher(amountNbt); - if (loreMatcher.find()) { - int amount = Integer.parseInt(loreMatcher.group("amount")); - DrugType drugType = DrugType.getDrugType(itemStack.getDisplayName().substring(4)); - DrugPurity drugPurity = DrugPurity.getDrugPurity(drugPurityNbt.split(" ")[0].substring(2)); - - if (drugType != null) { - UnicacityAddon.debug("HOPPER: PUT " + drugType + " " + drugPurity + " " + amount); - - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(drugPurity, amount); - drugInventoryMap.put(drugType, drugPurityMap); - - UnicacityAddon.debug(drugInventoryMap.toString()); + if (nbtTagCompound != null) { + String drugPurityNbt = nbtTagCompound.getTagList("Lore", Constants.NBT.TAG_STRING).getStringTagAt(1); + String amountNbt = nbtTagCompound.getTagList("Lore", Constants.NBT.TAG_STRING).getStringTagAt(2); + + Matcher loreMatcher = Pattern.compile("» (?\\d+)g").matcher(amountNbt); + if (loreMatcher.find()) { + int amount = Integer.parseInt(loreMatcher.group("amount")); + DrugType drugType = DrugType.getDrugType(itemStack.getDisplayName().substring(4)); + DrugPurity drugPurity = DrugPurity.getDrugPurity(drugPurityNbt.split(" ")[0].substring(2)); + + if (drugType != null) { + Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); + drugPurityMap.put(drugPurity, amount); + drugInventoryMap.put(drugType, drugPurityMap); + } } } }); @@ -205,10 +196,11 @@ private static void dropCommandExecution() { p.getPlayer().closeScreen(); List commandQueue = new ArrayList<>(); - drugInventoryMap.forEach((drugType, drugPurityIntegerMap) -> drugPurityIntegerMap - .forEach((drugPurity, integer) -> { + drugInventoryMap.entrySet().stream() + .filter(drugTypeMapEntry -> drugTypeMapEntry.getKey().equals(DrugType.COCAINE) || drugTypeMapEntry.getKey().equals(DrugType.MARIJUANA) || drugTypeMapEntry.getKey().equals(DrugType.METH) || drugTypeMapEntry.getKey().equals(DrugType.LSD)) + .forEach(drugTypeMapEntry -> drugTypeMapEntry.getValue().forEach((drugPurity, integer) -> { if (integer > 0) - commandQueue.add("/dbank drop " + drugType.getShortName() + " " + integer + " " + drugPurity.getPurity()); + commandQueue.add("/dbank drop " + drugTypeMapEntry.getKey().getShortName() + " " + integer + " " + drugPurity.getPurity()); })); Timer timer = new Timer(); @@ -218,7 +210,6 @@ public void run() { if (commandQueue.isEmpty()) { timer.cancel(); } else { - UnicacityAddon.debug(commandQueue.get(0)); p.sendChatMessage(commandQueue.get(0)); commandQueue.remove(0); } From 6959e8618962e399d7ef260b9030660fc92733e1 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 10 Feb 2023 20:35:14 +0100 Subject: [PATCH 019/136] Add support for asservatenkammer --- .../faction/badfaction/DropDrugAllCommand.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java index 54abd0630..1930dac46 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java @@ -6,6 +6,7 @@ import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; +import com.rettichlp.unicacityaddon.base.enums.faction.Faction; import com.rettichlp.unicacityaddon.base.manager.FileManager; import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; import net.minecraft.client.gui.GuiHopper; @@ -24,7 +25,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; -import java.util.Collections; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -62,7 +63,7 @@ public String getUsage(@Nonnull ICommandSender sender) { @Override @Nonnull public List getAliases() { - return Collections.singletonList("dda"); + return Arrays.asList("dda", "asservatenkammerdropall", "ada"); } @Override @@ -199,8 +200,10 @@ private static void dropCommandExecution() { drugInventoryMap.entrySet().stream() .filter(drugTypeMapEntry -> drugTypeMapEntry.getKey().equals(DrugType.COCAINE) || drugTypeMapEntry.getKey().equals(DrugType.MARIJUANA) || drugTypeMapEntry.getKey().equals(DrugType.METH) || drugTypeMapEntry.getKey().equals(DrugType.LSD)) .forEach(drugTypeMapEntry -> drugTypeMapEntry.getValue().forEach((drugPurity, integer) -> { - if (integer > 0) - commandQueue.add("/dbank drop " + drugTypeMapEntry.getKey().getShortName() + " " + integer + " " + drugPurity.getPurity()); + if (integer > 0) { + String type = p.getFaction().equals(Faction.FBI) ? "asservatenkammer" : "dbank"; + commandQueue.add("/" + type + " drop " + drugTypeMapEntry.getKey().getShortName() + " " + integer + " " + drugPurity.getPurity()); + } })); Timer timer = new Timer(); From 25b75a7171ac77e59b7aa90b5815f71637cd3d49 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 10 Feb 2023 21:36:26 +0100 Subject: [PATCH 020/136] Fix display of dbank message --- .../badfaction/DrugInteractionEventHandler.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DrugInteractionEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DrugInteractionEventHandler.java index d30e7c652..7b1af1b69 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DrugInteractionEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DrugInteractionEventHandler.java @@ -51,11 +51,14 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { } Matcher dbankGetMatcher = PatternHandler.DBANK_GET_PATTERN.matcher(msg); - if (dbankGetMatcher.find() && msg.contains(p.getName())) { + if (dbankGetMatcher.find()) { int amount = Integer.parseInt(dbankGetMatcher.group("amount")); DrugType drugType = DrugType.getDrugType(dbankGetMatcher.group("drugType")); DrugPurity drugPurity = DrugPurity.getDrugPurity(dbankGetMatcher.group("drugPurity")); - FileManager.DATA.addDrugToInventory(drugType, drugPurity, amount); + + if (msg.contains(p.getName())) { + FileManager.DATA.addDrugToInventory(drugType, drugPurity, amount); + } if (ConfigElements.getDrugBankMessagesActivated()) { NumberFormat numberFormat = NumberFormat.getNumberInstance(new Locale("da", "DK")); @@ -77,11 +80,14 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { } Matcher dbankGiveMatcher = PatternHandler.DBANK_GIVE_PATTERN.matcher(msg); - if (dbankGiveMatcher.find() && msg.contains(p.getName())) { + if (dbankGiveMatcher.find()) { int amount = Integer.parseInt(dbankGiveMatcher.group("amount")); DrugType drugType = DrugType.getDrugType(dbankGiveMatcher.group("drugType")); DrugPurity drugPurity = DrugPurity.getDrugPurity(dbankGiveMatcher.group("drugPurity")); - FileManager.DATA.removeDrugFromInventory(drugType, drugPurity, amount); + + if (msg.contains(p.getName())) { + FileManager.DATA.removeDrugFromInventory(drugType, drugPurity, amount); + } if (ConfigElements.getDrugBankMessagesActivated()) { NumberFormat numberFormat = NumberFormat.getNumberInstance(new Locale("da", "DK")); From 91d995dc519eb660d4dd65526ebab503ef5a756f Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sat, 11 Feb 2023 08:09:30 +0100 Subject: [PATCH 021/136] Add info message to first aid issue message in FirstAidEventHandler and pattern in PatternHandler --- .../unicacityaddon/base/text/PatternHandler.java | 1 + .../rettungsdienst/FirstAidEventHandler.java | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 8f6c71ae7..ccc42e4b8 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -150,6 +150,7 @@ public class PatternHandler { public static final Pattern REVIVE_FAILURE_PATTERN = Pattern.compile("^Verdammt\\.\\. mein Kopf dröhnt so\\.\\.\\.$"); public static final Pattern FIRST_AID_RECEIVE_PATTERN = Pattern.compile("^\\[Erste-Hilfe] Notarzt (?:\\[UC])*(\\w+) hat dir einen Erste-Hilfe-Schein für 14 Tage ausgestellt\\.$"); public static final Pattern FIRST_AID_LICENCE_PATTERN = Pattern.compile("^ {2}- Erste-Hilfe-Schein: Vorhanden$"); + public static final Pattern FIRST_AID_ISSUE_PATTERN = Pattern.compile("^$"); // TODO: 11.02.2023 public static final Pattern FIRST_AID_USE_PATTERN = Pattern.compile("^ {2}Info: Du bist nun eine Minute länger auf dem Friedhof\\.$"); public static final Pattern MEDICATION_GET_PATTERN = Pattern.compile("^\\[Apotheke] Du hast (?\\d+) (?.+) erhalten, gute Besserung!$"); diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/FirstAidEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/FirstAidEventHandler.java index 821df4eb6..93135bfbc 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/FirstAidEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/FirstAidEventHandler.java @@ -1,5 +1,6 @@ package com.rettichlp.unicacityaddon.events.faction.rettungsdienst; +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.manager.FileManager; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.ColorCode; @@ -10,6 +11,8 @@ import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import java.util.Timer; +import java.util.TimerTask; import java.util.concurrent.TimeUnit; /** @@ -39,6 +42,16 @@ public void onFirstAidReceipt(ClientChatReceivedEvent e) { .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of(TextUtils.parseTimerWithTimeUnit(timeLeft)).color(ColorCode.RED).advance().createComponent()) .advance() .createComponent()); + return; + } + + if (PatternHandler.FIRST_AID_ISSUE_PATTERN.matcher(msg).find()) { + new Timer().schedule(new TimerTask() { + @Override + public void run() { + AbstractionLayer.getPlayer().sendInfoMessage("Du kannst wieder Erste Hilfe geben."); + } + }, TimeUnit.SECONDS.toMillis(90)); } } } From 734528b7eb281fd43b4b9a16712437e4259b830f Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sat, 11 Feb 2023 08:55:16 +0100 Subject: [PATCH 022/136] Add automated praying and pattern --- .../base/text/PatternHandler.java | 7 ++++ .../faction/kirche/PrayEventHandler.java | 32 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/faction/kirche/PrayEventHandler.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 8f6c71ae7..07be57246 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -310,4 +310,11 @@ public class PatternHandler { */ public static final Pattern BUY_INTERRUPTED_PATTERN = Pattern.compile("^Verkäufer: (Tut (uns|mir) Leid|Verzeihung), unser Lager ist derzeit leer\\.$" + "|^Verkäufer: Dieses Produkt kostet \\d+\\$\\.$" + "|^Verkäufer: Du hast leider nicht genug Geld dabei\\.$"); + + /** + * Pattern for church interaction + * + * @see com.rettichlp.unicacityaddon.events.faction.kirche.PrayEventHandler + */ + public static final Pattern PRAYING_START_PATTERN = Pattern.compile("^\\[Kirche] Du hast begonnen für (?:\\[UC])*(?\\w+) zu beten\\.$"); } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/kirche/PrayEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/kirche/PrayEventHandler.java new file mode 100644 index 000000000..8b966417b --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/kirche/PrayEventHandler.java @@ -0,0 +1,32 @@ +package com.rettichlp.unicacityaddon.events.faction.kirche; + +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.text.PatternHandler; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; + +public class PrayEventHandler { + + @SubscribeEvent + public void onClientChatReceive(ClientChatReceivedEvent e) { + UPlayer p = AbstractionLayer.getPlayer(); + String msg = e.getMessage().getUnformattedText(); + + Matcher prayingStartMatcher = PatternHandler.PRAYING_START_PATTERN.matcher(msg); + if (prayingStartMatcher.find()) { + String name = prayingStartMatcher.group("name"); + new Timer().schedule(new TimerTask() { + @Override + public void run() { + p.sendChatMessage("/beten " + name); + } + }, TimeUnit.SECONDS.toMillis(15)); + } + } +} \ No newline at end of file From eff2f0b046dca4904c4ccdc4b94920859384509e Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Sat, 11 Feb 2023 18:46:55 +0100 Subject: [PATCH 023/136] change drug vault message --- .../base/config/ConfigElements.java | 6 ++ .../base/config/ConfigSettings.java | 3 + .../base/text/PatternHandler.java | 10 +++ .../fbi/DrugVaultMessageEventHandler.java | 77 +++++++++++++++++++ 4 files changed, 96 insertions(+) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java index 4d55beabb..f542741a1 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java @@ -394,6 +394,12 @@ public static boolean getAutomatedScreenshotUpload() { .getAsBoolean(); // default = true } + // DrugVaultMessages + public static boolean getDrugVaultMessageActivated() { + return !UnicacityAddon.ADDON.getConfig().has("DRUG_VAULT_MESSAGE_SETTING") || UnicacityAddon.ADDON.getConfig().get("DRUG_VAULT_MESSAGE_SETTING") + .getAsBoolean(); // default = true + } + // EquipSettings public static String getBaseballBatPrice() { return UnicacityAddon.ADDON.getConfig().has("EQUIP_BASEBALLBAT_SETTING") && !UnicacityAddon.ADDON.getConfig().get("EQUIP_BASEBALLBAT_SETTING").getAsString().isEmpty() && !UnicacityAddon.ADDON.getConfig().get("EQUIP_BASEBALLBAT_SETTING").getAsString().startsWith("-") diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSettings.java b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSettings.java index 83663196b..2dd51bfcd 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSettings.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSettings.java @@ -83,6 +83,9 @@ static Settings getMessageSettings(UnicacityAddon unicacityAddon) { BooleanElement dbankMessageSettings = new BooleanElement("D-Bank Nachrichten", unicacityAddon, new ControlElement.IconData(Material.SUGAR), "DBANK_MESSAGE_SETTINGS", ConfigElements.getDrugBankMessagesActivated()); settings.add(dbankMessageSettings); + BooleanElement drugVaultSetting = new BooleanElement("Asservatenkammer Nachrichten", unicacityAddon, new ControlElement.IconData(Material.CHEST), "DRUG_VAULT_MESSAGE_SETTING", ConfigElements.getDrugVaultMessageActivated()); + settings.add(drugVaultSetting); + return settings; } diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 07be57246..7600e3564 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -317,4 +317,14 @@ public class PatternHandler { * @see com.rettichlp.unicacityaddon.events.faction.kirche.PrayEventHandler */ public static final Pattern PRAYING_START_PATTERN = Pattern.compile("^\\[Kirche] Du hast begonnen für (?:\\[UC])*(?\\w+) zu beten\\.$"); + + /** + * Pattern for drug vault messages + * @see com.rettichlp.unicacityaddon.events.faction.fbi.DrugVaultMessageEventHandler + */ + public static final Pattern DRUG_VAULT_DROP = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*([a-zA-Z0-9_]+) hat ([0-9]+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) in der Asservatenkammer verstaut.$"); + + public static final Pattern DRUG_VAULT_GET = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*([a-zA-Z0-9_]+) hat ([0-9]+)g (.+) \\((.+)\\) aus der Asservatenkammer genommen.$"); + + public static final Pattern DRUG_VAULT_BURN = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*([a-zA-Z0-9_]+) hat ([0-9]+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) vernichtet.$"); } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java new file mode 100644 index 000000000..cd0ce56a0 --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java @@ -0,0 +1,77 @@ +package com.rettichlp.unicacityaddon.events.faction.fbi; + +import com.rettichlp.unicacityaddon.base.config.ConfigElements; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.base.text.Message; +import com.rettichlp.unicacityaddon.base.text.PatternHandler; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.util.regex.Matcher; + +/** + * @author Gelegenheitscode + */ +@UCEvent +public class DrugVaultMessageEventHandler { + @SubscribeEvent + public void onClientChatReceived(ClientChatReceivedEvent e) { + String msg = e.getMessage().getUnformattedText(); + + Matcher m = PatternHandler.DRUG_VAULT_DROP.matcher(msg); + if (ConfigElements.getDrugVaultMessageActivated()) { + if (m.find()) { + e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("+").color(ColorCode.GREEN).advance() + .of(m.group(3)).color(ColorCode.GREEN).advance() + .of("g").color(ColorCode.GREEN).advance().space() + .of(m.group(4)).color(ColorCode.GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(5)).color(ColorCode.YELLOW).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(2)).color(ColorCode.AQUA).advance() + .createComponent()); + return; + } + } + Matcher m1 = PatternHandler.DRUG_VAULT_GET.matcher(msg); + if (ConfigElements.getDrugVaultMessageActivated()) { + if (m1.find()) { + e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("-").color(ColorCode.RED).advance() + .of(m1.group(3)).color(ColorCode.RED).advance() + .of("g").color(ColorCode.RED).advance().space() + .of(m1.group(4)).color(ColorCode.RED).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(5)).color(ColorCode.YELLOW).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m1.group(2)).color(ColorCode.AQUA).advance() + .createComponent()); + return; + } + } + Matcher m2 = PatternHandler.DRUG_VAULT_BURN.matcher(msg); + if (ConfigElements.getDrugVaultMessageActivated()) { + if (m2.find()) { + e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("✕").color(ColorCode.GOLD).advance().space() + .of(m2.group(3)).color(ColorCode.GOLD).advance() + .of("g").color(ColorCode.GOLD).advance().space() + .of(m2.group(4)).color(ColorCode.GOLD).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(5)).color(ColorCode.YELLOW).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m1.group(2)).color(ColorCode.AQUA).advance() + .createComponent()); + } + } + + } +} From 7537202e2b0dfe16d2e6fa7b5187c4e3301f283a Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Sat, 11 Feb 2023 21:14:55 +0100 Subject: [PATCH 024/136] change plant burn message --- .../base/config/ConfigElements.java | 6 ++++ .../base/config/ConfigSettings.java | 3 ++ .../base/text/PatternHandler.java | 6 ++++ .../polizei/PlantBurnMessageEventHandler.java | 36 +++++++++++++++++++ 4 files changed, 51 insertions(+) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/PlantBurnMessageEventHandler.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java index f542741a1..ad6073981 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java @@ -400,6 +400,12 @@ public static boolean getDrugVaultMessageActivated() { .getAsBoolean(); // default = true } + // PlantBurnMessages + public static boolean getPlantBurnMessageActivated() { + return !UnicacityAddon.ADDON.getConfig().has("PLANT_BURN_MESSAGE_SETTING") || UnicacityAddon.ADDON.getConfig().get("PLANT_BURN_MESSAGE_SETTING") + .getAsBoolean(); // default = true + } + // EquipSettings public static String getBaseballBatPrice() { return UnicacityAddon.ADDON.getConfig().has("EQUIP_BASEBALLBAT_SETTING") && !UnicacityAddon.ADDON.getConfig().get("EQUIP_BASEBALLBAT_SETTING").getAsString().isEmpty() && !UnicacityAddon.ADDON.getConfig().get("EQUIP_BASEBALLBAT_SETTING").getAsString().startsWith("-") diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSettings.java b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSettings.java index 2dd51bfcd..4ef17db6e 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSettings.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSettings.java @@ -86,6 +86,9 @@ static Settings getMessageSettings(UnicacityAddon unicacityAddon) { BooleanElement drugVaultSetting = new BooleanElement("Asservatenkammer Nachrichten", unicacityAddon, new ControlElement.IconData(Material.CHEST), "DRUG_VAULT_MESSAGE_SETTING", ConfigElements.getDrugVaultMessageActivated()); settings.add(drugVaultSetting); + BooleanElement plantBurnSetting = new BooleanElement("Plant-Burn Nachricht", unicacityAddon, new ControlElement.IconData(Material.FIRE), "PLANT_BURN_MESSAGE_SETTING", ConfigElements.getPlantBurnMessageActivated()); + settings.add(plantBurnSetting); + return settings; } diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 7600e3564..29a8b97a5 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -327,4 +327,10 @@ public class PatternHandler { public static final Pattern DRUG_VAULT_GET = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*([a-zA-Z0-9_]+) hat ([0-9]+)g (.+) \\((.+)\\) aus der Asservatenkammer genommen.$"); public static final Pattern DRUG_VAULT_BURN = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*([a-zA-Z0-9_]+) hat ([0-9]+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) vernichtet.$"); + + /** + * Pattern for plant burn message + * @see com.rettichlp.unicacityaddon.events.faction.polizei.PlantBurnMessageEventHandler + */ + public static final Pattern PLANT_BURN = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*([a-zA-Z0-9_]+) hat erfolgreich eine (Kokain|Marihuana) Plantage verbrannt, over.$"); } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/PlantBurnMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/PlantBurnMessageEventHandler.java new file mode 100644 index 000000000..f34e423be --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/PlantBurnMessageEventHandler.java @@ -0,0 +1,36 @@ +package com.rettichlp.unicacityaddon.events.faction.polizei; + +import com.rettichlp.unicacityaddon.base.config.ConfigElements; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.base.text.Message; +import com.rettichlp.unicacityaddon.base.text.PatternHandler; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.util.regex.Matcher; + +/** + * @author Gelegenheitscode + */ + +@UCEvent +public class PlantBurnMessageEventHandler { + @SubscribeEvent + public void onClientChatReceived(ClientChatReceivedEvent e) { + String msg = e.getMessage().getUnformattedText(); + + Matcher m = PatternHandler.PLANT_BURN.matcher(msg); + if (ConfigElements.getPlantBurnMessageActivated()) { + if (m.find()) { + e.setMessage(Message.getBuilder().of("Plant-Burn").color(ColorCode.RED).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(2)).color(ColorCode.GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(3)).color(ColorCode.GOLD).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } + } + } +} From a71178d825964296e922c48322e7233a6991ce8a Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Sun, 12 Feb 2023 18:00:22 +0100 Subject: [PATCH 025/136] fix of drugvault get/burn messages (wrong matcher) --- .../fbi/DrugVaultMessageEventHandler.java | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java index cd0ce56a0..5a3fc8556 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java @@ -20,8 +20,10 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { String msg = e.getMessage().getUnformattedText(); Matcher m = PatternHandler.DRUG_VAULT_DROP.matcher(msg); + Matcher m1 = PatternHandler.DRUG_VAULT_GET.matcher(msg); + Matcher m2 = PatternHandler.DRUG_VAULT_BURN.matcher(msg); if (ConfigElements.getDrugVaultMessageActivated()) { - if (m.find()) { + if (m.find()) { e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() .of("+").color(ColorCode.GREEN).advance() @@ -34,12 +36,9 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { .of("|").color(ColorCode.DARK_GRAY).advance().space() .of(m.group(2)).color(ColorCode.AQUA).advance() .createComponent()); - return; - } - } - Matcher m1 = PatternHandler.DRUG_VAULT_GET.matcher(msg); - if (ConfigElements.getDrugVaultMessageActivated()) { - if (m1.find()) { + + + } else if (m1.find()) { e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() .of("-").color(ColorCode.RED).advance() @@ -47,17 +46,13 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { .of("g").color(ColorCode.RED).advance().space() .of(m1.group(4)).color(ColorCode.RED).advance().space() .of("(").color(ColorCode.GRAY).advance() - .of(m.group(5)).color(ColorCode.YELLOW).advance() + .of(m1.group(5)).color(ColorCode.YELLOW).advance() .of(")").color(ColorCode.GRAY).advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() .of(m1.group(2)).color(ColorCode.AQUA).advance() .createComponent()); - return; - } - } - Matcher m2 = PatternHandler.DRUG_VAULT_BURN.matcher(msg); - if (ConfigElements.getDrugVaultMessageActivated()) { - if (m2.find()) { + + } else if (m2.find()) { e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() .of("✕").color(ColorCode.GOLD).advance().space() @@ -65,10 +60,10 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { .of("g").color(ColorCode.GOLD).advance().space() .of(m2.group(4)).color(ColorCode.GOLD).advance().space() .of("(").color(ColorCode.GRAY).advance() - .of(m.group(5)).color(ColorCode.YELLOW).advance() + .of(m2.group(5)).color(ColorCode.YELLOW).advance() .of(")").color(ColorCode.GRAY).advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m1.group(2)).color(ColorCode.AQUA).advance() + .of(m2.group(2)).color(ColorCode.AQUA).advance() .createComponent()); } } From eaa83397200deba650b1f1f8dd05e171175e7f11 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 12 Feb 2023 22:39:37 +0100 Subject: [PATCH 026/136] Update src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../com/rettichlp/unicacityaddon/base/text/PatternHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 29a8b97a5..106668ca7 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -322,7 +322,7 @@ public class PatternHandler { * Pattern for drug vault messages * @see com.rettichlp.unicacityaddon.events.faction.fbi.DrugVaultMessageEventHandler */ - public static final Pattern DRUG_VAULT_DROP = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*([a-zA-Z0-9_]+) hat ([0-9]+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) in der Asservatenkammer verstaut.$"); + public static final Pattern DRUG_VAULT_DROP = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste|Gute|Mittlere|Schlechte) Reinheit\\) in der Asservatenkammer verstaut\\.$"); public static final Pattern DRUG_VAULT_GET = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*([a-zA-Z0-9_]+) hat ([0-9]+)g (.+) \\((.+)\\) aus der Asservatenkammer genommen.$"); From a1b31beba52c70492141fe0214872068a47e576b Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Sun, 12 Feb 2023 22:56:15 +0100 Subject: [PATCH 027/136] requested changes --- .../fbi/DrugVaultMessageEventHandler.java | 90 +++++++++---------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java index 5a3fc8556..a9e4df19f 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java @@ -17,55 +17,55 @@ public class DrugVaultMessageEventHandler { @SubscribeEvent public void onClientChatReceived(ClientChatReceivedEvent e) { + if (!ConfigElements.getDrugVaultMessageActivated()) { + return; + } String msg = e.getMessage().getUnformattedText(); - Matcher m = PatternHandler.DRUG_VAULT_DROP.matcher(msg); - Matcher m1 = PatternHandler.DRUG_VAULT_GET.matcher(msg); - Matcher m2 = PatternHandler.DRUG_VAULT_BURN.matcher(msg); - if (ConfigElements.getDrugVaultMessageActivated()) { - if (m.find()) { - e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("+").color(ColorCode.GREEN).advance() - .of(m.group(3)).color(ColorCode.GREEN).advance() - .of("g").color(ColorCode.GREEN).advance().space() - .of(m.group(4)).color(ColorCode.GREEN).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(5)).color(ColorCode.YELLOW).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(2)).color(ColorCode.AQUA).advance() - .createComponent()); - + if (PatternHandler.DRUG_VAULT_DROP.matcher(msg).find()) { + Matcher m = PatternHandler.DRUG_VAULT_DROP.matcher(msg); + e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("+").color(ColorCode.GREEN).advance() + .of(m.group(3)).color(ColorCode.GREEN).advance() + .of("g").color(ColorCode.GREEN).advance().space() + .of(m.group(4)).color(ColorCode.GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(5)).color(ColorCode.YELLOW).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(2)).color(ColorCode.AQUA).advance() + .createComponent()); - } else if (m1.find()) { - e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("-").color(ColorCode.RED).advance() - .of(m1.group(3)).color(ColorCode.RED).advance() - .of("g").color(ColorCode.RED).advance().space() - .of(m1.group(4)).color(ColorCode.RED).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m1.group(5)).color(ColorCode.YELLOW).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m1.group(2)).color(ColorCode.AQUA).advance() - .createComponent()); + } else if (PatternHandler.DRUG_VAULT_GET.matcher(msg).find()) { + Matcher m1 = PatternHandler.DRUG_VAULT_GET.matcher(msg); + e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("-").color(ColorCode.RED).advance() + .of(m1.group(3)).color(ColorCode.RED).advance() + .of("g").color(ColorCode.RED).advance().space() + .of(m1.group(4)).color(ColorCode.RED).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m1.group(5)).color(ColorCode.YELLOW).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m1.group(2)).color(ColorCode.AQUA).advance() + .createComponent()); - } else if (m2.find()) { - e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("✕").color(ColorCode.GOLD).advance().space() - .of(m2.group(3)).color(ColorCode.GOLD).advance() - .of("g").color(ColorCode.GOLD).advance().space() - .of(m2.group(4)).color(ColorCode.GOLD).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m2.group(5)).color(ColorCode.YELLOW).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m2.group(2)).color(ColorCode.AQUA).advance() - .createComponent()); - } + } else if (PatternHandler.DRUG_VAULT_BURN.matcher(msg).find()) { + Matcher m2 = PatternHandler.DRUG_VAULT_BURN.matcher(msg); + e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("✕").color(ColorCode.GOLD).advance().space() + .of(m2.group(3)).color(ColorCode.GOLD).advance() + .of("g").color(ColorCode.GOLD).advance().space() + .of(m2.group(4)).color(ColorCode.GOLD).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m2.group(5)).color(ColorCode.YELLOW).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m2.group(2)).color(ColorCode.AQUA).advance() + .createComponent()); } } From 4e1566e263f14189f86df6b3c67d02451df9356a Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Sun, 12 Feb 2023 23:00:11 +0100 Subject: [PATCH 028/136] requested changes --- .../unicacityaddon/base/text/PatternHandler.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 106668ca7..df0c41b83 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -322,15 +322,15 @@ public class PatternHandler { * Pattern for drug vault messages * @see com.rettichlp.unicacityaddon.events.faction.fbi.DrugVaultMessageEventHandler */ - public static final Pattern DRUG_VAULT_DROP = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste|Gute|Mittlere|Schlechte) Reinheit\\) in der Asservatenkammer verstaut\\.$"); + public static final Pattern DRUG_VAULT_DROP = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\\\((Höchste|Gute|Mittlere|Schlechte) Reinheit\\\\) in der Asservatenkammer verstaut.$"); - public static final Pattern DRUG_VAULT_GET = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*([a-zA-Z0-9_]+) hat ([0-9]+)g (.+) \\((.+)\\) aus der Asservatenkammer genommen.$"); + public static final Pattern DRUG_VAULT_GET = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\\\((Höchste|Gute|Mittlere|Schlechte) Reinheit\\\\) aus der Asservatenkammer genommen.$"); - public static final Pattern DRUG_VAULT_BURN = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*([a-zA-Z0-9_]+) hat ([0-9]+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) vernichtet.$"); + public static final Pattern DRUG_VAULT_BURN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\\\((Höchste|Gute|Mittlere|Schlechte) Reinheit\\\\) vernichtet.$"); /** * Pattern for plant burn message * @see com.rettichlp.unicacityaddon.events.faction.polizei.PlantBurnMessageEventHandler */ - public static final Pattern PLANT_BURN = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*([a-zA-Z0-9_]+) hat erfolgreich eine (Kokain|Marihuana) Plantage verbrannt, over.$"); + public static final Pattern PLANT_BURN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat erfolgreich eine (Kokain|Marihuana) Plantage verbrannt, over.$"); } \ No newline at end of file From 74397f542862474e3744ac2a64116a1cac73c9a2 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Mon, 13 Feb 2023 14:19:54 +0100 Subject: [PATCH 029/136] fix (dimiikou) --- .../base/text/PatternHandler.java | 6 ++--- .../fbi/DrugVaultMessageEventHandler.java | 26 ++++++++++--------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index df0c41b83..30d25fce3 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -322,11 +322,11 @@ public class PatternHandler { * Pattern for drug vault messages * @see com.rettichlp.unicacityaddon.events.faction.fbi.DrugVaultMessageEventHandler */ - public static final Pattern DRUG_VAULT_DROP = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\\\((Höchste|Gute|Mittlere|Schlechte) Reinheit\\\\) in der Asservatenkammer verstaut.$"); + public static final Pattern DRUG_VAULT_DROP = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) in der Asservatenkammer verstaut.$"); - public static final Pattern DRUG_VAULT_GET = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\\\((Höchste|Gute|Mittlere|Schlechte) Reinheit\\\\) aus der Asservatenkammer genommen.$"); + public static final Pattern DRUG_VAULT_GET = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) aus der Asservatenkammer genommen.$"); - public static final Pattern DRUG_VAULT_BURN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\\\((Höchste|Gute|Mittlere|Schlechte) Reinheit\\\\) vernichtet.$"); + public static final Pattern DRUG_VAULT_BURN = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) vernichtet.$"); /** * Pattern for plant burn message diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java index a9e4df19f..bf4b37245 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java @@ -36,35 +36,37 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { .of("|").color(ColorCode.DARK_GRAY).advance().space() .of(m.group(2)).color(ColorCode.AQUA).advance() .createComponent()); + return; - } else if (PatternHandler.DRUG_VAULT_GET.matcher(msg).find()) { - Matcher m1 = PatternHandler.DRUG_VAULT_GET.matcher(msg); + } if (PatternHandler.DRUG_VAULT_GET.matcher(msg).find()) { + Matcher m = PatternHandler.DRUG_VAULT_GET.matcher(msg); e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() .of("-").color(ColorCode.RED).advance() - .of(m1.group(3)).color(ColorCode.RED).advance() + .of(m.group(3)).color(ColorCode.RED).advance() .of("g").color(ColorCode.RED).advance().space() - .of(m1.group(4)).color(ColorCode.RED).advance().space() + .of(m.group(4)).color(ColorCode.RED).advance().space() .of("(").color(ColorCode.GRAY).advance() - .of(m1.group(5)).color(ColorCode.YELLOW).advance() + .of(m.group(5)).color(ColorCode.YELLOW).advance() .of(")").color(ColorCode.GRAY).advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m1.group(2)).color(ColorCode.AQUA).advance() + .of(m.group(2)).color(ColorCode.AQUA).advance() .createComponent()); + return; - } else if (PatternHandler.DRUG_VAULT_BURN.matcher(msg).find()) { - Matcher m2 = PatternHandler.DRUG_VAULT_BURN.matcher(msg); + } if (PatternHandler.DRUG_VAULT_BURN.matcher(msg).find()) { + Matcher m = PatternHandler.DRUG_VAULT_BURN.matcher(msg); e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() .of("✕").color(ColorCode.GOLD).advance().space() - .of(m2.group(3)).color(ColorCode.GOLD).advance() + .of(m.group(3)).color(ColorCode.GOLD).advance() .of("g").color(ColorCode.GOLD).advance().space() - .of(m2.group(4)).color(ColorCode.GOLD).advance().space() + .of(m.group(4)).color(ColorCode.GOLD).advance().space() .of("(").color(ColorCode.GRAY).advance() - .of(m2.group(5)).color(ColorCode.YELLOW).advance() + .of(m.group(5)).color(ColorCode.YELLOW).advance() .of(")").color(ColorCode.GRAY).advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m2.group(2)).color(ColorCode.AQUA).advance() + .of(m.group(2)).color(ColorCode.AQUA).advance() .createComponent()); } From 9614707d6a9d8163e32e3fa0979e7758a441e35f Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Mon, 13 Feb 2023 14:21:58 +0100 Subject: [PATCH 030/136] =?UTF-8?q?fix=20(f=C3=BCr=20dimiikou)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rettichlp/unicacityaddon/base/text/PatternHandler.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 30d25fce3..a5ef5a82e 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -322,11 +322,11 @@ public class PatternHandler { * Pattern for drug vault messages * @see com.rettichlp.unicacityaddon.events.faction.fbi.DrugVaultMessageEventHandler */ - public static final Pattern DRUG_VAULT_DROP = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) in der Asservatenkammer verstaut.$"); + public static final Pattern DRUG_VAULT_DROP = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) in der Asservatenkammer verstaut.$"); - public static final Pattern DRUG_VAULT_GET = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) aus der Asservatenkammer genommen.$"); + public static final Pattern DRUG_VAULT_GET = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) aus der Asservatenkammer genommen.$"); - public static final Pattern DRUG_VAULT_BURN = Pattern.compile("^HQ: (.+) (?:\\\\[UC\\\\])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) vernichtet.$"); + public static final Pattern DRUG_VAULT_BURN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) vernichtet.$"); /** * Pattern for plant burn message From 2ae910e02c2ac1ee1bcbb72f2e217c013b7fdded Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Mon, 13 Feb 2023 14:42:24 +0100 Subject: [PATCH 031/136] final fix --- .../faction/fbi/DrugVaultMessageEventHandler.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java index bf4b37245..f093ca415 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java @@ -13,6 +13,7 @@ /** * @author Gelegenheitscode */ + @UCEvent public class DrugVaultMessageEventHandler { @SubscribeEvent @@ -22,8 +23,8 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { } String msg = e.getMessage().getUnformattedText(); - if (PatternHandler.DRUG_VAULT_DROP.matcher(msg).find()) { - Matcher m = PatternHandler.DRUG_VAULT_DROP.matcher(msg); + Matcher m = PatternHandler.DRUG_VAULT_DROP.matcher(msg); + if (m.find()) { e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() .of("+").color(ColorCode.GREEN).advance() @@ -38,8 +39,9 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { .createComponent()); return; - } if (PatternHandler.DRUG_VAULT_GET.matcher(msg).find()) { - Matcher m = PatternHandler.DRUG_VAULT_GET.matcher(msg); + } + m = PatternHandler.DRUG_VAULT_GET.matcher(msg); + if (m.find()) { e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() .of("-").color(ColorCode.RED).advance() @@ -54,8 +56,9 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { .createComponent()); return; - } if (PatternHandler.DRUG_VAULT_BURN.matcher(msg).find()) { - Matcher m = PatternHandler.DRUG_VAULT_BURN.matcher(msg); + } + m = PatternHandler.DRUG_VAULT_BURN.matcher(msg); + if (m.find()) { e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() .of("✕").color(ColorCode.GOLD).advance().space() From bcc9362fbccb45e9a4fe1b151558bf72354c3628 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 14 Feb 2023 18:39:58 +0100 Subject: [PATCH 032/136] Fix code style --- .../base/config/ConfigElements.java | 4 +- .../base/config/ConfigSettings.java | 4 +- .../base/text/PatternHandler.java | 25 +++--- .../faction/polizei/ModifyWantedsCommand.java | 2 +- .../events/NameTagEventHandler.java | 2 +- .../fbi/DrugVaultMessageEventHandler.java | 77 ---------------- .../polizei/PlantBurnMessageEventHandler.java | 36 -------- .../state/DrugMessageEventHandler.java | 89 +++++++++++++++++++ .../HQMessageEventHandler.java | 2 +- .../WantedEventHandler.java | 2 +- 10 files changed, 107 insertions(+), 136 deletions(-) delete mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java delete mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/PlantBurnMessageEventHandler.java create mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java rename src/main/java/com/rettichlp/unicacityaddon/events/faction/{polizei => state}/HQMessageEventHandler.java (98%) rename src/main/java/com/rettichlp/unicacityaddon/events/faction/{polizei => state}/WantedEventHandler.java (98%) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java index ad6073981..bdf73947f 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java @@ -396,13 +396,13 @@ public static boolean getAutomatedScreenshotUpload() { // DrugVaultMessages public static boolean getDrugVaultMessageActivated() { - return !UnicacityAddon.ADDON.getConfig().has("DRUG_VAULT_MESSAGE_SETTING") || UnicacityAddon.ADDON.getConfig().get("DRUG_VAULT_MESSAGE_SETTING") + return !UnicacityAddon.ADDON.getConfig().has("DRUG_VAULT_MESSAGE_SETTINGS") || UnicacityAddon.ADDON.getConfig().get("DRUG_VAULT_MESSAGE_SETTINGS") .getAsBoolean(); // default = true } // PlantBurnMessages public static boolean getPlantBurnMessageActivated() { - return !UnicacityAddon.ADDON.getConfig().has("PLANT_BURN_MESSAGE_SETTING") || UnicacityAddon.ADDON.getConfig().get("PLANT_BURN_MESSAGE_SETTING") + return !UnicacityAddon.ADDON.getConfig().has("PLANT_BURN_MESSAGE_SETTINGS") || UnicacityAddon.ADDON.getConfig().get("PLANT_BURN_MESSAGE_SETTINGS") .getAsBoolean(); // default = true } diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSettings.java b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSettings.java index 4ef17db6e..049d53a78 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSettings.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSettings.java @@ -83,10 +83,10 @@ static Settings getMessageSettings(UnicacityAddon unicacityAddon) { BooleanElement dbankMessageSettings = new BooleanElement("D-Bank Nachrichten", unicacityAddon, new ControlElement.IconData(Material.SUGAR), "DBANK_MESSAGE_SETTINGS", ConfigElements.getDrugBankMessagesActivated()); settings.add(dbankMessageSettings); - BooleanElement drugVaultSetting = new BooleanElement("Asservatenkammer Nachrichten", unicacityAddon, new ControlElement.IconData(Material.CHEST), "DRUG_VAULT_MESSAGE_SETTING", ConfigElements.getDrugVaultMessageActivated()); + BooleanElement drugVaultSetting = new BooleanElement("Asservatenkammer Nachrichten", unicacityAddon, new ControlElement.IconData(Material.CHEST), "DRUG_VAULT_MESSAGE_SETTINGS", ConfigElements.getDrugVaultMessageActivated()); settings.add(drugVaultSetting); - BooleanElement plantBurnSetting = new BooleanElement("Plant-Burn Nachricht", unicacityAddon, new ControlElement.IconData(Material.FIRE), "PLANT_BURN_MESSAGE_SETTING", ConfigElements.getPlantBurnMessageActivated()); + BooleanElement plantBurnSetting = new BooleanElement("Plant-Burn Nachricht", unicacityAddon, new ControlElement.IconData(Material.FIRE), "PLANT_BURN_MESSAGE_SETTINGS", ConfigElements.getPlantBurnMessageActivated()); settings.add(plantBurnSetting); return settings; diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index a5ef5a82e..d551c120c 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -1,6 +1,7 @@ package com.rettichlp.unicacityaddon.base.text; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.events.faction.state.DrugMessageEventHandler; import java.util.regex.Pattern; @@ -83,8 +84,8 @@ public class PatternHandler { * @see com.rettichlp.unicacityaddon.events.faction.ContractEventHandler * @see com.rettichlp.unicacityaddon.events.faction.badfaction.blacklist.BlacklistEventHandler * @see com.rettichlp.unicacityaddon.events.faction.badfaction.blacklist.BlacklistModifyEventHandler - * @see com.rettichlp.unicacityaddon.events.faction.polizei.HQMessageEventHandler - * @see com.rettichlp.unicacityaddon.events.faction.polizei.WantedEventHandler + * @see com.rettichlp.unicacityaddon.events.faction.state.HQMessageEventHandler + * @see com.rettichlp.unicacityaddon.events.faction.state.WantedEventHandler */ public static final Pattern WANTED_LIST_PATTERN = Pattern.compile("^ {2}- (?:\\[UC])*(\\w+) \\| (\\d+) WPS \\((.+)\\)(| \\| AFK)$"); public static final Pattern WANTED_GIVEN_REASON_PATTERN = Pattern.compile("^HQ: Gesuchter: (?:\\[UC])*(\\w+)\\. Grund: (.+)$"); @@ -319,18 +320,12 @@ public class PatternHandler { public static final Pattern PRAYING_START_PATTERN = Pattern.compile("^\\[Kirche] Du hast begonnen für (?:\\[UC])*(?\\w+) zu beten\\.$"); /** - * Pattern for drug vault messages - * @see com.rettichlp.unicacityaddon.events.faction.fbi.DrugVaultMessageEventHandler - */ - public static final Pattern DRUG_VAULT_DROP = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) in der Asservatenkammer verstaut.$"); - - public static final Pattern DRUG_VAULT_GET = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) aus der Asservatenkammer genommen.$"); - - public static final Pattern DRUG_VAULT_BURN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) vernichtet.$"); - - /** - * Pattern for plant burn message - * @see com.rettichlp.unicacityaddon.events.faction.polizei.PlantBurnMessageEventHandler + * Pattern for state messages + * + * @see DrugMessageEventHandler */ - public static final Pattern PLANT_BURN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat erfolgreich eine (Kokain|Marihuana) Plantage verbrannt, over.$"); + public static final Pattern DRUG_VAULT_DROP_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) in der Asservatenkammer verstaut\\.$"); + public static final Pattern DRUG_VAULT_GET_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) aus der Asservatenkammer genommen\\.$"); + public static final Pattern DRUG_VAULT_BURN_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) vernichtet\\.$"); + public static final Pattern PLANT_BURN_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat erfolgreich eine (Kokain|Marihuana) Plantage verbrannt, over\\.$"); } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ModifyWantedsCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ModifyWantedsCommand.java index 5a1d3a78f..633229da6 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ModifyWantedsCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ModifyWantedsCommand.java @@ -5,7 +5,7 @@ import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; import com.rettichlp.unicacityaddon.base.utils.ForgeUtils; import com.rettichlp.unicacityaddon.base.utils.MathUtils; -import com.rettichlp.unicacityaddon.events.faction.polizei.WantedEventHandler; +import com.rettichlp.unicacityaddon.events.faction.state.WantedEventHandler; import net.minecraft.command.ICommand; import net.minecraft.command.ICommandSender; import net.minecraft.server.MinecraftServer; diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/NameTagEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/NameTagEventHandler.java index ce6d531fc..4a51cb752 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/NameTagEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/NameTagEventHandler.java @@ -12,7 +12,7 @@ import com.rettichlp.unicacityaddon.base.text.Message; import com.rettichlp.unicacityaddon.events.faction.ContractEventHandler; import com.rettichlp.unicacityaddon.events.faction.badfaction.blacklist.BlacklistEventHandler; -import com.rettichlp.unicacityaddon.events.faction.polizei.WantedEventHandler; +import com.rettichlp.unicacityaddon.events.faction.state.WantedEventHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.scoreboard.ScorePlayerTeam; import net.minecraftforge.event.entity.player.PlayerEvent; diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java deleted file mode 100644 index f093ca415..000000000 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/fbi/DrugVaultMessageEventHandler.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.rettichlp.unicacityaddon.events.faction.fbi; - -import com.rettichlp.unicacityaddon.base.config.ConfigElements; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.base.text.PatternHandler; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; - -import java.util.regex.Matcher; - -/** - * @author Gelegenheitscode - */ - -@UCEvent -public class DrugVaultMessageEventHandler { - @SubscribeEvent - public void onClientChatReceived(ClientChatReceivedEvent e) { - if (!ConfigElements.getDrugVaultMessageActivated()) { - return; - } - String msg = e.getMessage().getUnformattedText(); - - Matcher m = PatternHandler.DRUG_VAULT_DROP.matcher(msg); - if (m.find()) { - e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("+").color(ColorCode.GREEN).advance() - .of(m.group(3)).color(ColorCode.GREEN).advance() - .of("g").color(ColorCode.GREEN).advance().space() - .of(m.group(4)).color(ColorCode.GREEN).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(5)).color(ColorCode.YELLOW).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(2)).color(ColorCode.AQUA).advance() - .createComponent()); - return; - - } - m = PatternHandler.DRUG_VAULT_GET.matcher(msg); - if (m.find()) { - e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("-").color(ColorCode.RED).advance() - .of(m.group(3)).color(ColorCode.RED).advance() - .of("g").color(ColorCode.RED).advance().space() - .of(m.group(4)).color(ColorCode.RED).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(5)).color(ColorCode.YELLOW).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(2)).color(ColorCode.AQUA).advance() - .createComponent()); - return; - - } - m = PatternHandler.DRUG_VAULT_BURN.matcher(msg); - if (m.find()) { - e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("✕").color(ColorCode.GOLD).advance().space() - .of(m.group(3)).color(ColorCode.GOLD).advance() - .of("g").color(ColorCode.GOLD).advance().space() - .of(m.group(4)).color(ColorCode.GOLD).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(5)).color(ColorCode.YELLOW).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(2)).color(ColorCode.AQUA).advance() - .createComponent()); - } - - } -} diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/PlantBurnMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/PlantBurnMessageEventHandler.java deleted file mode 100644 index f34e423be..000000000 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/PlantBurnMessageEventHandler.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.rettichlp.unicacityaddon.events.faction.polizei; - -import com.rettichlp.unicacityaddon.base.config.ConfigElements; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.base.text.PatternHandler; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; - -import java.util.regex.Matcher; - -/** - * @author Gelegenheitscode - */ - -@UCEvent -public class PlantBurnMessageEventHandler { - @SubscribeEvent - public void onClientChatReceived(ClientChatReceivedEvent e) { - String msg = e.getMessage().getUnformattedText(); - - Matcher m = PatternHandler.PLANT_BURN.matcher(msg); - if (ConfigElements.getPlantBurnMessageActivated()) { - if (m.find()) { - e.setMessage(Message.getBuilder().of("Plant-Burn").color(ColorCode.RED).bold().advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(2)).color(ColorCode.GREEN).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(3)).color(ColorCode.GOLD).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .createComponent()); - } - } - } -} diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java new file mode 100644 index 000000000..69ff92a37 --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java @@ -0,0 +1,89 @@ +package com.rettichlp.unicacityaddon.events.faction.state; + +import com.rettichlp.unicacityaddon.base.config.ConfigElements; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.base.text.Message; +import com.rettichlp.unicacityaddon.base.text.PatternHandler; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.util.regex.Matcher; + +/** + * @author Gelegenheitscode + */ +@UCEvent +public class DrugMessageEventHandler { + + @SubscribeEvent + public void onClientChatReceived(ClientChatReceivedEvent e) { + String msg = e.getMessage().getUnformattedText(); + + if (ConfigElements.getDrugVaultMessageActivated()) { + Matcher drugVaultDropMatcher = PatternHandler.DRUG_VAULT_DROP_PATTERN.matcher(msg); + if (drugVaultDropMatcher.find()) { + e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("+").color(ColorCode.GREEN).advance() + .of(drugVaultDropMatcher.group(3)).color(ColorCode.GREEN).advance() + .of("g").color(ColorCode.GREEN).advance().space() + .of(drugVaultDropMatcher.group(4)).color(ColorCode.GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(drugVaultDropMatcher.group(5)).color(ColorCode.YELLOW).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultDropMatcher.group(2)).color(ColorCode.AQUA).advance() + .createComponent()); + return; + } + + Matcher drugVaultGetMatcher = PatternHandler.DRUG_VAULT_GET_PATTERN.matcher(msg); + if (drugVaultGetMatcher.find()) { + e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("-").color(ColorCode.RED).advance() + .of(drugVaultGetMatcher.group(3)).color(ColorCode.RED).advance() + .of("g").color(ColorCode.RED).advance().space() + .of(drugVaultGetMatcher.group(4)).color(ColorCode.RED).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(drugVaultGetMatcher.group(5)).color(ColorCode.YELLOW).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultGetMatcher.group(2)).color(ColorCode.AQUA).advance() + .createComponent()); + return; + } + + Matcher drugVaultBurnMatcher = PatternHandler.DRUG_VAULT_BURN_PATTERN.matcher(msg); + if (drugVaultBurnMatcher.find()) { + e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("✕").color(ColorCode.GOLD).advance().space() + .of(drugVaultBurnMatcher.group(3)).color(ColorCode.GOLD).advance() + .of("g").color(ColorCode.GOLD).advance().space() + .of(drugVaultBurnMatcher.group(4)).color(ColorCode.GOLD).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(drugVaultBurnMatcher.group(5)).color(ColorCode.YELLOW).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultBurnMatcher.group(2)).color(ColorCode.AQUA).advance() + .createComponent()); + return; + } + } + + if (ConfigElements.getPlantBurnMessageActivated()) { + Matcher plantBurnMatcher = PatternHandler.PLANT_BURN_PATTERN.matcher(msg); + if (plantBurnMatcher.find()) { + e.setMessage(Message.getBuilder().of("Plant-Burn").color(ColorCode.RED).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(plantBurnMatcher.group(2)).color(ColorCode.GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(plantBurnMatcher.group(3)).color(ColorCode.GOLD).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } + } + } +} diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/HQMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java similarity index 98% rename from src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/HQMessageEventHandler.java rename to src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java index 978f4d9b9..4514a1f7a 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/HQMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java @@ -1,4 +1,4 @@ -package com.rettichlp.unicacityaddon.events.faction.polizei; +package com.rettichlp.unicacityaddon.events.faction.state; import com.rettichlp.unicacityaddon.base.config.ConfigElements; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/WantedEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java similarity index 98% rename from src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/WantedEventHandler.java rename to src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java index bb1799d03..c458b9bf9 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/WantedEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java @@ -1,4 +1,4 @@ -package com.rettichlp.unicacityaddon.events.faction.polizei; +package com.rettichlp.unicacityaddon.events.faction.state; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.PatternHandler; From da10ae7f640ff8f9e737a136b52658681d951556 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Tue, 14 Feb 2023 19:00:12 +0100 Subject: [PATCH 033/136] #607 #609 #608 --- .../unicacityaddon/base/config/Config.java | 6 + .../base/config/ConfigElements.java | 12 ++ .../fbi/KorruptionsrechnerCommand.java | 126 ++++++++++++++ .../polizei/WantedListEventHandler.java | 164 ++++++++++++++++++ .../terroristen/BombTimerEventHandler.java | 14 +- 5 files changed, 321 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java create mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/WantedListEventHandler.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/config/Config.java b/src/main/java/com/rettichlp/unicacityaddon/base/config/Config.java index 3899ff2f1..5b74a9286 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/config/Config.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/config/Config.java @@ -78,6 +78,9 @@ public static void createConfig(UnicacityAddon unicacityAddon, List getAliases() { + return Collections.emptyList(); + } + + @Override + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { + UPlayer p = AbstractionLayer.getPlayer(); + if (args.length < 1) { + p.sendSyntaxMessage(getUsage(sender)); + return; + } + String target = args[0]; + + WantedEventHandler.Wanted wanted = WantedEventHandler.WANTED_MAP.get(target); + if (wanted == null) { + p.sendErrorMessage("Du hast /wanteds noch nicht ausgeführt!"); + return; + } + int Betrag; + int Drugs; + int MethDrugs0; + int MethDrugs1; + int MethDrugs2; + Betrag = wanted.getAmount() * 150; + Drugs = Betrag / 55; + MethDrugs0 = Betrag / 110; + MethDrugs1 = Betrag / 100; + MethDrugs2 = Betrag / 50; + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.GRAY).advance().space() + .of("Korruptionspreise für").color(ColorCode.DARK_AQUA).advance().space() + .of(target).color(ColorCode.DARK_AQUA).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .createComponent()); + p.sendMessage(Message.getBuilder() + .of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of("Geld").color(ColorCode.DARK_AQUA).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(Betrag + "$").color(ColorCode.AQUA).advance() + .createComponent()); + p.sendMessage(Message.getBuilder() + .of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of("Drogen").color(ColorCode.DARK_AQUA).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(Drugs + "g").color(ColorCode.AQUA).advance() + .createComponent()); + p.sendMessage(Message.getBuilder() + .of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of("Meth").color(ColorCode.DARK_AQUA).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(MethDrugs0 + "g").color(ColorCode.AQUA).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(MethDrugs1 + "g").color(ColorCode.AQUA).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(MethDrugs2 + "g").color(ColorCode.AQUA).advance() + .createComponent()); + + } + + @Override + public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender) { + return true; + } + + @Override + @Nonnull + public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { + return TabCompletionBuilder.getBuilder(args) + .addToAllFromIndex(2, ForgeUtils.getOnlinePlayers()) + .build(); + } + + @Override + public boolean isUsernameIndex(@Nonnull String[] args, int index) { + return false; + } + + @Override + public int compareTo(@Nonnull ICommand o) { + return 0; + } +} diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/WantedListEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/WantedListEventHandler.java new file mode 100644 index 000000000..7b3887fe8 --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/WantedListEventHandler.java @@ -0,0 +1,164 @@ +package com.rettichlp.unicacityaddon.events.faction.polizei; + +import com.rettichlp.unicacityaddon.base.config.ConfigElements; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.base.text.Message; +import com.rettichlp.unicacityaddon.base.text.PatternHandler; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.util.regex.Matcher; + +/** + * @author Gelegenheitscode + */ + +@UCEvent +public class WantedListEventHandler { + @SubscribeEvent + public void onChat(ClientChatReceivedEvent e) { + if (!ConfigElements.getBetterWantedList()) { + return; + } + String msg = e.getMessage().getUnformattedText(); + + Matcher m = PatternHandler.WANTED_LIST_PATTERN.matcher(msg); + if (m.find()) { + int WantedAmount = Integer.parseInt(m.group(2)); + if (WantedAmount == 1) { + if (msg.contains("AFK")) { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.DARK_GREEN).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.DARK_GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("AFK").color(ColorCode.GRAY).advance() + .createComponent()); + } else { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.DARK_GREEN).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.DARK_GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } + } else if (WantedAmount <= 15 && WantedAmount >= 2) { + if (msg.contains("AFK")) { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.GREEN).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("AFK").color(ColorCode.GRAY).advance() + .createComponent()); + } else { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.GREEN).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } + } else if (WantedAmount <= 25 && WantedAmount >= 16) { + if (msg.contains("AFK")) { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.YELLOW).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.YELLOW).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("AFK").color(ColorCode.GRAY).advance() + .createComponent()); + } else { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.YELLOW).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.YELLOW).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } + } else if (WantedAmount <= 49 && WantedAmount >26) { + if (msg.contains("AFK")) { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.GOLD).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.GOLD).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("AFK").color(ColorCode.GRAY).advance() + .createComponent()); + } else { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.GOLD).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.GOLD).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } + } else if (WantedAmount <= 59 && WantedAmount >=50) { + if (msg.contains("AFK")) { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.RED).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.RED).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("AFK").color(ColorCode.GRAY).advance() + .createComponent()); + } else { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.RED).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.RED).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } + } else if (WantedAmount <= 69 && WantedAmount >= 60) { + if (msg.contains("AFK")) { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.DARK_RED).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.DARK_RED).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("AFK").color(ColorCode.GRAY).advance() + .createComponent()); + } else { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.DARK_RED).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.DARK_RED).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } + } + } + } +} diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java index dc71f0ee4..494375f6a 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java @@ -2,13 +2,16 @@ import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.config.ConfigElements; import com.rettichlp.unicacityaddon.base.enums.faction.Faction; +import com.rettichlp.unicacityaddon.base.manager.FileManager; import com.rettichlp.unicacityaddon.base.models.NaviPoint; import com.rettichlp.unicacityaddon.base.registry.SoundRegistry; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; import com.rettichlp.unicacityaddon.base.text.PatternHandler; +import com.rettichlp.unicacityaddon.events.HotkeyEventHandler; import com.rettichlp.unicacityaddon.modules.BombTimerModule; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.event.ClickEvent; @@ -16,6 +19,8 @@ import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import java.io.File; +import java.io.IOException; import java.util.regex.Matcher; /** @@ -59,7 +64,14 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { Matcher m = PatternHandler.BOMB_REMOVED_PATTERN.matcher(unformattedMsg); if (m.find()) { String state = m.group(1); - + if (ConfigElements.getAutomatedBombScreenshot()) { + try { + File file = FileManager.getNewActivityImageFile("großeinsatz"); + HotkeyEventHandler.handleScreenshot(file); + } catch (IOException f) { + throw new RuntimeException(f); + } + } String time = BombTimerModule.timer.startsWith(ColorCode.RED.getCode()) ? BombTimerModule.timer.substring(2) : BombTimerModule.timer; e.setMessage(Message.getBuilder() .add(formattedMsg) From deb79101bf685c962d0ec0dd661809bc60f6abc5 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Tue, 14 Feb 2023 19:36:00 +0100 Subject: [PATCH 034/136] corruption calculator --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index afe88e661..29bb3c265 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -7,7 +7,7 @@ import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; import com.rettichlp.unicacityaddon.base.utils.ForgeUtils; -import com.rettichlp.unicacityaddon.events.faction.polizei.WantedEventHandler; +import com.rettichlp.unicacityaddon.events.faction.state.WantedEventHandler; import net.minecraft.command.ICommand; import net.minecraft.command.ICommandSender; import net.minecraft.server.MinecraftServer; From 794b468c833a00785911665b8e618c174bf1931b Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 14 Feb 2023 21:04:40 +0100 Subject: [PATCH 035/136] Add mask events to AccountEventHandler with pattern in PatternHandler and MaskInfoCommand --- .../base/text/PatternHandler.java | 2 + .../unicacityaddon/base/utils/TextUtils.java | 2 +- .../commands/MaskInfoCommand.java | 87 +++++++++++++++++++ .../events/AccountEventHandler.java | 11 +++ 4 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/commands/MaskInfoCommand.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index d551c120c..911149ded 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -244,6 +244,8 @@ public class PatternHandler { public static final Pattern ACCOUNT_TREUEBONUS_PATTERN = Pattern.compile("^ {2}- Treuebonus: (\\d+) Punkte$"); public static final Pattern ACCOUNT_FRIEND_JOIN_PATTERN = Pattern.compile(" » Freundesliste: (?:\\[UC])*(?\\w+) ist nun online\\."); public static final Pattern ACCOUNT_FRIEND_LEAVE_PATTERN = Pattern.compile(" » Freundesliste: (?:\\[UC])*(?\\w+) ist nun offline\\."); + public static final Pattern ACCOUNT_MASK_ON_PATTERN = Pattern.compile("^\\[Masken] Du bist nun für 20 Minuten maskiert\\. \\[#\\d+]$"); + public static final Pattern ACCOUNT_MASK_OFF_PATTERN = Pattern.compile("^\\[Masken] Du hast deine Maske abgenommen\\.$"); /** * Pattern for timer interaction diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/utils/TextUtils.java b/src/main/java/com/rettichlp/unicacityaddon/base/utils/TextUtils.java index 5d8ccb94b..1aaf857cb 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/utils/TextUtils.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/utils/TextUtils.java @@ -7,7 +7,7 @@ */ public class TextUtils { - public static String parseTimer(int seconds) { + public static String parseTimer(long seconds) { return seconds >= 3600 ? String.format("%02d:%02d:%02d", seconds / 3600, seconds % 3600 / 60, seconds % 60) : String.format("%02d:%02d", seconds / 60, seconds % 60); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/MaskInfoCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/MaskInfoCommand.java new file mode 100644 index 000000000..6795bf905 --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/MaskInfoCommand.java @@ -0,0 +1,87 @@ +package com.rettichlp.unicacityaddon.commands; + +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; +import com.rettichlp.unicacityaddon.base.utils.TextUtils; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.client.IClientCommand; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.TimeUnit; + +/** + * @author RettichLP + */ +@UCCommand +public class MaskInfoCommand implements IClientCommand { + + public static long startTime = 0; + + @Override + @Nonnull + public String getName() { + return "maskinfo"; + } + + @Override + @Nonnull + public String getUsage(@Nonnull ICommandSender sender) { + return "/maskinfo"; + } + + @Override + @Nonnull + public List getAliases() { + return Collections.emptyList(); + } + + @Override + public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender) { + return true; + } + + @Override + @Nonnull + public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { + return TabCompletionBuilder.getBuilder(args).build(); + } + + @Override + public boolean isUsernameIndex(@Nonnull String[] args, int index) { + return false; + } + + @Override + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { + UPlayer p = AbstractionLayer.getPlayer(); + + if (startTime > 0) { + long timeLeft = System.currentTimeMillis() - startTime; + String maskDuration = TextUtils.parseTimer(1200 - TimeUnit.MILLISECONDS.toSeconds(timeLeft)); + String[] splittedMaskDurytion = maskDuration.split(":"); + int minutes = Integer.parseInt(splittedMaskDurytion[0]); + int seconds = Integer.parseInt(splittedMaskDurytion[1]); + p.sendInfoMessage("Du bist noch " + minutes + " Minute" + (minutes != 1 ? "n" : "") + " und " + seconds + " Sekunde" + (seconds != 1 ? "n" : "") + " maskiert."); + } else { + p.sendErrorMessage("Du bist nicht maskiert."); + } + } + + @Override + public boolean allowUsageWithoutPrefix(ICommandSender sender, String message) { + return false; + } + + @Override + public int compareTo(@Nonnull ICommand o) { + return 0; + } +} \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java index ef5c18b4c..e71bd2b9a 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java @@ -13,6 +13,7 @@ import com.rettichlp.unicacityaddon.base.text.PatternHandler; import com.rettichlp.unicacityaddon.base.utils.MathUtils; import com.rettichlp.unicacityaddon.base.utils.UpdateUtils; +import com.rettichlp.unicacityaddon.commands.MaskInfoCommand; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -129,6 +130,16 @@ public void run() { return; } + if (PatternHandler.ACCOUNT_MASK_ON_PATTERN.matcher(msg).find()) { + MaskInfoCommand.startTime = System.currentTimeMillis(); + return; + } + + if (PatternHandler.ACCOUNT_MASK_OFF_PATTERN.matcher(msg).find()) { + MaskInfoCommand.startTime = 0; + return; + } + Matcher accountPayDayMatcher = PatternHandler.ACCOUNT_PAYDAY_PATTERN.matcher(msg); if (accountPayDayMatcher.find()) FileManager.DATA.setPayDayTime(Integer.parseInt(accountPayDayMatcher.group(1))); From 0c392fc0f5ec46e7f398764b201715c079727ba0 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 14 Feb 2023 21:42:59 +0100 Subject: [PATCH 036/136] Add MemberInfoAllCommand and rename FactionInfoEventHandler to MemberInfoEventHandler --- .../commands/MemberInfoAllCommand.java | 118 ++++++++++++++++++ .../commands/MemberInfoCommand.java | 2 +- .../commands/faction/FactionInfoCommand.java | 8 +- ...ndler.java => MemberInfoEventHandler.java} | 2 +- 4 files changed, 124 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/commands/MemberInfoAllCommand.java rename src/main/java/com/rettichlp/unicacityaddon/events/faction/{FactionInfoEventHandler.java => MemberInfoEventHandler.java} (99%) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/MemberInfoAllCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/MemberInfoAllCommand.java new file mode 100644 index 000000000..eecdc7eb2 --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/MemberInfoAllCommand.java @@ -0,0 +1,118 @@ +package com.rettichlp.unicacityaddon.commands; + +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.api.Syncer; +import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; +import com.rettichlp.unicacityaddon.base.enums.faction.Faction; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.base.text.Message; +import com.rettichlp.unicacityaddon.base.utils.ForgeUtils; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.client.IClientCommand; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author RettichLP + */ +@UCCommand +public class MemberInfoAllCommand implements IClientCommand { + + @Override + @Nonnull + public String getName() { + return "memberinfoall"; + } + + @Override + @Nonnull + public String getUsage(@Nonnull ICommandSender sender) { + return "/memberinfoall (Fraktion)"; + } + + @Override + @Nonnull + public List getAliases() { + return Collections.singletonList("miall"); + } + + @Override + public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender) { + return true; + } + + @Override + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { + UPlayer p = AbstractionLayer.getPlayer(); + + String factionString = args.length < 1 ? p.getFaction().getFactionKey() : args[0]; + Faction faction = Faction.getFactionByFactionKey(factionString); + if (faction != null) { + + List factionMemberList = Syncer.PLAYERFACTIONMAP.entrySet().stream() + .filter(stringFactionEntry -> stringFactionEntry.getValue().equals(faction)) + .map(Map.Entry::getKey) + .collect(Collectors.toList()); + + p.sendMessage(Message.getBuilder().space().space() + .of("===").color(ColorCode.DARK_GRAY).advance().space() + .of("Fraktionsmitglieder").color(ColorCode.DARK_AQUA).advance().space() + .of("[").color(ColorCode.DARK_GRAY).advance() + .of(factionString).color(ColorCode.DARK_AQUA).advance() + .of("]").color(ColorCode.DARK_GRAY).advance().space() + .of("(").color(ColorCode.DARK_GRAY).advance() + .of(String.valueOf(factionMemberList.size())).color(ColorCode.AQUA).advance() + .of(")").color(ColorCode.DARK_GRAY).advance().space() + .of("===").color(ColorCode.DARK_GRAY).advance() + .createComponent()); + + factionMemberList.forEach(s -> { + boolean online = ForgeUtils.getOnlinePlayers().contains(s); + Integer rank = Syncer.PLAYERRANKMAP.get(s); + + p.sendMessage(Message.getBuilder().space() + .of("» Rang:").color(ColorCode.GRAY).advance().space() + .of(rank != null ? String.valueOf(rank) : "X").color(ColorCode.AQUA).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(s).color(online ? ColorCode.GREEN : ColorCode.RED).advance() + .createComponent()); + }); + } else { + p.sendErrorMessage("Fraktion nicht gefunden."); + } + } + + @Override + @Nonnull + public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { + return TabCompletionBuilder.getBuilder(args) + .addAtIndex(1, Arrays.stream(Faction.values()).map(Faction::getFactionKey).sorted().collect(Collectors.toList())) + .build(); + } + + @Override + public boolean isUsernameIndex(@Nonnull String[] args, int index) { + return false; + } + + @Override + public boolean allowUsageWithoutPrefix(ICommandSender sender, String message) { + return false; + } + + @Override + public int compareTo(@Nonnull ICommand o) { + return 0; + } +} \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/MemberInfoCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/MemberInfoCommand.java index c8959eeae..b467bab58 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/MemberInfoCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/MemberInfoCommand.java @@ -34,7 +34,7 @@ public String getName() { @Override @Nonnull public String getUsage(@Nonnull ICommandSender sender) { - return "/memberinfo [Fraktion]"; + return "/memberinfo (Fraktion)"; } @Override diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/FactionInfoCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/FactionInfoCommand.java index 7c539a032..ce76a442c 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/FactionInfoCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/FactionInfoCommand.java @@ -8,7 +8,7 @@ import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.events.faction.FactionInfoEventHandler; +import com.rettichlp.unicacityaddon.events.faction.MemberInfoEventHandler; import net.minecraft.command.ICommand; import net.minecraft.command.ICommandSender; import net.minecraft.server.MinecraftServer; @@ -114,15 +114,15 @@ public boolean isUsernameIndex(@Nonnull String[] args, int index) { } private Map getMembers(Faction faction) { - FactionInfoEventHandler.future = new CompletableFuture<>(); + MemberInfoEventHandler.future = new CompletableFuture<>(); AbstractionLayer.getPlayer().sendChatMessage("/memberinfo " + faction.getFactionKey()); try { - return Uninterruptibles.getUninterruptibly(FactionInfoEventHandler.future); + return Uninterruptibles.getUninterruptibly(MemberInfoEventHandler.future); } catch (ExecutionException e) { throw new IllegalStateException(e); } finally { - FactionInfoEventHandler.future = null; + MemberInfoEventHandler.future = null; } } diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/FactionInfoEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/MemberInfoEventHandler.java similarity index 99% rename from src/main/java/com/rettichlp/unicacityaddon/events/faction/FactionInfoEventHandler.java rename to src/main/java/com/rettichlp/unicacityaddon/events/faction/MemberInfoEventHandler.java index 29c562cd9..bbcd553b6 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/FactionInfoEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/MemberInfoEventHandler.java @@ -21,7 +21,7 @@ * @see UCUtils by paulzhng */ @UCEvent -public class FactionInfoEventHandler { +public class MemberInfoEventHandler { private static final Timer TIMER = new Timer(); private static final Pattern FACTION_MEMBERS_PATTERN = Pattern.compile("^ {2}=== Fraktionsmitglieder \\[(.+)] ===$"); From 82486bcf9b5c0bea085501de3ba6fe4f1ffb4eb8 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 14 Feb 2023 21:50:47 +0100 Subject: [PATCH 037/136] Update first aid issue pattern in PatternHandler --- .../com/rettichlp/unicacityaddon/base/text/PatternHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index ccc42e4b8..2cd07de63 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -150,7 +150,7 @@ public class PatternHandler { public static final Pattern REVIVE_FAILURE_PATTERN = Pattern.compile("^Verdammt\\.\\. mein Kopf dröhnt so\\.\\.\\.$"); public static final Pattern FIRST_AID_RECEIVE_PATTERN = Pattern.compile("^\\[Erste-Hilfe] Notarzt (?:\\[UC])*(\\w+) hat dir einen Erste-Hilfe-Schein für 14 Tage ausgestellt\\.$"); public static final Pattern FIRST_AID_LICENCE_PATTERN = Pattern.compile("^ {2}- Erste-Hilfe-Schein: Vorhanden$"); - public static final Pattern FIRST_AID_ISSUE_PATTERN = Pattern.compile("^$"); // TODO: 11.02.2023 + public static final Pattern FIRST_AID_ISSUE_PATTERN = Pattern.compile("^\\* " + playerName + " leistet Erste-Hilfe$"); public static final Pattern FIRST_AID_USE_PATTERN = Pattern.compile("^ {2}Info: Du bist nun eine Minute länger auf dem Friedhof\\.$"); public static final Pattern MEDICATION_GET_PATTERN = Pattern.compile("^\\[Apotheke] Du hast (?\\d+) (?.+) erhalten, gute Besserung!$"); From 9c40791fb99a76688bdd678488db18f9e3ab13d7 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Tue, 14 Feb 2023 21:51:39 +0100 Subject: [PATCH 038/136] Delete WantedListEventHandler.java --- .../polizei/WantedListEventHandler.java | 164 ------------------ 1 file changed, 164 deletions(-) delete mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/WantedListEventHandler.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/WantedListEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/WantedListEventHandler.java deleted file mode 100644 index 7b3887fe8..000000000 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/polizei/WantedListEventHandler.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.rettichlp.unicacityaddon.events.faction.polizei; - -import com.rettichlp.unicacityaddon.base.config.ConfigElements; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.base.text.PatternHandler; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; - -import java.util.regex.Matcher; - -/** - * @author Gelegenheitscode - */ - -@UCEvent -public class WantedListEventHandler { - @SubscribeEvent - public void onChat(ClientChatReceivedEvent e) { - if (!ConfigElements.getBetterWantedList()) { - return; - } - String msg = e.getMessage().getUnformattedText(); - - Matcher m = PatternHandler.WANTED_LIST_PATTERN.matcher(msg); - if (m.find()) { - int WantedAmount = Integer.parseInt(m.group(2)); - if (WantedAmount == 1) { - if (msg.contains("AFK")) { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_GREEN).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.DARK_GREEN).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("AFK").color(ColorCode.GRAY).advance() - .createComponent()); - } else { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_GREEN).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.DARK_GREEN).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .createComponent()); - } - } else if (WantedAmount <= 15 && WantedAmount >= 2) { - if (msg.contains("AFK")) { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.GREEN).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.GREEN).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("AFK").color(ColorCode.GRAY).advance() - .createComponent()); - } else { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.GREEN).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.GREEN).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .createComponent()); - } - } else if (WantedAmount <= 25 && WantedAmount >= 16) { - if (msg.contains("AFK")) { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.YELLOW).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.YELLOW).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("AFK").color(ColorCode.GRAY).advance() - .createComponent()); - } else { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.YELLOW).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.YELLOW).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .createComponent()); - } - } else if (WantedAmount <= 49 && WantedAmount >26) { - if (msg.contains("AFK")) { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.GOLD).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.GOLD).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("AFK").color(ColorCode.GRAY).advance() - .createComponent()); - } else { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.GOLD).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.GOLD).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .createComponent()); - } - } else if (WantedAmount <= 59 && WantedAmount >=50) { - if (msg.contains("AFK")) { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.RED).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.RED).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("AFK").color(ColorCode.GRAY).advance() - .createComponent()); - } else { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.RED).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.RED).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .createComponent()); - } - } else if (WantedAmount <= 69 && WantedAmount >= 60) { - if (msg.contains("AFK")) { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_RED).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.DARK_RED).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("AFK").color(ColorCode.GRAY).advance() - .createComponent()); - } else { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_RED).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.DARK_RED).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .createComponent()); - } - } - } - } -} From b546d5a140580b977f838bdb213193fa9c9e75f3 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Tue, 14 Feb 2023 21:59:23 +0100 Subject: [PATCH 039/136] Update KorruptionsrechnerCommand.java --- .../faction/fbi/KorruptionsrechnerCommand.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 29bb3c265..4b11e7091 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -22,7 +22,6 @@ /** * @author Gelegenheitscode */ - @UCCommand public class KorruptionsrechnerCommand implements IClientCommand { @@ -71,25 +70,24 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen MethDrugs1 = Betrag / 100; MethDrugs2 = Betrag / 50; p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.GRAY).advance().space() .of("Korruptionspreise für").color(ColorCode.DARK_AQUA).advance().space() .of(target).color(ColorCode.DARK_AQUA).advance() .of(":").color(ColorCode.DARK_GRAY).advance().space() .createComponent()); p.sendMessage(Message.getBuilder() - .of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of("»").color(ColorCode.GRAY).advance().space() .of("Geld").color(ColorCode.DARK_AQUA).advance() .of(":").color(ColorCode.DARK_GRAY).advance().space() .of(Betrag + "$").color(ColorCode.AQUA).advance() .createComponent()); p.sendMessage(Message.getBuilder() - .of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of("»").color(ColorCode.GRAY).advance().space() .of("Drogen").color(ColorCode.DARK_AQUA).advance() .of(":").color(ColorCode.DARK_GRAY).advance().space() .of(Drugs + "g").color(ColorCode.AQUA).advance() .createComponent()); p.sendMessage(Message.getBuilder() - .of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of("»").color(ColorCode.GRAY).advance().space() .of("Meth").color(ColorCode.DARK_AQUA).advance() .of(":").color(ColorCode.DARK_GRAY).advance().space() .of(MethDrugs0 + "g").color(ColorCode.AQUA).advance().space() @@ -109,9 +107,7 @@ public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull IComman @Override @Nonnull public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { - return TabCompletionBuilder.getBuilder(args) - .addToAllFromIndex(2, ForgeUtils.getOnlinePlayers()) - .build(); + return TabCompletionBuilder.getBuilder(args).build(); } @Override From 043fd6b5c54be85b755ce6242e4ea6489c74fa2f Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sat, 18 Feb 2023 11:02:05 +0100 Subject: [PATCH 040/136] Order entries --- .../commands/MemberInfoAllCommand.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/MemberInfoAllCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/MemberInfoAllCommand.java index eecdc7eb2..f2fde8a4f 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/MemberInfoAllCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/MemberInfoAllCommand.java @@ -19,6 +19,7 @@ import javax.annotation.Nullable; import java.util.Arrays; import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -60,10 +61,10 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen Faction faction = Faction.getFactionByFactionKey(factionString); if (faction != null) { - List factionMemberList = Syncer.PLAYERFACTIONMAP.entrySet().stream() + Map factionMemberList = Syncer.PLAYERFACTIONMAP.entrySet().stream() .filter(stringFactionEntry -> stringFactionEntry.getValue().equals(faction)) .map(Map.Entry::getKey) - .collect(Collectors.toList()); + .collect(Collectors.toMap(s -> s, Syncer.PLAYERRANKMAP::get)); p.sendMessage(Message.getBuilder().space().space() .of("===").color(ColorCode.DARK_GRAY).advance().space() @@ -77,17 +78,19 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of("===").color(ColorCode.DARK_GRAY).advance() .createComponent()); - factionMemberList.forEach(s -> { - boolean online = ForgeUtils.getOnlinePlayers().contains(s); - Integer rank = Syncer.PLAYERRANKMAP.get(s); - - p.sendMessage(Message.getBuilder().space() - .of("» Rang:").color(ColorCode.GRAY).advance().space() - .of(rank != null ? String.valueOf(rank) : "X").color(ColorCode.AQUA).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(s).color(online ? ColorCode.GREEN : ColorCode.RED).advance() - .createComponent()); - }); + factionMemberList.entrySet().stream() + .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) + .forEach(stringIntegerEntry -> { + String playername = stringIntegerEntry.getKey(); + Integer rank = stringIntegerEntry.getValue(); + + p.sendMessage(Message.getBuilder().space() + .of("» Rang:").color(ColorCode.GRAY).advance().space() + .of(rank != null ? String.valueOf(rank) : "X").color(ColorCode.AQUA).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(playername).color(ForgeUtils.getOnlinePlayers().contains(playername) ? ColorCode.GREEN : ColorCode.RED).advance() + .createComponent()); + }); } else { p.sendErrorMessage("Fraktion nicht gefunden."); } From c1a69f0d31e2ff9d669de5588f6098538201fc62 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sat, 18 Feb 2023 12:09:11 +0100 Subject: [PATCH 041/136] Update pattern in PatternHandler --- .../com/rettichlp/unicacityaddon/base/text/PatternHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 2cd07de63..d3a95bc5e 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -150,7 +150,7 @@ public class PatternHandler { public static final Pattern REVIVE_FAILURE_PATTERN = Pattern.compile("^Verdammt\\.\\. mein Kopf dröhnt so\\.\\.\\.$"); public static final Pattern FIRST_AID_RECEIVE_PATTERN = Pattern.compile("^\\[Erste-Hilfe] Notarzt (?:\\[UC])*(\\w+) hat dir einen Erste-Hilfe-Schein für 14 Tage ausgestellt\\.$"); public static final Pattern FIRST_AID_LICENCE_PATTERN = Pattern.compile("^ {2}- Erste-Hilfe-Schein: Vorhanden$"); - public static final Pattern FIRST_AID_ISSUE_PATTERN = Pattern.compile("^\\* " + playerName + " leistet Erste-Hilfe$"); + public static final Pattern FIRST_AID_ISSUE_PATTERN = Pattern.compile("^\\* " + playerName + " leistet Erste-Hilfe\\.$"); public static final Pattern FIRST_AID_USE_PATTERN = Pattern.compile("^ {2}Info: Du bist nun eine Minute länger auf dem Friedhof\\.$"); public static final Pattern MEDICATION_GET_PATTERN = Pattern.compile("^\\[Apotheke] Du hast (?\\d+) (?.+) erhalten, gute Besserung!$"); From f4905e23b22a274df94a566c42b8831123362eb2 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sat, 18 Feb 2023 12:16:36 +0100 Subject: [PATCH 042/136] Update display message in FirstAidEventHandler --- .../events/faction/rettungsdienst/FirstAidEventHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/FirstAidEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/FirstAidEventHandler.java index 93135bfbc..6d086f650 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/FirstAidEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/FirstAidEventHandler.java @@ -49,7 +49,7 @@ public void onFirstAidReceipt(ClientChatReceivedEvent e) { new Timer().schedule(new TimerTask() { @Override public void run() { - AbstractionLayer.getPlayer().sendInfoMessage("Du kannst wieder Erste Hilfe geben."); + AbstractionLayer.getPlayer().sendInfoMessage("Du kannst wieder Erste Hilfe leisten."); } }, TimeUnit.SECONDS.toMillis(90)); } From 19552cd148fec9f59e47f8b2190e340745bf5ca7 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:24:15 +0100 Subject: [PATCH 043/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 4b11e7091..0745c147b 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -48,6 +48,7 @@ public List getAliases() { @Override public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { UPlayer p = AbstractionLayer.getPlayer(); + if (args.length < 1) { p.sendSyntaxMessage(getUsage(sender)); return; From f050be9c0b55a877bb5ed971dae010f58c7c5782 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:24:25 +0100 Subject: [PATCH 044/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 0745c147b..4040ebe86 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -53,6 +53,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen p.sendSyntaxMessage(getUsage(sender)); return; } + String target = args[0]; WantedEventHandler.Wanted wanted = WantedEventHandler.WANTED_MAP.get(target); From 457f84b2cd7a864b15f1a4ae4e736819f75a3cf2 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:24:34 +0100 Subject: [PATCH 045/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 4040ebe86..bd0809a9d 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -66,7 +66,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen int MethDrugs0; int MethDrugs1; int MethDrugs2; - Betrag = wanted.getAmount() * 150; + int money = wanted.getAmount() * 150; Drugs = Betrag / 55; MethDrugs0 = Betrag / 110; MethDrugs1 = Betrag / 100; From d61440cc9033aa9a23908d82bcbb6203d26f1371 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:24:42 +0100 Subject: [PATCH 046/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index bd0809a9d..46c674b08 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -61,7 +61,6 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen p.sendErrorMessage("Du hast /wanteds noch nicht ausgeführt!"); return; } - int Betrag; int Drugs; int MethDrugs0; int MethDrugs1; From 216a6166256ebe48a6edd320ecd6e1f9f17a1577 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:24:49 +0100 Subject: [PATCH 047/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 46c674b08..586108f4b 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -61,7 +61,6 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen p.sendErrorMessage("Du hast /wanteds noch nicht ausgeführt!"); return; } - int Drugs; int MethDrugs0; int MethDrugs1; int MethDrugs2; From a06474a7ec5ff681bce7842a35cbc57960776658 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:24:59 +0100 Subject: [PATCH 048/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 586108f4b..edbfb9777 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -61,7 +61,6 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen p.sendErrorMessage("Du hast /wanteds noch nicht ausgeführt!"); return; } - int MethDrugs0; int MethDrugs1; int MethDrugs2; int money = wanted.getAmount() * 150; From 304d702300288998bd873c45e20023e723424f5d Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:25:13 +0100 Subject: [PATCH 049/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index edbfb9777..e5b29faee 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -61,7 +61,6 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen p.sendErrorMessage("Du hast /wanteds noch nicht ausgeführt!"); return; } - int MethDrugs1; int MethDrugs2; int money = wanted.getAmount() * 150; Drugs = Betrag / 55; From f5fa43412d6e36f4d00edf60b10ea4e44088e439 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:25:27 +0100 Subject: [PATCH 050/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index e5b29faee..b5bee5298 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -61,7 +61,6 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen p.sendErrorMessage("Du hast /wanteds noch nicht ausgeführt!"); return; } - int MethDrugs2; int money = wanted.getAmount() * 150; Drugs = Betrag / 55; MethDrugs0 = Betrag / 110; From 9f556c42f323c4810acf0ba54c5b0ccade43c3a0 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:25:41 +0100 Subject: [PATCH 051/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index b5bee5298..14b5af70f 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -62,7 +62,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen return; } int money = wanted.getAmount() * 150; - Drugs = Betrag / 55; + int drugs = money / 55; MethDrugs0 = Betrag / 110; MethDrugs1 = Betrag / 100; MethDrugs2 = Betrag / 50; From 45d882e30aa8cb82d02cba804cb54d8b6bbf28d0 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:25:51 +0100 Subject: [PATCH 052/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 14b5af70f..8e8a72912 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -63,7 +63,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen } int money = wanted.getAmount() * 150; int drugs = money / 55; - MethDrugs0 = Betrag / 110; + int methDrugs0 = money / 110; MethDrugs1 = Betrag / 100; MethDrugs2 = Betrag / 50; p.sendMessage(Message.getBuilder() From bf916593e0a6314937609f5e0d0e0cf34c3e4cfc Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:26:02 +0100 Subject: [PATCH 053/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 8e8a72912..f6667a9fa 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -64,7 +64,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen int money = wanted.getAmount() * 150; int drugs = money / 55; int methDrugs0 = money / 110; - MethDrugs1 = Betrag / 100; + int methDrugs1 = money / 100; MethDrugs2 = Betrag / 50; p.sendMessage(Message.getBuilder() .of("Korruptionspreise für").color(ColorCode.DARK_AQUA).advance().space() From 029c73c926bd223668125797d08a61b903bb1a91 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:26:13 +0100 Subject: [PATCH 054/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index f6667a9fa..0c4aeb173 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -65,7 +65,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen int drugs = money / 55; int methDrugs0 = money / 110; int methDrugs1 = money / 100; - MethDrugs2 = Betrag / 50; + int methDrugs2 = money / 50; p.sendMessage(Message.getBuilder() .of("Korruptionspreise für").color(ColorCode.DARK_AQUA).advance().space() .of(target).color(ColorCode.DARK_AQUA).advance() From f3b907250798f4062f78833283bc2a2ba04e5277 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:26:23 +0100 Subject: [PATCH 055/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 0c4aeb173..7b5521a50 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -75,7 +75,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of("»").color(ColorCode.GRAY).advance().space() .of("Geld").color(ColorCode.DARK_AQUA).advance() .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(Betrag + "$").color(ColorCode.AQUA).advance() + .of(money + "$").color(ColorCode.AQUA).advance() .createComponent()); p.sendMessage(Message.getBuilder() .of("»").color(ColorCode.GRAY).advance().space() From 36a94337c3e173b6e2cacfe62e0aa85cf85ca662 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:26:36 +0100 Subject: [PATCH 056/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 7b5521a50..672595cdd 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -87,7 +87,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of("»").color(ColorCode.GRAY).advance().space() .of("Meth").color(ColorCode.DARK_AQUA).advance() .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(MethDrugs0 + "g").color(ColorCode.AQUA).advance().space() + .of(methDrugs0 + "g").color(ColorCode.AQUA).advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() .of(MethDrugs1 + "g").color(ColorCode.AQUA).advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() From f59f2e1b76f3c6de049277d3438b058faf61a697 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:26:47 +0100 Subject: [PATCH 057/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 672595cdd..493717af8 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -66,6 +66,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen int methDrugs0 = money / 110; int methDrugs1 = money / 100; int methDrugs2 = money / 50; + p.sendMessage(Message.getBuilder() .of("Korruptionspreise für").color(ColorCode.DARK_AQUA).advance().space() .of(target).color(ColorCode.DARK_AQUA).advance() From 964a12af06c7e463fb6a92fc499d0765f8097da9 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:26:56 +0100 Subject: [PATCH 058/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 493717af8..589b5c638 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -72,6 +72,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of(target).color(ColorCode.DARK_AQUA).advance() .of(":").color(ColorCode.DARK_GRAY).advance().space() .createComponent()); + p.sendMessage(Message.getBuilder() .of("»").color(ColorCode.GRAY).advance().space() .of("Geld").color(ColorCode.DARK_AQUA).advance() From d01eb9233c864bd9f4920c7040ce2638b240ffc0 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:27:08 +0100 Subject: [PATCH 059/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 589b5c638..fb775e6fd 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -91,7 +91,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of(":").color(ColorCode.DARK_GRAY).advance().space() .of(methDrugs0 + "g").color(ColorCode.AQUA).advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(MethDrugs1 + "g").color(ColorCode.AQUA).advance().space() + .of(methDrugs1 + "g").color(ColorCode.AQUA).advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() .of(MethDrugs2 + "g").color(ColorCode.AQUA).advance() .createComponent()); From bb534ec2bb1324c4e5e4b5e56304760e5450b293 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:27:14 +0100 Subject: [PATCH 060/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index fb775e6fd..010d78f19 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -93,7 +93,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of("|").color(ColorCode.DARK_GRAY).advance().space() .of(methDrugs1 + "g").color(ColorCode.AQUA).advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(MethDrugs2 + "g").color(ColorCode.AQUA).advance() + .of(methDrugs2 + "g").color(ColorCode.AQUA).advance() .createComponent()); } From 011d8336243f2da2facc712df1136b5c24b43ed6 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:27:21 +0100 Subject: [PATCH 061/136] Update src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../events/faction/terroristen/BombTimerEventHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java index 494375f6a..92fa456b2 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java @@ -64,6 +64,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { Matcher m = PatternHandler.BOMB_REMOVED_PATTERN.matcher(unformattedMsg); if (m.find()) { String state = m.group(1); + if (ConfigElements.getAutomatedBombScreenshot()) { try { File file = FileManager.getNewActivityImageFile("großeinsatz"); From 735621d62ff076ab2ea89fbb9ec446818ece59df Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 00:27:28 +0100 Subject: [PATCH 062/136] Update src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../events/faction/terroristen/BombTimerEventHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java index 92fa456b2..f5cc010ba 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java @@ -73,6 +73,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { throw new RuntimeException(f); } } + String time = BombTimerModule.timer.startsWith(ColorCode.RED.getCode()) ? BombTimerModule.timer.substring(2) : BombTimerModule.timer; e.setMessage(Message.getBuilder() .add(formattedMsg) From 3f917b3b2ec0c5f560f65c50b6090f3ec9c6ce5a Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Sun, 19 Feb 2023 00:53:49 +0100 Subject: [PATCH 063/136] fix corruption calculator --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 010d78f19..5d7743504 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -6,7 +6,6 @@ import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.base.utils.ForgeUtils; import com.rettichlp.unicacityaddon.events.faction.state.WantedEventHandler; import net.minecraft.command.ICommand; import net.minecraft.command.ICommandSender; @@ -83,7 +82,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of("»").color(ColorCode.GRAY).advance().space() .of("Drogen").color(ColorCode.DARK_AQUA).advance() .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(Drugs + "g").color(ColorCode.AQUA).advance() + .of(drugs + "g").color(ColorCode.AQUA).advance() .createComponent()); p.sendMessage(Message.getBuilder() .of("»").color(ColorCode.GRAY).advance().space() From 3273d14b52b1e11dc46ddc06a61bd78a1a67de64 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sun, 19 Feb 2023 14:03:03 +0100 Subject: [PATCH 064/136] Update first aid issue pattern in PatternHandler (was wrong because stupid people) --- .../com/rettichlp/unicacityaddon/base/text/PatternHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index d3a95bc5e..ae37cb06d 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -150,7 +150,7 @@ public class PatternHandler { public static final Pattern REVIVE_FAILURE_PATTERN = Pattern.compile("^Verdammt\\.\\. mein Kopf dröhnt so\\.\\.\\.$"); public static final Pattern FIRST_AID_RECEIVE_PATTERN = Pattern.compile("^\\[Erste-Hilfe] Notarzt (?:\\[UC])*(\\w+) hat dir einen Erste-Hilfe-Schein für 14 Tage ausgestellt\\.$"); public static final Pattern FIRST_AID_LICENCE_PATTERN = Pattern.compile("^ {2}- Erste-Hilfe-Schein: Vorhanden$"); - public static final Pattern FIRST_AID_ISSUE_PATTERN = Pattern.compile("^\\* " + playerName + " leistet Erste-Hilfe\\.$"); + public static final Pattern FIRST_AID_ISSUE_PATTERN = Pattern.compile("^\\[Erste-Hilfe] Du hast Erste-Hilfe bei (?:\\[UC])*(\\w+) geleistet\\.$"); public static final Pattern FIRST_AID_USE_PATTERN = Pattern.compile("^ {2}Info: Du bist nun eine Minute länger auf dem Friedhof\\.$"); public static final Pattern MEDICATION_GET_PATTERN = Pattern.compile("^\\[Apotheke] Du hast (?\\d+) (?.+) erhalten, gute Besserung!$"); From b73591fc22f315e80cb897ca6202945ce0dc2175 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sun, 19 Feb 2023 15:04:47 +0100 Subject: [PATCH 065/136] Minor bug fixes in HouseBankGetCommand and HousebanCommand --- .../unicacityaddon/commands/api/HousebanCommand.java | 2 +- .../unicacityaddon/commands/house/HouseBankGetCommand.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanCommand.java index 30e98c6af..8130d22b4 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanCommand.java @@ -64,7 +64,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of("Hausverbote:").color(ColorCode.DARK_AQUA).bold().advance() .createComponent()); - Syncer.getHouseBanEntryList().forEach(houseBanEntry -> { + Syncer.HOUSEBANENTRYLIST.forEach(houseBanEntry -> { long durationInMillis = houseBanEntry.getExpirationTime() - System.currentTimeMillis(); String duration = Message.getBuilder() diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java index c4805dbfa..fe205f910 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java @@ -67,7 +67,7 @@ public boolean isUsernameIndex(@Nonnull String[] args, int index) { public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { UPlayer p = AbstractionLayer.getPlayer(); if (args.length > 1 && args[1].equalsIgnoreCase("all")) { - p.sendChatMessage("/hkasse"); + p.sendChatMessage("/hauskasse"); HouseDataEventHandler.lastCheck = System.currentTimeMillis(); new Timer().schedule(new TimerTask() { @Override @@ -79,7 +79,7 @@ public void run() { return; } - p.sendChatMessage("/hauskasse " + TextUtils.makeStringByArgs(args, "")); + p.sendChatMessage("/hauskasse" + (args.length > 0 ? " " + TextUtils.makeStringByArgs(args, " ") : "")); } @Override From 3c439d85049d66c7bbdfc530139af3044e4553e8 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 21:16:02 +0100 Subject: [PATCH 066/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 5d7743504..e75107b7b 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -78,6 +78,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of(":").color(ColorCode.DARK_GRAY).advance().space() .of(money + "$").color(ColorCode.AQUA).advance() .createComponent()); + p.sendMessage(Message.getBuilder() .of("»").color(ColorCode.GRAY).advance().space() .of("Drogen").color(ColorCode.DARK_AQUA).advance() From c064f51aa786c118154cb7a98311d55ab00459d7 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 21:16:19 +0100 Subject: [PATCH 067/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index e75107b7b..b37bbe29f 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -95,7 +95,6 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of("|").color(ColorCode.DARK_GRAY).advance().space() .of(methDrugs2 + "g").color(ColorCode.AQUA).advance() .createComponent()); - } @Override From 66c2b77528998a1a8c33f70f5319b9ec64acf5e4 Mon Sep 17 00:00:00 2001 From: RettichLP <97811064+rettichlp@users.noreply.github.com> Date: Sun, 19 Feb 2023 21:17:05 +0100 Subject: [PATCH 068/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index b37bbe29f..ecc1b5aa5 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -60,6 +60,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen p.sendErrorMessage("Du hast /wanteds noch nicht ausgeführt!"); return; } + int money = wanted.getAmount() * 150; int drugs = money / 55; int methDrugs0 = money / 110; From 4e21dc2d382a500bb38d1e26ac4010f2a98e086c Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Sun, 19 Feb 2023 21:28:53 +0100 Subject: [PATCH 069/136] ja --- .../faction/state/WantedListEventHandler.java | 163 ++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedListEventHandler.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedListEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedListEventHandler.java new file mode 100644 index 000000000..0704c57d0 --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedListEventHandler.java @@ -0,0 +1,163 @@ +package com.rettichlp.unicacityaddon.events.faction.state; + +import com.rettichlp.unicacityaddon.base.config.ConfigElements; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.base.text.Message; +import com.rettichlp.unicacityaddon.base.text.PatternHandler; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.util.regex.Matcher; + +/** + * @author Gelegenheitscode + */ +@UCEvent +public class WantedListEventHandler { + @SubscribeEvent + public void onChat(ClientChatReceivedEvent e) { + if (!ConfigElements.getBetterWantedList()) { + return; + } + String msg = e.getMessage().getUnformattedText(); + + Matcher m = PatternHandler.WANTED_LIST_PATTERN.matcher(msg); + if (m.find()) { + int WantedAmount = Integer.parseInt(m.group(2)); + if (WantedAmount == 1) { + if (msg.contains("AFK")) { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.DARK_GREEN).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.DARK_GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("AFK").color(ColorCode.GRAY).advance() + .createComponent()); + } else { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.DARK_GREEN).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.DARK_GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } + } else if (WantedAmount <= 15 && WantedAmount >= 2) { + if (msg.contains("AFK")) { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.GREEN).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("AFK").color(ColorCode.GRAY).advance() + .createComponent()); + } else { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.GREEN).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } + } else if (WantedAmount <= 25 && WantedAmount >= 16) { + if (msg.contains("AFK")) { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.YELLOW).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.YELLOW).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("AFK").color(ColorCode.GRAY).advance() + .createComponent()); + } else { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.YELLOW).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.YELLOW).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } + } else if (WantedAmount <= 49 && WantedAmount >26) { + if (msg.contains("AFK")) { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.GOLD).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.GOLD).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("AFK").color(ColorCode.GRAY).advance() + .createComponent()); + } else { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.GOLD).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.GOLD).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } + } else if (WantedAmount <= 59 && WantedAmount >=50) { + if (msg.contains("AFK")) { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.RED).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.RED).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("AFK").color(ColorCode.GRAY).advance() + .createComponent()); + } else { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.RED).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.RED).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } + } else if (WantedAmount <= 69 && WantedAmount >= 60) { + if (msg.contains("AFK")) { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.DARK_RED).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.DARK_RED).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("AFK").color(ColorCode.GRAY).advance() + .createComponent()); + } else { + e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(1)).color(ColorCode.DARK_RED).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(m.group(3)).color(ColorCode.DARK_RED).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(m.group(2)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } + } + } + } +} \ No newline at end of file From fcacd403ebb48f045be38e79765afa370f12f9db Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Sun, 19 Feb 2023 21:49:47 +0100 Subject: [PATCH 070/136] performance changes --- .../faction/state/WantedListEventHandler.java | 176 ++++-------------- 1 file changed, 39 insertions(+), 137 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedListEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedListEventHandler.java index 0704c57d0..4b792c1dd 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedListEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedListEventHandler.java @@ -17,147 +17,49 @@ public class WantedListEventHandler { @SubscribeEvent public void onChat(ClientChatReceivedEvent e) { - if (!ConfigElements.getBetterWantedList()) { + String msg = e.getMessage().getUnformattedText(); + + if (!ConfigElements.getBetterWantedList()) { return; } - String msg = e.getMessage().getUnformattedText(); - Matcher m = PatternHandler.WANTED_LIST_PATTERN.matcher(msg); - if (m.find()) { - int WantedAmount = Integer.parseInt(m.group(2)); - if (WantedAmount == 1) { - if (msg.contains("AFK")) { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_GREEN).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.DARK_GREEN).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("AFK").color(ColorCode.GRAY).advance() - .createComponent()); - } else { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_GREEN).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.DARK_GREEN).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .createComponent()); - } - } else if (WantedAmount <= 15 && WantedAmount >= 2) { - if (msg.contains("AFK")) { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.GREEN).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.GREEN).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("AFK").color(ColorCode.GRAY).advance() - .createComponent()); - } else { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.GREEN).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.GREEN).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .createComponent()); - } - } else if (WantedAmount <= 25 && WantedAmount >= 16) { - if (msg.contains("AFK")) { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.YELLOW).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.YELLOW).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("AFK").color(ColorCode.GRAY).advance() - .createComponent()); - } else { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.YELLOW).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.YELLOW).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .createComponent()); - } - } else if (WantedAmount <= 49 && WantedAmount >26) { - if (msg.contains("AFK")) { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.GOLD).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.GOLD).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("AFK").color(ColorCode.GRAY).advance() - .createComponent()); - } else { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.GOLD).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.GOLD).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .createComponent()); - } - } else if (WantedAmount <= 59 && WantedAmount >=50) { - if (msg.contains("AFK")) { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.RED).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.RED).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("AFK").color(ColorCode.GRAY).advance() - .createComponent()); - } else { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.RED).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.RED).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .createComponent()); - } - } else if (WantedAmount <= 69 && WantedAmount >= 60) { - if (msg.contains("AFK")) { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_RED).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.DARK_RED).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("AFK").color(ColorCode.GRAY).advance() - .createComponent()); - } else { - e.setMessage(Message.getBuilder().of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_RED).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(m.group(3)).color(ColorCode.DARK_RED).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(m.group(2)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .createComponent()); - } + Matcher wantedListMatcher = PatternHandler.WANTED_LIST_PATTERN.matcher(msg); + if (wantedListMatcher.find()) { + + String playerName = wantedListMatcher.group(1); + String wpReason = wantedListMatcher.group(3); + int wpAmount = Integer.parseInt(wantedListMatcher.group(2)); + boolean isAfk = wantedListMatcher.group(4).contains("AFK"); + + ColorCode colorCode; + + if (wpAmount == 1) { + colorCode = ColorCode.DARK_GREEN; + } else if (wpAmount <= 15 && wpAmount >= 2) { + colorCode = ColorCode.GREEN; + } else if (wpAmount <= 25 && wpAmount >= 16) { + colorCode = ColorCode.YELLOW; + } else if (wpAmount <= 49 && wpAmount > 26) { + colorCode = ColorCode.GOLD; + } else if (wpAmount <= 59 && wpAmount >= 50) { + colorCode = ColorCode.RED; + } else if (wpAmount <= 69 && wpAmount >= 60) { + colorCode = ColorCode.DARK_RED; + } else { + colorCode = ColorCode.RED; } + + e.setMessage(Message.getBuilder() + .of("▶").color(ColorCode.DARK_GRAY).advance().space() + .of(playerName).color(colorCode).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(wpReason).color(colorCode).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(String.valueOf(wpAmount)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of(isAfk ? "|" : "").color(ColorCode.DARK_GRAY).advance().space() + .of(isAfk ? "AFK" : "").color(ColorCode.GRAY).advance() + .createComponent()); } } } \ No newline at end of file From f8f375f2b5243993733e7d502fc5146e97bd185c Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sun, 19 Feb 2023 22:02:22 +0100 Subject: [PATCH 071/136] Remove UCMD mod support from KarmaMessageEventHandler --- .../events/KarmaMessageEventHandler.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/KarmaMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/KarmaMessageEventHandler.java index cb8917388..0ffdc38ea 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/KarmaMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/KarmaMessageEventHandler.java @@ -1,11 +1,8 @@ package com.rettichlp.unicacityaddon.events; -import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; -import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.config.ConfigElements; import com.rettichlp.unicacityaddon.base.enums.api.StatisticType; -import com.rettichlp.unicacityaddon.base.enums.faction.Faction; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; @@ -31,7 +28,6 @@ public class KarmaMessageEventHandler { @SubscribeEvent public void onClientChatReceived(ClientChatReceivedEvent e) { String msg = e.getMessage().getUnformattedText(); - UPlayer p = AbstractionLayer.getPlayer(); if (AccountEventHandler.isAfk) return; @@ -40,14 +36,6 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { if (karmaChangedMatcher.find()) { ReviveEventHandler.handleRevive(); - // WORKAROUND START (for medics because ✨UCMDMOD✨) TODO: Remove later - if (!p.getFaction().equals(Faction.RETTUNGSDIENST) && !ReviveEventHandler.isDead) { - p.sendChatMessage("/karma"); - karmaCheck = true; - e.setCanceled(true); - } - // WORKAROUND END - karma = Integer.parseInt(karmaChangedMatcher.group(1)); if (karma < 0 && karma > -9) { APIRequest.sendStatisticAddRequest(StatisticType.KILL); From 6e7a7bd3dab83fe4707bd8e913c3e9c7f60b42f2 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 22:08:33 +0100 Subject: [PATCH 072/136] Delete WantedListEventHandler.java --- .../faction/state/WantedListEventHandler.java | 65 ------------------- 1 file changed, 65 deletions(-) delete mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedListEventHandler.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedListEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedListEventHandler.java deleted file mode 100644 index 4b792c1dd..000000000 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedListEventHandler.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.rettichlp.unicacityaddon.events.faction.state; - -import com.rettichlp.unicacityaddon.base.config.ConfigElements; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.base.text.PatternHandler; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; - -import java.util.regex.Matcher; - -/** - * @author Gelegenheitscode - */ -@UCEvent -public class WantedListEventHandler { - @SubscribeEvent - public void onChat(ClientChatReceivedEvent e) { - String msg = e.getMessage().getUnformattedText(); - - if (!ConfigElements.getBetterWantedList()) { - return; - } - - Matcher wantedListMatcher = PatternHandler.WANTED_LIST_PATTERN.matcher(msg); - if (wantedListMatcher.find()) { - - String playerName = wantedListMatcher.group(1); - String wpReason = wantedListMatcher.group(3); - int wpAmount = Integer.parseInt(wantedListMatcher.group(2)); - boolean isAfk = wantedListMatcher.group(4).contains("AFK"); - - ColorCode colorCode; - - if (wpAmount == 1) { - colorCode = ColorCode.DARK_GREEN; - } else if (wpAmount <= 15 && wpAmount >= 2) { - colorCode = ColorCode.GREEN; - } else if (wpAmount <= 25 && wpAmount >= 16) { - colorCode = ColorCode.YELLOW; - } else if (wpAmount <= 49 && wpAmount > 26) { - colorCode = ColorCode.GOLD; - } else if (wpAmount <= 59 && wpAmount >= 50) { - colorCode = ColorCode.RED; - } else if (wpAmount <= 69 && wpAmount >= 60) { - colorCode = ColorCode.DARK_RED; - } else { - colorCode = ColorCode.RED; - } - - e.setMessage(Message.getBuilder() - .of("▶").color(ColorCode.DARK_GRAY).advance().space() - .of(playerName).color(colorCode).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(wpReason).color(colorCode).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(String.valueOf(wpAmount)).color(ColorCode.BLUE).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of(isAfk ? "|" : "").color(ColorCode.DARK_GRAY).advance().space() - .of(isAfk ? "AFK" : "").color(ColorCode.GRAY).advance() - .createComponent()); - } - } -} \ No newline at end of file From 5ae0c3228186adc21615abc407cf0ef168234cf5 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Sun, 19 Feb 2023 22:09:09 +0100 Subject: [PATCH 073/136] add in wantedeventhandler --- .../faction/state/WantedEventHandler.java | 54 ++++++++++++++++--- 1 file changed, 46 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java index c458b9bf9..ca5573cc4 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java @@ -1,6 +1,8 @@ package com.rettichlp.unicacityaddon.events.faction.state; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.base.text.Message; import com.rettichlp.unicacityaddon.base.text.PatternHandler; import net.minecraft.util.text.ITextComponent; import net.minecraftforge.client.event.ClientChatReceivedEvent; @@ -85,14 +87,50 @@ public void onWantedsShown(ClientChatReceivedEvent e) { } Matcher matcher = PatternHandler.WANTED_LIST_PATTERN.matcher(unformattedMessage); - if (currentTime - wantedsShown > 1000L || !matcher.find()) - return; - - String name = matcher.group(1); - int wantedPoints = Integer.parseInt(matcher.group(2)); - String reason = matcher.group(3); - - WANTED_MAP.put(name, new Wanted(reason, wantedPoints)); + if (matcher.find()) { + String playerName = matcher.group(1); + String wpReason = matcher.group(3); + int wpAmount = Integer.parseInt(matcher.group(2)); + boolean isAfk = matcher.group(4).contains("AFK"); + + ColorCode colorCode = getWpColorCode(wpAmount); + + e.setMessage(Message.getBuilder() + .of("»").color(ColorCode.DARK_GRAY).advance().space() + .of(playerName).color(colorCode).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(wpReason).color(colorCode).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(String.valueOf(wpAmount)).color(ColorCode.BLUE).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of(isAfk ? "|" : "").color(ColorCode.DARK_GRAY).advance().space() + .of(isAfk ? "AFK" : "").color(ColorCode.GRAY).advance() + .createComponent()); + + if (currentTime - wantedsShown < 1000L) { + String name = matcher.group(1); + int wantedPoints = Integer.parseInt(matcher.group(2)); + String reason = matcher.group(3); + WANTED_MAP.put(name, new Wanted(reason, wantedPoints)); + } + } + } + private ColorCode getWpColorCode(int wpAmount) { + ColorCode colorCode; + if (wpAmount > 60) { + colorCode = ColorCode.DARK_RED; + } else if (wpAmount > 50) { + colorCode = ColorCode.RED; + } else if (wpAmount > 25) { + colorCode = ColorCode.GOLD; + } else if (wpAmount > 15) { + colorCode = ColorCode.YELLOW; + } else if (wpAmount > 1) { + colorCode = ColorCode.GREEN; + } else { + colorCode = ColorCode.DARK_GREEN; + } + return colorCode; } public static class Wanted { From 2db74540af929dad8dc5bebce1d45598a70aa82e Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Sun, 19 Feb 2023 22:10:29 +0100 Subject: [PATCH 074/136] add in wantedeventhandler --- .../unicacityaddon/events/faction/state/WantedEventHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java index ca5573cc4..ad730de0c 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java @@ -95,7 +95,7 @@ public void onWantedsShown(ClientChatReceivedEvent e) { ColorCode colorCode = getWpColorCode(wpAmount); - e.setMessage(Message.getBuilder() + e.setMessage(Message.getBuilder().space().space() .of("»").color(ColorCode.DARK_GRAY).advance().space() .of(playerName).color(colorCode).advance().space() .of("|").color(ColorCode.DARK_GRAY).advance().space() From dfe69baf0221d73e7a3bb9655f45e3a2e34e55af Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Sun, 19 Feb 2023 22:14:47 +0100 Subject: [PATCH 075/136] fix --- .../faction/state/WantedEventHandler.java | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java index ad730de0c..54fd17b6d 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java @@ -82,7 +82,6 @@ public void onWantedsShown(ClientChatReceivedEvent e) { if (unformattedMessage.equals("Online Spieler mit WantedPunkten:")) { WANTED_MAP.clear(); wantedsShown = currentTime; - return; } @@ -115,24 +114,6 @@ public void onWantedsShown(ClientChatReceivedEvent e) { } } } - private ColorCode getWpColorCode(int wpAmount) { - ColorCode colorCode; - if (wpAmount > 60) { - colorCode = ColorCode.DARK_RED; - } else if (wpAmount > 50) { - colorCode = ColorCode.RED; - } else if (wpAmount > 25) { - colorCode = ColorCode.GOLD; - } else if (wpAmount > 15) { - colorCode = ColorCode.YELLOW; - } else if (wpAmount > 1) { - colorCode = ColorCode.GREEN; - } else { - colorCode = ColorCode.DARK_GREEN; - } - return colorCode; - } - public static class Wanted { private String reason; @@ -159,4 +140,21 @@ public void setAmount(int amount) { this.amount = amount; } } + private ColorCode getWpColorCode(int wpAmount) { + ColorCode colorCode; + if (wpAmount > 60) { + colorCode = ColorCode.DARK_RED; + } else if (wpAmount > 50) { + colorCode = ColorCode.RED; + } else if (wpAmount > 25) { + colorCode = ColorCode.GOLD; + } else if (wpAmount > 15) { + colorCode = ColorCode.YELLOW; + } else if (wpAmount > 1) { + colorCode = ColorCode.GREEN; + } else { + colorCode = ColorCode.DARK_GREEN; + } + return colorCode; + } } \ No newline at end of file From b7f8dec802956c903a079690724b556ac6ee6678 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 22:16:23 +0100 Subject: [PATCH 076/136] Update WantedEventHandler.java --- .../events/faction/state/WantedEventHandler.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java index 54fd17b6d..cfbf63a95 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java @@ -114,6 +114,7 @@ public void onWantedsShown(ClientChatReceivedEvent e) { } } } + public static class Wanted { private String reason; @@ -140,6 +141,7 @@ public void setAmount(int amount) { this.amount = amount; } } + private ColorCode getWpColorCode(int wpAmount) { ColorCode colorCode; if (wpAmount > 60) { @@ -157,4 +159,4 @@ private ColorCode getWpColorCode(int wpAmount) { } return colorCode; } -} \ No newline at end of file +} From 2f238c91608946fb8a8028f3b99e5c7fdcaf4497 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sun, 19 Feb 2023 22:17:20 +0100 Subject: [PATCH 077/136] leerzeichen weg --- .../unicacityaddon/events/faction/state/WantedEventHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java index cfbf63a95..3d0843eaa 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java @@ -114,7 +114,7 @@ public void onWantedsShown(ClientChatReceivedEvent e) { } } } - + public static class Wanted { private String reason; From 4efcd04171d020afc6722bb3329fb3c48c7960ff Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sun, 19 Feb 2023 22:34:21 +0100 Subject: [PATCH 078/136] Fix line ending and spaces in blank lines --- .../events/faction/state/WantedEventHandler.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java index 3d0843eaa..7b82b7280 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/WantedEventHandler.java @@ -141,7 +141,7 @@ public void setAmount(int amount) { this.amount = amount; } } - + private ColorCode getWpColorCode(int wpAmount) { ColorCode colorCode; if (wpAmount > 60) { @@ -159,4 +159,4 @@ private ColorCode getWpColorCode(int wpAmount) { } return colorCode; } -} +} \ No newline at end of file From 52fcc0dd56d175cf0dc1b29eb35b815d6fd95253 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Wed, 22 Feb 2023 21:06:09 +0100 Subject: [PATCH 079/136] drugvault info messages --- .../base/text/PatternHandler.java | 5 ++ .../state/DrugMessageEventHandler.java | 54 +++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index dca2a81f0..66fc907fc 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -144,6 +144,8 @@ public class PatternHandler { * @see com.rettichlp.unicacityaddon.events.faction.badfaction.DrugInteractionEventHandler */ public static final Pattern RECIPE_ACCEPT_PATTERN = Pattern.compile("^((?:\\[UC])*\\w+) möchte dir ein Rezept für 200\\$ verkaufen\\.$"); + + public static final Pattern REVIVE_DONE_PATTERN = Pattern.compile("^[Karma] +1 Karma."); public static final Pattern RECIPE_GIVE_PATTERN = Pattern.compile("^Du hast ((?:\\[UC])*\\w+) ein Rezept für (Antibiotika|Hustensaft|Schmerzmittel) ausgestellt\\.$"); public static final Pattern REVIVE_BY_MEDIC_START_PATTERN = Pattern.compile("^Du wirst von (?:\\[UC])*(\\w+) wiederbelebt\\.$"); // TODO: 22.01.2023 public static final Pattern REVIVE_BY_MEDIC_FINISH_PATTERN = Pattern.compile("^Du lebst nun wieder\\.$"); @@ -329,6 +331,9 @@ public class PatternHandler { */ public static final Pattern DRUG_VAULT_DROP_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) in der Asservatenkammer verstaut\\.$"); public static final Pattern DRUG_VAULT_GET_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) aus der Asservatenkammer genommen\\.$"); + public static final Pattern DRUG_VAULT_INFOTITLE_PATTERN = Pattern.compile("^ ===== Asservatenkammer \\((\\w+)\\) =====$"); + public static final Pattern DRUG_VAULT_INFO_PATTERN = Pattern.compile("^ » Mittlere Reinheit: (\\d+)g » Höchste Reinheit: (\\d+)g » Gute Reinheit: (\\d+)g » Schlechte Reinheit: (\\d+)g$"); + public static final Pattern DRUG_VAULT_INFOLSD_PATTERN = Pattern.compile("^ » LSD: (\\d+) Stück$"); public static final Pattern DRUG_VAULT_BURN_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) vernichtet\\.$"); public static final Pattern PLANT_BURN_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat erfolgreich eine (Kokain|Marihuana) Plantage verbrannt, over\\.$"); } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java index 69ff92a37..c48e764ff 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java @@ -1,5 +1,7 @@ package com.rettichlp.unicacityaddon.events.faction.state; +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.config.ConfigElements; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.ColorCode; @@ -19,6 +21,7 @@ public class DrugMessageEventHandler { @SubscribeEvent public void onClientChatReceived(ClientChatReceivedEvent e) { String msg = e.getMessage().getUnformattedText(); + UPlayer p = AbstractionLayer.getPlayer(); if (ConfigElements.getDrugVaultMessageActivated()) { Matcher drugVaultDropMatcher = PatternHandler.DRUG_VAULT_DROP_PATTERN.matcher(msg); @@ -71,6 +74,57 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { .createComponent()); return; } + Matcher drugVaultInfoMatcher = PatternHandler.DRUG_VAULT_INFO_PATTERN.matcher(msg); + if (drugVaultInfoMatcher.find()) { + e.setCanceled(true); + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.DARK_GRAY).advance().space() + .of("Höchste Reinheit").color(ColorCode.GOLD).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultInfoMatcher.group(2)).color(ColorCode.YELLOW).advance() + .of("g").color(ColorCode.YELLOW).advance().createComponent()); + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.DARK_GRAY).advance().space() + .of("Gute Reinheit").color(ColorCode.GOLD).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultInfoMatcher.group(3)).color(ColorCode.YELLOW).advance() + .of("g").color(ColorCode.YELLOW).advance().createComponent()); + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.DARK_GRAY).advance().space() + .of("Mittlere Reinheit").color(ColorCode.GOLD).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultInfoMatcher.group(1)).color(ColorCode.YELLOW).advance() + .of("g").color(ColorCode.YELLOW).advance().createComponent()); + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.DARK_GRAY).advance().space() + .of("Schlechte Reinheit").color(ColorCode.GOLD).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultInfoMatcher.group(4)).color(ColorCode.YELLOW).advance() + .of("g").color(ColorCode.YELLOW).advance() + .createComponent()); + return; + } + Matcher drugVaultInfoLSDMatcher = PatternHandler.DRUG_VAULT_INFOLSD_PATTERN.matcher(msg); + if (drugVaultInfoLSDMatcher.find()) { + e.setMessage(Message.getBuilder() + .of("»").color(ColorCode.DARK_GRAY).advance().space() + .of("LSD").color(ColorCode.GOLD).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultInfoLSDMatcher.group(1)).color(ColorCode.YELLOW).advance().space() + .of("Stück").color(ColorCode.YELLOW).advance().createComponent()); + return; + } + Matcher drugVaultInfoTitleMatcher = PatternHandler.DRUG_VAULT_INFOTITLE_PATTERN.matcher(msg); + if (drugVaultInfoTitleMatcher.find()) { + e.setMessage(Message.getBuilder() + .of("===").color(ColorCode.DARK_GRAY).advance().space() + .of("Asservatenkammer").color(ColorCode.GOLD).advance().space() + .of("[").color(ColorCode.DARK_GRAY).advance() + .of(drugVaultInfoTitleMatcher.group(1)).color(ColorCode.YELLOW).advance() + .of("]").color(ColorCode.DARK_GRAY).advance().space() + .of("===").color(ColorCode.DARK_GRAY).advance().createComponent()); + return; + } } if (ConfigElements.getPlantBurnMessageActivated()) { From 49390673d3daee8653cfc1eacc123627acdab891 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Thu, 23 Feb 2023 14:44:21 +0100 Subject: [PATCH 080/136] fix pattern bc of unicacity bug --- .../unicacityaddon/base/text/PatternHandler.java | 2 +- .../faction/state/DrugMessageEventHandler.java | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 66fc907fc..25e53b5b4 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -332,7 +332,7 @@ public class PatternHandler { public static final Pattern DRUG_VAULT_DROP_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) in der Asservatenkammer verstaut\\.$"); public static final Pattern DRUG_VAULT_GET_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) aus der Asservatenkammer genommen\\.$"); public static final Pattern DRUG_VAULT_INFOTITLE_PATTERN = Pattern.compile("^ ===== Asservatenkammer \\((\\w+)\\) =====$"); - public static final Pattern DRUG_VAULT_INFO_PATTERN = Pattern.compile("^ » Mittlere Reinheit: (\\d+)g » Höchste Reinheit: (\\d+)g » Gute Reinheit: (\\d+)g » Schlechte Reinheit: (\\d+)g$"); + public static final Pattern DRUG_VAULT_INFO_PATTERN = Pattern.compile("^ » (Mittlere|Höchste|Gute|Schlechte) Reinheit: (\\d+)g » (Mittlere|Höchste|Gute|Schlechte) Reinheit: (\\d+)g » (Mittlere|Höchste|Gute|Schlechte) Reinheit: (\\d+)g » (Mittlere|Höchste|Gute|Schlechte) Reinheit: (\\d+)g$"); public static final Pattern DRUG_VAULT_INFOLSD_PATTERN = Pattern.compile("^ » LSD: (\\d+) Stück$"); public static final Pattern DRUG_VAULT_BURN_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) vernichtet\\.$"); public static final Pattern PLANT_BURN_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat erfolgreich eine (Kokain|Marihuana) Plantage verbrannt, over\\.$"); diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java index c48e764ff..810ee23a8 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java @@ -79,27 +79,27 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { e.setCanceled(true); p.sendMessage(Message.getBuilder() .of("»").color(ColorCode.DARK_GRAY).advance().space() - .of("Höchste Reinheit").color(ColorCode.GOLD).advance() + .of(drugVaultInfoMatcher.group(1) + " Reinheit").color(ColorCode.GOLD).advance() .of(":").color(ColorCode.DARK_GRAY).advance().space() .of(drugVaultInfoMatcher.group(2)).color(ColorCode.YELLOW).advance() .of("g").color(ColorCode.YELLOW).advance().createComponent()); p.sendMessage(Message.getBuilder() .of("»").color(ColorCode.DARK_GRAY).advance().space() - .of("Gute Reinheit").color(ColorCode.GOLD).advance() + .of(drugVaultInfoMatcher.group(3) + " Reinheit").color(ColorCode.GOLD).advance() .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultInfoMatcher.group(3)).color(ColorCode.YELLOW).advance() + .of(drugVaultInfoMatcher.group(4)).color(ColorCode.YELLOW).advance() .of("g").color(ColorCode.YELLOW).advance().createComponent()); p.sendMessage(Message.getBuilder() .of("»").color(ColorCode.DARK_GRAY).advance().space() - .of("Mittlere Reinheit").color(ColorCode.GOLD).advance() + .of(drugVaultInfoMatcher.group(5) + " Reinheit").color(ColorCode.GOLD).advance() .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultInfoMatcher.group(1)).color(ColorCode.YELLOW).advance() + .of(drugVaultInfoMatcher.group(6)).color(ColorCode.YELLOW).advance() .of("g").color(ColorCode.YELLOW).advance().createComponent()); p.sendMessage(Message.getBuilder() .of("»").color(ColorCode.DARK_GRAY).advance().space() - .of("Schlechte Reinheit").color(ColorCode.GOLD).advance() + .of(drugVaultInfoMatcher.group(7) + " fReinheit").color(ColorCode.GOLD).advance() .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultInfoMatcher.group(4)).color(ColorCode.YELLOW).advance() + .of(drugVaultInfoMatcher.group(8)).color(ColorCode.YELLOW).advance() .of("g").color(ColorCode.YELLOW).advance() .createComponent()); return; From 04c053c36089ca51681374d3fb01cc8e4a11c1d0 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Thu, 23 Feb 2023 14:49:18 +0100 Subject: [PATCH 081/136] fix typo --- .../events/faction/state/DrugMessageEventHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java index 810ee23a8..ce4bd1309 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java @@ -97,7 +97,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { .of("g").color(ColorCode.YELLOW).advance().createComponent()); p.sendMessage(Message.getBuilder() .of("»").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultInfoMatcher.group(7) + " fReinheit").color(ColorCode.GOLD).advance() + .of(drugVaultInfoMatcher.group(7) + " Reinheit").color(ColorCode.GOLD).advance() .of(":").color(ColorCode.DARK_GRAY).advance().space() .of(drugVaultInfoMatcher.group(8)).color(ColorCode.YELLOW).advance() .of("g").color(ColorCode.YELLOW).advance() From 3fc7a32a2fc5b6f750c3a458eccd62716ead394f Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Fri, 24 Feb 2023 22:17:48 +0100 Subject: [PATCH 082/136] remove line 147 Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../com/rettichlp/unicacityaddon/base/text/PatternHandler.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 25e53b5b4..7f3bdd7bf 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -144,7 +144,6 @@ public class PatternHandler { * @see com.rettichlp.unicacityaddon.events.faction.badfaction.DrugInteractionEventHandler */ public static final Pattern RECIPE_ACCEPT_PATTERN = Pattern.compile("^((?:\\[UC])*\\w+) möchte dir ein Rezept für 200\\$ verkaufen\\.$"); - public static final Pattern REVIVE_DONE_PATTERN = Pattern.compile("^[Karma] +1 Karma."); public static final Pattern RECIPE_GIVE_PATTERN = Pattern.compile("^Du hast ((?:\\[UC])*\\w+) ein Rezept für (Antibiotika|Hustensaft|Schmerzmittel) ausgestellt\\.$"); public static final Pattern REVIVE_BY_MEDIC_START_PATTERN = Pattern.compile("^Du wirst von (?:\\[UC])*(\\w+) wiederbelebt\\.$"); From b167ead84b71adaa9cac37a1f5339016702f1a59 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Fri, 24 Feb 2023 22:18:04 +0100 Subject: [PATCH 083/136] remove medic pattern Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../com/rettichlp/unicacityaddon/base/text/PatternHandler.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 7f3bdd7bf..7e6aacf23 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -144,7 +144,6 @@ public class PatternHandler { * @see com.rettichlp.unicacityaddon.events.faction.badfaction.DrugInteractionEventHandler */ public static final Pattern RECIPE_ACCEPT_PATTERN = Pattern.compile("^((?:\\[UC])*\\w+) möchte dir ein Rezept für 200\\$ verkaufen\\.$"); - public static final Pattern REVIVE_DONE_PATTERN = Pattern.compile("^[Karma] +1 Karma."); public static final Pattern RECIPE_GIVE_PATTERN = Pattern.compile("^Du hast ((?:\\[UC])*\\w+) ein Rezept für (Antibiotika|Hustensaft|Schmerzmittel) ausgestellt\\.$"); public static final Pattern REVIVE_BY_MEDIC_START_PATTERN = Pattern.compile("^Du wirst von (?:\\[UC])*(\\w+) wiederbelebt\\.$"); // TODO: 22.01.2023 public static final Pattern REVIVE_BY_MEDIC_FINISH_PATTERN = Pattern.compile("^Du lebst nun wieder\\.$"); From fe00385067042af4dce9ceba6ed71c5652d56a0f Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Fri, 24 Feb 2023 22:18:29 +0100 Subject: [PATCH 084/136] Update src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../events/faction/state/DrugMessageEventHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java index ce4bd1309..a9ca21f72 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java @@ -114,6 +114,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { .of("Stück").color(ColorCode.YELLOW).advance().createComponent()); return; } + Matcher drugVaultInfoTitleMatcher = PatternHandler.DRUG_VAULT_INFOTITLE_PATTERN.matcher(msg); if (drugVaultInfoTitleMatcher.find()) { e.setMessage(Message.getBuilder() From 777d8ff417604c98fb7579aca8e0854775f6ab22 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Fri, 24 Feb 2023 22:18:48 +0100 Subject: [PATCH 085/136] update Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../events/faction/state/DrugMessageEventHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java index a9ca21f72..534c551bd 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java @@ -104,6 +104,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { .createComponent()); return; } + Matcher drugVaultInfoLSDMatcher = PatternHandler.DRUG_VAULT_INFOLSD_PATTERN.matcher(msg); if (drugVaultInfoLSDMatcher.find()) { e.setMessage(Message.getBuilder() From 6ef91089f68e3f0e59f5b339bb12ebda95b3685a Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Fri, 24 Feb 2023 22:18:57 +0100 Subject: [PATCH 086/136] Update src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../events/faction/state/DrugMessageEventHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java index 534c551bd..f3b240588 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java @@ -74,6 +74,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { .createComponent()); return; } + Matcher drugVaultInfoMatcher = PatternHandler.DRUG_VAULT_INFO_PATTERN.matcher(msg); if (drugVaultInfoMatcher.find()) { e.setCanceled(true); From 50cda6454aa28e0eb167043229e58965b9179c70 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Fri, 24 Feb 2023 22:45:58 +0100 Subject: [PATCH 087/136] implement clear command --- .../faction/polizei/ClearCommand.java | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java new file mode 100644 index 000000000..7bc089749 --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java @@ -0,0 +1,91 @@ +package com.rettichlp.unicacityaddon.commands.faction.polizei; + +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; +import com.rettichlp.unicacityaddon.base.utils.ForgeUtils; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.client.IClientCommand; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * @author Gelegenheitscode + */ +@UCCommand +public class ClearCommand implements IClientCommand { + + @Override + @Nonnull + public String getName() { + return "clear"; + } + + @Override + @Nonnull + public String getUsage(@Nonnull ICommandSender sender) { + return "/clear [Spieler...]"; + } + + @Override + @Nonnull + public List getAliases() { + return Collections.emptyList(); + } + + @Override + public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender) { + return true; + } + + @Override + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, String[] args) { + UPlayer p = AbstractionLayer.getPlayer(); + if (args.length < 1) { + p.sendSyntaxMessage(getUsage(sender)); + return; + } + + List players = Arrays.asList(args); + + clearWanteds(p, players); + } + + private void clearWanteds(UPlayer issuer, List players) { + for (String player : players) { + issuer.sendChatMessage("/clear " + player); + } + } + + @Override + @Nonnull + public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { + return TabCompletionBuilder.getBuilder(args) + .addToAllFromIndex(2, ForgeUtils.getOnlinePlayers()) + .build(); + } + + @Override + public boolean isUsernameIndex(@Nonnull String[] args, int index) { + return false; + } + + @Override + public boolean allowUsageWithoutPrefix(ICommandSender sender, String message) { + return false; + } + + @Override + public int compareTo(@Nonnull ICommand o) { + return 0; + } + +} From 34f5b9fddea9ec9269624b55196ad1dc1d2666db Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Fri, 24 Feb 2023 23:35:18 +0100 Subject: [PATCH 088/136] requested changes --- .../commands/faction/polizei/ClearCommand.java | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java index 7bc089749..469ced939 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java @@ -53,24 +53,13 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen p.sendSyntaxMessage(getUsage(sender)); return; } - - List players = Arrays.asList(args); - - clearWanteds(p, players); - } - - private void clearWanteds(UPlayer issuer, List players) { - for (String player : players) { - issuer.sendChatMessage("/clear " + player); - } + Arrays.stream(args).forEach(player -> p.sendChatMessage("/clear " + player)); } @Override @Nonnull public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { - return TabCompletionBuilder.getBuilder(args) - .addToAllFromIndex(2, ForgeUtils.getOnlinePlayers()) - .build(); + return TabCompletionBuilder.getBuilder(args).build(); } @Override From 6186f291b8c04ff38ea57ff9d61a91fc4dfe5db6 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Fri, 24 Feb 2023 23:35:57 +0100 Subject: [PATCH 089/136] requested changes --- .../unicacityaddon/commands/faction/polizei/ClearCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java index 469ced939..a4b60bd0b 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java @@ -4,7 +4,6 @@ import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; -import com.rettichlp.unicacityaddon.base.utils.ForgeUtils; import net.minecraft.command.ICommand; import net.minecraft.command.ICommandSender; import net.minecraft.server.MinecraftServer; From f90d2bfe12255a97a54d6460fb94b982e54fd15f Mon Sep 17 00:00:00 2001 From: RettichLP <97811064+rettichlp@users.noreply.github.com> Date: Sat, 25 Feb 2023 01:07:13 +0100 Subject: [PATCH 090/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java --- .../unicacityaddon/commands/faction/polizei/ClearCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java index a4b60bd0b..94fdde064 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java @@ -52,6 +52,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen p.sendSyntaxMessage(getUsage(sender)); return; } + Arrays.stream(args).forEach(player -> p.sendChatMessage("/clear " + player)); } From 862cebcd60242f395aa0118a6dfe1e88482f5306 Mon Sep 17 00:00:00 2001 From: RettichLP <97811064+rettichlp@users.noreply.github.com> Date: Sat, 25 Feb 2023 01:07:19 +0100 Subject: [PATCH 091/136] Update src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java --- .../unicacityaddon/commands/faction/polizei/ClearCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java index 94fdde064..ce505db05 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ClearCommand.java @@ -76,5 +76,4 @@ public boolean allowUsageWithoutPrefix(ICommandSender sender, String message) { public int compareTo(@Nonnull ICommand o) { return 0; } - } From 1ad389513db9342afac95fa0ba3163e53c9d8325 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Sat, 25 Feb 2023 17:59:09 +0100 Subject: [PATCH 092/136] add UnicaCity check to FDSF Event-Handler --- .../events/faction/FDSFChatEventHandler.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/FDSFChatEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/FDSFChatEventHandler.java index d5d6c5016..18686b88e 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/FDSFChatEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/FDSFChatEventHandler.java @@ -1,5 +1,6 @@ package com.rettichlp.unicacityaddon.events.faction; +import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; @@ -18,17 +19,17 @@ public void onFDSFChatSend(ClientChatEvent e) { String msg = e.getMessage(); UPlayer p = AbstractionLayer.getPlayer(); - if (msg.startsWith("/f ") && !MobileEventHandler.hasCommunications) { + if (msg.startsWith("/f ") && !MobileEventHandler.hasCommunications && UnicacityAddon.isUnicacity()) { p.sendErrorMessage("Du hast keine Kommunikationsmittel!"); p.sendInfoMessage("Wenn du die Nachricht trotzdem senden möchtest, nutze /fforce [Nachricht]. Die Nachricht ist in der Zwischenablage."); p.copyToClipboard(msg.replace("/f ", "")); e.setCanceled(true); - } else if (msg.startsWith("/d ") && !MobileEventHandler.hasCommunications) { + } else if (msg.startsWith("/d ") && !MobileEventHandler.hasCommunications && UnicacityAddon.isUnicacity()) { p.sendErrorMessage("Du hast keine Kommunikationsmittel!"); p.sendInfoMessage("Wenn du die Nachricht trotzdem senden möchtest, nutze /dforce [Nachricht]. Die Nachricht ist in der Zwischenablage."); p.copyToClipboard(msg.replace("/d ", "")); e.setCanceled(true); - } else if (msg.startsWith("/sf ") && !MobileEventHandler.hasCommunications) { + } else if (msg.startsWith("/sf ") && !MobileEventHandler.hasCommunications && UnicacityAddon.isUnicacity()) { p.sendErrorMessage("Du hast keine Kommunikationsmittel!"); p.sendInfoMessage("Wenn du die Nachricht trotzdem senden möchtest, nutze /sfforce [Nachricht]. Die Nachricht ist in der Zwischenablage."); p.copyToClipboard(msg.replace("/sf ", "")); From e9d660704fd658f518301e089b196e8f4feb1598 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Mon, 27 Feb 2023 17:47:10 +0100 Subject: [PATCH 093/136] add few hq messages --- .../base/text/PatternHandler.java | 6 +++ .../faction/state/HQMessageEventHandler.java | 48 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 7e6aacf23..13fcacf9e 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -98,6 +98,12 @@ public class PatternHandler { public static final Pattern WANTED_DELETED_PATTERN = Pattern.compile("^HQ: (?:\\[UC])*(\\w+) wurde von (?:\\[UC])*\\w+ eingesperrt\\.$" + "|^HQ: (?:\\[UC])*(\\w+) wurde von (?:\\[UC])*\\w+ getötet\\.$" + "|^HQ: .+ (?:\\[UC])*\\w+ hat (?:\\[UC])*(\\w+)(?:'s)*(?: seine| ihre)* Akten gelöscht, over\\.$"); + public static final Pattern TAKE_DRIVING_LICENSE_PATTERN = Pattern.compile("^(Agent|Beamter) (?:\\[UC])*([a-zA-Z0-9_]+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)* Führerschein abgenommen\\.$"); + public static final Pattern GIVE_DRIVING_LICENSE_PATTERN = Pattern.compile("^(Agent|Beamter) (?:\\[UC])*([a-zA-Z0-9_]+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)* Führerschein zurückgegeben\\.$"); + public static final Pattern TAKE_GUN_LICENSE_PATTERN = Pattern.compile("^(Agent|Beamter) (?:\\[UC])*([a-zA-Z0-9_]+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)* Waffenschein abgenommen\\.$"); + public static final Pattern GIVE_GUN_LICENSE_PATTERN = Pattern.compile("^(Agent|Beamter) (?:\\[UC])*([a-zA-Z0-9_]+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)* Waffenschein zurückgegeben\\.$"); + public static final Pattern TAKE_GUNS_PATTERN = Pattern.compile("^(Beamtin|Beamter) (?:\\[UC])*([a-zA-Z0-9_]+) hat (?:\\[UC])*([a-zA-Z0-9_]+) die Waffen abgenommen\\.$"); + public static final Pattern TAKE_DRUGS_PATTERN = Pattern.compile("^(Beamtin|Beamter) (?:\\[UC])*([a-zA-Z0-9_]+) hat (?:\\[UC])*([a-zA-Z0-9_]+) (seine|ihre) Drogen abgenommen!$"); public static final Pattern BLACKLIST_START_PATTERN = Pattern.compile("=== Blacklist .+ ==="); public static final Pattern BLACKLIST_LIST_PATTERN = Pattern.compile("^ » (?:\\[UC])*(\\w+) \\| (.+) \\| (.+) \\| (\\d+) Kills \\| (\\d+)\\$(| \\(AFK\\))$"); public static final Pattern BLACKLIST_ADDED_PATTERN = Pattern.compile("^\\[Blacklist] (?:\\[UC])*(\\w+) wurde von (?:\\[UC])*\\w+ auf die Blacklist gesetzt!$"); diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java index 4514a1f7a..0e070ed36 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java @@ -85,6 +85,54 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { .of(m.group(1)).color(ColorCode.BLUE).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); + + m = PatternHandler.TAKE_DRIVING_LICENSE_PATTERN.matcher(msg); + if (m.find()) + e.setMessage(Message.getBuilder().of("Führerscheinabnahme").color(ColorCode.RED).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(3)).color(ColorCode.BLUE).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); + + m = PatternHandler.GIVE_DRIVING_LICENSE_PATTERN.matcher(msg); + if (m.find()) + e.setMessage(Message.getBuilder().of("Führerscheinrückgabe").color(ColorCode.RED).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(3)).color(ColorCode.BLUE).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); + + m = PatternHandler.TAKE_GUN_LICENSE_PATTERN.matcher(msg); + if (m.find()) + e.setMessage(Message.getBuilder().of("Waffenscheinabnahme").color(ColorCode.RED).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(3)).color(ColorCode.BLUE).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); + + m = PatternHandler.GIVE_GUN_LICENSE_PATTERN.matcher(msg); + if (m.find()) + e.setMessage(Message.getBuilder().of("Waffenscheinrückgabe").color(ColorCode.RED).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(3)).color(ColorCode.BLUE).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); + + m = PatternHandler.TAKE_DRUGS_PATTERN.matcher(msg); + if (m.find()) + e.setMessage(Message.getBuilder().of("Drogenabnahme").color(ColorCode.RED).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(3)).color(ColorCode.BLUE).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); + + m = PatternHandler.TAKE_GUNS_PATTERN.matcher(msg); + if (m.find()) + e.setMessage(Message.getBuilder().of("Waffenabnahme").color(ColorCode.RED).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(3)).color(ColorCode.BLUE).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); } } } From 2e6af452eebf144ffaac6d5fa5b9235f35b035b9 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Tue, 28 Feb 2023 16:44:55 +0100 Subject: [PATCH 094/136] requested changes --- .../base/text/PatternHandler.java | 20 +++++++------- .../faction/state/HQMessageEventHandler.java | 27 ++++++++++++++----- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 13fcacf9e..3af6c8a50 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -91,19 +91,19 @@ public class PatternHandler { public static final Pattern WANTED_GIVEN_REASON_PATTERN = Pattern.compile("^HQ: Gesuchter: (?:\\[UC])*(\\w+)\\. Grund: (.+)$"); public static final Pattern WANTED_REASON = Pattern.compile("^HQ: Fahndungsgrund: (.+) \\| Fahndungszeit: (.+)\\.$"); public static final Pattern WANTED_GIVEN_POINTS_PATTERN = Pattern.compile("^HQ: (?:\\[UC])*(\\w+)'s momentanes WantedLevel: (\\d+)$"); - public static final Pattern WANTED_KILL = Pattern.compile("^HQ: (?:\\[UC])*([a-zA-Z0-9_]+) wurde von (?:\\[UC])*([a-zA-Z0-9_]+) getötet\\.$"); - public static final Pattern WANTED_DELETE = Pattern.compile("^HQ: .+ (?:\\[UC])*([a-zA-Z0-9_]+) hat (?:\\[UC])*([a-zA-Z0-9_]+)'s Akten gelöscht, over\\.$"); - public static final Pattern WANTED_JAIL = Pattern.compile("^HQ: (?:\\[UC])*([a-zA-Z0-9_]+) wurde von (?:\\[UC])*([a-zA-Z0-9_]+) eingesperrt\\.$"); - public static final Pattern WANTEDS_TICKET_PATTERN = Pattern.compile("^HQ: .+ (?:\\[UC])*([a-zA-Z0-9_]+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)*(?: seine| ihre)* Akten gelöscht, over\\.$"); + public static final Pattern WANTED_KILL = Pattern.compile("^HQ: (?:\\[UC])*(\\w+) wurde von (?:\\[UC])*([a-zA-Z0-9_]+) getötet\\.$"); + public static final Pattern WANTED_DELETE = Pattern.compile("^HQ: .+ (?:\\[UC])*(\\w+) hat (?:\\[UC])*([a-zA-Z0-9_]+)'s Akten gelöscht, over\\.$"); + public static final Pattern WANTED_JAIL = Pattern.compile("^HQ: (?:\\[UC])*(\\w+) wurde von (?:\\[UC])*([a-zA-Z0-9_]+) eingesperrt\\.$"); + public static final Pattern WANTEDS_TICKET_PATTERN = Pattern.compile("^HQ: .+ (?:\\[UC])*(\\w+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)*(?: seine| ihre)* Akten gelöscht, over\\.$"); public static final Pattern WANTED_DELETED_PATTERN = Pattern.compile("^HQ: (?:\\[UC])*(\\w+) wurde von (?:\\[UC])*\\w+ eingesperrt\\.$" + "|^HQ: (?:\\[UC])*(\\w+) wurde von (?:\\[UC])*\\w+ getötet\\.$" + "|^HQ: .+ (?:\\[UC])*\\w+ hat (?:\\[UC])*(\\w+)(?:'s)*(?: seine| ihre)* Akten gelöscht, over\\.$"); - public static final Pattern TAKE_DRIVING_LICENSE_PATTERN = Pattern.compile("^(Agent|Beamter) (?:\\[UC])*([a-zA-Z0-9_]+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)* Führerschein abgenommen\\.$"); - public static final Pattern GIVE_DRIVING_LICENSE_PATTERN = Pattern.compile("^(Agent|Beamter) (?:\\[UC])*([a-zA-Z0-9_]+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)* Führerschein zurückgegeben\\.$"); - public static final Pattern TAKE_GUN_LICENSE_PATTERN = Pattern.compile("^(Agent|Beamter) (?:\\[UC])*([a-zA-Z0-9_]+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)* Waffenschein abgenommen\\.$"); - public static final Pattern GIVE_GUN_LICENSE_PATTERN = Pattern.compile("^(Agent|Beamter) (?:\\[UC])*([a-zA-Z0-9_]+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)* Waffenschein zurückgegeben\\.$"); - public static final Pattern TAKE_GUNS_PATTERN = Pattern.compile("^(Beamtin|Beamter) (?:\\[UC])*([a-zA-Z0-9_]+) hat (?:\\[UC])*([a-zA-Z0-9_]+) die Waffen abgenommen\\.$"); - public static final Pattern TAKE_DRUGS_PATTERN = Pattern.compile("^(Beamtin|Beamter) (?:\\[UC])*([a-zA-Z0-9_]+) hat (?:\\[UC])*([a-zA-Z0-9_]+) (seine|ihre) Drogen abgenommen!$"); + public static final Pattern TAKE_DRIVING_LICENSE_PATTERN = Pattern.compile("^(Agent|Beamter) (?:\\[UC])*(\\w+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)* Führerschein abgenommen\\.$"); + public static final Pattern GIVE_DRIVING_LICENSE_PATTERN = Pattern.compile("^(Agent|Beamter) (?:\\[UC])*(\\w+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)* Führerschein zurückgegeben\\.$"); + public static final Pattern TAKE_GUN_LICENSE_PATTERN = Pattern.compile("^(Agent|Beamter) (?:\\[UC])*(\\w+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)* Waffenschein abgenommen\\.$"); + public static final Pattern GIVE_GUN_LICENSE_PATTERN = Pattern.compile("^(Agent|Beamter) (?:\\[UC])*(\\w+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)* Waffenschein zurückgegeben\\.$"); + public static final Pattern TAKE_GUNS_PATTERN = Pattern.compile("^(Beamtin|Beamter) (?:\\[UC])*(\\w+) hat (?:\\[UC])*([a-zA-Z0-9_]+) die Waffen abgenommen\\.$"); + public static final Pattern TAKE_DRUGS_PATTERN = Pattern.compile("^(Beamtin|Beamter) (?:\\[UC])*(\\w+) hat (?:\\[UC])*([a-zA-Z0-9_]+) (seine|ihre) Drogen abgenommen!$"); public static final Pattern BLACKLIST_START_PATTERN = Pattern.compile("=== Blacklist .+ ==="); public static final Pattern BLACKLIST_LIST_PATTERN = Pattern.compile("^ » (?:\\[UC])*(\\w+) \\| (.+) \\| (.+) \\| (\\d+) Kills \\| (\\d+)\\$(| \\(AFK\\))$"); public static final Pattern BLACKLIST_ADDED_PATTERN = Pattern.compile("^\\[Blacklist] (?:\\[UC])*(\\w+) wurde von (?:\\[UC])*\\w+ auf die Blacklist gesetzt!$"); diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java index 0e070ed36..a0e4ec046 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java @@ -79,60 +79,73 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { } m = PatternHandler.WANTEDS_TICKET_PATTERN.matcher(msg); - if (m.find()) + if (m.find()) { e.setMessage(Message.getBuilder().of("Ticket").color(ColorCode.RED).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(1)).color(ColorCode.BLUE).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); + return; + } m = PatternHandler.TAKE_DRIVING_LICENSE_PATTERN.matcher(msg); - if (m.find()) + if (m.find()) { e.setMessage(Message.getBuilder().of("Führerscheinabnahme").color(ColorCode.RED).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(3)).color(ColorCode.BLUE).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); + return; + } m = PatternHandler.GIVE_DRIVING_LICENSE_PATTERN.matcher(msg); - if (m.find()) + if (m.find()) { e.setMessage(Message.getBuilder().of("Führerscheinrückgabe").color(ColorCode.RED).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(3)).color(ColorCode.BLUE).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); + return; + } m = PatternHandler.TAKE_GUN_LICENSE_PATTERN.matcher(msg); - if (m.find()) + if (m.find()) { e.setMessage(Message.getBuilder().of("Waffenscheinabnahme").color(ColorCode.RED).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(3)).color(ColorCode.BLUE).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); + return; + } m = PatternHandler.GIVE_GUN_LICENSE_PATTERN.matcher(msg); - if (m.find()) + if (m.find()) { e.setMessage(Message.getBuilder().of("Waffenscheinrückgabe").color(ColorCode.RED).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(3)).color(ColorCode.BLUE).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); + return; + } m = PatternHandler.TAKE_DRUGS_PATTERN.matcher(msg); - if (m.find()) + if (m.find()) { e.setMessage(Message.getBuilder().of("Drogenabnahme").color(ColorCode.RED).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(3)).color(ColorCode.BLUE).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); + return; + } m = PatternHandler.TAKE_GUNS_PATTERN.matcher(msg); - if (m.find()) + if (m.find()) { e.setMessage(Message.getBuilder().of("Waffenabnahme").color(ColorCode.RED).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(3)).color(ColorCode.BLUE).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); + } } } } From 78d888eee8f946a9d311ee166aa50c8c51c778ed Mon Sep 17 00:00:00 2001 From: RettichLP Date: Tue, 28 Feb 2023 18:47:24 +0100 Subject: [PATCH 095/136] Fix NullPointerException in isShown method in modules --- .../com/rettichlp/unicacityaddon/base/manager/FileManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/manager/FileManager.java b/src/main/java/com/rettichlp/unicacityaddon/base/manager/FileManager.java index e0b0b4a1e..f3c9786bb 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/manager/FileManager.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/manager/FileManager.java @@ -123,7 +123,7 @@ public static void loadData() { File dataFile = FileManager.getDataFile(); assert dataFile != null; String jsonData = FileUtils.readFileToString(dataFile, StandardCharsets.UTF_8.toString()); - DATA = jsonData == null || jsonData.equals("") || jsonData.equals("null") ? new Data() : new Gson().fromJson(jsonData, Data.class); + DATA = jsonData == null || !jsonData.contains("timer") ? new Data() : new Gson().fromJson(jsonData, Data.class); Runtime.getRuntime().addShutdownHook(new Thread(FileManager::saveData)); } catch (IOException e) { throw new RuntimeException(e); From 114b36021796b7a5b36931b15271b4624f424c9d Mon Sep 17 00:00:00 2001 From: RettichLP Date: Tue, 28 Feb 2023 18:58:55 +0100 Subject: [PATCH 096/136] Move money commands in own package --- .../unicacityaddon/commands/{ => money}/EinzahlenCommand.java | 2 +- .../commands/{ => money}/ReichensteuerCommand.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/main/java/com/rettichlp/unicacityaddon/commands/{ => money}/EinzahlenCommand.java (97%) rename src/main/java/com/rettichlp/unicacityaddon/commands/{ => money}/ReichensteuerCommand.java (98%) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/EinzahlenCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/money/EinzahlenCommand.java similarity index 97% rename from src/main/java/com/rettichlp/unicacityaddon/commands/EinzahlenCommand.java rename to src/main/java/com/rettichlp/unicacityaddon/commands/money/EinzahlenCommand.java index 1c4062e8a..5f3287e7c 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/EinzahlenCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/money/EinzahlenCommand.java @@ -1,4 +1,4 @@ -package com.rettichlp.unicacityaddon.commands; +package com.rettichlp.unicacityaddon.commands.money; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/ReichensteuerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/money/ReichensteuerCommand.java similarity index 98% rename from src/main/java/com/rettichlp/unicacityaddon/commands/ReichensteuerCommand.java rename to src/main/java/com/rettichlp/unicacityaddon/commands/money/ReichensteuerCommand.java index 8ce2da87e..f92a4e691 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/ReichensteuerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/money/ReichensteuerCommand.java @@ -1,4 +1,4 @@ -package com.rettichlp.unicacityaddon.commands; +package com.rettichlp.unicacityaddon.commands.money; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; From 9ccd25784c103abe8ea476b0861302508f8ea337 Mon Sep 17 00:00:00 2001 From: RettichLP Date: Tue, 28 Feb 2023 19:13:10 +0100 Subject: [PATCH 097/136] Add ATMFillCommand and event handler in MoneyEventHandler --- .../commands/money/ATMFillCommand.java | 99 +++++++++++++++++++ .../events/MoneyEventHandler.java | 7 +- 2 files changed, 103 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/commands/money/ATMFillCommand.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/money/ATMFillCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/money/ATMFillCommand.java new file mode 100644 index 000000000..5a9a31396 --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/money/ATMFillCommand.java @@ -0,0 +1,99 @@ +package com.rettichlp.unicacityaddon.commands.money; + +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; +import com.rettichlp.unicacityaddon.base.manager.FileManager; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.client.IClientCommand; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.Collections; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +/** + * @author RettichLP + */ +@UCCommand +public class ATMFillCommand implements IClientCommand { + + public static int cashInATM = 0; + public static boolean isActive = false; + + @Override + @Nonnull + public String getName() { + return "atmfill"; + } + + @Override + @Nonnull + public String getUsage(@Nonnull ICommandSender sender) { + return "/atmfill"; + } + + @Override + @Nonnull + public List getAliases() { + return Collections.emptyList(); + } + + @Override + public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender) { + return true; + } + + @Override + @Nonnull + public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { + return TabCompletionBuilder.getBuilder(args).build(); + } + + @Override + public boolean isUsernameIndex(@Nonnull String[] args, int index) { + return false; + } + + @Override + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { + UPlayer p = AbstractionLayer.getPlayer(); + + if (!isActive) { + p.sendChatMessage("/atminfo"); + isActive = true; + + new Timer().schedule(new TimerTask() { + @Override + public void run() { + int fillAmount = 100000 - cashInATM; + int bankDepositAmount = Math.min(fillAmount, FileManager.DATA.getCashBalance()); + + if (bankDepositAmount > 0) { + p.sendChatMessage("/bank einzahlen " + bankDepositAmount); + } else { + p.sendInfoMessage("Der ATM ist bereits voll."); + } + + isActive = false; + } + }, 400); + } + } + + @Override + public boolean allowUsageWithoutPrefix(ICommandSender sender, String message) { + return false; + } + + @Override + public int compareTo(@Nonnull ICommand o) { + return 0; + } +} diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/MoneyEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/MoneyEventHandler.java index f10685bad..62f2045c1 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/MoneyEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/MoneyEventHandler.java @@ -10,7 +10,8 @@ import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; import com.rettichlp.unicacityaddon.base.text.PatternHandler; -import com.rettichlp.unicacityaddon.commands.ReichensteuerCommand; +import com.rettichlp.unicacityaddon.commands.money.ATMFillCommand; +import com.rettichlp.unicacityaddon.commands.money.ReichensteuerCommand; import net.minecraftforge.client.event.ClientChatEvent; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -168,8 +169,8 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { } Matcher atmInfoMatcher = PatternHandler.ATM_INFO_PATTERN.matcher(msg); - if (atmInfoMatcher.find() && ReichensteuerCommand.isActive) { - ReichensteuerCommand.cashInATM = Integer.parseInt(atmInfoMatcher.group(2)); + if (atmInfoMatcher.find() && (ReichensteuerCommand.isActive || ATMFillCommand.isActive)) { + ReichensteuerCommand.cashInATM = ATMFillCommand.cashInATM = Integer.parseInt(atmInfoMatcher.group(2)); e.setCanceled(true); } From 88640fe690f29dbbb428f54a86e07cb6e43bb0cf Mon Sep 17 00:00:00 2001 From: RettichLP Date: Tue, 28 Feb 2023 20:07:02 +0100 Subject: [PATCH 098/136] Migrate ServiceMessageEventHandler into EmergencyServiceEventHandler, add auto service done logic --- .../base/text/PatternHandler.java | 9 +- .../events/NavigationEventHandler.java | 15 ++ .../faction/EmergencyServiceEventHandler.java | 175 ++++++++++++++++-- .../ServiceMessageEventHandler.java | 162 ---------------- 4 files changed, 176 insertions(+), 185 deletions(-) delete mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/ServiceMessageEventHandler.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 3af6c8a50..0b6cea1b4 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -60,12 +60,11 @@ public class PatternHandler { * Pattern for service data * * @see com.rettichlp.unicacityaddon.events.faction.EmergencyServiceEventHandler - * @see com.rettichlp.unicacityaddon.events.faction.rettungsdienst.ServiceMessageEventHandler */ public static final Pattern SERVICE_ARRIVED_PATTERN = Pattern.compile("^Ein Notruf von ((?:\\[UC])*\\w+) \\((\\d+)\\): \"(.*)\"$"); public static final Pattern SERVICE_LOCATION_PATTERN = Pattern.compile("^Der näheste Punkt ist ([^.]+)\\.$"); - public static final Pattern SERVICE_LOCATION_PATTERN_ONE_NEAREST = Pattern.compile("^Der näheste Punkt ist ([^.]+)\\. Die nähesten Personen sind ((?:\\[UC])*\\w+) \\(((\\d+)m)\\)\\.$"); - public static final Pattern SERVICE_LOCATION_PATTERN_TWO_NEAREST = Pattern.compile("^Der näheste Punkt ist ([^.]+)\\. Die nähesten Personen sind ((?:\\[UC])*\\w+) \\(((\\d+)m)\\), ((?:\\[UC])*\\w+) \\(((\\d+)m)\\)\\.$"); + public static final Pattern SERVICE_LOCATION_ONE_NEAREST_PATTERN = Pattern.compile("^Der näheste Punkt ist ([^.]+)\\. Die nähesten Personen sind ((?:\\[UC])*\\w+) \\(((\\d+)m)\\)\\.$"); + public static final Pattern SERVICE_LOCATION_TWO_NEAREST_PATTERN = Pattern.compile("^Der näheste Punkt ist ([^.]+)\\. Die nähesten Personen sind ((?:\\[UC])*\\w+) \\(((\\d+)m)\\), ((?:\\[UC])*\\w+) \\(((\\d+)m)\\)\\.$"); public static final Pattern SERVICE_DONE_PATTERN = Pattern.compile("^Du hast den Service von (?:\\[UC])*(\\w+) als 'Erledigt' markiert!$"); public static final Pattern SERVICE_ACCEPTED_PATTERN = Pattern.compile("^((?:\\[UC])*\\w+) hat den Notruf von ((?:\\[UC])*\\w+) angenommen\\. \\((\\d+)m entfernt\\)$"); public static final Pattern SERVICE_REQUEUED_PATTERN = Pattern.compile("^((?:\\[UC])*\\w+) hat den Notruf von ((?:\\[UC])*\\w+) \\((\\d+)\\) wieder geöffnet\\.$"); @@ -336,8 +335,8 @@ public class PatternHandler { public static final Pattern DRUG_VAULT_DROP_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) in der Asservatenkammer verstaut\\.$"); public static final Pattern DRUG_VAULT_GET_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) aus der Asservatenkammer genommen\\.$"); public static final Pattern DRUG_VAULT_INFOTITLE_PATTERN = Pattern.compile("^ ===== Asservatenkammer \\((\\w+)\\) =====$"); - public static final Pattern DRUG_VAULT_INFO_PATTERN = Pattern.compile("^ » (Mittlere|Höchste|Gute|Schlechte) Reinheit: (\\d+)g » (Mittlere|Höchste|Gute|Schlechte) Reinheit: (\\d+)g » (Mittlere|Höchste|Gute|Schlechte) Reinheit: (\\d+)g » (Mittlere|Höchste|Gute|Schlechte) Reinheit: (\\d+)g$"); - public static final Pattern DRUG_VAULT_INFOLSD_PATTERN = Pattern.compile("^ » LSD: (\\d+) Stück$"); + public static final Pattern DRUG_VAULT_INFO_PATTERN = Pattern.compile("^ {2}» (Mittlere|Höchste|Gute|Schlechte) Reinheit: (\\d+)g {2}» (Mittlere|Höchste|Gute|Schlechte) Reinheit: (\\d+)g {2}» (Mittlere|Höchste|Gute|Schlechte) Reinheit: (\\d+)g {2}» (Mittlere|Höchste|Gute|Schlechte) Reinheit: (\\d+)g$"); + public static final Pattern DRUG_VAULT_INFOLSD_PATTERN = Pattern.compile("^ {2}» LSD: (\\d+) Stück$"); public static final Pattern DRUG_VAULT_BURN_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) vernichtet\\.$"); public static final Pattern PLANT_BURN_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat erfolgreich eine (Kokain|Marihuana) Plantage verbrannt, over\\.$"); } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/NavigationEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/NavigationEventHandler.java index d8ee73bc7..45c6d7a53 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/NavigationEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/NavigationEventHandler.java @@ -5,8 +5,10 @@ import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.PatternHandler; import com.rettichlp.unicacityaddon.base.utils.NavigationUtils; +import com.rettichlp.unicacityaddon.events.faction.EmergencyServiceEventHandler; import com.rettichlp.unicacityaddon.events.job.FishermanEventHandler; import com.rettichlp.unicacityaddon.events.job.JobEventHandler; +import net.minecraft.util.math.BlockPos; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -14,6 +16,7 @@ /** * @author Dimiikou + * @author RettichLP */ @UCEvent public class NavigationEventHandler { @@ -38,6 +41,18 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { if (JobEventHandler.isTabakJob) { p.sendChatMessage("/droptabak"); } + + if (EmergencyServiceEventHandler.distanceToService > 0) { + BlockPos pos = p.getPosition(); + + double distanceFromServiceAcceptPositionToHere = EmergencyServiceEventHandler.serviceAcceptPosition.getDistance(pos.getX(), pos.getY(), pos.getZ()); + if (Math.abs(EmergencyServiceEventHandler.distanceToService - distanceFromServiceAcceptPositionToHere) <= 5) { + p.sendChatMessage("/doneservice"); + EmergencyServiceEventHandler.distanceToService = 0; + } else { + p.sendInfoMessage("Das Addon hat deinen Service nicht als erledigt markiert, da die Entfernung zum Zielpunkt nicht übereingestimmt hat."); + } + } } } } diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/EmergencyServiceEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/EmergencyServiceEventHandler.java index f055712fb..b45b65a63 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/EmergencyServiceEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/EmergencyServiceEventHandler.java @@ -3,6 +3,7 @@ import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; +import com.rettichlp.unicacityaddon.base.config.ConfigElements; import com.rettichlp.unicacityaddon.base.enums.api.StatisticType; import com.rettichlp.unicacityaddon.base.enums.location.ServiceCallBox; import com.rettichlp.unicacityaddon.base.manager.FileManager; @@ -11,6 +12,7 @@ import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; import com.rettichlp.unicacityaddon.base.text.PatternHandler; +import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.event.ClickEvent; import net.minecraft.util.text.event.HoverEvent; @@ -29,6 +31,9 @@ @UCEvent public class EmergencyServiceEventHandler { + public static int distanceToService = 0; + public static BlockPos serviceAcceptPosition; + private static final List activeEmergencyCallBoxList = new ArrayList<>(); @SubscribeEvent @@ -37,41 +42,112 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { ITextComponent msg = e.getMessage(); String unformattedMsg = msg.getUnformattedText(); - if (PatternHandler.SERVICE_ARRIVED_PATTERN.matcher(unformattedMsg).find()) { + Matcher serviceArrivedMatcher = PatternHandler.SERVICE_ARRIVED_PATTERN.matcher(unformattedMsg); + if (serviceArrivedMatcher.find()) { p.playSound(SoundRegistry.SERVICE_SOUND, 1, 1); FileManager.DATA.addServiceCount(1); + + if (ConfigElements.getServiceMessagesActivated()) { + ITextComponent hoverMessage = Message.getBuilder().of("Annehmen").color(ColorCode.RED).advance().createComponent(); + e.setMessage(Message.getBuilder() + .of("Neuer Notruf").color(ColorCode.RED).bold() + .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + serviceArrivedMatcher.group(1).replace("[UC]", "")) + .advance().space() + .of("-").color(ColorCode.GRAY) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + serviceArrivedMatcher.group(1).replace("[UC]", "")) + .advance().space() + .of(serviceArrivedMatcher.group(1)).color(ColorCode.DARK_RED) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + serviceArrivedMatcher.group(1).replace("[UC]", "")) + .advance().space() // Notruf Sender + .of("-").color(ColorCode.GRAY) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + serviceArrivedMatcher.group(1).replace("[UC]", "")) + .advance().space() + .of("\"" + serviceArrivedMatcher.group(3) + "\"").color(ColorCode.DARK_RED) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + serviceArrivedMatcher.group(1).replace("[UC]", "")) + .advance() + .createComponent()); + } + return; } - if (PatternHandler.SERVICE_REQUEUED_PATTERN.matcher(unformattedMsg).find()) { + Matcher serviceRequeuedMatcher = PatternHandler.SERVICE_REQUEUED_PATTERN.matcher(unformattedMsg); + if (serviceRequeuedMatcher.find()) { FileManager.DATA.addServiceCount(1); + + if (ConfigElements.getServiceMessagesActivated()) { + ITextComponent hoverMessage = Message.getBuilder().of("Annehmen").color(ColorCode.RED).advance().createComponent(); + e.setMessage(Message.getBuilder() + .of("Neu geöffnet").color(ColorCode.GOLD).bold() + .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + serviceRequeuedMatcher.group(2).replace("[UC]", "")) + .advance().space() + .of("-").color(ColorCode.GRAY) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + serviceRequeuedMatcher.group(2).replace("[UC]", "")) + .advance().space() + .of(serviceRequeuedMatcher.group(1)).color(ColorCode.DARK_RED) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + serviceRequeuedMatcher.group(2).replace("[UC]", "")) + .advance().space() // Öffner + .of("-").color(ColorCode.GRAY) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + serviceRequeuedMatcher.group(2).replace("[UC]", "")) + .advance().space() + .of(serviceRequeuedMatcher.group(2)).color(ColorCode.DARK_RED) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + serviceRequeuedMatcher.group(2).replace("[UC]", "")) + .advance().space() // Notruf sender + .createComponent()); + } + return; } - if (PatternHandler.SERVICE_ACCEPTED_PATTERN.matcher(unformattedMsg).find()) { + Matcher serviceAcceptedMatcher = PatternHandler.SERVICE_ACCEPTED_PATTERN.matcher(unformattedMsg); + if (serviceAcceptedMatcher.find()) { FileManager.DATA.removeServiceCount(1); + + if (serviceAcceptedMatcher.group(1).equals(p.getName())) { + distanceToService = Integer.parseInt(serviceAcceptedMatcher.group(3)); + serviceAcceptPosition = p.getPosition(); + } + + if (ConfigElements.getServiceMessagesActivated()) + e.setMessage(Message.getBuilder() + .of("Angenommen").color(ColorCode.GREEN).bold().advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(serviceAcceptedMatcher.group(1)).color(ColorCode.DARK_RED).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(serviceAcceptedMatcher.group(2)).color(ColorCode.DARK_RED).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(serviceAcceptedMatcher.group(3) + "m").color(ColorCode.DARK_RED).advance() + .createComponent()); return; } - if (PatternHandler.SERVICE_DELETED_PATTERN.matcher(unformattedMsg).find()) { + Matcher serviceDeletedMatcher = PatternHandler.SERVICE_DELETED_PATTERN.matcher(unformattedMsg); + if (serviceDeletedMatcher.find()) { FileManager.DATA.removeServiceCount(1); - return; - } - if (PatternHandler.SERVICE_NO_SERVICE_PATTERN.matcher(unformattedMsg).find()) { - FileManager.DATA.setServiceCount(0); + e.setMessage(Message.getBuilder().of("Gelöscht").color(ColorCode.BLUE).bold().advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(serviceDeletedMatcher.group(2)).color(ColorCode.DARK_RED).advance().space() // Löscher + .of("-").color(ColorCode.GRAY).advance().space() + .of(serviceDeletedMatcher.group(1)).color(ColorCode.DARK_RED).advance().createComponent()); // Service sender return; } - if (PatternHandler.SERVICE_DONE_PATTERN.matcher(unformattedMsg).find()) { - FileManager.DATA.setServiceCount(FileManager.DATA.getServiceCount() + 1); - APIRequest.sendStatisticAddRequest(StatisticType.SERVICE); - } - Matcher serviceOverviewMatcher = PatternHandler.SERVICE_OVERVIEW_PATTERN.matcher(unformattedMsg); if (serviceOverviewMatcher.find()) { String openServices = serviceOverviewMatcher.group(1); FileManager.DATA.setServiceCount(Integer.parseInt(openServices)); + return; } Matcher serviceCallBoxMatcher = PatternHandler.SERVICE_CALL_BOX_PATTERN.matcher(unformattedMsg); @@ -80,16 +156,79 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { if (serviceCallBox != null) { activeEmergencyCallBoxList.add(serviceCallBox); e.setMessage(Message.getBuilder() - .add(msg.getFormattedText()) - .space() + .add(msg.getFormattedText()).space() .of("[").color(ColorCode.DARK_GRAY).advance() .of("Unterwegs - " + serviceCallBox.getDistance(p.getPosition()) + "m").color(ColorCode.RED) - .clickEvent(ClickEvent.Action.RUN_COMMAND, serviceCallBox.getNaviCommand()) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Unterwegs").color(ColorCode.RED).advance().createComponent()) - .advance() + .clickEvent(ClickEvent.Action.RUN_COMMAND, serviceCallBox.getNaviCommand()) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Unterwegs").color(ColorCode.RED).advance().createComponent()) + .advance() .of("]").color(ColorCode.DARK_GRAY).advance() .createComponent()); } + return; + } + + Matcher serviceLoactionMatcher = PatternHandler.SERVICE_LOCATION_PATTERN.matcher(unformattedMsg); + if (serviceLoactionMatcher.find() && ConfigElements.getServiceMessagesActivated()) { + e.setMessage(Message.getBuilder() + .of("➥").color(ColorCode.GRAY).advance().space() + .of(serviceLoactionMatcher.group(1)).color(ColorCode.DARK_RED).advance() + .createComponent()); + return; + } + + Matcher serviceLocationOneNearestMatcher = PatternHandler.SERVICE_LOCATION_ONE_NEAREST_PATTERN.matcher(unformattedMsg); + if (serviceLocationOneNearestMatcher.find() && ConfigElements.getServiceMessagesActivated()) { // one nearest person + e.setMessage(Message.getBuilder() + .of("➥").color(ColorCode.GRAY).advance().space() + .of(serviceLocationOneNearestMatcher.group(1)).color(ColorCode.DARK_RED).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(serviceLocationOneNearestMatcher.group(2) + " (" + serviceLocationOneNearestMatcher.group(3) + ")").color(ColorCode.DARK_RED).advance() + .createComponent()); + return; + } + + Matcher serviceLocationTwoNearestMatcher = PatternHandler.SERVICE_LOCATION_TWO_NEAREST_PATTERN.matcher(unformattedMsg); + if (serviceLocationTwoNearestMatcher.find() && ConfigElements.getServiceMessagesActivated()) { + e.setMessage(Message.getBuilder() + .of("➥").color(ColorCode.GRAY).advance().space() + .of(serviceLocationTwoNearestMatcher.group(1)).color(ColorCode.DARK_RED).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(serviceLocationTwoNearestMatcher.group(2) + " (" + serviceLocationTwoNearestMatcher.group(3) + ")").color(ColorCode.DARK_RED).advance().space() + .of("|").color(ColorCode.GRAY).advance().space() + .of(serviceLocationTwoNearestMatcher.group(5) + " (" + serviceLocationTwoNearestMatcher.group(6) + ")").color(ColorCode.DARK_RED).advance() + .createComponent()); + return; + } + + Matcher serviceBlockedMatcher = PatternHandler.SERVICE_BLOCKED_PATTERN.matcher(unformattedMsg); + if (serviceBlockedMatcher.find() && ConfigElements.getServiceMessagesActivated()) { + e.setMessage(Message.getBuilder().of("Blockiert").color(ColorCode.BLUE).bold().advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(serviceBlockedMatcher.group(2)).color(ColorCode.DARK_RED).advance().space() // Blockierer + .of("-").color(ColorCode.GRAY).advance().space() + .of(serviceBlockedMatcher.group(1)).color(ColorCode.DARK_RED).advance().createComponent()); // Blockierter + return; + } + + Matcher serviceUnblockedMatcher = PatternHandler.SERVICE_UNBLOCKED_PATTERN.matcher(unformattedMsg); + if (serviceUnblockedMatcher.find() && ConfigElements.getServiceMessagesActivated()) { + e.setMessage(Message.getBuilder().of("Entblockt").color(ColorCode.BLUE).bold().advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(serviceUnblockedMatcher.group(2)).color(ColorCode.DARK_RED).advance().space() // Entblocker + .of("-").color(ColorCode.GRAY).advance().space() + .of(serviceUnblockedMatcher.group(1)).color(ColorCode.DARK_RED).advance().createComponent()); // Blockierter + return; + } + + if (PatternHandler.SERVICE_NO_SERVICE_PATTERN.matcher(unformattedMsg).find()) { + FileManager.DATA.setServiceCount(0); + return; + } + + if (PatternHandler.SERVICE_DONE_PATTERN.matcher(unformattedMsg).find()) { + FileManager.DATA.setServiceCount(FileManager.DATA.getServiceCount() + 1); + APIRequest.sendStatisticAddRequest(StatisticType.SERVICE); } } diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/ServiceMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/ServiceMessageEventHandler.java deleted file mode 100644 index dbfa09c1c..000000000 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/ServiceMessageEventHandler.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.rettichlp.unicacityaddon.events.faction.rettungsdienst; - -import com.rettichlp.unicacityaddon.base.config.ConfigElements; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.base.text.PatternHandler; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.event.ClickEvent; -import net.minecraft.util.text.event.HoverEvent; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; - -import java.util.regex.Matcher; - -/** - * @author Dimiikou - */ -@UCEvent -public class ServiceMessageEventHandler { - - @SubscribeEvent - public void onClientChatReceived(ClientChatReceivedEvent e) { - String msg = e.getMessage().getUnformattedText(); - - Matcher m = PatternHandler.SERVICE_ARRIVED_PATTERN.matcher(msg); - if (ConfigElements.getServiceMessagesActivated()) { - if (m.find()) { - ITextComponent hoverMessage = Message.getBuilder().of("Annehmen").color(ColorCode.RED).advance().createComponent(); - - e.setMessage(Message.getBuilder() - .of("Neuer Notruf").color(ColorCode.RED).bold() - .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + m.group(1).replace("[UC]", "")) - .advance().space() - .of("-").color(ColorCode.GRAY) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + m.group(1).replace("[UC]", "")) - .advance().space() - .of(m.group(1)).color(ColorCode.DARK_RED) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + m.group(1).replace("[UC]", "")) - .advance().space() // Notruf Sender - .of("-").color(ColorCode.GRAY) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + m.group(1).replace("[UC]", "")) - .advance().space() - .of("\"" + m.group(3) + "\"").color(ColorCode.DARK_RED) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + m.group(1).replace("[UC]", "")) - .advance() - .createComponent()); - return; - } - - m = PatternHandler.SERVICE_REQUEUED_PATTERN.matcher(msg); - if (m.find()) { - ITextComponent hoverMessage = Message.getBuilder().of("Annehmen").color(ColorCode.RED).advance().createComponent(); - - e.setMessage(Message.getBuilder() - .of("Neu geöffnet").color(ColorCode.GOLD).bold() - .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + m.group(2).replace("[UC]", "")) - .advance().space() - .of("-").color(ColorCode.GRAY) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + m.group(2).replace("[UC]", "")) - .advance().space() - .of(m.group(1)).color(ColorCode.DARK_RED) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + m.group(2).replace("[UC]", "")) - .advance().space() // Öffner - .of("-").color(ColorCode.GRAY) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + m.group(2).replace("[UC]", "")) - .advance().space() - .of(m.group(2)).color(ColorCode.DARK_RED) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, hoverMessage) // Grund - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/acceptservice " + m.group(2).replace("[UC]", "")) - .advance().space() // Notruf sender - .createComponent()); - return; - } - - m = PatternHandler.SERVICE_LOCATION_PATTERN.matcher(msg); - if (m.find()) { - e.setMessage(Message.getBuilder() - .of("➥").color(ColorCode.GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_RED).advance() - .createComponent()); - return; - } - - m = PatternHandler.SERVICE_LOCATION_PATTERN_ONE_NEAREST.matcher(msg); - if (m.find()) { // one nearest person - e.setMessage(Message.getBuilder() - .of("➥").color(ColorCode.GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_RED).advance().space() - .of("-").color(ColorCode.GRAY).advance().space() - .of(m.group(2) + " (" + m.group(3) + ")").color(ColorCode.DARK_RED).advance() - .createComponent()); - return; - } - - m = PatternHandler.SERVICE_LOCATION_PATTERN_TWO_NEAREST.matcher(msg); - if (m.find()) { - e.setMessage(Message.getBuilder() - .of("➥").color(ColorCode.GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_RED).advance().space() - .of("-").color(ColorCode.GRAY).advance().space() - .of(m.group(2) + " (" + m.group(3) + ")").color(ColorCode.DARK_RED).advance().space() - .of("|").color(ColorCode.GRAY).advance().space() - .of(m.group(5) + " (" + m.group(6) + ")").color(ColorCode.DARK_RED).advance() - .createComponent()); - return; - } - - m = PatternHandler.SERVICE_ACCEPTED_PATTERN.matcher(msg); - if (m.find()) { - e.setMessage(Message.getBuilder() - .of("Angenommen").color(ColorCode.GREEN).bold().advance().space() - .of("-").color(ColorCode.GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_RED).advance().space() - .of("-").color(ColorCode.GRAY).advance().space() - .of(m.group(2)).color(ColorCode.DARK_RED).advance().space() - .of("-").color(ColorCode.GRAY).advance().space() - .of(m.group(3) + "m").color(ColorCode.DARK_RED).advance() - .createComponent()); - return; - } - - m = PatternHandler.SERVICE_DELETED_PATTERN.matcher(msg); - if (m.find()) { - e.setMessage(Message.getBuilder().of("Gelöscht").color(ColorCode.BLUE).bold().advance().space() - .of("-").color(ColorCode.GRAY).advance().space() - .of(m.group(2)).color(ColorCode.DARK_RED).advance().space() // Löscher - .of("-").color(ColorCode.GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_RED).advance().createComponent()); // Service sender - return; - } - - m = PatternHandler.SERVICE_BLOCKED_PATTERN.matcher(msg); - if (m.find()) { - e.setMessage(Message.getBuilder().of("Blockiert").color(ColorCode.BLUE).bold().advance().space() - .of("-").color(ColorCode.GRAY).advance().space() - .of(m.group(2)).color(ColorCode.DARK_RED).advance().space() // Blockierer - .of("-").color(ColorCode.GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_RED).advance().createComponent()); // Blockierter - return; - } - - m = PatternHandler.SERVICE_UNBLOCKED_PATTERN.matcher(msg); - if (m.find()) { - e.setMessage(Message.getBuilder().of("Entblockt").color(ColorCode.BLUE).bold().advance().space() - .of("-").color(ColorCode.GRAY).advance().space() - .of(m.group(2)).color(ColorCode.DARK_RED).advance().space() // Entblocker - .of("-").color(ColorCode.GRAY).advance().space() - .of(m.group(1)).color(ColorCode.DARK_RED).advance().createComponent()); // Blockierter - } - } - } -} From d0b254ac03cf23cc133d4e46afbe60e27a7de809 Mon Sep 17 00:00:00 2001 From: RettichLP Date: Tue, 28 Feb 2023 20:13:31 +0100 Subject: [PATCH 099/136] Update NavigationEventHandler to prevent sending duplicated messages --- .../rettichlp/unicacityaddon/events/NavigationEventHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/NavigationEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/NavigationEventHandler.java index 45c6d7a53..82cd68f70 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/NavigationEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/NavigationEventHandler.java @@ -48,10 +48,10 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { double distanceFromServiceAcceptPositionToHere = EmergencyServiceEventHandler.serviceAcceptPosition.getDistance(pos.getX(), pos.getY(), pos.getZ()); if (Math.abs(EmergencyServiceEventHandler.distanceToService - distanceFromServiceAcceptPositionToHere) <= 5) { p.sendChatMessage("/doneservice"); - EmergencyServiceEventHandler.distanceToService = 0; } else { p.sendInfoMessage("Das Addon hat deinen Service nicht als erledigt markiert, da die Entfernung zum Zielpunkt nicht übereingestimmt hat."); } + EmergencyServiceEventHandler.distanceToService = 0; } } } From 877c0bf38dab7aa1e8a035d478a0511b881f552f Mon Sep 17 00:00:00 2001 From: RettichLP Date: Tue, 28 Feb 2023 20:27:07 +0100 Subject: [PATCH 100/136] Fix counter for open services for EmergencyServiceModule in EmergencyServiceEventHandler --- .../faction/EmergencyServiceEventHandler.java | 15 ++++++++------- .../modules/EmergencyServiceModule.java | 6 +++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/EmergencyServiceEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/EmergencyServiceEventHandler.java index b45b65a63..d0ee53816 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/EmergencyServiceEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/EmergencyServiceEventHandler.java @@ -31,6 +31,7 @@ @UCEvent public class EmergencyServiceEventHandler { + public static int openServices = 0; public static int distanceToService = 0; public static BlockPos serviceAcceptPosition; @@ -45,7 +46,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { Matcher serviceArrivedMatcher = PatternHandler.SERVICE_ARRIVED_PATTERN.matcher(unformattedMsg); if (serviceArrivedMatcher.find()) { p.playSound(SoundRegistry.SERVICE_SOUND, 1, 1); - FileManager.DATA.addServiceCount(1); + openServices++; if (ConfigElements.getServiceMessagesActivated()) { ITextComponent hoverMessage = Message.getBuilder().of("Annehmen").color(ColorCode.RED).advance().createComponent(); @@ -78,7 +79,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { Matcher serviceRequeuedMatcher = PatternHandler.SERVICE_REQUEUED_PATTERN.matcher(unformattedMsg); if (serviceRequeuedMatcher.find()) { - FileManager.DATA.addServiceCount(1); + openServices++; if (ConfigElements.getServiceMessagesActivated()) { ITextComponent hoverMessage = Message.getBuilder().of("Annehmen").color(ColorCode.RED).advance().createComponent(); @@ -111,7 +112,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { Matcher serviceAcceptedMatcher = PatternHandler.SERVICE_ACCEPTED_PATTERN.matcher(unformattedMsg); if (serviceAcceptedMatcher.find()) { - FileManager.DATA.removeServiceCount(1); + openServices = openServices > 0 ? openServices - 1 : 0; if (serviceAcceptedMatcher.group(1).equals(p.getName())) { distanceToService = Integer.parseInt(serviceAcceptedMatcher.group(3)); @@ -133,7 +134,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { Matcher serviceDeletedMatcher = PatternHandler.SERVICE_DELETED_PATTERN.matcher(unformattedMsg); if (serviceDeletedMatcher.find()) { - FileManager.DATA.removeServiceCount(1); + openServices = openServices > 0 ? openServices - 1 : 0; e.setMessage(Message.getBuilder().of("Gelöscht").color(ColorCode.BLUE).bold().advance().space() .of("-").color(ColorCode.GRAY).advance().space() @@ -145,8 +146,8 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { Matcher serviceOverviewMatcher = PatternHandler.SERVICE_OVERVIEW_PATTERN.matcher(unformattedMsg); if (serviceOverviewMatcher.find()) { - String openServices = serviceOverviewMatcher.group(1); - FileManager.DATA.setServiceCount(Integer.parseInt(openServices)); + String openServicesString = serviceOverviewMatcher.group(1); + openServices = Integer.parseInt(openServicesString); return; } @@ -222,7 +223,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { } if (PatternHandler.SERVICE_NO_SERVICE_PATTERN.matcher(unformattedMsg).find()) { - FileManager.DATA.setServiceCount(0); + openServices = 0; return; } diff --git a/src/main/java/com/rettichlp/unicacityaddon/modules/EmergencyServiceModule.java b/src/main/java/com/rettichlp/unicacityaddon/modules/EmergencyServiceModule.java index 7a09dc4cd..0388982c2 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/modules/EmergencyServiceModule.java +++ b/src/main/java/com/rettichlp/unicacityaddon/modules/EmergencyServiceModule.java @@ -1,8 +1,8 @@ package com.rettichlp.unicacityaddon.modules; -import com.rettichlp.unicacityaddon.base.manager.FileManager; import com.rettichlp.unicacityaddon.base.registry.ModuleRegistry; import com.rettichlp.unicacityaddon.base.registry.annotation.UCModule; +import com.rettichlp.unicacityaddon.events.faction.EmergencyServiceEventHandler; import net.labymod.ingamegui.ModuleCategory; import net.labymod.ingamegui.moduletypes.SimpleModule; import net.labymod.settings.elements.ControlElement; @@ -31,7 +31,7 @@ public String getDisplayName() { @Override public String getDisplayValue() { - return String.valueOf(FileManager.DATA.getServiceCount()); + return String.valueOf(EmergencyServiceEventHandler.openServices); } @Override @@ -56,7 +56,7 @@ public ModuleCategory getCategory() { @Override public boolean isShown() { - return !String.valueOf(FileManager.DATA.getServiceCount()).isEmpty(); + return true; } @Override From 1933e04aa6b4403bd76f71039e16d2c5c513a37e Mon Sep 17 00:00:00 2001 From: rettichlp Date: Wed, 1 Mar 2023 01:35:58 +0100 Subject: [PATCH 101/136] Add automated pattern for get gun command --- .../unicacityaddon/base/enums/Weapon.java | 7 ++ .../unicacityaddon/base/models/Armament.java | 6 +- .../unicacityaddon/base/models/Data.java | 35 ++++++ .../commands/GetGunCommand.java | 111 ++++++++++++++++++ .../events/WeaponEventHandler.java | 28 +++++ 5 files changed, 182 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/commands/GetGunCommand.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/enums/Weapon.java b/src/main/java/com/rettichlp/unicacityaddon/base/enums/Weapon.java index aaf6dcf4e..490a2a570 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/enums/Weapon.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/enums/Weapon.java @@ -24,6 +24,13 @@ public String getItemName() { return ColorCode.DARK_GRAY.getCode() + name; } + public static Weapon getWeaponByName(String name) { + return Arrays.stream(Weapon.values()) + .filter(weapon -> name.equalsIgnoreCase(weapon.getName())) + .findFirst() + .orElse(null); + } + public static Weapon getWeaponByItemName(String displayName) { return Arrays.stream(Weapon.values()) .filter(weapon -> displayName.equalsIgnoreCase(weapon.getItemName())) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/Armament.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/Armament.java index 73cfd25cb..d946be2a7 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/models/Armament.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/Armament.java @@ -25,8 +25,4 @@ public Weapon getWeapon() { public int getAmount() { return amount; } - -} - - - +} \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java index e9cec94fb..5bae1a876 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java @@ -3,6 +3,7 @@ import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.enums.Weapon; import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; import com.rettichlp.unicacityaddon.base.enums.faction.Equip; @@ -24,6 +25,7 @@ @Setter public class Data { + private List armamentList; private Integer bankBalance; private String carInfo; private Integer cashBalance; @@ -41,6 +43,10 @@ public class Data { private Integer timer; private List todolist; + public List getArmamentList() { + return armamentList != null ? armamentList : new ArrayList<>(); + } + public int getBankBalance() { return bankBalance != null ? bankBalance : 0; } @@ -105,6 +111,35 @@ public List getTodolist() { return todolist != null ? todolist : new ArrayList<>(); } + /** + * Adds a Armament object, created by the given values, to the armamentList + * + * @param name name of the Armament pattern + * @param weapon {@link Weapon} of the Armament pattern + * @param amount amount of ammunition of the Armament pattern + * @see Armament + * @see Weapon + */ + public void addArmamentPattern(String name, Weapon weapon, int amount) { + List newArmamentList = getArmamentList(); + newArmamentList.add(new Armament(name, weapon, amount)); + armamentList = newArmamentList; + } + + /** + * Removes the Armament object with the given name of the armamentList + * + * @param name name of the Armament pattern + * @see Armament + * @see Weapon + */ + public boolean removeArmamentPattern(String name) { + List newArmamentList = getArmamentList(); + boolean success = newArmamentList.removeIf(armament -> armament.getName().equalsIgnoreCase(name)); + armamentList = newArmamentList; + return success; + } + /** * Adds the given value i to the bankBalance * diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/GetGunCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/GetGunCommand.java new file mode 100644 index 000000000..4f96d22b9 --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/GetGunCommand.java @@ -0,0 +1,111 @@ +package com.rettichlp.unicacityaddon.commands; + +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; +import com.rettichlp.unicacityaddon.base.enums.Weapon; +import com.rettichlp.unicacityaddon.base.manager.FileManager; +import com.rettichlp.unicacityaddon.base.models.Armament; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; +import com.rettichlp.unicacityaddon.base.utils.MathUtils; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.client.IClientCommand; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author RettichLP + */ +@UCCommand +public class GetGunCommand implements IClientCommand { + + public static Armament armament = null; + + @Override + @Nonnull + public String getName() { + return "getgunpattern"; + } + + @Override + @Nonnull + public String getUsage(@Nonnull ICommandSender sender) { + return "/getgunpattern (remove|create) [Name] (Waffe) (Munition)"; + } + + @Override + @Nonnull + public List getAliases() { + return Collections.singletonList("ggp"); + } + + @Override + public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender) { + return true; + } + + @Override + @Nonnull + public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { + return TabCompletionBuilder.getBuilder(args) + .addAtIndex(1, "remove", "create") + .addAtIndex(1, FileManager.DATA.getArmamentList().stream().map(Armament::getName).sorted().collect(Collectors.toList())) + .addAtIndex(2, FileManager.DATA.getArmamentList().stream().map(Armament::getName).sorted().collect(Collectors.toList())) + .addAtIndex(3, Arrays.stream(Weapon.values()).map(Weapon::getName).collect(Collectors.toList())) + .build(); + } + + @Override + public boolean isUsernameIndex(@Nonnull String[] args, int index) { + return false; + } + + @Override + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { + UPlayer p = AbstractionLayer.getPlayer(); + + if (args.length == 1) { + armament = FileManager.DATA.getArmamentList().stream() + .filter(a -> a.getName().equalsIgnoreCase(args[0])) + .findFirst() + .orElse(null); + + if (armament != null) { + p.sendChatMessage("/getgun"); + } + } else if (args.length == 2 && args[0].equalsIgnoreCase("remove")) { + boolean success = FileManager.DATA.removeArmamentPattern(args[1]); + if (success) { + p.sendInfoMessage("Vorlage gelöscht."); + } else { + p.sendErrorMessage("Vorlage konnte nicht gelöscht werden!"); + } + } else if (args.length == 4 && args[0].equalsIgnoreCase("create") && MathUtils.isInteger(args[3])) { + Weapon weapon = Weapon.getWeaponByName(args[2]); + if (weapon != null) { + FileManager.DATA.addArmamentPattern(args[1], weapon, Integer.parseInt(args[3])); + p.sendInfoMessage("Vorlage hinzugefügt."); + } else { + p.sendErrorMessage("Vorlage konnte nicht erstellt werden!"); + } + } + } + + @Override + public boolean allowUsageWithoutPrefix(ICommandSender sender, String message) { + return false; + } + + @Override + public int compareTo(@Nonnull ICommand o) { + return 0; + } +} \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/WeaponEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/WeaponEventHandler.java index 369520325..29d6148d8 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/WeaponEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/WeaponEventHandler.java @@ -3,11 +3,17 @@ import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.enums.Weapon; +import com.rettichlp.unicacityaddon.base.models.Armament; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.commands.GetGunCommand; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.inventory.ClickType; +import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.client.event.GuiContainerEvent; import net.minecraftforge.common.util.Constants; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.fml.common.eventhandler.EventPriority; @@ -23,7 +29,9 @@ public class WeaponEventHandler { public static boolean tazerLoaded = false; + private long tazerLastWarningSend = 0; + private int lastWindowId = 0; @SubscribeEvent public void onChatReceived(ClientChatReceivedEvent e) { @@ -52,6 +60,26 @@ public void onPlayerInteract(PlayerInteractEvent e) { } } + @SubscribeEvent + public void onGuiOpen(GuiContainerEvent.DrawForeground e) { + GuiContainer guiContainer = e.getGuiContainer(); + Armament armament = GetGunCommand.armament; + if (armament != null && lastWindowId != guiContainer.inventorySlots.windowId) { + lastWindowId = guiContainer.inventorySlots.windowId; + + Slot slot = guiContainer.inventorySlots.inventorySlots.stream() + .filter(s -> s.getStack().getDisplayName().contains(armament.getWeapon().getName())) + .findFirst() + .orElse(null); + + if (slot != null) { + UnicacityAddon.MINECRAFT.playerController.windowClick(lastWindowId, slot.slotNumber, 0, ClickType.PICKUP, UnicacityAddon.MINECRAFT.player); + GetGunCommand.armament = null; + AbstractionLayer.getPlayer().sendChatMessage("/getammo " + armament.getWeapon().getName() + " " + armament.getAmount()); + } + } + } + private void handleMunitionDisplay(ItemStack is) { String text = getText(is); UnicacityAddon.MINECRAFT.ingameGUI.setOverlayMessage(text != null ? text : "", true); From a9a126efd2ce2d9fc37488a9b2201143a0b44210 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Wed, 1 Mar 2023 02:33:43 +0100 Subject: [PATCH 102/136] Code clean up --- .../commands/faction/badfaction/DropDrugAllCommand.java | 4 ++-- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 3 +++ .../events/house/HouseInteractionEventHandler.java | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java index 1930dac46..cda844821 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/DropDrugAllCommand.java @@ -51,13 +51,13 @@ public class DropDrugAllCommand implements IClientCommand { @Override @Nonnull public String getName() { - return "dropdrugall"; + return "dbankdropall"; } @Override @Nonnull public String getUsage(@Nonnull ICommandSender sender) { - return "/dropdrugall"; + return "/dbankdropall"; } @Override diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index ecc1b5aa5..18537bae7 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -30,16 +30,19 @@ public boolean allowUsageWithoutPrefix(ICommandSender sender, String message) { } @Override + @Nonnull public String getName() { return "korruptionsrechner"; } @Override + @Nonnull public String getUsage(@Nonnull ICommandSender sender) { return "/korruptionsrechner [Spieler]"; } @Override + @Nonnull public List getAliases() { return Collections.emptyList(); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/house/HouseInteractionEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/house/HouseInteractionEventHandler.java index 7af76b514..e2eb577e3 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/house/HouseInteractionEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/house/HouseInteractionEventHandler.java @@ -22,7 +22,7 @@ public class HouseInteractionEventHandler { *
  • heal progress
  • * */ - public static int[] progress = {-1, -1}; + public static final int[] progress = {-1, -1}; @SubscribeEvent public void onClientChatReceived(ClientChatReceivedEvent e) { From a35e2cfae26dac74306ebe2cd5797625f9608e1d Mon Sep 17 00:00:00 2001 From: rettichlp Date: Wed, 1 Mar 2023 13:47:38 +0100 Subject: [PATCH 103/136] Migrate DrugInteractionEventHandler into DrugEventHandler, split DeathsKillsEventHandler into ContractEventHandler and HQMessageEventHandler, update PatternHandler and fix not counting of some wp kills --- .../base/text/PatternHandler.java | 7 +- .../events/DeathsKillsEventHandler.java | 41 ----- ...ventHandler.java => DrugEventHandler.java} | 129 +++++++++++++++- .../events/faction/ContractEventHandler.java | 34 ++-- .../state/DrugMessageEventHandler.java | 146 ------------------ .../faction/state/HQMessageEventHandler.java | 6 + 6 files changed, 156 insertions(+), 207 deletions(-) delete mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/DeathsKillsEventHandler.java rename src/main/java/com/rettichlp/unicacityaddon/events/{faction/badfaction/DrugInteractionEventHandler.java => DrugEventHandler.java} (52%) delete mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index c50af2c55..9ef29609e 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -1,7 +1,6 @@ package com.rettichlp.unicacityaddon.base.text; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; -import com.rettichlp.unicacityaddon.events.faction.state.DrugMessageEventHandler; import java.util.regex.Pattern; @@ -78,7 +77,6 @@ public class PatternHandler { /** * Pattern for name tag providing * - * @see com.rettichlp.unicacityaddon.events.DeathsKillsEventHandler * @see com.rettichlp.unicacityaddon.events.chatlog.ChatLogReceiveChatEventHandler * @see com.rettichlp.unicacityaddon.events.faction.ContractEventHandler * @see com.rettichlp.unicacityaddon.events.faction.badfaction.blacklist.BlacklistEventHandler @@ -143,10 +141,10 @@ public class PatternHandler { /** * Pattern for medic interaction * + * @see com.rettichlp.unicacityaddon.events.DrugEventHandler * @see com.rettichlp.unicacityaddon.events.faction.rettungsdienst.FirstAidEventHandler * @see com.rettichlp.unicacityaddon.events.faction.rettungsdienst.MedicationEventHandler * @see com.rettichlp.unicacityaddon.events.faction.rettungsdienst.ReviveEventHandler - * @see com.rettichlp.unicacityaddon.events.faction.badfaction.DrugInteractionEventHandler */ public static final Pattern RECIPE_ACCEPT_PATTERN = Pattern.compile("^((?:\\[UC])*\\w+) möchte dir ein Rezept für 200\\$ verkaufen\\.$"); public static final Pattern RECIPE_GIVE_PATTERN = Pattern.compile("^Du hast ((?:\\[UC])*\\w+) ein Rezept für (Antibiotika|Hustensaft|Schmerzmittel) ausgestellt\\.$"); @@ -234,7 +232,6 @@ public class PatternHandler { * Pattern for account interaction * * @see com.rettichlp.unicacityaddon.events.AccountEventHandler - * @see com.rettichlp.unicacityaddon.events.DeathsKillsEventHandler */ public static final Pattern ACCOUNT_WELCOME_BACK_PATTERN = Pattern.compile("^Willkommen zurück!$"); public static final Pattern RESOURCEPACK_PATTERN = Pattern.compile("^Wir empfehlen dir unser Resourcepack zu nutzen\\.$|" + @@ -331,7 +328,7 @@ public class PatternHandler { /** * Pattern for state messages * - * @see DrugMessageEventHandler + * @see com.rettichlp.unicacityaddon.events.DrugEventHandler */ public static final Pattern DRUG_VAULT_DROP_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) in der Asservatenkammer verstaut\\.$"); public static final Pattern DRUG_VAULT_GET_PATTERN = Pattern.compile("^HQ: (.+) (?:\\[UC])*(\\w+) hat (\\d+)g (Kokain|Methamphetamin|Marihuana|LSD) \\((Höchste Reinheit|Gute Reinheit|Mittlere Reinheit|Schlechte Reinheit)\\) aus der Asservatenkammer genommen\\.$"); diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/DeathsKillsEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/DeathsKillsEventHandler.java deleted file mode 100644 index 8214488d1..000000000 --- a/src/main/java/com/rettichlp/unicacityaddon/events/DeathsKillsEventHandler.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.rettichlp.unicacityaddon.events; - -import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; -import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; -import com.rettichlp.unicacityaddon.base.api.request.APIRequest; -import com.rettichlp.unicacityaddon.base.enums.api.StatisticType; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; -import com.rettichlp.unicacityaddon.base.text.PatternHandler; -import com.rettichlp.unicacityaddon.commands.faction.AFbankEinzahlenCommand; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; - -import java.util.regex.Matcher; - -/** - * @author Dimiikou - */ -@UCEvent -public class DeathsKillsEventHandler { - - @SubscribeEvent - public void onClientChatReceived(ClientChatReceivedEvent e) { - String msg = e.getMessage().getUnformattedText(); - UPlayer p = AbstractionLayer.getPlayer(); - - Matcher jailKillMatcher = PatternHandler.WANTED_KILL.matcher(msg); - if (jailKillMatcher.find()) { - if (jailKillMatcher.group(2).equals(p.getName())) - APIRequest.sendStatisticAddRequest(StatisticType.KILL); - return; - } - - Matcher contractKillPattern = PatternHandler.CONTRACT_REMOVED_PATTERN.matcher(msg); - if (contractKillPattern.find() && msg.contains("getötet")) { - if (msg.contains(p.getName())) { - APIRequest.sendStatisticAddRequest(StatisticType.KILL); - AFbankEinzahlenCommand.sendClockMessage(); - } - } - } -} \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DrugInteractionEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/DrugEventHandler.java similarity index 52% rename from src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DrugInteractionEventHandler.java rename to src/main/java/com/rettichlp/unicacityaddon/events/DrugEventHandler.java index 7b1af1b69..dd1d7cb5a 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/DrugInteractionEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/DrugEventHandler.java @@ -1,4 +1,4 @@ -package com.rettichlp.unicacityaddon.events.faction.badfaction; +package com.rettichlp.unicacityaddon.events; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; @@ -21,9 +21,10 @@ /** * @author RettichLP + * @author Gelegenheitscode */ @UCEvent -public class DrugInteractionEventHandler { +public class DrugEventHandler { private static int amount; private static DrugType lastDrugType; @@ -33,8 +34,8 @@ public class DrugInteractionEventHandler { @SubscribeEvent public void onClientChatReceived(ClientChatReceivedEvent e) { - UPlayer p = AbstractionLayer.getPlayer(); String msg = e.getMessage().getUnformattedText(); + UPlayer p = AbstractionLayer.getPlayer(); Matcher drugGetMatcher = PatternHandler.DRUG_GET_PATTERN.matcher(msg); if (drugGetMatcher.find()) { @@ -136,6 +137,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { } FileManager.DATA.removeDrugFromInventory(drugType, drugPurity, 1); + return; } Matcher drugDealAcceptedMatcher = PatternHandler.DRUG_DEAL_ACCEPTED.matcher(msg); @@ -146,6 +148,127 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { } else if (type.equals("REMOVE")) { FileManager.DATA.removeDrugFromInventory(lastDrugType, lastDrugPurity, amount); } + return; + } + + if (ConfigElements.getDrugVaultMessageActivated()) { + Matcher drugVaultDropMatcher = PatternHandler.DRUG_VAULT_DROP_PATTERN.matcher(msg); + if (drugVaultDropMatcher.find()) { + e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("+").color(ColorCode.GREEN).advance() + .of(drugVaultDropMatcher.group(3)).color(ColorCode.GREEN).advance() + .of("g").color(ColorCode.GREEN).advance().space() + .of(drugVaultDropMatcher.group(4)).color(ColorCode.GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(drugVaultDropMatcher.group(5)).color(ColorCode.YELLOW).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultDropMatcher.group(2)).color(ColorCode.AQUA).advance() + .createComponent()); + return; + } + + Matcher drugVaultGetMatcher = PatternHandler.DRUG_VAULT_GET_PATTERN.matcher(msg); + if (drugVaultGetMatcher.find()) { + e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("-").color(ColorCode.RED).advance() + .of(drugVaultGetMatcher.group(3)).color(ColorCode.RED).advance() + .of("g").color(ColorCode.RED).advance().space() + .of(drugVaultGetMatcher.group(4)).color(ColorCode.RED).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(drugVaultGetMatcher.group(5)).color(ColorCode.YELLOW).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultGetMatcher.group(2)).color(ColorCode.AQUA).advance() + .createComponent()); + return; + } + + Matcher drugVaultBurnMatcher = PatternHandler.DRUG_VAULT_BURN_PATTERN.matcher(msg); + if (drugVaultBurnMatcher.find()) { + e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of("✕").color(ColorCode.GOLD).advance().space() + .of(drugVaultBurnMatcher.group(3)).color(ColorCode.GOLD).advance() + .of("g").color(ColorCode.GOLD).advance().space() + .of(drugVaultBurnMatcher.group(4)).color(ColorCode.GOLD).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(drugVaultBurnMatcher.group(5)).color(ColorCode.YELLOW).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultBurnMatcher.group(2)).color(ColorCode.AQUA).advance() + .createComponent()); + return; + } + + Matcher drugVaultInfoMatcher = PatternHandler.DRUG_VAULT_INFO_PATTERN.matcher(msg); + if (drugVaultInfoMatcher.find()) { + e.setCanceled(true); + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultInfoMatcher.group(1) + " Reinheit").color(ColorCode.GOLD).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultInfoMatcher.group(2)).color(ColorCode.YELLOW).advance() + .of("g").color(ColorCode.YELLOW).advance().createComponent()); + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultInfoMatcher.group(3) + " Reinheit").color(ColorCode.GOLD).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultInfoMatcher.group(4)).color(ColorCode.YELLOW).advance() + .of("g").color(ColorCode.YELLOW).advance().createComponent()); + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultInfoMatcher.group(5) + " Reinheit").color(ColorCode.GOLD).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultInfoMatcher.group(6)).color(ColorCode.YELLOW).advance() + .of("g").color(ColorCode.YELLOW).advance().createComponent()); + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultInfoMatcher.group(7) + " Reinheit").color(ColorCode.GOLD).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultInfoMatcher.group(8)).color(ColorCode.YELLOW).advance() + .of("g").color(ColorCode.YELLOW).advance() + .createComponent()); + return; + } + + Matcher drugVaultInfoLSDMatcher = PatternHandler.DRUG_VAULT_INFOLSD_PATTERN.matcher(msg); + if (drugVaultInfoLSDMatcher.find()) { + e.setMessage(Message.getBuilder() + .of("»").color(ColorCode.DARK_GRAY).advance().space() + .of("LSD").color(ColorCode.GOLD).advance() + .of(":").color(ColorCode.DARK_GRAY).advance().space() + .of(drugVaultInfoLSDMatcher.group(1)).color(ColorCode.YELLOW).advance().space() + .of("Stück").color(ColorCode.YELLOW).advance().createComponent()); + return; + } + + Matcher drugVaultInfoTitleMatcher = PatternHandler.DRUG_VAULT_INFOTITLE_PATTERN.matcher(msg); + if (drugVaultInfoTitleMatcher.find()) { + e.setMessage(Message.getBuilder() + .of("===").color(ColorCode.DARK_GRAY).advance().space() + .of("Asservatenkammer").color(ColorCode.GOLD).advance().space() + .of("[").color(ColorCode.DARK_GRAY).advance() + .of(drugVaultInfoTitleMatcher.group(1)).color(ColorCode.YELLOW).advance() + .of("]").color(ColorCode.DARK_GRAY).advance().space() + .of("===").color(ColorCode.DARK_GRAY).advance().createComponent()); + return; + } + } + + if (ConfigElements.getPlantBurnMessageActivated()) { + Matcher plantBurnMatcher = PatternHandler.PLANT_BURN_PATTERN.matcher(msg); + if (plantBurnMatcher.find()) { + e.setMessage(Message.getBuilder().of("Plant-Burn").color(ColorCode.RED).bold().advance().space() + .of("|").color(ColorCode.DARK_GRAY).advance().space() + .of(plantBurnMatcher.group(2)).color(ColorCode.GREEN).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(plantBurnMatcher.group(3)).color(ColorCode.GOLD).advance() + .of(")").color(ColorCode.GRAY).advance().space() + .createComponent()); + } } } diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/ContractEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/ContractEventHandler.java index 5f962e1f0..d72eee16c 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/ContractEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/ContractEventHandler.java @@ -1,9 +1,13 @@ package com.rettichlp.unicacityaddon.events.faction; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.api.request.APIRequest; +import com.rettichlp.unicacityaddon.base.enums.api.StatisticType; import com.rettichlp.unicacityaddon.base.registry.SoundRegistry; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.PatternHandler; +import com.rettichlp.unicacityaddon.commands.faction.AFbankEinzahlenCommand; import net.minecraft.util.text.ITextComponent; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.EventPriority; @@ -15,6 +19,7 @@ /** * @author RettichLP + * @author Dimiikou * @see UCUtils by paulzhng */ @UCEvent @@ -58,24 +63,29 @@ public void onContractSet(ClientChatReceivedEvent e) { @SubscribeEvent(priority = EventPriority.HIGHEST) public void onContractRemoved(ClientChatReceivedEvent e) { + UPlayer p = AbstractionLayer.getPlayer(); ITextComponent message = e.getMessage(); String unformattedMessage = message.getUnformattedText(); Matcher matcher = PatternHandler.CONTRACT_REMOVED_PATTERN.matcher(unformattedMessage); - if (!matcher.find()) - return; + if (matcher.find()) { + String name = null; + for (int i = 1; i < matcher.groupCount() + 1; i++) { + String tempName = matcher.group(i); + if (tempName == null) + continue; - String name = null; - for (int i = 1; i < matcher.groupCount() + 1; i++) { - String tempName = matcher.group(i); - if (tempName == null) - continue; + name = tempName; + break; + } - name = tempName; - break; - } + p.playSound(SoundRegistry.CONTRACT_FULFILLED_SOUND, 1, 1); + CONTRACT_LIST.remove(name); - AbstractionLayer.getPlayer().playSound(SoundRegistry.CONTRACT_FULFILLED_SOUND, 1, 1); - CONTRACT_LIST.remove(name); + if (unformattedMessage.contains("getötet") && unformattedMessage.contains(p.getName())) { + APIRequest.sendStatisticAddRequest(StatisticType.KILL); + AFbankEinzahlenCommand.sendClockMessage(); + } + } } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java deleted file mode 100644 index f3b240588..000000000 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/DrugMessageEventHandler.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.rettichlp.unicacityaddon.events.faction.state; - -import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; -import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; -import com.rettichlp.unicacityaddon.base.config.ConfigElements; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.base.text.PatternHandler; -import net.minecraftforge.client.event.ClientChatReceivedEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; - -import java.util.regex.Matcher; - -/** - * @author Gelegenheitscode - */ -@UCEvent -public class DrugMessageEventHandler { - - @SubscribeEvent - public void onClientChatReceived(ClientChatReceivedEvent e) { - String msg = e.getMessage().getUnformattedText(); - UPlayer p = AbstractionLayer.getPlayer(); - - if (ConfigElements.getDrugVaultMessageActivated()) { - Matcher drugVaultDropMatcher = PatternHandler.DRUG_VAULT_DROP_PATTERN.matcher(msg); - if (drugVaultDropMatcher.find()) { - e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("+").color(ColorCode.GREEN).advance() - .of(drugVaultDropMatcher.group(3)).color(ColorCode.GREEN).advance() - .of("g").color(ColorCode.GREEN).advance().space() - .of(drugVaultDropMatcher.group(4)).color(ColorCode.GREEN).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(drugVaultDropMatcher.group(5)).color(ColorCode.YELLOW).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultDropMatcher.group(2)).color(ColorCode.AQUA).advance() - .createComponent()); - return; - } - - Matcher drugVaultGetMatcher = PatternHandler.DRUG_VAULT_GET_PATTERN.matcher(msg); - if (drugVaultGetMatcher.find()) { - e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("-").color(ColorCode.RED).advance() - .of(drugVaultGetMatcher.group(3)).color(ColorCode.RED).advance() - .of("g").color(ColorCode.RED).advance().space() - .of(drugVaultGetMatcher.group(4)).color(ColorCode.RED).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(drugVaultGetMatcher.group(5)).color(ColorCode.YELLOW).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultGetMatcher.group(2)).color(ColorCode.AQUA).advance() - .createComponent()); - return; - } - - Matcher drugVaultBurnMatcher = PatternHandler.DRUG_VAULT_BURN_PATTERN.matcher(msg); - if (drugVaultBurnMatcher.find()) { - e.setMessage(Message.getBuilder().of("Asservatenkammer").color(ColorCode.DARK_AQUA).bold().advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of("✕").color(ColorCode.GOLD).advance().space() - .of(drugVaultBurnMatcher.group(3)).color(ColorCode.GOLD).advance() - .of("g").color(ColorCode.GOLD).advance().space() - .of(drugVaultBurnMatcher.group(4)).color(ColorCode.GOLD).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(drugVaultBurnMatcher.group(5)).color(ColorCode.YELLOW).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultBurnMatcher.group(2)).color(ColorCode.AQUA).advance() - .createComponent()); - return; - } - - Matcher drugVaultInfoMatcher = PatternHandler.DRUG_VAULT_INFO_PATTERN.matcher(msg); - if (drugVaultInfoMatcher.find()) { - e.setCanceled(true); - p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultInfoMatcher.group(1) + " Reinheit").color(ColorCode.GOLD).advance() - .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultInfoMatcher.group(2)).color(ColorCode.YELLOW).advance() - .of("g").color(ColorCode.YELLOW).advance().createComponent()); - p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultInfoMatcher.group(3) + " Reinheit").color(ColorCode.GOLD).advance() - .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultInfoMatcher.group(4)).color(ColorCode.YELLOW).advance() - .of("g").color(ColorCode.YELLOW).advance().createComponent()); - p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultInfoMatcher.group(5) + " Reinheit").color(ColorCode.GOLD).advance() - .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultInfoMatcher.group(6)).color(ColorCode.YELLOW).advance() - .of("g").color(ColorCode.YELLOW).advance().createComponent()); - p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultInfoMatcher.group(7) + " Reinheit").color(ColorCode.GOLD).advance() - .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultInfoMatcher.group(8)).color(ColorCode.YELLOW).advance() - .of("g").color(ColorCode.YELLOW).advance() - .createComponent()); - return; - } - - Matcher drugVaultInfoLSDMatcher = PatternHandler.DRUG_VAULT_INFOLSD_PATTERN.matcher(msg); - if (drugVaultInfoLSDMatcher.find()) { - e.setMessage(Message.getBuilder() - .of("»").color(ColorCode.DARK_GRAY).advance().space() - .of("LSD").color(ColorCode.GOLD).advance() - .of(":").color(ColorCode.DARK_GRAY).advance().space() - .of(drugVaultInfoLSDMatcher.group(1)).color(ColorCode.YELLOW).advance().space() - .of("Stück").color(ColorCode.YELLOW).advance().createComponent()); - return; - } - - Matcher drugVaultInfoTitleMatcher = PatternHandler.DRUG_VAULT_INFOTITLE_PATTERN.matcher(msg); - if (drugVaultInfoTitleMatcher.find()) { - e.setMessage(Message.getBuilder() - .of("===").color(ColorCode.DARK_GRAY).advance().space() - .of("Asservatenkammer").color(ColorCode.GOLD).advance().space() - .of("[").color(ColorCode.DARK_GRAY).advance() - .of(drugVaultInfoTitleMatcher.group(1)).color(ColorCode.YELLOW).advance() - .of("]").color(ColorCode.DARK_GRAY).advance().space() - .of("===").color(ColorCode.DARK_GRAY).advance().createComponent()); - return; - } - } - - if (ConfigElements.getPlantBurnMessageActivated()) { - Matcher plantBurnMatcher = PatternHandler.PLANT_BURN_PATTERN.matcher(msg); - if (plantBurnMatcher.find()) { - e.setMessage(Message.getBuilder().of("Plant-Burn").color(ColorCode.RED).bold().advance().space() - .of("|").color(ColorCode.DARK_GRAY).advance().space() - .of(plantBurnMatcher.group(2)).color(ColorCode.GREEN).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(plantBurnMatcher.group(3)).color(ColorCode.GOLD).advance() - .of(")").color(ColorCode.GRAY).advance().space() - .createComponent()); - } - } - } -} diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java index a0e4ec046..4f0120784 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java @@ -1,6 +1,9 @@ package com.rettichlp.unicacityaddon.events.faction.state; +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.config.ConfigElements; +import com.rettichlp.unicacityaddon.base.enums.api.StatisticType; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; @@ -32,6 +35,9 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { m = PatternHandler.WANTED_KILL.matcher(msg); if (m.find()) { + if (m.group(2).equals(AbstractionLayer.getPlayer().getName())) + APIRequest.sendStatisticAddRequest(StatisticType.KILL); + e.setMessage(Message.getBuilder().of("Getötet").color(ColorCode.RED).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(1)).color(ColorCode.BLUE).advance().space() From e683108db7bcd4ab518b5e1177d0d5038c3a7dfb Mon Sep 17 00:00:00 2001 From: rettichlp Date: Wed, 1 Mar 2023 22:44:10 +0100 Subject: [PATCH 104/136] Update save process for offline data in Data --- .../base/manager/FileManager.java | 4 +- .../unicacityaddon/base/models/Data.java | 121 ++++++++++++++++-- .../unicacityaddon/base/utils/ForgeUtils.java | 3 - .../events/CarEventHandler.java | 4 +- .../events/TickEventHandler.java | 1 - .../unicacityaddon/modules/CarOpenModule.java | 5 +- 6 files changed, 118 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/manager/FileManager.java b/src/main/java/com/rettichlp/unicacityaddon/base/manager/FileManager.java index f3c9786bb..cffe10bc9 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/manager/FileManager.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/manager/FileManager.java @@ -124,9 +124,9 @@ public static void loadData() { assert dataFile != null; String jsonData = FileUtils.readFileToString(dataFile, StandardCharsets.UTF_8.toString()); DATA = jsonData == null || !jsonData.contains("timer") ? new Data() : new Gson().fromJson(jsonData, Data.class); - Runtime.getRuntime().addShutdownHook(new Thread(FileManager::saveData)); } catch (IOException e) { - throw new RuntimeException(e); + DATA = new Data(); + UnicacityAddon.LOGGER.throwing(e); } } diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java index 5bae1a876..03e091ca1 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java @@ -7,12 +7,9 @@ import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; import com.rettichlp.unicacityaddon.base.enums.faction.Equip; +import com.rettichlp.unicacityaddon.base.manager.FileManager; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; -import joptsimple.internal.Strings; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; import net.minecraft.util.math.BlockPos; import java.util.ArrayList; @@ -20,14 +17,11 @@ import java.util.List; import java.util.Map; -@NoArgsConstructor -@Getter -@Setter public class Data { private List armamentList; private Integer bankBalance; - private String carInfo; + private Boolean carOpen; private Integer cashBalance; private Map> drugInventoryMap; private List coordlist; @@ -47,70 +41,155 @@ public List getArmamentList() { return armamentList != null ? armamentList : new ArrayList<>(); } + public void setArmamentList(List armamentList) { + this.armamentList = armamentList; + save(); + } + public int getBankBalance() { return bankBalance != null ? bankBalance : 0; } - public String getCarInfo() { - return carInfo != null ? carInfo : Strings.EMPTY; + public void setBankBalance(Integer bankBalance) { + this.bankBalance = bankBalance; + save(); + } + + public boolean isCarOpen() { + return carOpen != null ? carOpen : false; + } + + public void setCarOpen(boolean carOpen) { + this.carOpen = carOpen; + save(); } public int getCashBalance() { return cashBalance != null ? cashBalance : 0; } + public void setCashBalance(Integer cashBalance) { + this.cashBalance = cashBalance; + save(); + } + public Map> getDrugInventoryMap() { return drugInventoryMap != null ? drugInventoryMap : new HashMap<>(); } + public void setDrugInventoryMap(Map> drugInventoryMap) { + this.drugInventoryMap = drugInventoryMap; + save(); + } + public List getCoordlist() { return coordlist != null ? coordlist : new ArrayList<>(); } + public void setCoordlist(List coordlist) { + this.coordlist = coordlist; + save(); + } + public Map getEquipMap() { return equipMap != null ? equipMap : new HashMap<>(); } + public void setEquipMap(Map equipMap) { + this.equipMap = equipMap; + save(); + } + public long getFirstAidDate() { return firstAidDate != null ? firstAidDate : 0; } + public void setFirstAidDate(Long firstAidDate) { + this.firstAidDate = firstAidDate; + save(); + } + public Map getHouseDataMap() { return houseDataMap != null ? houseDataMap : new HashMap<>(); } + public void setHouseDataMap(Map houseDataMap) { + this.houseDataMap = houseDataMap; + save(); + } + public int getJobBalance() { return jobBalance != null ? jobBalance : 0; } + public void setJobBalance(Integer jobBalance) { + this.jobBalance = jobBalance; + save(); + } + public int getJobExperience() { return jobExperience != null ? jobExperience : 0; } + public void setJobExperience(Integer jobExperience) { + this.jobExperience = jobExperience; + save(); + } + public int getPayDayTime() { return payDayTime != null ? payDayTime : 0; } + public void setPayDayTime(Integer payDayTime) { + this.payDayTime = payDayTime; + save(); + } + public long getPlantFertilizeTime() { return plantFertilizeTime != null ? plantFertilizeTime : 0; } + public void setPlantFertilizeTime(Long plantFertilizeTime) { + this.plantFertilizeTime = plantFertilizeTime; + save(); + } + public long getPlantWaterTime() { return plantWaterTime != null ? plantWaterTime : 0; } + public void setPlantWaterTime(Long plantWaterTime) { + this.plantWaterTime = plantWaterTime; + save(); + } + public int getServiceCount() { return serviceCount != null ? serviceCount : 0; } + public void setServiceCount(Integer serviceCount) { + this.serviceCount = serviceCount; + save(); + } + public int getTimer() { return timer != null ? timer : 0; } + public void setTimer(Integer timer) { + this.timer = timer; + save(); + } + public List getTodolist() { return todolist != null ? todolist : new ArrayList<>(); } + public void setTodolist(List todolist) { + this.todolist = todolist; + save(); + } + /** * Adds a Armament object, created by the given values, to the armamentList * @@ -124,6 +203,7 @@ public void addArmamentPattern(String name, Weapon weapon, int amount) { List newArmamentList = getArmamentList(); newArmamentList.add(new Armament(name, weapon, amount)); armamentList = newArmamentList; + save(); } /** @@ -137,6 +217,7 @@ public boolean removeArmamentPattern(String name) { List newArmamentList = getArmamentList(); boolean success = newArmamentList.removeIf(armament -> armament.getName().equalsIgnoreCase(name)); armamentList = newArmamentList; + save(); return success; } @@ -147,6 +228,7 @@ public boolean removeArmamentPattern(String name) { */ public void addBankBalance(int i) { bankBalance = getBankBalance() + i; + save(); } /** @@ -156,6 +238,7 @@ public void addBankBalance(int i) { */ public void removeBankBalance(int i) { bankBalance = getBankBalance() - i; + save(); } /** @@ -165,6 +248,7 @@ public void removeBankBalance(int i) { */ public void addCashBalance(int i) { cashBalance = getCashBalance() + i; + save(); } /** @@ -174,6 +258,7 @@ public void addCashBalance(int i) { */ public void removeCashBalance(int i) { cashBalance = getCashBalance() - i; + save(); } /** @@ -188,6 +273,7 @@ public void addCoordToCoordlist(String name, BlockPos blockPos) { List newCoordlistEntryList = getCoordlist(); newCoordlistEntryList.add(new CoordlistEntry(name, blockPos.getX(), blockPos.getY(), blockPos.getZ())); coordlist = newCoordlistEntryList; + save(); } /** @@ -199,6 +285,7 @@ public boolean removeCoordFromCoordlist(String name) { List newCoordlistEntryList = getCoordlist(); boolean success = newCoordlistEntryList.removeIf(coordlistEntry -> coordlistEntry.getName().equalsIgnoreCase(name)); coordlist = newCoordlistEntryList; + save(); return success; } @@ -220,6 +307,7 @@ public void addDrugToInventory(DrugType drugType, DrugPurity drugPurity, int amo Map> newdrugInventoryMap = getDrugInventoryMap(); newdrugInventoryMap.put(drugType, drugPurityIntegerMap); drugInventoryMap = newdrugInventoryMap; + save(); } } @@ -241,6 +329,7 @@ public void removeDrugFromInventory(DrugType drugType, DrugPurity drugPurity, in Map> newdrugInventoryMap = getDrugInventoryMap(); newdrugInventoryMap.put(drugType, drugPurityIntegerMap); drugInventoryMap = newdrugInventoryMap; + save(); } } @@ -254,6 +343,7 @@ public void addEquipToEquipMap(Equip equip) { Map newEquipMap = getEquipMap(); newEquipMap.put(equip, newEquipMap.getOrDefault(equip, 0) + 1); equipMap = newEquipMap; + save(); } /** @@ -279,6 +369,7 @@ public void updateHouseData(int houseNumber, HouseData houseData) { Map newHouseDataMap = getHouseDataMap(); newHouseDataMap.put(houseNumber, houseData); houseDataMap = newHouseDataMap; + save(); } /** @@ -291,6 +382,7 @@ public void removeHouseData(int houseNumber) { Map newHouseDataMap = getHouseDataMap(); newHouseDataMap.remove(houseNumber); houseDataMap = newHouseDataMap; + save(); } /** @@ -336,6 +428,7 @@ public void sendAllDrugStorageMessage() { */ public void addJobBalance(int i) { jobBalance = getJobBalance() + i; + save(); } /** @@ -345,6 +438,7 @@ public void addJobBalance(int i) { */ public void addJobExperience(int i) { jobExperience = getJobExperience() + i; + save(); } /** @@ -366,6 +460,7 @@ public void addPayDayTime(int i) { p.sendInfoMessage("Du hast in 1 Minute deinen PayDay."); break; } + save(); } /** @@ -375,6 +470,7 @@ public void addPayDayTime(int i) { */ public void addServiceCount(int i) { serviceCount = getServiceCount() + i; + save(); } /** @@ -385,5 +481,10 @@ public void addServiceCount(int i) { public void removeServiceCount(int i) { if (getServiceCount() > 0) serviceCount = getServiceCount() - i; + save(); + } + + private void save() { + FileManager.saveData(); } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/utils/ForgeUtils.java b/src/main/java/com/rettichlp/unicacityaddon/base/utils/ForgeUtils.java index 18d310381..10375fef8 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/utils/ForgeUtils.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/utils/ForgeUtils.java @@ -1,7 +1,6 @@ package com.rettichlp.unicacityaddon.base.utils; import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.manager.FileManager; import com.rettichlp.unicacityaddon.base.text.PatternHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.network.NetHandlerPlayClient; @@ -72,8 +71,6 @@ public static T getMostMatching(Iterable list, String input, Function Date: Wed, 1 Mar 2023 23:48:52 +0100 Subject: [PATCH 105/136] Add add drop all logic to renamed HouseBankDropGetAllCommand, update usage string of PlayerGroupCommand --- .../commands/api/PlayerGroupCommand.java | 2 +- ...d.java => HouseBankDropGetAllCommand.java} | 37 +++++++++++++++---- 2 files changed, 30 insertions(+), 9 deletions(-) rename src/main/java/com/rettichlp/unicacityaddon/commands/house/{HouseBankGetCommand.java => HouseBankDropGetAllCommand.java} (63%) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/PlayerGroupCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/PlayerGroupCommand.java index 2fef5020f..a5b60e0a4 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/PlayerGroupCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/PlayerGroupCommand.java @@ -35,7 +35,7 @@ public String getName() { @Override @Nonnull public String getUsage(@Nonnull ICommandSender sender) { - return "/playergroup [add|remove] [Spieler] [Gruppe]"; + return "/playergroup [list|add|remove] [Gruppe] [Spieler]"; } @Override diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankDropGetAllCommand.java similarity index 63% rename from src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java rename to src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankDropGetAllCommand.java index fe205f910..0c9d14a5e 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankGetCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/house/HouseBankDropGetAllCommand.java @@ -24,7 +24,7 @@ * @author RettichLP */ @UCCommand -public class HouseBankGetCommand implements IClientCommand { +public class HouseBankDropGetAllCommand implements IClientCommand { @Override @Nonnull @@ -69,13 +69,34 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen if (args.length > 1 && args[1].equalsIgnoreCase("all")) { p.sendChatMessage("/hauskasse"); HouseDataEventHandler.lastCheck = System.currentTimeMillis(); - new Timer().schedule(new TimerTask() { - @Override - public void run() { - int houseBankBalance = FileManager.DATA.getHouseData(HouseDataEventHandler.lastCheckedHouseNumber).getHouseBank(); - p.sendChatMessage("/hauskasse get " + houseBankBalance); - } - }, 1000); + if (args[0].equalsIgnoreCase("get")) { + new Timer().schedule(new TimerTask() { + @Override + public void run() { + int houseBankBalance = FileManager.DATA.getHouseData(HouseDataEventHandler.lastCheckedHouseNumber).getHouseBank(); + if (houseBankBalance > 0) { + p.sendChatMessage("/hauskasse get " + houseBankBalance); + } else { + p.sendErrorMessage("Deine Hauskasse ist leer."); + } + } + }, 1000); + return; + } else if (args[0].equalsIgnoreCase("drop")) { + new Timer().schedule(new TimerTask() { + @Override + public void run() { + int houseBankBalance = FileManager.DATA.getHouseData(HouseDataEventHandler.lastCheckedHouseNumber).getHouseBank(); + int toTransfer = Math.min(15000 - houseBankBalance, FileManager.DATA.getCashBalance()); + if (toTransfer > 0) { + p.sendChatMessage("/hauskasse drop " + toTransfer); + } else { + p.sendErrorMessage("Deine Hauskasse ist voll oder du hast kein Geld auf der Hand."); + } + } + }, 1000); + return; + } return; } From 2c142533c8eead9422c589aa0c65bdc695269c67 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Thu, 2 Mar 2023 16:31:41 +0100 Subject: [PATCH 106/136] fix bombscreenshot --- .../events/TickEventHandler.java | 13 +++++++++++++ .../terroristen/BombTimerEventHandler.java | 18 +++++------------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java index 49ee3cc26..360d2df89 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java @@ -13,6 +13,7 @@ import com.rettichlp.unicacityaddon.commands.BusCommand; import com.rettichlp.unicacityaddon.commands.faction.badfaction.DropDrugAllCommand; import com.rettichlp.unicacityaddon.events.faction.ReinforcementEventHandler; +import com.rettichlp.unicacityaddon.events.faction.terroristen.BombTimerEventHandler; import com.rettichlp.unicacityaddon.events.house.HouseInteractionEventHandler; import com.rettichlp.unicacityaddon.modules.BombTimerModule; import net.minecraft.entity.item.EntityItem; @@ -40,6 +41,7 @@ public void onTick(TickEvent.ClientTickEvent event) { // EVERY TICK handleReinforcementScreenshot(); + handleBombScreenshot(); handleDamageTracker(); // 0,25 SECONDS @@ -85,6 +87,17 @@ private void handleReinforcementScreenshot() { } } + private void handleBombScreenshot() { + if (BombTimerEventHandler.activeBomb >= 0 && BombTimerEventHandler.activeBomb + 15 == currentTick) { + try { + File file = FileManager.getNewActivityImageFile("großeinsatz"); + HotkeyEventHandler.handleScreenshot(file); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + private void handleDamageTracker() { float currentHeal = AbstractionLayer.getPlayer().getPlayer().getHealth(); if (lastTickDamage.getValue() > currentHeal) { diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java index f5cc010ba..f135e8458 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java @@ -4,14 +4,13 @@ import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.config.ConfigElements; import com.rettichlp.unicacityaddon.base.enums.faction.Faction; -import com.rettichlp.unicacityaddon.base.manager.FileManager; import com.rettichlp.unicacityaddon.base.models.NaviPoint; import com.rettichlp.unicacityaddon.base.registry.SoundRegistry; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; import com.rettichlp.unicacityaddon.base.text.PatternHandler; -import com.rettichlp.unicacityaddon.events.HotkeyEventHandler; +import com.rettichlp.unicacityaddon.events.TickEventHandler; import com.rettichlp.unicacityaddon.modules.BombTimerModule; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.event.ClickEvent; @@ -19,8 +18,6 @@ import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import java.io.File; -import java.io.IOException; import java.util.regex.Matcher; /** @@ -30,6 +27,7 @@ public class BombTimerEventHandler { private static String location; + public static int activeBomb = 0; @SubscribeEvent public void onClientChatReceived(ClientChatReceivedEvent e) { @@ -65,15 +63,6 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { if (m.find()) { String state = m.group(1); - if (ConfigElements.getAutomatedBombScreenshot()) { - try { - File file = FileManager.getNewActivityImageFile("großeinsatz"); - HotkeyEventHandler.handleScreenshot(file); - } catch (IOException f) { - throw new RuntimeException(f); - } - } - String time = BombTimerModule.timer.startsWith(ColorCode.RED.getCode()) ? BombTimerModule.timer.substring(2) : BombTimerModule.timer; e.setMessage(Message.getBuilder() .add(formattedMsg) @@ -90,6 +79,9 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { .of(location != null ? "]" : "").color(ColorCode.DARK_GRAY).advance() .createComponent()); BombTimerModule.stopBombTimer(); + if (ConfigElements.getAutomatedBombScreenshot()) { + activeBomb = TickEventHandler.currentTick; + } } } From e1a75562c0a90998263d35fc683d18a0b02ae099 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sat, 4 Mar 2023 05:21:31 +0100 Subject: [PATCH 107/136] Remove issuer from BlacklistReason, update version url to new repository link --- .../java/com/rettichlp/unicacityaddon/base/api/Syncer.java | 6 ++---- .../unicacityaddon/base/models/BlacklistReason.java | 4 +--- .../rettichlp/unicacityaddon/base/utils/UpdateUtils.java | 4 ++-- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java index f0e83809c..564dbfe3c 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java @@ -114,13 +114,11 @@ public static List getBlacklistReasonEntryList() { response.forEach(jsonElement -> { JsonObject o = jsonElement.getAsJsonObject(); - int kills = o.get("kills").getAsInt(); String reason = o.get("reason").getAsString(); - String issuerUUID = o.get("issuerUUID").getAsString(); + int kills = o.get("kills").getAsInt(); int price = o.get("price").getAsInt(); - String issuerName = o.get("issuerName").getAsString(); - blacklistReasonList.add(new BlacklistReason(kills, reason, issuerUUID, price, issuerName)); + blacklistReasonList.add(new BlacklistReason(reason, kills, price)); }); return blacklistReasonList; } diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/BlacklistReason.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/BlacklistReason.java index 4fa3ecca3..5524e4d3f 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/models/BlacklistReason.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/BlacklistReason.java @@ -8,11 +8,9 @@ @Getter public class BlacklistReason { - private final int kills; private final String reason; - private final String issuerUUID; + private final int kills; private final int price; - private final String issuerName; public static BlacklistReason getBlacklistReasonEntryByReason(String reason) { return Syncer.getBlacklistReasonEntryList().stream() diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java b/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java index 9b4ddf6e1..d3eab45e9 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java @@ -151,11 +151,11 @@ private static void replaceJar() throws IOException { private static String getLatestVersion() { try { - URLConnection con = new URL("https://github.com/rettichlp/UnicacityAddon-1.12.2/releases/latest").openConnection(); + URLConnection con = new URL("https://github.com/rettichlp/unicacityaddon-addon/releases/latest").openConnection(); con.connect(); InputStream is = con.getInputStream(); is.close(); - return con.getURL().toString().replace("https://github.com/rettichlp/UnicacityAddon-1.12.2/releases/tag/v", ""); + return con.getURL().toString().replace("https://github.com/rettichlp/unicacityaddon-addon/releases/tag/v", ""); } catch (IOException e) { throw new RuntimeException(e); } From 8dac7c088aeafe96b8b3b09459775a1f93a24c3a Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sat, 4 Mar 2023 13:21:31 +0100 Subject: [PATCH 108/136] Hide token in APIResponseException --- .../base/api/exception/APIResponseException.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java index 38751c4f7..a2a438c60 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java @@ -1,6 +1,7 @@ package com.rettichlp.unicacityaddon.base.api.exception; import com.rettichlp.unicacityaddon.UnicacityAddon; +import com.rettichlp.unicacityaddon.base.api.TokenManager; import org.apache.logging.log4j.Level; public class APIResponseException extends Throwable { @@ -55,6 +56,6 @@ public void sendInfoMessage() { level = Level.WARN; } - UnicacityAddon.LOGGER.atLevel(level).log("APIResponseException - " + responseCode + " [" + urlString + "]: " + message); + UnicacityAddon.LOGGER.atLevel(level).log("APIResponseException - " + responseCode + " [" + urlString.replace(TokenManager.API_TOKEN, "TOKEN") + "]: " + message); } } \ No newline at end of file From 6904c893f7686721fcabfab658a470580b8c9c03 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sun, 5 Mar 2023 13:37:57 +0100 Subject: [PATCH 109/136] Add management request to APIRequest and ApplicationPath, update latest version check to get data from api instead of directly from GitHub --- .../base/api/request/APIRequest.java | 7 +++++++ .../base/enums/api/ApplicationPath.java | 1 + .../unicacityaddon/base/utils/UpdateUtils.java | 15 ++++----------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java index 36107af8b..cd3f76bd7 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java @@ -147,6 +147,13 @@ public static JsonObject sendHouseBanReasonRemoveRequest(String reason) { .getAsJsonObject(); } + public static JsonObject sendManagementRequest() { + return RequestBuilder.getBuilder() + .nonProd(NON_PROD) + .applicationPath(ApplicationPath.MANAGEMENT) + .getAsJsonObject(); + } + public static JsonArray sendNaviPointRequest() { return RequestBuilder.getBuilder() .nonProd(NON_PROD) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java b/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java index 5eefe8b07..015c25efa 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java @@ -7,6 +7,7 @@ public enum ApplicationPath { BROADCAST("/broadcast"), HOUSEBAN("/houseban"), HOUSEBANREASON("/housebanreason"), + MANAGEMENT("/mgmt"), NAVIPOINT("/navipoint"), PLAYER("/player"), STATISTIC("/statistic"), diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java b/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java index d3eab45e9..5bc401f7b 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java @@ -1,8 +1,10 @@ package com.rettichlp.unicacityaddon.base.utils; +import com.google.gson.JsonObject; import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.config.ConfigElements; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; @@ -14,9 +16,7 @@ import java.io.File; import java.io.IOException; -import java.io.InputStream; import java.net.URL; -import java.net.URLConnection; import java.nio.charset.Charset; /** @@ -150,14 +150,7 @@ private static void replaceJar() throws IOException { } private static String getLatestVersion() { - try { - URLConnection con = new URL("https://github.com/rettichlp/unicacityaddon-addon/releases/latest").openConnection(); - con.connect(); - InputStream is = con.getInputStream(); - is.close(); - return con.getURL().toString().replace("https://github.com/rettichlp/unicacityaddon-addon/releases/tag/v", ""); - } catch (IOException e) { - throw new RuntimeException(e); - } + JsonObject response = APIRequest.sendManagementRequest(); + return response != null ? response.get("latestVersion").getAsString() : UnicacityAddon.VERSION; } } \ No newline at end of file From 8df3c87041435bcce44e6e90169ae7777e6b45cf Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sun, 5 Mar 2023 19:57:22 +0100 Subject: [PATCH 110/136] Update APIResponseException with server provided info message, update order of private variables in Data, add notification for api failure --- .../api/exception/APIResponseException.java | 57 ++++------------- .../base/builder/RequestBuilder.java | 6 +- .../base/manager/FileManager.java | 13 +++- .../unicacityaddon/base/models/Data.java | 38 ++++++++--- .../base/utils/WebsiteUtils.java | 64 ++++++++++++------- .../events/TickEventHandler.java | 2 - 6 files changed, 100 insertions(+), 80 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java index a2a438c60..b83bb3a2d 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java @@ -2,60 +2,31 @@ import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.api.TokenManager; -import org.apache.logging.log4j.Level; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import io.netty.handler.codec.http.HttpResponseStatus; +import net.labymod.main.LabyMod; public class APIResponseException extends Throwable { private final String urlString; private final int responseCode; + private final String infoMessage; public APIResponseException(String urlString, int responseCode) { this.urlString = urlString; this.responseCode = responseCode; + this.infoMessage = HttpResponseStatus.valueOf(responseCode).reasonPhrase(); } - public void sendInfoMessage() { - String message; - Level level; - - switch (responseCode) { - case 200: - message = "Ok"; - level = Level.INFO; - break; - case 204: - message = "Inhalt nicht gefunden."; - level = Level.WARN; - break; - case 400: - message = "Fehlerhafte Anfrage."; - level = Level.WARN; - break; - case 401: - message = "Der Zugriff wurde abgelehnt."; - level = Level.WARN; - break; - case 404: - message = "Endpunkt nicht gefunden."; - level = Level.WARN; - break; - case 423: - message = "Endpunkt gesperrt."; - level = Level.WARN; - break; - case 500: - message = "Der Server konnte die Anfrage nicht verarbeiten."; - level = Level.WARN; - break; - case 503: - message = "Der Server ist aktuell nicht erreichbar."; - level = Level.WARN; - break; - default: - message = "API Fehler."; - level = Level.WARN; - } + public APIResponseException(String urlString, int responseCode, String infoMessage) { + this.urlString = urlString; + this.responseCode = responseCode; + this.infoMessage = infoMessage; + } - UnicacityAddon.LOGGER.atLevel(level).log("APIResponseException - " + responseCode + " [" + urlString.replace(TokenManager.API_TOKEN, "TOKEN") + "]: " + message); + public void sendInfoMessage() { + UnicacityAddon.LOGGER.warn("APIResponseException - " + responseCode + " [" + urlString.replace(TokenManager.API_TOKEN, "TOKEN") + "]: " + infoMessage); + UnicacityAddon.debug("API EXCEPTION: " + infoMessage); + LabyMod.getInstance().notifyMessageRaw(ColorCode.RED.getCode() + "API Fehler - " + responseCode, infoMessage); } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/builder/RequestBuilder.java b/src/main/java/com/rettichlp/unicacityaddon/base/builder/RequestBuilder.java index 206b18d2d..8c8aa2165 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/builder/RequestBuilder.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/builder/RequestBuilder.java @@ -65,11 +65,13 @@ public void sendAsync() { } public JsonObject getAsJsonObject() { - return send().getAsJsonObject(); + JsonElement jsonElement = send(); + return jsonElement != null ? jsonElement.getAsJsonObject() : null; } public JsonArray getAsJsonArray() { - return send().getAsJsonArray(); + JsonElement jsonElement = send(); + return jsonElement != null ? jsonElement.getAsJsonArray() : null; } } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/manager/FileManager.java b/src/main/java/com/rettichlp/unicacityaddon/base/manager/FileManager.java index cffe10bc9..5a04ab95f 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/manager/FileManager.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/manager/FileManager.java @@ -1,6 +1,8 @@ package com.rettichlp.unicacityaddon.base.manager; import com.google.gson.Gson; +import com.google.gson.JsonParser; +import com.google.gson.JsonSyntaxException; import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.models.Data; @@ -123,7 +125,7 @@ public static void loadData() { File dataFile = FileManager.getDataFile(); assert dataFile != null; String jsonData = FileUtils.readFileToString(dataFile, StandardCharsets.UTF_8.toString()); - DATA = jsonData == null || !jsonData.contains("timer") ? new Data() : new Gson().fromJson(jsonData, Data.class); + DATA = jsonData == null || !isValidJson(jsonData) ? new Data() : new Gson().fromJson(jsonData, Data.class); } catch (IOException e) { DATA = new Data(); UnicacityAddon.LOGGER.throwing(e); @@ -144,4 +146,13 @@ public static void saveData() { throw new RuntimeException(e); } } + + public static boolean isValidJson(String string) { + try { + new JsonParser().parse(string); + } catch (JsonSyntaxException e) { + return false; + } + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java index 03e091ca1..72014f904 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/Data.java @@ -23,8 +23,8 @@ public class Data { private Integer bankBalance; private Boolean carOpen; private Integer cashBalance; - private Map> drugInventoryMap; private List coordlist; + private Map> drugInventoryMap; private Map equipMap; private Long firstAidDate; private Map houseDataMap; @@ -37,6 +37,26 @@ public class Data { private Integer timer; private List todolist; + public Data() { + this.armamentList = new ArrayList<>(); + this.bankBalance = 0; + this.carOpen = false; + this.cashBalance = 0; + this.coordlist = new ArrayList<>(); + this.drugInventoryMap = new HashMap<>(); + this.equipMap = new HashMap<>(); + this.firstAidDate = 0L; + this.houseDataMap = new HashMap<>(); + this.jobBalance = 0; + this.jobExperience = 0; + this.payDayTime = 0; + this.plantFertilizeTime = 0L; + this.plantWaterTime = 0L; + this.serviceCount = 0; + this.timer = 0; + this.todolist = new ArrayList<>(); + } + public List getArmamentList() { return armamentList != null ? armamentList : new ArrayList<>(); } @@ -73,21 +93,21 @@ public void setCashBalance(Integer cashBalance) { save(); } - public Map> getDrugInventoryMap() { - return drugInventoryMap != null ? drugInventoryMap : new HashMap<>(); + public List getCoordlist() { + return coordlist != null ? coordlist : new ArrayList<>(); } - public void setDrugInventoryMap(Map> drugInventoryMap) { - this.drugInventoryMap = drugInventoryMap; + public void setCoordlist(List coordlist) { + this.coordlist = coordlist; save(); } - public List getCoordlist() { - return coordlist != null ? coordlist : new ArrayList<>(); + public Map> getDrugInventoryMap() { + return drugInventoryMap != null ? drugInventoryMap : new HashMap<>(); } - public void setCoordlist(List coordlist) { - this.coordlist = coordlist; + public void setDrugInventoryMap(Map> drugInventoryMap) { + this.drugInventoryMap = drugInventoryMap; save(); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java b/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java index 1b624ad2d..1f9cd95b7 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java @@ -1,9 +1,13 @@ package com.rettichlp.unicacityaddon.base.utils; +import com.google.common.collect.Maps; +import com.google.gson.JsonParser; import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.api.TokenManager; import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.enums.api.ApplicationPath; +import com.rettichlp.unicacityaddon.base.manager.FileManager; +import io.netty.handler.codec.http.HttpResponseStatus; import joptsimple.internal.Strings; import java.io.IOException; @@ -22,34 +26,21 @@ public class WebsiteUtils { public static String sendRequest(String urlString) throws APIResponseException { - HttpURLConnection httpURLConnection; + Map.Entry httpURLConnection = getHttpURLConnection(urlString); - if (urlString == null || urlString.isEmpty()) - throw new APIResponseException("URL is null or empty", HttpURLConnection.HTTP_NOT_FOUND); + String websiteSource = getWebsiteSource(httpURLConnection.getKey()); - try { - httpURLConnection = (HttpURLConnection) new URL(urlString).openConnection(); - httpURLConnection.addRequestProperty("User-Agent", "Mozilla/5.0 Gecko/20100101 Firefox/25.0"); + int responseCode = httpURLConnection.getValue(); - int statusCode = httpURLConnection.getResponseCode(); - if (statusCode != HttpURLConnection.HTTP_OK) - throw new APIResponseException(urlString, statusCode); - } catch (IOException e) { - throw new APIResponseException(urlString, HttpURLConnection.HTTP_NOT_FOUND); - } + boolean isApiRequest = urlString.startsWith("http://rettichlp.de:8888/unicacityaddon/v1/") && FileManager.isValidJson(websiteSource); - try { - StringBuilder websiteSource = new StringBuilder(); - Scanner scanner = new Scanner(new InputStreamReader(httpURLConnection.getInputStream(), StandardCharsets.UTF_8)); - while (scanner.hasNextLine()) - websiteSource.append(scanner.nextLine()).append("\n\r"); - UnicacityAddon.LOGGER.info("APIResponse - " + httpURLConnection.getResponseCode() + " [" + urlString.replace(TokenManager.API_TOKEN, "TOKEN") + "]"); - return websiteSource.toString(); - } catch (IOException e) { - e.printStackTrace(); - } + if (responseCode != HttpURLConnection.HTTP_OK) + throw new APIResponseException(urlString, responseCode, isApiRequest + ? new JsonParser().parse(websiteSource).getAsJsonObject().get("info").getAsString() + : HttpResponseStatus.valueOf(responseCode).reasonPhrase()); - throw new APIResponseException(urlString, HttpURLConnection.HTTP_NO_CONTENT); + UnicacityAddon.LOGGER.info("APIResponse - " + responseCode + " [" + urlString.replace(TokenManager.API_TOKEN, "TOKEN") + "]"); + return websiteSource; } public static String createUrl(boolean nonProd, ApplicationPath applicationPath, String subPath, Map parameter) { @@ -78,4 +69,31 @@ public static String getParamsString(Map params) { return Strings.EMPTY; } } + + private static Map.Entry getHttpURLConnection(String urlString) throws APIResponseException { + HttpURLConnection httpURLConnection; + + if (urlString != null && !urlString.isEmpty()) { + try { + httpURLConnection = (HttpURLConnection) new URL(urlString).openConnection(); + httpURLConnection.addRequestProperty("User-Agent", "Mozilla/5.0 Gecko/20100101 Firefox/25.0"); + return Maps.immutableEntry(httpURLConnection, httpURLConnection.getResponseCode()); + } catch (IOException e) { + throw new APIResponseException(urlString, HttpURLConnection.HTTP_NOT_FOUND); + } + } else + throw new APIResponseException("URL is null or empty", HttpURLConnection.HTTP_NOT_FOUND); + } + + private static String getWebsiteSource(HttpURLConnection httpURLConnection) throws APIResponseException { + try { + StringBuilder websiteSource = new StringBuilder(); + Scanner scanner = new Scanner(new InputStreamReader(httpURLConnection.getInputStream(), StandardCharsets.UTF_8)); + while (scanner.hasNextLine()) + websiteSource.append(scanner.nextLine()).append("\n\r"); + return websiteSource.toString(); + } catch (IOException e) { + throw new APIResponseException(httpURLConnection.getURL().toString(), HttpURLConnection.HTTP_INTERNAL_ERROR); + } + } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java index 8431dc27e..e30666c05 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java @@ -128,8 +128,6 @@ private void handleBombTimer() { private void handleTimer() { if (FileManager.DATA.getTimer() > 0) { FileManager.DATA.setTimer(FileManager.DATA.getTimer() - 1); - } else { - FileManager.DATA.setTimer(0); } } From a0c3a806e53990a38f112d07d4ed58459ca692ab Mon Sep 17 00:00:00 2001 From: rettichlp Date: Mon, 6 Mar 2023 02:46:37 +0100 Subject: [PATCH 111/136] Add BroadcastChecker call to TickEventHandler instead of UnicacityAddon --- .../com/rettichlp/unicacityaddon/UnicacityAddon.java | 6 ++---- .../base/api/checks/BroadcastChecker.java | 12 +----------- .../unicacityaddon/events/TickEventHandler.java | 6 ++++++ 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java b/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java index 740884422..be248b882 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java +++ b/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java @@ -3,7 +3,6 @@ import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.api.Syncer; import com.rettichlp.unicacityaddon.base.api.TokenManager; -import com.rettichlp.unicacityaddon.base.api.checks.BroadcastChecker; import com.rettichlp.unicacityaddon.base.config.Config; import com.rettichlp.unicacityaddon.base.manager.FileManager; import com.rettichlp.unicacityaddon.base.registry.CommandRegistry; @@ -14,10 +13,10 @@ import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; import com.rettichlp.unicacityaddon.base.utils.UpdateUtils; -import com.rettichlp.unicacityaddon.events.chatlog.ChatLogReceiveChatEventHandler; -import com.rettichlp.unicacityaddon.events.chatlog.ChatLogSendChatEventHandler; import com.rettichlp.unicacityaddon.events.RenderTagEventHandler; import com.rettichlp.unicacityaddon.events.TabListEventHandler; +import com.rettichlp.unicacityaddon.events.chatlog.ChatLogReceiveChatEventHandler; +import com.rettichlp.unicacityaddon.events.chatlog.ChatLogSendChatEventHandler; import net.labymod.api.LabyModAddon; import net.labymod.ingamegui.ModuleCategoryRegistry; import net.labymod.settings.elements.SettingsElement; @@ -63,7 +62,6 @@ public void onEnable() { ADDON.getApi().getEventManager().register(new ChatLogSendChatEventHandler()); ADDON.getApi().getEventManager().register(new ChatLogReceiveChatEventHandler()); - BroadcastChecker.start(); TokenManager.createToken(); Syncer.syncAll(); diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/checks/BroadcastChecker.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/checks/BroadcastChecker.java index 31dafd391..8874a4f13 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/checks/BroadcastChecker.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/checks/BroadcastChecker.java @@ -12,23 +12,13 @@ import java.util.List; import java.util.Timer; import java.util.TimerTask; -import java.util.concurrent.TimeUnit; public class BroadcastChecker { private static final Timer timer = new Timer(); private static final List receivedBroadcasts = new ArrayList<>(); - public static void start() { - timer.scheduleAtFixedRate(new TimerTask() { - @Override - public void run() { - checkForBroadcast(); - } - }, TimeUnit.SECONDS.toMillis(30), TimeUnit.SECONDS.toMillis(30)); - } - - private static void checkForBroadcast() { + public static void checkForBroadcast() { for (Broadcast broadcast : Syncer.getBroadcastEntryList()) { if (broadcast.getSendTime() < System.currentTimeMillis()) continue; diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java index e30666c05..b9625c0af 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java @@ -4,6 +4,7 @@ import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.api.Syncer; +import com.rettichlp.unicacityaddon.base.api.checks.BroadcastChecker; import com.rettichlp.unicacityaddon.base.config.ConfigElements; import com.rettichlp.unicacityaddon.base.manager.FileManager; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; @@ -67,6 +68,11 @@ public void onTick(TickEvent.ClientTickEvent event) { HouseInteractionEventHandler.increaseProgress(0); } + // 30 SECONDS + if (currentTick % 600 == 0) { + BroadcastChecker.checkForBroadcast(); + } + // 60 SECONDS if (currentTick % 1200 == 0) { handlePayDay(); From ea523b349fd5bb21812ce448938d919d11967a6d Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 7 Mar 2023 03:16:45 +0100 Subject: [PATCH 112/136] Update banner logic to fix duplicated banners --- .../badfaction/BannerEventHandler.java | 24 +++++++++++++------ .../rettungsdienst/FireEventHandler.java | 2 +- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/BannerEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/BannerEventHandler.java index a5cce96b4..f04c93886 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/BannerEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/badfaction/BannerEventHandler.java @@ -1,18 +1,19 @@ package com.rettichlp.unicacityaddon.events.faction.badfaction; -import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.models.NaviPoint; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.PatternHandler; import com.rettichlp.unicacityaddon.base.utils.NavigationUtils; +import net.minecraft.block.Block; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import java.util.regex.Matcher; +import java.util.stream.StreamSupport; /** * @author RettichLP @@ -22,13 +23,22 @@ public class BannerEventHandler { @SubscribeEvent public void onClientChatReceived(ClientChatReceivedEvent e) { + UPlayer p = AbstractionLayer.getPlayer(); + Matcher bannerStartMatcher = PatternHandler.BANNER_SPRAYED_PATTERN.matcher(e.getMessage().getUnformattedText()); if (bannerStartMatcher.find()) { - RayTraceResult lookingAt = UnicacityAddon.MINECRAFT.objectMouseOver; - if (lookingAt != null && lookingAt.typeOfHit.equals(RayTraceResult.Type.BLOCK)) { - BlockPos blockPos = lookingAt.getBlockPos(); - NaviPoint naviPoint = NavigationUtils.getNearestNaviPoint(blockPos).getValue(); - APIRequest.sendBannerAddRequest(AbstractionLayer.getPlayer().getFaction(), blockPos.getX(), blockPos.getY(), blockPos.getZ(), naviPoint.getName()); + BlockPos pos = p.getPosition(); + BlockPos blockPos1 = new BlockPos(pos.getX() - 3, pos.getY() - 3, pos.getZ() - 3); + BlockPos blockPos2 = new BlockPos(pos.getX() + 3, pos.getY() + 3, pos.getZ() + 3); + + BlockPos bannerBlockPos = StreamSupport.stream(BlockPos.getAllInBox(blockPos1, blockPos2).spliterator(), false) + .filter(blockPos -> p.getWorld().getBlockState(blockPos).getBlock().equals(Block.getBlockById(177))) + .findFirst() + .orElse(null); + + if (bannerBlockPos != null) { + NaviPoint naviPoint = NavigationUtils.getNearestNaviPoint(bannerBlockPos).getValue(); + APIRequest.sendBannerAddRequest(AbstractionLayer.getPlayer().getFaction(), bannerBlockPos.getX(), bannerBlockPos.getY(), bannerBlockPos.getZ(), naviPoint.getName()); } } } diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/FireEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/FireEventHandler.java index 900206185..fd2631b2d 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/FireEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/rettungsdienst/FireEventHandler.java @@ -28,7 +28,7 @@ public class FireEventHandler { * Quote: "Meine Öffi-Nachricht geht nicht... oh... ich habe den Imgur-Link eingefügt..." - [UC]laaurin_, 02.10.2022 */ @SubscribeEvent - public void onReviveStart(ClientChatReceivedEvent e) { + public void onClientChatReceive(ClientChatReceivedEvent e) { UPlayer p = AbstractionLayer.getPlayer(); String msg = e.getMessage().getUnformattedText(); From 9c8db1de07ba449abc7ab7e271e97bc30505d1f6 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 7 Mar 2023 03:39:13 +0100 Subject: [PATCH 113/136] Add hasGangwar method to UPlayer, add send data process to TickEventHandler, add api support, add GangwarEventHandler --- .../base/abstraction/UPlayer.java | 2 + .../base/abstraction/UPlayerImpl.java | 6 ++ .../base/api/request/APIRequest.java | 19 ++++ .../base/enums/api/ApplicationPath.java | 1 + .../events/GangwarEventHandler.java | 96 +++++++++++++++++++ .../events/TickEventHandler.java | 1 + 6 files changed, 125 insertions(+) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/events/GangwarEventHandler.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayer.java b/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayer.java index 777c3fe84..3fe2a04d9 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayer.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayer.java @@ -73,4 +73,6 @@ public interface UPlayer { void copyToClipboard(String string); boolean isSuperUser(); + + boolean hasGangwar(); } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayerImpl.java b/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayerImpl.java index df0f14339..e4e421e2e 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayerImpl.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayerImpl.java @@ -23,6 +23,7 @@ import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; +import java.util.Arrays; import java.util.UUID; /** @@ -203,4 +204,9 @@ public boolean isSuperUser() { String uuid = getUniqueID().toString().replace("-", ""); return uuid.equals("25855f4d38744a7fa6ade9e4f3042e19") || uuid.equals("6e49e42eefca4d9389f9f395b887809e"); } + + @Override + public boolean hasGangwar() { + return getWorldScoreboard().getObjectiveNames().containsAll(Arrays.asList("Angreifer", "Verteidiger")); + } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java index cd3f76bd7..b38b36bc1 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java @@ -24,6 +24,7 @@ public class APIRequest { private static final String CREATE_SUB_PATH = "create"; private static final String REVOKE_SUB_PATH = "revoke"; private static final String DONE_SUB_PATH = "done"; + private static final String USERS_SUB_PATH = "users"; public static void sendBannerAddRequest(Faction faction, int x, int y, int z, String navipoint) { RequestBuilder.getBuilder() @@ -87,6 +88,16 @@ public static JsonObject sendBroadcastSendRequest(String message, String sendTim .getAsJsonObject(); } + public static void sendGangwarDataRequest(int attacker, int defender) { + RequestBuilder.getBuilder() + .nonProd(NON_PROD) + .applicationPath(ApplicationPath.GANGWAR) + .parameter(mapOf( + "attacker", String.valueOf(attacker), + "defender", String.valueOf(defender))) + .sendAsync(); + } + public static JsonArray sendHouseBanRequest(boolean advanced) { return RequestBuilder.getBuilder() .nonProd(NON_PROD) @@ -154,6 +165,14 @@ public static JsonObject sendManagementRequest() { .getAsJsonObject(); } + public static JsonArray sendManagementUserRequest() { + return RequestBuilder.getBuilder() + .nonProd(NON_PROD) + .applicationPath(ApplicationPath.MANAGEMENT) + .subPath(USERS_SUB_PATH) + .getAsJsonArray(); + } + public static JsonArray sendNaviPointRequest() { return RequestBuilder.getBuilder() .nonProd(NON_PROD) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java b/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java index 015c25efa..147e6a3e3 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java @@ -5,6 +5,7 @@ public enum ApplicationPath { BANNER("/banner"), BLACKLISTREASON("/blacklistreason"), BROADCAST("/broadcast"), + GANGWAR("/gangwar"), HOUSEBAN("/houseban"), HOUSEBANREASON("/housebanreason"), MANAGEMENT("/mgmt"), diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/GangwarEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/GangwarEventHandler.java new file mode 100644 index 000000000..be8064a08 --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/events/GangwarEventHandler.java @@ -0,0 +1,96 @@ +package com.rettichlp.unicacityaddon.events; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.rettichlp.unicacityaddon.UnicacityAddon; +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.api.Syncer; +import com.rettichlp.unicacityaddon.base.api.request.APIRequest; +import com.rettichlp.unicacityaddon.base.utils.ForgeUtils; +import com.rettichlp.unicacityaddon.base.utils.UpdateUtils; +import net.minecraft.scoreboard.Score; +import net.minecraft.scoreboard.Scoreboard; + +import java.util.Arrays; +import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Collectors; + +/** + * @author RettichLP + */ +public class GangwarEventHandler { + + public static void sendData() { + UPlayer p = AbstractionLayer.getPlayer(); + + if (UnicacityAddon.isUnicacity() && p.hasGangwar() && isDataSender()) { + Scoreboard scoreboard = p.getWorldScoreboard(); + if (scoreboard.getObjectiveNames().containsAll(Arrays.asList("Angreifer", "Verteidiger"))) { + Score attackerScore = scoreboard.getScores().stream() + .filter(score -> score.getPlayerName().contains("Angreifer:")) + .findFirst() + .orElse(null); + + Score defenderScore = scoreboard.getScores().stream() + .filter(score -> score.getPlayerName().contains("Verteidiger:")) + .findFirst() + .orElse(null); + + if (attackerScore != null && defenderScore != null) { + APIRequest.sendGangwarDataRequest(attackerScore.getScorePoints(), defenderScore.getScorePoints()); + } + } + } + } + + private static boolean isDataSender() { + UPlayer p = AbstractionLayer.getPlayer(); + int rank = p.getRank(); + + Map filteredPlayerMap = Syncer.PLAYERFACTIONMAP.entrySet().stream() + .filter(e -> e.getValue().equals(p.getFaction())) // name and faction from faction + .map(Map.Entry::getKey) // name of players from faction + .filter(s -> ForgeUtils.getOnlinePlayers().contains(s)) // is online + .filter(GangwarEventHandler::hasSupportedAddonVersion) // has supported addon version + .collect(Collectors.toMap(s -> s, Syncer.PLAYERRANKMAP::get)); // collect name and rank of players from faction + + UnicacityAddon.debug(filteredPlayerMap.keySet().toString()); + + boolean hasAnyPlayerHigherRank = filteredPlayerMap.entrySet().stream() + .anyMatch(stringIntegerEntry -> stringIntegerEntry.getValue() > rank); // has a higher rank than himself + + UnicacityAddon.debug("ANY HIGHER RANK: " + hasAnyPlayerHigherRank); + + boolean hasRankPriority = filteredPlayerMap.entrySet().stream() + .filter(stringIntegerEntry -> stringIntegerEntry.getValue().equals(rank)) + .map(Map.Entry::getKey) + .sorted() + .collect(Collectors.toList()) + .get(0) + .equals(p.getName()); + + UnicacityAddon.debug("RANK PRIORITY: " + hasRankPriority); + + UnicacityAddon.debug("IS SENDER: " + (!hasAnyPlayerHigherRank && hasRankPriority)); + return !hasAnyPlayerHigherRank && hasRankPriority; + } + + private static boolean hasSupportedAddonVersion(String name) { + JsonArray response = APIRequest.sendManagementUserRequest(); + AtomicBoolean accept = new AtomicBoolean(false); + if (response != null) { + response.forEach(jsonElement -> { + if (!accept.get()) { + String uuid = UnicacityAddon.MINECRAFT.getConnection().getPlayerInfo(name).getGameProfile().getId().toString().replace("-", ""); + JsonObject jsonObject = jsonElement.getAsJsonObject(); + boolean hasAddon = jsonObject.get("uuid").getAsString().equals(uuid); + boolean hasVersion = jsonObject.get("version").getAsString().equals(UpdateUtils.latestVersion); + accept.set(hasAddon && hasVersion); + } + }); + } + return accept.get(); + } +} \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java index b9625c0af..fe79e211b 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/TickEventHandler.java @@ -71,6 +71,7 @@ public void onTick(TickEvent.ClientTickEvent event) { // 30 SECONDS if (currentTick % 600 == 0) { BroadcastChecker.checkForBroadcast(); + GangwarEventHandler.sendData(); } // 60 SECONDS From 6adedf7e493f15ccaffcbb4a291e205a205b601d Mon Sep 17 00:00:00 2001 From: rettichlp Date: Thu, 9 Mar 2023 21:32:54 +0100 Subject: [PATCH 114/136] Update loading and providing of api data --- .../unicacityaddon/base/api/Syncer.java | 98 +++++++++---------- .../base/api/checks/BroadcastChecker.java | 60 ++++++------ .../base/models/BlacklistReason.java | 2 +- .../base/models/WantedReason.java | 2 +- .../unicacityaddon/commands/BusCommand.java | 2 +- .../commands/DyavolCommand.java | 8 +- .../commands/api/BlacklistReasonCommand.java | 4 +- .../commands/api/HousebanCommand.java | 4 +- .../commands/api/HousebanReasonCommand.java | 4 +- .../commands/api/PlayerGroupCommand.java | 12 ++- .../commands/api/WantedReasonCommand.java | 2 +- .../badfaction/ASetBlacklistCommand.java | 2 +- .../badfaction/ModifyBlacklistCommand.java | 2 +- .../commands/faction/polizei/ASUCommand.java | 2 +- .../events/NameTagEventHandler.java | 2 +- 15 files changed, 104 insertions(+), 102 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java index 564dbfe3c..42243c42b 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java @@ -12,7 +12,6 @@ import com.rettichlp.unicacityaddon.base.models.HouseBan; import com.rettichlp.unicacityaddon.base.models.HouseBanReason; import com.rettichlp.unicacityaddon.base.models.NaviPoint; -import com.rettichlp.unicacityaddon.base.models.PlayerGroup; import com.rettichlp.unicacityaddon.base.models.WantedReason; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.PatternHandler; @@ -28,15 +27,44 @@ public class Syncer { public static final Map PLAYERFACTIONMAP = new HashMap<>(); public static final Map PLAYERRANKMAP = new HashMap<>(); - public static List HOUSEBANENTRYLIST = new ArrayList<>(); + public static List HOUSEBANLIST = new ArrayList<>(); + public static List HOUSEBANREASONLIST = new ArrayList<>(); public static List NAVIPOINTLIST = new ArrayList<>(); + public static List BLACKLISTREASONLIST = new ArrayList<>(); + public static List WANTEDREASONLIST = new ArrayList<>(); public static void syncAll() { new Thread(() -> { Thread t1 = syncPlayerAddonGroupMap(); Thread t2 = syncPlayerFactionData(); - Thread t3 = syncHousebanEntryList(); - Thread t4 = syncNaviPointEntryList(); + + Thread t3 = new Thread(() -> { + HOUSEBANLIST = getHouseBanEntryList(); + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Hausverbote aktualisiert."); + }); + + Thread t4 = new Thread(() -> { + HOUSEBANREASONLIST = getHouseBanReasonEntryList(); + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Hausverbot-Gründe aktualisiert."); + }); + + + Thread t5 = new Thread(() -> { + NAVIPOINTLIST = getNaviPointEntryList(); + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Navipunkte aktualisiert."); + }); + + + Thread t6 = new Thread(() -> { + BLACKLISTREASONLIST = getBlacklistReasonEntryList(); + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Blacklist Gründe aktualisiert."); + }); + + + Thread t7 = new Thread(() -> { + WANTEDREASONLIST = getWantedReasonEntryList(); + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Wanted-Gründe aktualisiert."); + }); try { t1.start(); @@ -50,13 +78,22 @@ public static void syncAll() { t4.start(); t4.join(); + + t5.start(); + t5.join(); + + t6.start(); + t6.join(); + + t7.start(); + t7.join(); } catch (InterruptedException e) { throw new RuntimeException(e); } }).start(); } - public static Thread syncPlayerAddonGroupMap() { + private static Thread syncPlayerAddonGroupMap() { return new Thread(() -> { JsonObject response = APIRequest.sendPlayerRequest(); if (response != null) { @@ -71,7 +108,7 @@ public static Thread syncPlayerAddonGroupMap() { }); } - public static Thread syncPlayerFactionData() { + private static Thread syncPlayerFactionData() { return new Thread(() -> { PLAYERFACTIONMAP.clear(); PLAYERRANKMAP.clear(); @@ -92,21 +129,7 @@ public static Thread syncPlayerFactionData() { }); } - public static Thread syncHousebanEntryList() { - return new Thread(() -> { - HOUSEBANENTRYLIST = getHouseBanEntryList(); - LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Hausverbote aktualisiert."); - }); - } - - public static Thread syncNaviPointEntryList() { - return new Thread(() -> { - NAVIPOINTLIST = getNaviPointEntryList(); - LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Navipunkte aktualisiert."); - }); - } - - public static List getBlacklistReasonEntryList() { + private static List getBlacklistReasonEntryList() { JsonArray response = APIRequest.sendBlacklistReasonRequest(); if (response == null) return new ArrayList<>(); @@ -143,7 +166,7 @@ public static List getBroadcastEntryList() { return broadcastList; } - public static List getHouseBanEntryList() { + private static List getHouseBanEntryList() { JsonArray response = APIRequest.sendHouseBanRequest(AbstractionLayer.getPlayer().getFaction().equals(Faction.RETTUNGSDIENST)); if (response == null) return new ArrayList<>(); @@ -174,7 +197,7 @@ public static List getHouseBanEntryList() { return houseBanList; } - public static List getHouseBanReasonEntryList() { + private static List getHouseBanReasonEntryList() { JsonArray response = APIRequest.sendHouseBanReasonRequest(); if (response == null) return new ArrayList<>(); @@ -192,7 +215,7 @@ public static List getHouseBanReasonEntryList() { return houseBanReasonList; } - public static List getNaviPointEntryList() { + private static List getNaviPointEntryList() { JsonArray response = APIRequest.sendNaviPointRequest(); if (response == null) return new ArrayList<>(); @@ -211,32 +234,7 @@ public static List getNaviPointEntryList() { return naviPointList; } - public static List getPlayerGroupList() { - JsonArray response = APIRequest.sendPlayerGroupRequest(); - List playerGroupList = new ArrayList<>(); - if (response != null) { - response.forEach(jsonElement -> playerGroupList.add(jsonElement.getAsString())); - } - return playerGroupList; - } - - public static List getPlayerGroupEntryList(String group) { - JsonObject response = APIRequest.sendPlayerRequest(); - if (response == null || !response.has(group)) - return new ArrayList<>(); - List playerGroupList = new ArrayList<>(); - response.get(group).getAsJsonArray().forEach(jsonElement -> { - JsonObject o = jsonElement.getAsJsonObject(); - - String name = o.get("name").getAsString(); - String uuid = o.get("uuid").getAsString(); - - playerGroupList.add(new PlayerGroup(name, uuid)); - }); - return playerGroupList; - } - - public static List getWantedReasonEntryList() { + private static List getWantedReasonEntryList() { JsonArray response = APIRequest.sendWantedReasonRequest(); if (response == null) return new ArrayList<>(); diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/checks/BroadcastChecker.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/checks/BroadcastChecker.java index 8874a4f13..638bd637f 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/checks/BroadcastChecker.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/checks/BroadcastChecker.java @@ -19,34 +19,36 @@ public class BroadcastChecker { private static final List receivedBroadcasts = new ArrayList<>(); public static void checkForBroadcast() { - for (Broadcast broadcast : Syncer.getBroadcastEntryList()) { - if (broadcast.getSendTime() < System.currentTimeMillis()) - continue; - if (receivedBroadcasts.contains(broadcast.getId())) - continue; - receivedBroadcasts.add(broadcast.getId()); - - UPlayer p = AbstractionLayer.getPlayer(); - - timer.schedule(new TimerTask() { - @Override - public void run() { - p.sendEmptyMessage(); - p.sendEmptyMessage(); - - p.sendMessage(Message.getBuilder() - .of("BROADCAST BY ").color(ColorCode.DARK_AQUA).bold().advance().space() - .of(broadcast.getIssuerName().toUpperCase()).color(ColorCode.DARK_AQUA).bold().advance() - .createComponent()); - - p.sendMessage(Message.getBuilder() - .of(broadcast.getBroadcast()).color(ColorCode.AQUA).advance() - .createComponent()); - - p.sendEmptyMessage(); - p.sendEmptyMessage(); - } - }, new Date(broadcast.getSendTime())); - } + new Thread(() -> { + for (Broadcast broadcast : Syncer.getBroadcastEntryList()) { + if (broadcast.getSendTime() < System.currentTimeMillis()) + continue; + if (receivedBroadcasts.contains(broadcast.getId())) + continue; + receivedBroadcasts.add(broadcast.getId()); + + UPlayer p = AbstractionLayer.getPlayer(); + + timer.schedule(new TimerTask() { + @Override + public void run() { + p.sendEmptyMessage(); + p.sendEmptyMessage(); + + p.sendMessage(Message.getBuilder() + .of("BROADCAST BY ").color(ColorCode.DARK_AQUA).bold().advance().space() + .of(broadcast.getIssuerName().toUpperCase()).color(ColorCode.DARK_AQUA).bold().advance() + .createComponent()); + + p.sendMessage(Message.getBuilder() + .of(broadcast.getBroadcast()).color(ColorCode.AQUA).advance() + .createComponent()); + + p.sendEmptyMessage(); + p.sendEmptyMessage(); + } + }, new Date(broadcast.getSendTime())); + } + }).start(); } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/BlacklistReason.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/BlacklistReason.java index 5524e4d3f..be0095794 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/models/BlacklistReason.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/BlacklistReason.java @@ -13,7 +13,7 @@ public class BlacklistReason { private final int price; public static BlacklistReason getBlacklistReasonEntryByReason(String reason) { - return Syncer.getBlacklistReasonEntryList().stream() + return Syncer.BLACKLISTREASONLIST.stream() .filter(blacklistReasonEntry -> blacklistReasonEntry.getReason().equals(reason)) .findFirst() .orElse(null); diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/WantedReason.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/WantedReason.java index 8aba77b95..e93ada382 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/models/WantedReason.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/WantedReason.java @@ -14,7 +14,7 @@ public class WantedReason { private final int points; public static WantedReason getWantedReasonEntryByReason(String reason) { - return Syncer.getWantedReasonEntryList().stream() + return Syncer.WANTEDREASONLIST.stream() .filter(wantedReason -> wantedReason.getReason().equals(reason)) .findFirst() .orElse(null); diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/BusCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/BusCommand.java index a083cd819..ab235e67b 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/BusCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/BusCommand.java @@ -71,7 +71,7 @@ public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull IComman @Nonnull public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { return TabCompletionBuilder.getBuilder(args) - .addAtIndex(1, Syncer.getNaviPointEntryList().stream().map(NaviPoint::getTabName).collect(Collectors.toList())) + .addAtIndex(1, Syncer.NAVIPOINTLIST.stream().map(NaviPoint::getTabName).collect(Collectors.toList())) .build(); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/DyavolCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/DyavolCommand.java index a35b4d18f..1ce8e1cb2 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/DyavolCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/DyavolCommand.java @@ -2,8 +2,8 @@ import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; -import com.rettichlp.unicacityaddon.base.api.Syncer; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; +import com.rettichlp.unicacityaddon.base.enums.api.AddonGroup; import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; @@ -56,11 +56,11 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of("D'yavol:").color(ColorCode.DARK_RED).bold().advance() .createComponent()); - Syncer.getPlayerGroupEntryList("DYAVOL").forEach(playerGroupEntry -> { - boolean online = ForgeUtils.getOnlinePlayers().contains(playerGroupEntry.getName()); + AddonGroup.DYAVOL.getMemberList().forEach(s -> { + boolean online = ForgeUtils.getOnlinePlayers().contains(s); p.sendMessage(Message.getBuilder() .of("»").color(ColorCode.GRAY).advance().space() - .of(playerGroupEntry.getName()).color(online ? ColorCode.GREEN : ColorCode.RED).advance() + .of(s).color(online ? ColorCode.GREEN : ColorCode.RED).advance() .createComponent()); }); diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/BlacklistReasonCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/BlacklistReasonCommand.java index 4fd616bb7..96c9a0c2d 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/BlacklistReasonCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/BlacklistReasonCommand.java @@ -62,7 +62,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of("Blacklist-Gründe:").color(ColorCode.DARK_AQUA).bold().advance() .createComponent()); - Syncer.getBlacklistReasonEntryList().forEach(blacklistReasonEntry -> p.sendMessage(Message.getBuilder() + Syncer.BLACKLISTREASONLIST.forEach(blacklistReasonEntry -> p.sendMessage(Message.getBuilder() .of("»").color(ColorCode.GRAY).advance().space() .of(blacklistReasonEntry.getReason()).color(ColorCode.AQUA) .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder() @@ -96,7 +96,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { return TabCompletionBuilder.getBuilder(args) .addAtIndex(1, "add", "remove") - .addAtIndex(2, Syncer.getBlacklistReasonEntryList().stream().map(BlacklistReason::getReason).sorted().collect(Collectors.toList())) + .addAtIndex(2, Syncer.BLACKLISTREASONLIST.stream().map(BlacklistReason::getReason).sorted().collect(Collectors.toList())) .build(); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanCommand.java index 8130d22b4..15eca09d4 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanCommand.java @@ -64,7 +64,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of("Hausverbote:").color(ColorCode.DARK_AQUA).bold().advance() .createComponent()); - Syncer.HOUSEBANENTRYLIST.forEach(houseBanEntry -> { + Syncer.HOUSEBANLIST.forEach(houseBanEntry -> { long durationInMillis = houseBanEntry.getExpirationTime() - System.currentTimeMillis(); String duration = Message.getBuilder() @@ -131,7 +131,7 @@ else if (days > 50) public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { return TabCompletionBuilder.getBuilder(args) .addAtIndex(1, "add", "remove") - .addAtIndex(3, Syncer.getHouseBanReasonEntryList().stream().map(HouseBanReason::getReason).sorted().collect(Collectors.toList())) + .addAtIndex(3, Syncer.HOUSEBANREASONLIST.stream().map(HouseBanReason::getReason).sorted().collect(Collectors.toList())) .build(); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanReasonCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanReasonCommand.java index c840d9c22..747c1703d 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanReasonCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanReasonCommand.java @@ -63,7 +63,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of("Hausverbot-Gründe:").color(ColorCode.DARK_AQUA).bold().advance() .createComponent()); - Syncer.getHouseBanReasonEntryList().forEach(houseBanReason -> p.sendMessage(Message.getBuilder() + Syncer.HOUSEBANREASONLIST.forEach(houseBanReason -> p.sendMessage(Message.getBuilder() .of("»").color(ColorCode.GRAY).advance().space() .of(houseBanReason.getReason()).color(ColorCode.AQUA) .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder() @@ -101,7 +101,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { return TabCompletionBuilder.getBuilder(args) .addAtIndex(1, "add", "remove") - .addAtIndex(2, Syncer.getHouseBanReasonEntryList().stream().map(HouseBanReason::getReason).sorted().collect(Collectors.toList())) + .addAtIndex(2, Syncer.HOUSEBANREASONLIST.stream().map(HouseBanReason::getReason).sorted().collect(Collectors.toList())) .build(); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/PlayerGroupCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/PlayerGroupCommand.java index a5b60e0a4..3a5ca5db5 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/PlayerGroupCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/PlayerGroupCommand.java @@ -3,9 +3,9 @@ import com.google.gson.JsonObject; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; -import com.rettichlp.unicacityaddon.base.api.Syncer; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; +import com.rettichlp.unicacityaddon.base.enums.api.AddonGroup; import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; @@ -17,8 +17,10 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; +import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; /** * @author RettichLP @@ -53,16 +55,16 @@ public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull IComman public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, String[] args) { UPlayer p = AbstractionLayer.getPlayer(); - if (args.length == 2 && args[0].equalsIgnoreCase("list")) { + if (args.length == 2 && args[0].equalsIgnoreCase("list") && Arrays.stream(AddonGroup.values()).anyMatch(addonGroup -> addonGroup.name().equals(args[1]))) { p.sendEmptyMessage(); p.sendMessage(Message.getBuilder() .of("Spielergruppe:").color(ColorCode.DARK_AQUA).bold().advance().space() .of(args[1]).color(ColorCode.DARK_AQUA).advance() .createComponent()); - Syncer.getPlayerGroupEntryList(args[1]).forEach(playerGroupEntry -> p.sendMessage(Message.getBuilder() + AddonGroup.valueOf(args[1]).getMemberList().forEach(s -> p.sendMessage(Message.getBuilder() .of("»").color(ColorCode.GRAY).advance().space() - .of(playerGroupEntry.getName()).color(ColorCode.AQUA).advance() + .of(s).color(ColorCode.AQUA).advance() .createComponent())); p.sendEmptyMessage(); @@ -87,7 +89,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { return TabCompletionBuilder.getBuilder(args) .addAtIndex(1, "list", "add", "remove") - .addAtIndex(2, Syncer.getPlayerGroupList()) + .addAtIndex(2, Arrays.stream(AddonGroup.values()).map(Enum::name).collect(Collectors.toList())) .build(); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/WantedReasonCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/WantedReasonCommand.java index 145ab7561..9eb8426c5 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/WantedReasonCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/WantedReasonCommand.java @@ -73,7 +73,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { return TabCompletionBuilder.getBuilder(args) .addAtIndex(1, "add", "remove") - .addAtIndex(2, Syncer.getWantedReasonEntryList().stream().map(WantedReason::getReason).sorted().collect(Collectors.toList())) + .addAtIndex(2, Syncer.WANTEDREASONLIST.stream().map(WantedReason::getReason).sorted().collect(Collectors.toList())) .build(); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/ASetBlacklistCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/ASetBlacklistCommand.java index 65549b81b..10ac4df85 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/ASetBlacklistCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/ASetBlacklistCommand.java @@ -72,7 +72,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { return TabCompletionBuilder.getBuilder(args) .addToAllFromIndex(2, ForgeUtils.getOnlinePlayers()) - .addToAllFromIndex(2, Syncer.getBlacklistReasonEntryList().stream().map(BlacklistReason::getReason).sorted().collect(Collectors.toList())) + .addToAllFromIndex(2, Syncer.BLACKLISTREASONLIST.stream().map(BlacklistReason::getReason).sorted().collect(Collectors.toList())) .build(); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/ModifyBlacklistCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/ModifyBlacklistCommand.java index 19a85e9f5..566924bcc 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/ModifyBlacklistCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/badfaction/ModifyBlacklistCommand.java @@ -86,7 +86,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen @Nonnull public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { return TabCompletionBuilder.getBuilder(args) - .addAtIndex(2, Syncer.getBlacklistReasonEntryList().stream().map(BlacklistReason::getReason).sorted().collect(Collectors.toList())) + .addAtIndex(2, Syncer.BLACKLISTREASONLIST.stream().map(BlacklistReason::getReason).sorted().collect(Collectors.toList())) .addAtIndex(2, "-v") .build(); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ASUCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ASUCommand.java index 6039bff37..3807ba5e1 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ASUCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/polizei/ASUCommand.java @@ -117,7 +117,7 @@ public void run() { @Nonnull public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { return TabCompletionBuilder.getBuilder(args) - .addToAllFromIndex(2, Syncer.getWantedReasonEntryList().stream().map(WantedReason::getReason).sorted().collect(Collectors.toList())) + .addToAllFromIndex(2, Syncer.WANTEDREASONLIST.stream().map(WantedReason::getReason).sorted().collect(Collectors.toList())) .addToAllFromIndex(2, ForgeUtils.getOnlinePlayers()) .addToAllFromIndex(3, Arrays.stream(Flag.values()).map(Flag::getFlagArgument).sorted().collect(Collectors.toList())) .build(); diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/NameTagEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/NameTagEventHandler.java index 4a51cb752..67633040f 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/NameTagEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/NameTagEventHandler.java @@ -55,7 +55,7 @@ private String getHouseBan(String playerName) { houseBan.append(FormattingCode.RESET.getCode()); if (ConfigElements.getNameTagHouseBan()) { - if (Syncer.HOUSEBANENTRYLIST.stream().anyMatch(houseBanEntry -> houseBanEntry.getName().equals(playerName))) + if (Syncer.HOUSEBANLIST.stream().anyMatch(houseBanEntry -> houseBanEntry.getName().equals(playerName))) houseBan.append(Message.getBuilder() .of("[").color(ColorCode.DARK_GRAY).advance() .of("HV").color(ColorCode.RED).advance() From 2640fce5714338d421ffb9ade3c1e3227a736f38 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Thu, 9 Mar 2023 22:32:28 +0100 Subject: [PATCH 115/136] Update code style and remove creator identification from wanted reasons --- .../java/com/rettichlp/unicacityaddon/base/api/Syncer.java | 4 +--- .../com/rettichlp/unicacityaddon/base/models/NaviPoint.java | 2 +- .../rettichlp/unicacityaddon/base/models/WantedReason.java | 2 -- .../com/rettichlp/unicacityaddon/commands/BusCommand.java | 2 +- .../com/rettichlp/unicacityaddon/commands/NaviCommand.java | 2 +- .../events/faction/terroristen/BombTimerEventHandler.java | 2 +- 6 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java index 42243c42b..3a4072dd5 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java @@ -243,11 +243,9 @@ private static List getWantedReasonEntryList() { JsonObject o = jsonElement.getAsJsonObject(); String reason = o.get("reason").getAsString(); - String creatorUUID = o.get("creatorUUID").getAsString(); - String creatorName = o.get("creatorName").getAsString(); int points = o.get("points").getAsInt(); - wantedReasonList.add(new WantedReason(reason, creatorUUID, creatorName, points)); + wantedReasonList.add(new WantedReason(reason, points)); }); return wantedReasonList; } diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/NaviPoint.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/NaviPoint.java index 4733ab673..d68fd4ae0 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/models/NaviPoint.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/NaviPoint.java @@ -27,7 +27,7 @@ public BlockPos getBlockPos() { return new BlockPos(x, y, z); } - public static NaviPoint getNaviPointEntryByTabName(String tabName) { + public static NaviPoint getNaviPointByTabName(String tabName) { return Syncer.NAVIPOINTLIST.stream() .filter(naviPointEntry -> naviPointEntry.getTabName().equals(tabName)) .findFirst() diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/WantedReason.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/WantedReason.java index e93ada382..0012bd69f 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/models/WantedReason.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/WantedReason.java @@ -9,8 +9,6 @@ public class WantedReason { private final String reason; - private final String creatorUUID; - private final String creatorName; private final int points; public static WantedReason getWantedReasonEntryByReason(String reason) { diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/BusCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/BusCommand.java index ab235e67b..90907497b 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/BusCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/BusCommand.java @@ -89,7 +89,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen return; } - NaviPoint naviPoint = NaviPoint.getNaviPointEntryByTabName(args[0]); + NaviPoint naviPoint = NaviPoint.getNaviPointByTabName(args[0]); if (naviPoint == null) { p.sendErrorMessage("Navipunkt nicht gefunden."); return; diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/NaviCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/NaviCommand.java index beb332b28..58693d691 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/NaviCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/NaviCommand.java @@ -62,7 +62,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen return; } - NaviPoint naviPoint = NaviPoint.getNaviPointEntryByTabName(args[0].trim()); + NaviPoint naviPoint = NaviPoint.getNaviPointByTabName(args[0].trim()); if (naviPoint == null) { p.sendChatMessage("/navi " + TextUtils.makeStringByArgs(args, " ")); return; diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java index f5cc010ba..dd3ca4f85 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java @@ -94,7 +94,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { } private String getLocationWithArticle(String location) { - NaviPoint naviPoint = NaviPoint.getNaviPointEntryByTabName(location.replace(" ", "-")); + NaviPoint naviPoint = NaviPoint.getNaviPointByTabName(location.replace(" ", "-")); String article = "der/die/das"; if (naviPoint != null) article = naviPoint.getArticleFourthCase().replace("none", ""); From 5b79b742cb194fad935c6858d4cb56c2f16e1ed0 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Thu, 9 Mar 2023 23:15:41 +0100 Subject: [PATCH 116/136] Fix spam kick with automated afk --- .../unicacityaddon/events/AccountEventHandler.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java index e71bd2b9a..0c2a5e1d6 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java @@ -24,6 +24,7 @@ import java.util.regex.Matcher; /** + * @author RettichLP * @author Dimiikou */ @UCEvent @@ -31,6 +32,8 @@ public class AccountEventHandler { public static boolean isAfk = false; + private long lastAfkTry = 0; + @SubscribeEvent public void onClientChatReceived(ClientChatReceivedEvent e) { UPlayer p = AbstractionLayer.getPlayer(); @@ -74,13 +77,14 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { return; } - if (PatternHandler.ACCOUNT_AFK_FAILURE_PATTERN.matcher(msg).find()) { + if (PatternHandler.ACCOUNT_AFK_FAILURE_PATTERN.matcher(msg).find() && System.currentTimeMillis() - lastAfkTry > TimeUnit.SECONDS.toMillis(30)) { p.sendInfoMessage("Das Addon versucht dich anschließend in den AFK Modus zu setzen."); long lastDamageTime = TickEventHandler.lastTickDamage.getKey(); new Timer().schedule(new TimerTask() { @Override public void run() { p.sendChatMessage("/afk"); + lastAfkTry = System.currentTimeMillis(); } }, new Date(lastDamageTime + TimeUnit.SECONDS.toMillis(15))); return; From 6c9f2d0522b62390a10809261207cc60cba6954c Mon Sep 17 00:00:00 2001 From: rettichlp Date: Thu, 9 Mar 2023 23:20:43 +0100 Subject: [PATCH 117/136] Fix wrong equip names --- .../base/config/ConfigSubSettings.java | 20 +++++++++---------- .../base/enums/faction/Equip.java | 10 +++++----- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSubSettings.java b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSubSettings.java index bf0dbb4e1..c19a0f702 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSubSettings.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigSubSettings.java @@ -43,7 +43,7 @@ static Settings getBadFrakEquipSettings(UnicacityAddon unicacityAddon) { StringElement lightKevlarSettings = new StringElement(Equip.KEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_LKEV_SETTING", ConfigElements.getLightKevlarPrice()); settings.add(lightKevlarSettings); - StringElement heavyKevlarSettings = new StringElement(Equip.HEAVYKEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_SKEV_SETTING", ConfigElements.getHeavyKevlarPrice()); + StringElement heavyKevlarSettings = new StringElement(Equip.HEAVY_KEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_SKEV_SETTING", ConfigElements.getHeavyKevlarPrice()); settings.add(heavyKevlarSettings); StringElement pistolSettings = new StringElement(Equip.PISTOL.getName(), unicacityAddon, new ControlElement.IconData(Material.IRON_HOE), "EQUIP_PISTOLE_SETTING", ConfigElements.getPistolPrice()); @@ -61,7 +61,7 @@ static Settings getPoliceEquipSettings(UnicacityAddon unicacityAddon) { StringElement lightKevlarSettings = new StringElement(Equip.KEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_LKEV_SETTING", ConfigElements.getLightKevlarPrice()); settings.add(lightKevlarSettings); - StringElement pepperSpraySettings = new StringElement(Equip.PEPPERSPRAY.getName(), unicacityAddon, new ControlElement.IconData(Material.LEVER), "EQUIP_PEPPERSPRAY_SETTING", ConfigElements.getPeppersprayPrice()); + StringElement pepperSpraySettings = new StringElement(Equip.PEPPER_SPRAY.getName(), unicacityAddon, new ControlElement.IconData(Material.LEVER), "EQUIP_PEPPERSPRAY_SETTING", ConfigElements.getPeppersprayPrice()); settings.add(pepperSpraySettings); StringElement mpSettings = new StringElement(Equip.MP5.getName(), unicacityAddon, new ControlElement.IconData(Material.GOLD_HOE), "EQUIP_MP5_SETTING", ConfigElements.getMP5Price()); @@ -85,10 +85,10 @@ static Settings getPoliceEquipSettings(UnicacityAddon unicacityAddon) { static Settings getSWATEquipSettings(UnicacityAddon unicacityAddon) { Settings settings = new Settings(); - StringElement heavyKevlarSettings = new StringElement(Equip.HEAVYKEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_SKEV_SETTING", ConfigElements.getHeavyKevlarPrice()); + StringElement heavyKevlarSettings = new StringElement(Equip.HEAVY_KEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_SKEV_SETTING", ConfigElements.getHeavyKevlarPrice()); settings.add(heavyKevlarSettings); - StringElement swatShieldSettings = new StringElement(Equip.SWATSHIELD.getName(), unicacityAddon, new ControlElement.IconData(Material.WOOD), "EQUIP_SWATSHIELD_SETTING", ConfigElements.getSwatShieldPrice()); + StringElement swatShieldSettings = new StringElement(Equip.SWAT_SHIELD.getName(), unicacityAddon, new ControlElement.IconData(Material.WOOD), "EQUIP_SWATSHIELD_SETTING", ConfigElements.getSwatShieldPrice()); settings.add(swatShieldSettings); StringElement flashBangSettings = new StringElement(Equip.FLASHBANG.getName(), unicacityAddon, new ControlElement.IconData(Material.SLIME_BALL), "EQUIP_FLASHBANG_SETTING", ConfigElements.getFlashBangPrice()); @@ -115,7 +115,7 @@ static Settings getFBIEquipSettings(UnicacityAddon unicacityAddon) { StringElement lightKevlarSettings = new StringElement(Equip.KEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_LKEV_SETTING", ConfigElements.getLightKevlarPrice()); settings.add(lightKevlarSettings); - StringElement pepperSpraySettings = new StringElement(Equip.PEPPERSPRAY.getName(), unicacityAddon, new ControlElement.IconData(Material.LEVER), "EQUIP_PEPPERSPRAY_SETTING", ConfigElements.getPeppersprayPrice()); + StringElement pepperSpraySettings = new StringElement(Equip.PEPPER_SPRAY.getName(), unicacityAddon, new ControlElement.IconData(Material.LEVER), "EQUIP_PEPPERSPRAY_SETTING", ConfigElements.getPeppersprayPrice()); settings.add(pepperSpraySettings); StringElement mpSettings = new StringElement(Equip.MP5.getName(), unicacityAddon, new ControlElement.IconData(Material.GOLD_HOE), "EQUIP_MP5_SETTING", ConfigElements.getMP5Price()); @@ -139,7 +139,7 @@ static Settings getFBIEquipSettings(UnicacityAddon unicacityAddon) { static Settings getHRTEquipSettings(UnicacityAddon unicacityAddon) { Settings settings = new Settings(); - StringElement heavyKevlarSettings = new StringElement(Equip.HEAVYKEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_SKEV_SETTING", ConfigElements.getHeavyKevlarPrice()); + StringElement heavyKevlarSettings = new StringElement(Equip.HEAVY_KEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_SKEV_SETTING", ConfigElements.getHeavyKevlarPrice()); settings.add(heavyKevlarSettings); StringElement flashBangSettings = new StringElement(Equip.FLASHBANG.getName(), unicacityAddon, new ControlElement.IconData(Material.SLIME_BALL), "EQUIP_FLASHBANG_SETTING", ConfigElements.getFlashBangPrice()); @@ -154,7 +154,7 @@ static Settings getHRTEquipSettings(UnicacityAddon unicacityAddon) { StringElement sniperSettings = new StringElement(Equip.SNIPER.getName(), unicacityAddon, new ControlElement.IconData(Material.STONE_HOE), "EQUIP_SNIPER_SETTING", ConfigElements.getSniperPrice()); settings.add(sniperSettings); - StringElement defuseKitSettings = new StringElement(Equip.DEFUSEKIT.getName(), unicacityAddon, new ControlElement.IconData(Material.GOLD_INGOT), "EQUIP_DEFUSEKIT_SETTING", ConfigElements.getDefuseKitPrice()); + StringElement defuseKitSettings = new StringElement(Equip.DEFUSE_KIT.getName(), unicacityAddon, new ControlElement.IconData(Material.GOLD_INGOT), "EQUIP_DEFUSEKIT_SETTING", ConfigElements.getDefuseKitPrice()); settings.add(defuseKitSettings); return settings; @@ -169,7 +169,7 @@ static Settings getMedicEquipSettings(UnicacityAddon unicacityAddon) { StringElement painKillerSettings = new StringElement(Equip.PAINKILLER.getName(), unicacityAddon, new ControlElement.IconData(Material.BLAZE_ROD), "EQUIP_PAINKILLER_SETTING", ConfigElements.getBandagePrice()); settings.add(painKillerSettings); - StringElement pepperSpraySettings = new StringElement(Equip.PEPPERSPRAY.getName(), unicacityAddon, new ControlElement.IconData(Material.LEVER), "EQUIP_PEPPERSPRAY_SETTING", ConfigElements.getPeppersprayPrice()); + StringElement pepperSpraySettings = new StringElement(Equip.PEPPER_SPRAY.getName(), unicacityAddon, new ControlElement.IconData(Material.LEVER), "EQUIP_PEPPERSPRAY_SETTING", ConfigElements.getPeppersprayPrice()); settings.add(pepperSpraySettings); StringElement syringeSettings = new StringElement(Equip.SYRINGE.getName(), unicacityAddon, new ControlElement.IconData(Material.IRON_FENCE), "EQUIP_SYRINGE_SETTING", ConfigElements.getSyringePrice()); @@ -241,7 +241,7 @@ static Settings getHitmanEquipSettings(UnicacityAddon unicacityAddon) { StringElement lightKevlarSettings = new StringElement(Equip.KEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_LKEV_SETTING", ConfigElements.getLightKevlarPrice()); settings.add(lightKevlarSettings); - StringElement heavyKevlarSettings = new StringElement(Equip.HEAVYKEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_SKEV_SETTING", ConfigElements.getHeavyKevlarPrice()); + StringElement heavyKevlarSettings = new StringElement(Equip.HEAVY_KEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_SKEV_SETTING", ConfigElements.getHeavyKevlarPrice()); settings.add(heavyKevlarSettings); StringElement lockpickSettings = new StringElement(Equip.LOCKPICK.getName(), unicacityAddon, new ControlElement.IconData(Material.GOLD_SWORD), "EQUIP_LOCKPICK_SETTING", ConfigElements.getHeavyKevlarPrice()); @@ -259,7 +259,7 @@ static Settings getTerrorEquipSettings(UnicacityAddon unicacityAddon) { StringElement lightKevlarSettings = new StringElement(Equip.KEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_LKEV_SETTING", ConfigElements.getLightKevlarPrice()); settings.add(lightKevlarSettings); - StringElement heavyKevlarSettings = new StringElement(Equip.HEAVYKEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_SKEV_SETTING", ConfigElements.getHeavyKevlarPrice()); + StringElement heavyKevlarSettings = new StringElement(Equip.HEAVY_KEVLAR.getName(), unicacityAddon, new ControlElement.IconData(Material.LEATHER_CHESTPLATE), "EQUIP_SKEV_SETTING", ConfigElements.getHeavyKevlarPrice()); settings.add(heavyKevlarSettings); StringElement mpSettings = new StringElement(Equip.MP5.getName(), unicacityAddon, new ControlElement.IconData(Material.GOLD_HOE), "EQUIP_MP5_SETTING", ConfigElements.getMP5Price()); diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/enums/faction/Equip.java b/src/main/java/com/rettichlp/unicacityaddon/base/enums/faction/Equip.java index 177e726e4..d52224dc3 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/enums/faction/Equip.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/enums/faction/Equip.java @@ -6,8 +6,8 @@ public enum Equip { BASI("Baseballschläger", "Baseballschläger", ConfigElements.getBaseballBatPrice()), DONUT("Donut", "Donuts", ConfigElements.getDonutPrice()), - KEVLAR("Leichte Kevlar", "Kevlar", ConfigElements.getLightKevlarPrice()), - HEAVYKEVLAR("Schwere Kevlar", "schwere Kevlar", ConfigElements.getHeavyKevlarPrice()), + KEVLAR("Leichte Kevlar", "leichte Kevlar", ConfigElements.getLightKevlarPrice()), + HEAVY_KEVLAR("Schwere Kevlar", "schwere Kevlar", ConfigElements.getHeavyKevlarPrice()), PISTOL("Pistole", "Pistole", ConfigElements.getPistolPrice()), MP5("MP5", "MP5", ConfigElements.getMP5Price()), BANDAGES("Bandagen", "Bandagen", ConfigElements.getBandagePrice()), @@ -15,11 +15,11 @@ public enum Equip { WATER("Wasser", "Wasser", ConfigElements.getWaterPrice()), SYRINGE("Spritzen", "Spritzen", ConfigElements.getSyringePrice()), BREAD("Brot", "Brote", ConfigElements.getBreadPrice()), - PEPPERSPRAY("Pfefferspray", "Pfefferspray", ConfigElements.getPeppersprayPrice()), + PEPPER_SPRAY("Pfefferspray", "Pfefferspray", ConfigElements.getPeppersprayPrice()), FIREEXTINGUISHER("Feuerlöscher", "Feuerlöscher", ConfigElements.getFireExtinguisherPrice()), AXE("Feuerwehraxt", "Feuerwehraxt", ConfigElements.getAxePrice()), HELMET("Helm", "Helm", ConfigElements.getHelmetPrice()), - SWATSHIELD("SWAT-Schild", "Einsatzschild", ConfigElements.getSwatShieldPrice()), + SWAT_SHIELD("SWAT-Schild", "Einsatzschild", ConfigElements.getSwatShieldPrice()), MASK("Maske", "Maske", ConfigElements.getMaskPrice()), FLASHBANG("Blendgranate", "Blendgranate", ConfigElements.getFlashBangPrice()), SMOKEGRENADE("Smoke", "Rauchgranate", ConfigElements.getSmokeGrenadePrice()), @@ -27,7 +27,7 @@ public enum Equip { CUFFS("Handschellen", "Handschellen", ConfigElements.getHandCuffPrice()), WINGSUIT("Elytra", "Fallschirm", ConfigElements.getWingsuitPrice()), SNIPER("Sniper", "Sniper", ConfigElements.getSniperPrice()), - DEFUSEKIT("Defuse Kit", "Defuse-Kit", ConfigElements.getDefuseKitPrice()), + DEFUSE_KIT("Defuse Kit", "Defuse-Kit", ConfigElements.getDefuseKitPrice()), TRACKER("Peilsender", "Peilsender", ConfigElements.getTrackerPrice()), EXPLOSIVEBELT("Sprenggürtel", "Sprenggürtel", ConfigElements.getExplosiveBeltPrice()), RPG7("RPG-7", "RPG-7", ConfigElements.getRPG7Price()), From 04b358d0f0bb2fa03562303d75e71b2d0fc958a5 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Thu, 9 Mar 2023 23:27:36 +0100 Subject: [PATCH 118/136] Fix wrong equip names in EquipEventHandler --- .../unicacityaddon/events/faction/EquipEventHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/EquipEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/EquipEventHandler.java index ef9384f5b..93871c6d6 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/EquipEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/EquipEventHandler.java @@ -25,7 +25,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { Matcher trackerMatcher = PatternHandler.TRACKER_PATTERN.matcher(msg); if (equipMatcher.find() || trackerMatcher.find()) { Equip equip = Arrays.stream(Equip.values()) - .filter(equip1 -> msg.contains(equip1.getMessageName())) + .filter(equip1 -> msg.toLowerCase().contains(equip1.getMessageName().toLowerCase())) .findFirst() .orElse(null); From 1f8ed7f0b81f9b64354e6787cf6f1f276164fa44 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Thu, 9 Mar 2023 23:35:14 +0100 Subject: [PATCH 119/136] Update APIResponseException --- .../base/api/exception/APIResponseException.java | 1 - .../unicacityaddon/base/utils/WebsiteUtils.java | 9 +++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java index b83bb3a2d..967e296e0 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java @@ -26,7 +26,6 @@ public APIResponseException(String urlString, int responseCode, String infoMessa public void sendInfoMessage() { UnicacityAddon.LOGGER.warn("APIResponseException - " + responseCode + " [" + urlString.replace(TokenManager.API_TOKEN, "TOKEN") + "]: " + infoMessage); - UnicacityAddon.debug("API EXCEPTION: " + infoMessage); LabyMod.getInstance().notifyMessageRaw(ColorCode.RED.getCode() + "API Fehler - " + responseCode, infoMessage); } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java b/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java index 1f9cd95b7..9fd77d81c 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java @@ -34,13 +34,14 @@ public static String sendRequest(String urlString) throws APIResponseException { boolean isApiRequest = urlString.startsWith("http://rettichlp.de:8888/unicacityaddon/v1/") && FileManager.isValidJson(websiteSource); - if (responseCode != HttpURLConnection.HTTP_OK) + if (responseCode == HttpURLConnection.HTTP_OK) { + UnicacityAddon.LOGGER.info("APIResponse - " + responseCode + " [" + urlString.replace(TokenManager.API_TOKEN, "TOKEN") + "]"); + return websiteSource; + } else { throw new APIResponseException(urlString, responseCode, isApiRequest ? new JsonParser().parse(websiteSource).getAsJsonObject().get("info").getAsString() : HttpResponseStatus.valueOf(responseCode).reasonPhrase()); - - UnicacityAddon.LOGGER.info("APIResponse - " + responseCode + " [" + urlString.replace(TokenManager.API_TOKEN, "TOKEN") + "]"); - return websiteSource; + } } public static String createUrl(boolean nonProd, ApplicationPath applicationPath, String subPath, Map parameter) { From 19a0968512e488935b3348585381a596d36dfd0e Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 10 Mar 2023 06:15:11 +0100 Subject: [PATCH 120/136] Update notifications in Syncer, code cleanup, update toplist command to match with database migration --- .../unicacityaddon/base/api/Syncer.java | 25 ++++++++----------- .../base/api/request/APIRequest.java | 17 ------------- .../commands/api/TopListCommand.java | 14 +++-------- 3 files changed, 15 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java index 3a4072dd5..a97650414 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java @@ -39,31 +39,28 @@ public static void syncAll() { Thread t2 = syncPlayerFactionData(); Thread t3 = new Thread(() -> { - HOUSEBANLIST = getHouseBanEntryList(); - LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Hausverbote aktualisiert."); + if (!(HOUSEBANLIST = getHouseBanEntryList()).isEmpty()) + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Hausverbote aktualisiert."); }); Thread t4 = new Thread(() -> { - HOUSEBANREASONLIST = getHouseBanReasonEntryList(); - LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Hausverbot-Gründe aktualisiert."); + if (!(HOUSEBANREASONLIST = getHouseBanReasonEntryList()).isEmpty()) + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Hausverbot-Gründe aktualisiert."); }); - Thread t5 = new Thread(() -> { - NAVIPOINTLIST = getNaviPointEntryList(); - LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Navipunkte aktualisiert."); + if (!(NAVIPOINTLIST = getNaviPointEntryList()).isEmpty()) + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Navipunkte aktualisiert."); }); - Thread t6 = new Thread(() -> { - BLACKLISTREASONLIST = getBlacklistReasonEntryList(); - LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Blacklist Gründe aktualisiert."); + if (!(BLACKLISTREASONLIST = getBlacklistReasonEntryList()).isEmpty()) + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Blacklist-Gründe aktualisiert."); }); - Thread t7 = new Thread(() -> { - WANTEDREASONLIST = getWantedReasonEntryList(); - LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Wanted-Gründe aktualisiert."); + if (!(WANTEDREASONLIST = getWantedReasonEntryList()).isEmpty()) + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Wanted-Gründe aktualisiert."); }); try { @@ -104,7 +101,7 @@ private static Thread syncPlayerAddonGroupMap() { } } } - LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Addon Gruppen aktualisiert."); + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Addon-Gruppen aktualisiert."); }); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java index cd3f76bd7..99e16d692 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java @@ -19,7 +19,6 @@ public class APIRequest { private static final String REMOVE_SUB_PATH = "remove"; private static final String QUEUE_SUB_PATH = "queue"; private static final String SEND_SUB_PATH = "send"; - private static final String GROUPS_SUB_PATH = "groups"; private static final String TOP_SUB_PATH = "top"; private static final String CREATE_SUB_PATH = "create"; private static final String REVOKE_SUB_PATH = "revoke"; @@ -213,14 +212,6 @@ public static JsonObject sendPlayerRemoveRequest(String name, String group) { .getAsJsonObject(); } - public static JsonArray sendPlayerGroupRequest() { - return RequestBuilder.getBuilder() - .nonProd(NON_PROD) - .applicationPath(ApplicationPath.PLAYER) - .subPath(GROUPS_SUB_PATH) - .getAsJsonArray(); - } - public static JsonObject sendStatisticRequest() { return RequestBuilder.getBuilder() .nonProd(NON_PROD) @@ -229,14 +220,6 @@ public static JsonObject sendStatisticRequest() { .getAsJsonObject(); } - public static JsonObject sendStatisticRequest(String name) { - return RequestBuilder.getBuilder() - .nonProd(NON_PROD) - .applicationPath(ApplicationPath.STATISTIC) - .subPath(name) - .getAsJsonObject(); - } - public static void sendStatisticAddRequest(StatisticType statisticType) { RequestBuilder.getBuilder() .nonProd(NON_PROD) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/TopListCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/TopListCommand.java index 89b2251a4..dc2959e72 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/TopListCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/TopListCommand.java @@ -75,14 +75,8 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen kdJsonArray.forEach(jsonElement -> { String name = jsonElement.getAsJsonObject().get("name").getAsString(); String kd = DECIMAL_FORMAT.format(jsonElement.getAsJsonObject().get("value").getAsFloat()); - - JsonObject statisticResponse = APIRequest.sendStatisticRequest(name); - if (statisticResponse == null) - return; - - JsonObject gameplayJsonObject = statisticResponse.getAsJsonObject("gameplay"); - int deaths = gameplayJsonObject.get("deaths").getAsInt(); - int kills = gameplayJsonObject.get("kills").getAsInt(); + String deaths = String.valueOf(jsonElement.getAsJsonObject().get("deaths").getAsInt()); + String kills = String.valueOf(jsonElement.getAsJsonObject().get("kills").getAsInt()); place.getAndIncrement(); p.sendMessage(Message.getBuilder() @@ -91,9 +85,9 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen .of(name).color(ColorCode.AQUA) .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder() .of("Tode:").color(ColorCode.GRAY).advance().space() - .of(String.valueOf(deaths)).color(ColorCode.RED).advance().newline() + .of(deaths).color(ColorCode.RED).advance().newline() .of("Kills:").color(ColorCode.GRAY).advance().space() - .of(String.valueOf(kills)).color(ColorCode.RED).advance() + .of(kills).color(ColorCode.RED).advance() .createComponent()) .advance().space() .of("-").color(ColorCode.GRAY).advance().space() From 21cc62c0471885767144d6ec1a33cc64c51eea82 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 10 Mar 2023 08:59:24 +0100 Subject: [PATCH 121/136] Add prioritized member check and has gangwar to UPlayer, add api requests, update GangwarEventHandler --- .../base/abstraction/UPlayer.java | 2 + .../base/abstraction/UPlayerImpl.java | 35 +++++++- .../base/api/request/APIRequest.java | 17 +++- .../base/enums/api/ApplicationPath.java | 2 +- .../base/utils/UpdateUtils.java | 19 ++++ .../base/utils/WebsiteUtils.java | 2 +- .../events/GangwarEventHandler.java | 87 +++---------------- 7 files changed, 83 insertions(+), 81 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayer.java b/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayer.java index 3fe2a04d9..a96a4c27d 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayer.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayer.java @@ -75,4 +75,6 @@ public interface UPlayer { boolean isSuperUser(); boolean hasGangwar(); + + boolean isPrioritizedMember(); } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayerImpl.java b/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayerImpl.java index e4e421e2e..e8c46acf5 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayerImpl.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/abstraction/UPlayerImpl.java @@ -9,7 +9,9 @@ import com.rettichlp.unicacityaddon.base.registry.SoundRegistry; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; +import com.rettichlp.unicacityaddon.base.utils.ForgeUtils; import com.rettichlp.unicacityaddon.base.utils.NavigationUtils; +import com.rettichlp.unicacityaddon.base.utils.UpdateUtils; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.inventory.Container; import net.minecraft.scoreboard.Scoreboard; @@ -23,8 +25,9 @@ import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; -import java.util.Arrays; +import java.util.Map; import java.util.UUID; +import java.util.stream.Collectors; /** * @author RettichLP @@ -159,7 +162,9 @@ public Faction getFaction() { } @Override - public boolean inDuty() {return FactionManager.checkPlayerDuty(getName());} + public boolean inDuty() { + return FactionManager.checkPlayerDuty(getName()); + } @Override public int getRank() { @@ -207,6 +212,30 @@ public boolean isSuperUser() { @Override public boolean hasGangwar() { - return getWorldScoreboard().getObjectiveNames().containsAll(Arrays.asList("Angreifer", "Verteidiger")); + return getWorldScoreboard().getObjectiveNames().stream() + .anyMatch(s -> s.contains("Angreifer") || s.contains("Verteidiger")); + } + + @Override + public boolean isPrioritizedMember() { + Map filteredPlayerMap = Syncer.PLAYERFACTIONMAP.entrySet().stream() + .filter(e -> e.getValue().equals(getFaction())) // name and faction from faction + .map(Map.Entry::getKey) // name of players from faction + .filter(s -> ForgeUtils.getOnlinePlayers().contains(s)) // is online + .filter(UpdateUtils::hasPlayerLatestAddonVersion) // has supported addon version + .collect(Collectors.toMap(s -> s, Syncer.PLAYERRANKMAP::get)); // collect name and rank of players from faction + + boolean hasAnyPlayerHigherRank = filteredPlayerMap.entrySet().stream() + .anyMatch(stringIntegerEntry -> stringIntegerEntry.getValue() > getRank()); // has a higher rank than himself + + boolean hasRankPriority = filteredPlayerMap.entrySet().stream() + .filter(stringIntegerEntry -> stringIntegerEntry.getValue().equals(getRank())) + .map(Map.Entry::getKey) + .sorted() + .collect(Collectors.toList()) + .get(0) + .equals(getName()); + + return !hasAnyPlayerHigherRank && hasRankPriority; } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java index b38b36bc1..52030487a 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java @@ -25,6 +25,8 @@ public class APIRequest { private static final String REVOKE_SUB_PATH = "revoke"; private static final String DONE_SUB_PATH = "done"; private static final String USERS_SUB_PATH = "users"; + private static final String BOMB_SUB_PATH = "bomb"; + private static final String GANGWAR_SUB_PATH = "gangwar"; public static void sendBannerAddRequest(Faction faction, int x, int y, int z, String navipoint) { RequestBuilder.getBuilder() @@ -88,10 +90,21 @@ public static JsonObject sendBroadcastSendRequest(String message, String sendTim .getAsJsonObject(); } - public static void sendGangwarDataRequest(int attacker, int defender) { + public static void sendEventBombRequest(long startTime) { RequestBuilder.getBuilder() .nonProd(NON_PROD) - .applicationPath(ApplicationPath.GANGWAR) + .applicationPath(ApplicationPath.EVENT) + .subPath(BOMB_SUB_PATH) + .parameter(mapOf( + "startTime", String.valueOf(startTime))) + .sendAsync(); + } + + public static void sendEventGangwarRequest(int attacker, int defender) { + RequestBuilder.getBuilder() + .nonProd(NON_PROD) + .applicationPath(ApplicationPath.EVENT) + .subPath(GANGWAR_SUB_PATH) .parameter(mapOf( "attacker", String.valueOf(attacker), "defender", String.valueOf(defender))) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java b/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java index 147e6a3e3..0f7f8da45 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java @@ -5,7 +5,7 @@ public enum ApplicationPath { BANNER("/banner"), BLACKLISTREASON("/blacklistreason"), BROADCAST("/broadcast"), - GANGWAR("/gangwar"), + EVENT("/event"), HOUSEBAN("/houseban"), HOUSEBANREASON("/housebanreason"), MANAGEMENT("/mgmt"), diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java b/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java index 5bc401f7b..4734a8df3 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java @@ -1,5 +1,6 @@ package com.rettichlp.unicacityaddon.base.utils; +import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; @@ -18,6 +19,7 @@ import java.io.IOException; import java.net.URL; import java.nio.charset.Charset; +import java.util.concurrent.atomic.AtomicBoolean; /** * @author RettichLP @@ -153,4 +155,21 @@ private static String getLatestVersion() { JsonObject response = APIRequest.sendManagementRequest(); return response != null ? response.get("latestVersion").getAsString() : UnicacityAddon.VERSION; } + + public static boolean hasPlayerLatestAddonVersion(String name) { + AtomicBoolean accept = new AtomicBoolean(false); + JsonArray response = APIRequest.sendManagementUserRequest(); + if (response != null) { + response.forEach(jsonElement -> { + if (!accept.get()) { + String uuid = UnicacityAddon.MINECRAFT.getConnection().getPlayerInfo(name).getGameProfile().getId().toString().replace("-", ""); + JsonObject jsonObject = jsonElement.getAsJsonObject(); + boolean hasAddon = jsonObject.get("uuid").getAsString().equals(uuid); + boolean hasVersion = jsonObject.get("version").getAsString().equals(latestVersion) || jsonObject.get("version").getAsString().contains("dev"); + accept.set(hasAddon && hasVersion); + } + }); + } + return accept.get(); + } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java b/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java index 1f9cd95b7..ae6fc0759 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java @@ -93,7 +93,7 @@ private static String getWebsiteSource(HttpURLConnection httpURLConnection) thro websiteSource.append(scanner.nextLine()).append("\n\r"); return websiteSource.toString(); } catch (IOException e) { - throw new APIResponseException(httpURLConnection.getURL().toString(), HttpURLConnection.HTTP_INTERNAL_ERROR); + throw new APIResponseException(httpURLConnection.getURL().toString(), HttpURLConnection.HTTP_NOT_FOUND); } } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/GangwarEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/GangwarEventHandler.java index be8064a08..4a0df6494 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/GangwarEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/GangwarEventHandler.java @@ -1,22 +1,12 @@ package com.rettichlp.unicacityaddon.events; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; -import com.rettichlp.unicacityaddon.base.api.Syncer; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; -import com.rettichlp.unicacityaddon.base.utils.ForgeUtils; -import com.rettichlp.unicacityaddon.base.utils.UpdateUtils; import net.minecraft.scoreboard.Score; import net.minecraft.scoreboard.Scoreboard; -import java.util.Arrays; -import java.util.Map; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.stream.Collectors; - /** * @author RettichLP */ @@ -25,72 +15,21 @@ public class GangwarEventHandler { public static void sendData() { UPlayer p = AbstractionLayer.getPlayer(); - if (UnicacityAddon.isUnicacity() && p.hasGangwar() && isDataSender()) { + if (UnicacityAddon.isUnicacity() && p.hasGangwar() && p.isPrioritizedMember()) { Scoreboard scoreboard = p.getWorldScoreboard(); - if (scoreboard.getObjectiveNames().containsAll(Arrays.asList("Angreifer", "Verteidiger"))) { - Score attackerScore = scoreboard.getScores().stream() - .filter(score -> score.getPlayerName().contains("Angreifer:")) - .findFirst() - .orElse(null); - - Score defenderScore = scoreboard.getScores().stream() - .filter(score -> score.getPlayerName().contains("Verteidiger:")) - .findFirst() - .orElse(null); - - if (attackerScore != null && defenderScore != null) { - APIRequest.sendGangwarDataRequest(attackerScore.getScorePoints(), defenderScore.getScorePoints()); - } + Score attackerScore = scoreboard.getScores().stream() + .filter(score -> score.getPlayerName().contains("Angreifer")) + .findFirst() + .orElse(null); + + Score defenderScore = scoreboard.getScores().stream() + .filter(score -> score.getPlayerName().contains("Verteidiger")) + .findFirst() + .orElse(null); + + if (attackerScore != null && defenderScore != null) { + APIRequest.sendEventGangwarRequest(attackerScore.getScorePoints(), defenderScore.getScorePoints()); } } } - - private static boolean isDataSender() { - UPlayer p = AbstractionLayer.getPlayer(); - int rank = p.getRank(); - - Map filteredPlayerMap = Syncer.PLAYERFACTIONMAP.entrySet().stream() - .filter(e -> e.getValue().equals(p.getFaction())) // name and faction from faction - .map(Map.Entry::getKey) // name of players from faction - .filter(s -> ForgeUtils.getOnlinePlayers().contains(s)) // is online - .filter(GangwarEventHandler::hasSupportedAddonVersion) // has supported addon version - .collect(Collectors.toMap(s -> s, Syncer.PLAYERRANKMAP::get)); // collect name and rank of players from faction - - UnicacityAddon.debug(filteredPlayerMap.keySet().toString()); - - boolean hasAnyPlayerHigherRank = filteredPlayerMap.entrySet().stream() - .anyMatch(stringIntegerEntry -> stringIntegerEntry.getValue() > rank); // has a higher rank than himself - - UnicacityAddon.debug("ANY HIGHER RANK: " + hasAnyPlayerHigherRank); - - boolean hasRankPriority = filteredPlayerMap.entrySet().stream() - .filter(stringIntegerEntry -> stringIntegerEntry.getValue().equals(rank)) - .map(Map.Entry::getKey) - .sorted() - .collect(Collectors.toList()) - .get(0) - .equals(p.getName()); - - UnicacityAddon.debug("RANK PRIORITY: " + hasRankPriority); - - UnicacityAddon.debug("IS SENDER: " + (!hasAnyPlayerHigherRank && hasRankPriority)); - return !hasAnyPlayerHigherRank && hasRankPriority; - } - - private static boolean hasSupportedAddonVersion(String name) { - JsonArray response = APIRequest.sendManagementUserRequest(); - AtomicBoolean accept = new AtomicBoolean(false); - if (response != null) { - response.forEach(jsonElement -> { - if (!accept.get()) { - String uuid = UnicacityAddon.MINECRAFT.getConnection().getPlayerInfo(name).getGameProfile().getId().toString().replace("-", ""); - JsonObject jsonObject = jsonElement.getAsJsonObject(); - boolean hasAddon = jsonObject.get("uuid").getAsString().equals(uuid); - boolean hasVersion = jsonObject.get("version").getAsString().equals(UpdateUtils.latestVersion); - accept.set(hasAddon && hasVersion); - } - }); - } - return accept.get(); - } } \ No newline at end of file From 556662605c8f25432edf44b8284f54ad34ce0ae3 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Fri, 10 Mar 2023 09:26:40 +0100 Subject: [PATCH 122/136] requested changes Co-authored-by: RettichLP <97811064+rettichlp@users.noreply.github.com> --- .../events/faction/terroristen/BombTimerEventHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java index f135e8458..bdb100398 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/terroristen/BombTimerEventHandler.java @@ -27,7 +27,7 @@ public class BombTimerEventHandler { private static String location; - public static int activeBomb = 0; + public static int activeBomb = -1; @SubscribeEvent public void onClientChatReceived(ClientChatReceivedEvent e) { From a9a77e1623d8266a05ebc4b7e65b210af671c5bf Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 10 Mar 2023 09:42:24 +0100 Subject: [PATCH 123/136] Load management users once --- .../unicacityaddon/base/api/Syncer.java | 111 ++++++++++-------- .../base/api/checks/BroadcastChecker.java | 2 +- .../base/models/ManagementUser.java | 13 ++ .../base/utils/UpdateUtils.java | 24 ++-- 4 files changed, 81 insertions(+), 69 deletions(-) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/base/models/ManagementUser.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java index a97650414..eed367f1c 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java @@ -11,6 +11,7 @@ import com.rettichlp.unicacityaddon.base.models.Broadcast; import com.rettichlp.unicacityaddon.base.models.HouseBan; import com.rettichlp.unicacityaddon.base.models.HouseBanReason; +import com.rettichlp.unicacityaddon.base.models.ManagementUser; import com.rettichlp.unicacityaddon.base.models.NaviPoint; import com.rettichlp.unicacityaddon.base.models.WantedReason; import com.rettichlp.unicacityaddon.base.text.ColorCode; @@ -27,66 +28,55 @@ public class Syncer { public static final Map PLAYERFACTIONMAP = new HashMap<>(); public static final Map PLAYERRANKMAP = new HashMap<>(); + public static List BLACKLISTREASONLIST = new ArrayList<>(); public static List HOUSEBANLIST = new ArrayList<>(); public static List HOUSEBANREASONLIST = new ArrayList<>(); + public static List MANAGEMENTUSERLIST = new ArrayList<>(); public static List NAVIPOINTLIST = new ArrayList<>(); - public static List BLACKLISTREASONLIST = new ArrayList<>(); public static List WANTEDREASONLIST = new ArrayList<>(); public static void syncAll() { - new Thread(() -> { - Thread t1 = syncPlayerAddonGroupMap(); - Thread t2 = syncPlayerFactionData(); + Thread t1 = syncPlayerAddonGroupMap(); + Thread t2 = syncPlayerFactionData(); - Thread t3 = new Thread(() -> { - if (!(HOUSEBANLIST = getHouseBanEntryList()).isEmpty()) - LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Hausverbote aktualisiert."); - }); + try { + t1.start(); + t1.join(); - Thread t4 = new Thread(() -> { - if (!(HOUSEBANREASONLIST = getHouseBanReasonEntryList()).isEmpty()) - LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Hausverbot-Gründe aktualisiert."); - }); - - Thread t5 = new Thread(() -> { - if (!(NAVIPOINTLIST = getNaviPointEntryList()).isEmpty()) - LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Navipunkte aktualisiert."); - }); - - Thread t6 = new Thread(() -> { - if (!(BLACKLISTREASONLIST = getBlacklistReasonEntryList()).isEmpty()) - LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Blacklist-Gründe aktualisiert."); - }); + t2.start(); + t2.join(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } - Thread t7 = new Thread(() -> { - if (!(WANTEDREASONLIST = getWantedReasonEntryList()).isEmpty()) - LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Wanted-Gründe aktualisiert."); - }); - - try { - t1.start(); - t1.join(); - - t2.start(); - t2.join(); + new Thread(() -> { + if (!(HOUSEBANLIST = getHouseBanList()).isEmpty()) + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Hausverbote aktualisiert."); + }).start(); - t3.start(); - t3.join(); + new Thread(() -> { + if (!(HOUSEBANREASONLIST = getHouseBanReasonList()).isEmpty()) + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Hausverbot-Gründe aktualisiert."); + }).start(); - t4.start(); - t4.join(); + new Thread(() -> { + if (!(MANAGEMENTUSERLIST = getManagementUserList()).isEmpty()) + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Management-User aktualisiert."); + }).start(); - t5.start(); - t5.join(); + new Thread(() -> { + if (!(NAVIPOINTLIST = getNaviPointList()).isEmpty()) + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Navipunkte aktualisiert."); + }).start(); - t6.start(); - t6.join(); + new Thread(() -> { + if (!(BLACKLISTREASONLIST = getBlacklistReasonList()).isEmpty()) + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Blacklist-Gründe aktualisiert."); + }).start(); - t7.start(); - t7.join(); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } + new Thread(() -> { + if (!(WANTEDREASONLIST = getWantedReasonList()).isEmpty()) + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Wanted-Gründe aktualisiert."); }).start(); } @@ -126,7 +116,7 @@ private static Thread syncPlayerFactionData() { }); } - private static List getBlacklistReasonEntryList() { + private static List getBlacklistReasonList() { JsonArray response = APIRequest.sendBlacklistReasonRequest(); if (response == null) return new ArrayList<>(); @@ -143,7 +133,7 @@ private static List getBlacklistReasonEntryList() { return blacklistReasonList; } - public static List getBroadcastEntryList() { + public static List getBroadcastList() { JsonArray response = APIRequest.sendBroadcastQueueRequest(); if (response == null) return new ArrayList<>(); @@ -163,7 +153,7 @@ public static List getBroadcastEntryList() { return broadcastList; } - private static List getHouseBanEntryList() { + private static List getHouseBanList() { JsonArray response = APIRequest.sendHouseBanRequest(AbstractionLayer.getPlayer().getFaction().equals(Faction.RETTUNGSDIENST)); if (response == null) return new ArrayList<>(); @@ -194,7 +184,7 @@ private static List getHouseBanEntryList() { return houseBanList; } - private static List getHouseBanReasonEntryList() { + private static List getHouseBanReasonList() { JsonArray response = APIRequest.sendHouseBanReasonRequest(); if (response == null) return new ArrayList<>(); @@ -212,7 +202,24 @@ private static List getHouseBanReasonEntryList() { return houseBanReasonList; } - private static List getNaviPointEntryList() { + private static List getManagementUserList() { + JsonArray response = APIRequest.sendManagementUserRequest(); + if (response == null) + return new ArrayList<>(); + List managementUserList = new ArrayList<>(); + response.forEach(jsonElement -> { + JsonObject o = jsonElement.getAsJsonObject(); + + boolean active = o.get("active").getAsBoolean(); + String uuid = o.get("uuid").getAsString(); + String version = o.get("version").getAsString(); + + managementUserList.add(new ManagementUser(active, uuid, version)); + }); + return managementUserList; + } + + private static List getNaviPointList() { JsonArray response = APIRequest.sendNaviPointRequest(); if (response == null) return new ArrayList<>(); @@ -231,7 +238,7 @@ private static List getNaviPointEntryList() { return naviPointList; } - private static List getWantedReasonEntryList() { + private static List getWantedReasonList() { JsonArray response = APIRequest.sendWantedReasonRequest(); if (response == null) return new ArrayList<>(); diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/checks/BroadcastChecker.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/checks/BroadcastChecker.java index 638bd637f..4ebf34d43 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/checks/BroadcastChecker.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/checks/BroadcastChecker.java @@ -20,7 +20,7 @@ public class BroadcastChecker { public static void checkForBroadcast() { new Thread(() -> { - for (Broadcast broadcast : Syncer.getBroadcastEntryList()) { + for (Broadcast broadcast : Syncer.getBroadcastList()) { if (broadcast.getSendTime() < System.currentTimeMillis()) continue; if (receivedBroadcasts.contains(broadcast.getId())) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/ManagementUser.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/ManagementUser.java new file mode 100644 index 000000000..902d7b23b --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/ManagementUser.java @@ -0,0 +1,13 @@ +package com.rettichlp.unicacityaddon.base.models; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public class ManagementUser { + + private final boolean active; + private final String uuid; + private final String version; +} \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java b/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java index 4734a8df3..0fc66ba26 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java @@ -1,12 +1,13 @@ package com.rettichlp.unicacityaddon.base.utils; -import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.api.Syncer; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.config.ConfigElements; +import com.rettichlp.unicacityaddon.base.models.ManagementUser; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; import net.labymod.main.LabyMod; @@ -19,7 +20,7 @@ import java.io.IOException; import java.net.URL; import java.nio.charset.Charset; -import java.util.concurrent.atomic.AtomicBoolean; +import java.util.Optional; /** * @author RettichLP @@ -157,19 +158,10 @@ private static String getLatestVersion() { } public static boolean hasPlayerLatestAddonVersion(String name) { - AtomicBoolean accept = new AtomicBoolean(false); - JsonArray response = APIRequest.sendManagementUserRequest(); - if (response != null) { - response.forEach(jsonElement -> { - if (!accept.get()) { - String uuid = UnicacityAddon.MINECRAFT.getConnection().getPlayerInfo(name).getGameProfile().getId().toString().replace("-", ""); - JsonObject jsonObject = jsonElement.getAsJsonObject(); - boolean hasAddon = jsonObject.get("uuid").getAsString().equals(uuid); - boolean hasVersion = jsonObject.get("version").getAsString().equals(latestVersion) || jsonObject.get("version").getAsString().contains("dev"); - accept.set(hasAddon && hasVersion); - } - }); - } - return accept.get(); + Optional managementUserOptional = Syncer.MANAGEMENTUSERLIST.stream() + .filter(mu -> mu.getUuid().equals(UnicacityAddon.MINECRAFT.getConnection().getPlayerInfo(name).getGameProfile().getId().toString().replace("-", ""))) + .findAny(); + + return managementUserOptional.isPresent() && (managementUserOptional.get().getVersion().equals(latestVersion) || managementUserOptional.get().getVersion().contains("dev")); } } \ No newline at end of file From 0ce77c75de60daeb08b107955810516e16382d85 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 10 Mar 2023 20:39:55 +0100 Subject: [PATCH 124/136] Update kevlar logic in EquipEventHandler --- .../base/enums/faction/Equip.java | 2 +- .../base/text/PatternHandler.java | 2 +- .../base/utils/WebsiteUtils.java | 7 ++--- .../events/faction/EquipEventHandler.java | 26 ++++++++++++------- 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/enums/faction/Equip.java b/src/main/java/com/rettichlp/unicacityaddon/base/enums/faction/Equip.java index d52224dc3..9d0cf34bb 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/enums/faction/Equip.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/enums/faction/Equip.java @@ -6,7 +6,7 @@ public enum Equip { BASI("Baseballschläger", "Baseballschläger", ConfigElements.getBaseballBatPrice()), DONUT("Donut", "Donuts", ConfigElements.getDonutPrice()), - KEVLAR("Leichte Kevlar", "leichte Kevlar", ConfigElements.getLightKevlarPrice()), + KEVLAR("Leichte Kevlar", "Kevlar", ConfigElements.getLightKevlarPrice()), HEAVY_KEVLAR("Schwere Kevlar", "schwere Kevlar", ConfigElements.getHeavyKevlarPrice()), PISTOL("Pistole", "Pistole", ConfigElements.getPistolPrice()), MP5("MP5", "MP5", ConfigElements.getMP5Price()), diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 9ef29609e..c006900f3 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -299,7 +299,7 @@ public class PatternHandler { * @see com.rettichlp.unicacityaddon.events.faction.EquipEventHandler */ public static final Pattern TRACKER_PATTERN = Pattern.compile("^Du hast einen Peilsender an (?:\\[UC])*(\\w+) befestigt\\.$"); - public static final Pattern EQUIP_PATTERN = Pattern.compile("^(|\\[Equip] )Du hast (dir|dich mit) (|ein |eine |einen |einem )([a-zA-Z-äöüßÄÖÜ ]+) equip(|p)t[!.]$"); + public static final Pattern EQUIP_PATTERN = Pattern.compile("^(?:|\\[Equip] )Du hast (?:dir|dich mit) (?:|ein|eine|einen|einem) (.+) equip(?:|p)t[!.]$"); public static final Pattern EQUIP_INTERRUPTED_PATTERN = Pattern.compile("^\\[Equip] Du bist nicht im Dienst\\.$"); /** diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java b/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java index 7435a8a8d..496a86fa8 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/utils/WebsiteUtils.java @@ -28,7 +28,7 @@ public class WebsiteUtils { public static String sendRequest(String urlString) throws APIResponseException { Map.Entry httpURLConnection = getHttpURLConnection(urlString); - String websiteSource = getWebsiteSource(httpURLConnection.getKey()); + String websiteSource = getWebsiteSource(httpURLConnection); int responseCode = httpURLConnection.getValue(); @@ -86,7 +86,8 @@ private static Map.Entry getHttpURLConnection(String throw new APIResponseException("URL is null or empty", HttpURLConnection.HTTP_NOT_FOUND); } - private static String getWebsiteSource(HttpURLConnection httpURLConnection) throws APIResponseException { + private static String getWebsiteSource(Map.Entry httpURLConnectionIntegerEntry) throws APIResponseException { + HttpURLConnection httpURLConnection = httpURLConnectionIntegerEntry.getKey(); try { StringBuilder websiteSource = new StringBuilder(); Scanner scanner = new Scanner(new InputStreamReader(httpURLConnection.getInputStream(), StandardCharsets.UTF_8)); @@ -94,7 +95,7 @@ private static String getWebsiteSource(HttpURLConnection httpURLConnection) thro websiteSource.append(scanner.nextLine()).append("\n\r"); return websiteSource.toString(); } catch (IOException e) { - throw new APIResponseException(httpURLConnection.getURL().toString(), HttpURLConnection.HTTP_NOT_FOUND); + throw new APIResponseException(httpURLConnection.getURL().toString(), httpURLConnectionIntegerEntry.getValue()); } } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/EquipEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/EquipEventHandler.java index 93871c6d6..1a834e3c2 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/EquipEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/EquipEventHandler.java @@ -9,10 +9,12 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import java.util.Arrays; +import java.util.Optional; import java.util.regex.Matcher; /** * @author Dimiikou + * @author RettichLP */ @UCEvent public class EquipEventHandler { @@ -22,18 +24,24 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { String msg = e.getMessage().getUnformattedText(); Matcher equipMatcher = PatternHandler.EQUIP_PATTERN.matcher(msg); - Matcher trackerMatcher = PatternHandler.TRACKER_PATTERN.matcher(msg); - if (equipMatcher.find() || trackerMatcher.find()) { - Equip equip = Arrays.stream(Equip.values()) - .filter(equip1 -> msg.toLowerCase().contains(equip1.getMessageName().toLowerCase())) - .findFirst() - .orElse(null); - - if (equip != null) { - FileManager.DATA.addEquipToEquipMap(equip); + if (equipMatcher.find()) { + String equipString = equipMatcher.group(1); + + Optional equipOptional = Arrays.stream(Equip.values()) + .filter(eq -> eq.getMessageName().equalsIgnoreCase(equipString)) + .findAny(); + + if (equipOptional.isPresent()) { + FileManager.DATA.addEquipToEquipMap(equipOptional.get()); } else { AbstractionLayer.getPlayer().sendErrorMessage("Equip wurde nicht gefunden."); } + return; + } + + Matcher trackerMatcher = PatternHandler.TRACKER_PATTERN.matcher(msg); + if (trackerMatcher.find()) { + FileManager.DATA.addEquipToEquipMap(Equip.TRACKER); } } } \ No newline at end of file From 90a348c90d1c087d57a86ea958f3a62b7a73aae1 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 10 Mar 2023 21:37:21 +0100 Subject: [PATCH 125/136] Fix PrayEventHandler --- .../unicacityaddon/events/faction/kirche/PrayEventHandler.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/kirche/PrayEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/kirche/PrayEventHandler.java index 8b966417b..5a3f35e09 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/kirche/PrayEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/kirche/PrayEventHandler.java @@ -2,6 +2,7 @@ import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.PatternHandler; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -11,6 +12,7 @@ import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; +@UCEvent public class PrayEventHandler { @SubscribeEvent From 12a1b709efe8064384bc96d6def21c3d6596d5a6 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Fri, 10 Mar 2023 23:28:35 +0100 Subject: [PATCH 126/136] config entry default - false --- .../unicacityaddon/base/config/ConfigElements.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java index 0a0d1ee3b..225ca1934 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java @@ -408,7 +408,13 @@ public static boolean getPlantBurnMessageActivated() { // BombScreenshot public static boolean getAutomatedBombScreenshot() { - return !UnicacityAddon.ADDON.getConfig().has("AUTOMATED_BOMB_SCREEN_SETTINGS") || UnicacityAddon.ADDON.getConfig().get("AUTOMATED_BOMB_SCREEN_SETTINGS") + return !UnicacityAddon.ADDON.getConfig().has("AUTOMATED_BOMB_SCREEN_SETTINGS") && UnicacityAddon.ADDON.getConfig().get("AUTOMATED_BOMB_SCREEN_SETTINGS") + .getAsBoolean(); // default = false + } + + // Revive Screenshot + public static boolean getAutomatedReviveScreenshot() { + return !UnicacityAddon.ADDON.getConfig().has("AUTOMATED_REVIVE_SCREEN_SETTINGS") || UnicacityAddon.ADDON.getConfig().get("AUTOMATED_REVIVE_SCREEN_SETTINGS") .getAsBoolean(); // default = true } From 6c1fa180f4ef1e64b7ed43fdce0aa5b41d81cb65 Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Fri, 10 Mar 2023 23:30:04 +0100 Subject: [PATCH 127/136] remove automatedrevive from config --- .../unicacityaddon/base/config/ConfigElements.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java index 225ca1934..e0f7ee194 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java @@ -412,12 +412,6 @@ public static boolean getAutomatedBombScreenshot() { .getAsBoolean(); // default = false } - // Revive Screenshot - public static boolean getAutomatedReviveScreenshot() { - return !UnicacityAddon.ADDON.getConfig().has("AUTOMATED_REVIVE_SCREEN_SETTINGS") || UnicacityAddon.ADDON.getConfig().get("AUTOMATED_REVIVE_SCREEN_SETTINGS") - .getAsBoolean(); // default = true - } - // BetterWantedList public static boolean getBetterWantedList() { return !UnicacityAddon.ADDON.getConfig().has("BETTER_WANTED_LIST_SETTINGS") || UnicacityAddon.ADDON.getConfig().get("BETTER_WANTED_LIST_SETTINGS") @@ -644,4 +638,4 @@ public static boolean getRenderAddonGroupTag() { return !UnicacityAddon.ADDON.getConfig().has("RENDER_ADDON_GROUP_TAG_SETTINGS") || UnicacityAddon.ADDON.getConfig().get("RENDER_ADDON_GROUP_TAG_SETTINGS") .getAsBoolean(); // default = true } -} \ No newline at end of file +} From 37390d986809f05047c8863a83d8ab5d3e268cb6 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 10 Mar 2023 23:40:12 +0100 Subject: [PATCH 128/136] Fix KarmaMessageEventHandler --- .../unicacityaddon/events/KarmaMessageEventHandler.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/KarmaMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/KarmaMessageEventHandler.java index 0ffdc38ea..28f03034e 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/KarmaMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/KarmaMessageEventHandler.java @@ -1,5 +1,6 @@ package com.rettichlp.unicacityaddon.events; +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.config.ConfigElements; import com.rettichlp.unicacityaddon.base.enums.api.StatisticType; @@ -36,6 +37,10 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { if (karmaChangedMatcher.find()) { ReviveEventHandler.handleRevive(); + karmaCheck = true; + AbstractionLayer.getPlayer().sendChatMessage("/karma"); + e.setCanceled(true); + karma = Integer.parseInt(karmaChangedMatcher.group(1)); if (karma < 0 && karma > -9) { APIRequest.sendStatisticAddRequest(StatisticType.KILL); From 960cfc3108cc3d253eaef99a7cae5d76a3b5b8d5 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sat, 11 Mar 2023 00:37:31 +0100 Subject: [PATCH 129/136] Fix executing of never reaching command responses --- .../unicacityaddon/events/KarmaMessageEventHandler.java | 2 +- .../com/rettichlp/unicacityaddon/events/TimerEventHandler.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/KarmaMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/KarmaMessageEventHandler.java index 28f03034e..91d601391 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/KarmaMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/KarmaMessageEventHandler.java @@ -34,7 +34,7 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { return; Matcher karmaChangedMatcher = PatternHandler.KARMA_CHANGED_PATTERN.matcher(msg); - if (karmaChangedMatcher.find()) { + if (karmaChangedMatcher.find() && !TimerEventHandler.isJail && !ReviveEventHandler.isDead) { ReviveEventHandler.handleRevive(); karmaCheck = true; diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/TimerEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/TimerEventHandler.java index d5e39939c..95c27f493 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/TimerEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/TimerEventHandler.java @@ -20,7 +20,7 @@ @UCEvent public class TimerEventHandler { - private static boolean isJail = false; + public static boolean isJail = false; @SubscribeEvent public void onClientChatReceived(ClientChatReceivedEvent e) { From 67d460026eb0e95471b4a7f8d84057d68efefdd7 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sat, 11 Mar 2023 17:18:44 +0100 Subject: [PATCH 130/136] Pre-Work for database migration --- .../unicacityaddon/base/api/Syncer.java | 195 +++++++++--------- .../unicacityaddon/base/api/TokenManager.java | 8 +- .../api/exception/APIResponseException.java | 2 +- .../base/api/request/APIRequest.java | 68 +++--- .../base/builder/RequestBuilder.java | 29 +-- .../base/utils/UpdateUtils.java | 10 +- .../commands/api/BlacklistReasonCommand.java | 77 ++++--- .../commands/api/BroadcastCommand.java | 95 ++++----- .../commands/api/HousebanCommand.java | 137 ++++++------ .../commands/api/HousebanReasonCommand.java | 79 +++---- .../commands/api/NaviPointCommand.java | 35 ++-- .../commands/api/PlayerGroupCommand.java | 63 +++--- .../commands/api/TokenCommand.java | 56 ++--- .../commands/api/TopListCommand.java | 69 ++++--- .../commands/api/WantedReasonCommand.java | 35 ++-- .../commands/{ => api}/YasinCommand.java | 102 +++++---- .../events/AccountEventHandler.java | 8 +- 17 files changed, 565 insertions(+), 503 deletions(-) rename src/main/java/com/rettichlp/unicacityaddon/commands/{ => api}/YasinCommand.java (55%) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java index eed367f1c..273182a40 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java @@ -1,9 +1,9 @@ package com.rettichlp.unicacityaddon.base.api; -import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.enums.api.AddonGroup; import com.rettichlp.unicacityaddon.base.enums.faction.Faction; @@ -82,16 +82,18 @@ public static void syncAll() { private static Thread syncPlayerAddonGroupMap() { return new Thread(() -> { - JsonObject response = APIRequest.sendPlayerRequest(); - if (response != null) { + try { + JsonObject response = APIRequest.sendPlayerRequest(); for (AddonGroup addonGroup : AddonGroup.values()) { addonGroup.getMemberList().clear(); for (JsonElement jsonElement : response.getAsJsonArray(addonGroup.getApiName())) { addonGroup.getMemberList().add(jsonElement.getAsJsonObject().get("name").getAsString()); } } + LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Addon-Gruppen aktualisiert."); + } catch (APIResponseException e) { + e.sendInfo(); } - LabyMod.getInstance().notifyMessageRaw(ColorCode.AQUA.getCode() + "Synchronisierung", "Addon-Gruppen aktualisiert."); }); } @@ -116,141 +118,148 @@ private static Thread syncPlayerFactionData() { }); } - private static List getBlacklistReasonList() { - JsonArray response = APIRequest.sendBlacklistReasonRequest(); - if (response == null) - return new ArrayList<>(); + public static List getBlacklistReasonList() { List blacklistReasonList = new ArrayList<>(); - response.forEach(jsonElement -> { - JsonObject o = jsonElement.getAsJsonObject(); + try { + APIRequest.sendBlacklistReasonRequest().forEach(jsonElement -> { + JsonObject o = jsonElement.getAsJsonObject(); - String reason = o.get("reason").getAsString(); - int kills = o.get("kills").getAsInt(); - int price = o.get("price").getAsInt(); + String reason = o.get("reason").getAsString(); + int kills = o.get("kills").getAsInt(); + int price = o.get("price").getAsInt(); - blacklistReasonList.add(new BlacklistReason(reason, kills, price)); - }); + blacklistReasonList.add(new BlacklistReason(reason, kills, price)); + }); + } catch (APIResponseException e) { + e.sendInfo(); + } return blacklistReasonList; } public static List getBroadcastList() { - JsonArray response = APIRequest.sendBroadcastQueueRequest(); - if (response == null) - return new ArrayList<>(); List broadcastList = new ArrayList<>(); - response.forEach(jsonElement -> { - JsonObject o = jsonElement.getAsJsonObject(); + try { + APIRequest.sendBroadcastQueueRequest().forEach(jsonElement -> { + JsonObject o = jsonElement.getAsJsonObject(); - String broadcast = o.get("broadcast").getAsString(); - int id = o.get("id").getAsInt(); - String issuerName = o.get("issuerName").getAsString(); - String issuerUUID = o.get("issuerUUID").getAsString(); - long sendTime = o.get("sendTime").getAsLong(); - long time = o.get("time").getAsLong(); + String broadcast = o.get("broadcast").getAsString(); + int id = o.get("id").getAsInt(); + String issuerName = o.get("issuerName").getAsString(); + String issuerUUID = o.get("issuerUUID").getAsString(); + long sendTime = o.get("sendTime").getAsLong(); + long time = o.get("time").getAsLong(); - broadcastList.add(new Broadcast(broadcast, id, issuerName, issuerUUID, sendTime, time)); - }); + broadcastList.add(new Broadcast(broadcast, id, issuerName, issuerUUID, sendTime, time)); + }); + } catch (APIResponseException e) { + e.sendInfo(); + } return broadcastList; } - private static List getHouseBanList() { - JsonArray response = APIRequest.sendHouseBanRequest(AbstractionLayer.getPlayer().getFaction().equals(Faction.RETTUNGSDIENST)); - if (response == null) - return new ArrayList<>(); + public static List getHouseBanList() { List houseBanList = new ArrayList<>(); - response.forEach(jsonElement -> { - JsonObject o = jsonElement.getAsJsonObject(); + try { + APIRequest.sendHouseBanRequest(AbstractionLayer.getPlayer().getFaction().equals(Faction.RETTUNGSDIENST)).forEach(jsonElement -> { + JsonObject o = jsonElement.getAsJsonObject(); - long duration = o.get("duration").getAsLong(); - List houseBanReasonList = new ArrayList<>(); - long expirationTime = o.get("expirationTime").getAsLong(); - String name = o.get("name").getAsString(); - long startTime = o.get("startTime").getAsLong(); - String uuid = o.get("uuid").getAsString(); + long duration = o.get("duration").getAsLong(); + List houseBanReasonList = new ArrayList<>(); + long expirationTime = o.get("expirationTime").getAsLong(); + String name = o.get("name").getAsString(); + long startTime = o.get("startTime").getAsLong(); + String uuid = o.get("uuid").getAsString(); - o.get("houseBanReasonList").getAsJsonArray().forEach(jsonElement1 -> { - JsonObject o1 = jsonElement1.getAsJsonObject(); + o.get("houseBanReasonList").getAsJsonArray().forEach(jsonElement1 -> { + JsonObject o1 = jsonElement1.getAsJsonObject(); - String reason = o1.get("reason").getAsString(); - String issuerUUID = o1.has("issuerUUID") ? o1.get("issuerUUID").getAsString() : null; - String issuerName = o1.has("issuerName") ? o1.get("issuerName").getAsString() : null; - int days = o1.get("days").getAsInt(); + String reason = o1.get("reason").getAsString(); + String issuerUUID = o1.has("issuerUUID") ? o1.get("issuerUUID").getAsString() : null; + String issuerName = o1.has("issuerName") ? o1.get("issuerName").getAsString() : null; + int days = o1.get("days").getAsInt(); - houseBanReasonList.add(new HouseBanReason(reason, issuerUUID, issuerName, days)); - }); + houseBanReasonList.add(new HouseBanReason(reason, issuerUUID, issuerName, days)); + }); - houseBanList.add(new HouseBan(duration, houseBanReasonList, expirationTime, name, startTime, uuid)); - }); + houseBanList.add(new HouseBan(duration, houseBanReasonList, expirationTime, name, startTime, uuid)); + }); + } catch (APIResponseException e) { + e.sendInfo(); + } return houseBanList; } - private static List getHouseBanReasonList() { - JsonArray response = APIRequest.sendHouseBanReasonRequest(); - if (response == null) - return new ArrayList<>(); + public static List getHouseBanReasonList() { List houseBanReasonList = new ArrayList<>(); - response.forEach(jsonElement -> { - JsonObject o = jsonElement.getAsJsonObject(); + try { + APIRequest.sendHouseBanReasonRequest().forEach(jsonElement -> { + JsonObject o = jsonElement.getAsJsonObject(); - String reason = o.get("reason").getAsString(); - String creatorUUID = o.has("creatorUUID") ? o.get("creatorUUID").getAsString() : null; - String creatorName = o.has("creatorName") ? o.get("creatorName").getAsString() : null; - int days = o.get("days").getAsInt(); + String reason = o.get("reason").getAsString(); + String creatorUUID = o.has("creatorUUID") ? o.get("creatorUUID").getAsString() : null; + String creatorName = o.has("creatorName") ? o.get("creatorName").getAsString() : null; + int days = o.get("days").getAsInt(); - houseBanReasonList.add(new HouseBanReason(reason, creatorUUID, creatorName, days)); - }); + houseBanReasonList.add(new HouseBanReason(reason, creatorUUID, creatorName, days)); + }); + } catch (APIResponseException e) { + e.sendInfo(); + } return houseBanReasonList; } private static List getManagementUserList() { - JsonArray response = APIRequest.sendManagementUserRequest(); - if (response == null) - return new ArrayList<>(); List managementUserList = new ArrayList<>(); - response.forEach(jsonElement -> { - JsonObject o = jsonElement.getAsJsonObject(); + try { + APIRequest.sendManagementUserRequest().forEach(jsonElement -> { + JsonObject o = jsonElement.getAsJsonObject(); - boolean active = o.get("active").getAsBoolean(); - String uuid = o.get("uuid").getAsString(); - String version = o.get("version").getAsString(); + boolean active = o.get("active").getAsBoolean(); + String uuid = o.get("uuid").getAsString(); + String version = o.get("version").getAsString(); - managementUserList.add(new ManagementUser(active, uuid, version)); - }); + managementUserList.add(new ManagementUser(active, uuid, version)); + }); + } catch (APIResponseException e) { + e.sendInfo(); + } return managementUserList; } private static List getNaviPointList() { - JsonArray response = APIRequest.sendNaviPointRequest(); - if (response == null) - return new ArrayList<>(); List naviPointList = new ArrayList<>(); - response.forEach(jsonElement -> { - JsonObject o = jsonElement.getAsJsonObject(); + try { + APIRequest.sendNaviPointRequest().forEach(jsonElement -> { + JsonObject o = jsonElement.getAsJsonObject(); - String name = o.get("name").getAsString(); - int x = o.get("x").getAsInt(); - int y = o.get("y").getAsInt(); - int z = o.get("z").getAsInt(); - String article = o.get("article").getAsString(); + String name = o.get("name").getAsString(); + int x = o.get("x").getAsInt(); + int y = o.get("y").getAsInt(); + int z = o.get("z").getAsInt(); + String article = o.get("article").getAsString(); - naviPointList.add(new NaviPoint(name, x, y, z, article)); - }); + naviPointList.add(new NaviPoint(name, x, y, z, article)); + }); + } catch (APIResponseException e) { + e.sendInfo(); + } return naviPointList; } private static List getWantedReasonList() { - JsonArray response = APIRequest.sendWantedReasonRequest(); - if (response == null) - return new ArrayList<>(); List wantedReasonList = new ArrayList<>(); - response.forEach(jsonElement -> { - JsonObject o = jsonElement.getAsJsonObject(); + try { + APIRequest.sendWantedReasonRequest().forEach(jsonElement -> { + JsonObject o = jsonElement.getAsJsonObject(); - String reason = o.get("reason").getAsString(); - int points = o.get("points").getAsInt(); + String reason = o.get("reason").getAsString(); + int points = o.get("points").getAsInt(); - wantedReasonList.add(new WantedReason(reason, points)); - }); + wantedReasonList.add(new WantedReason(reason, points)); + }); + } catch (APIResponseException e) { + e.sendInfo(); + } return wantedReasonList; } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/TokenManager.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/TokenManager.java index dbf932761..b66ebb714 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/TokenManager.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/TokenManager.java @@ -2,6 +2,7 @@ import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import java.math.BigInteger; @@ -17,7 +18,12 @@ public static void createToken() { String salt = "423WhKRMTfRv4mn6u8hLcPj7bYesKh4Ex4yRErYuW4KsgYjpo35nSU11QYj3OINAJwcd0TPDD6AkqhSq"; String authToken = UnicacityAddon.MINECRAFT.getSession().getToken(); API_TOKEN = hash(uuid + salt + authToken); - APIRequest.sendTokenCreateRequest(); + + try { + APIRequest.sendTokenCreateRequest(); + } catch (APIResponseException e) { + e.sendInfo(); + } } public static String hash(String input) { diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java index 967e296e0..8b91ab26d 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/exception/APIResponseException.java @@ -24,7 +24,7 @@ public APIResponseException(String urlString, int responseCode, String infoMessa this.infoMessage = infoMessage; } - public void sendInfoMessage() { + public void sendInfo() { UnicacityAddon.LOGGER.warn("APIResponseException - " + responseCode + " [" + urlString.replace(TokenManager.API_TOKEN, "TOKEN") + "]: " + infoMessage); LabyMod.getInstance().notifyMessageRaw(ColorCode.RED.getCode() + "API Fehler - " + responseCode, infoMessage); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java index 523c74e17..948fa276d 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java @@ -4,6 +4,7 @@ import com.google.gson.JsonObject; import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.builder.RequestBuilder; import com.rettichlp.unicacityaddon.base.enums.api.ApplicationPath; import com.rettichlp.unicacityaddon.base.enums.api.StatisticType; @@ -21,7 +22,6 @@ public class APIRequest { private static final String SEND_SUB_PATH = "send"; private static final String TOP_SUB_PATH = "top"; private static final String CREATE_SUB_PATH = "create"; - private static final String REVOKE_SUB_PATH = "revoke"; private static final String DONE_SUB_PATH = "done"; private static final String USERS_SUB_PATH = "users"; private static final String BOMB_SUB_PATH = "bomb"; @@ -41,7 +41,7 @@ public static void sendBannerAddRequest(Faction faction, int x, int y, int z, St .sendAsync(); } - public static JsonArray sendBlacklistReasonRequest() { + public static JsonArray sendBlacklistReasonRequest() throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.BLACKLISTREASON) @@ -49,7 +49,7 @@ public static JsonArray sendBlacklistReasonRequest() { .getAsJsonArray(); } - public static JsonObject sendBlacklistReasonAddRequest(String reason, String price, String kills) { + public static JsonObject sendBlacklistReasonAddRequest(String reason, String price, String kills) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.BLACKLISTREASON) @@ -61,7 +61,7 @@ public static JsonObject sendBlacklistReasonAddRequest(String reason, String pri .getAsJsonObject(); } - public static JsonObject sendBlacklistReasonRemoveRequest(String reason) { + public static JsonObject sendBlacklistReasonRemoveRequest(String reason) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.BLACKLISTREASON) @@ -70,7 +70,7 @@ public static JsonObject sendBlacklistReasonRemoveRequest(String reason) { .getAsJsonObject(); } - public static JsonArray sendBroadcastQueueRequest() { + public static JsonArray sendBroadcastQueueRequest() throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.BROADCAST) @@ -78,7 +78,7 @@ public static JsonArray sendBroadcastQueueRequest() { .getAsJsonArray(); } - public static JsonObject sendBroadcastSendRequest(String message, String sendTime) { + public static JsonObject sendBroadcastSendRequest(String message, String sendTime) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.BROADCAST) @@ -110,7 +110,7 @@ public static void sendEventGangwarRequest(int attacker, int defender) { .sendAsync(); } - public static JsonArray sendHouseBanRequest(boolean advanced) { + public static JsonArray sendHouseBanRequest(boolean advanced) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.HOUSEBAN) @@ -118,7 +118,7 @@ public static JsonArray sendHouseBanRequest(boolean advanced) { .getAsJsonArray(); } - public static JsonObject sendHouseBanAddRequest(String name, String reason) { + public static JsonObject sendHouseBanAddRequest(String name, String reason) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.HOUSEBAN) @@ -129,7 +129,7 @@ public static JsonObject sendHouseBanAddRequest(String name, String reason) { .getAsJsonObject(); } - public static JsonObject sendHouseBanRemoveRequest(String name, String reason) { + public static JsonObject sendHouseBanRemoveRequest(String name, String reason) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.HOUSEBAN) @@ -143,14 +143,14 @@ public static JsonObject sendHouseBanRemoveRequest(String name, String reason) { /** * Quote: "Ich teste nicht, ich versage nur..." - RettichLP, 25.09.2022 */ - public static JsonArray sendHouseBanReasonRequest() { + public static JsonArray sendHouseBanReasonRequest() throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.HOUSEBANREASON) .getAsJsonArray(); } - public static JsonObject sendHouseBanReasonAddRequest(String reason, String days) { + public static JsonObject sendHouseBanReasonAddRequest(String reason, String days) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.HOUSEBANREASON) @@ -161,7 +161,7 @@ public static JsonObject sendHouseBanReasonAddRequest(String reason, String days .getAsJsonObject(); } - public static JsonObject sendHouseBanReasonRemoveRequest(String reason) { + public static JsonObject sendHouseBanReasonRemoveRequest(String reason) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.HOUSEBANREASON) @@ -170,14 +170,14 @@ public static JsonObject sendHouseBanReasonRemoveRequest(String reason) { .getAsJsonObject(); } - public static JsonObject sendManagementRequest() { + public static JsonObject sendManagementRequest() throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.MANAGEMENT) .getAsJsonObject(); } - public static JsonArray sendManagementUserRequest() { + public static JsonArray sendManagementUserRequest() throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.MANAGEMENT) @@ -185,14 +185,14 @@ public static JsonArray sendManagementUserRequest() { .getAsJsonArray(); } - public static JsonArray sendNaviPointRequest() { + public static JsonArray sendNaviPointRequest() throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.NAVIPOINT) .getAsJsonArray(); } - public static JsonObject sendNaviPointAddRequest(String name, String x, String y, String z, String article) { + public static JsonObject sendNaviPointAddRequest(String name, String x, String y, String z, String article) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.NAVIPOINT) @@ -206,7 +206,7 @@ public static JsonObject sendNaviPointAddRequest(String name, String x, String y .getAsJsonObject(); } - public static JsonObject sendNaviPointRemoveRequest(String name) { + public static JsonObject sendNaviPointRemoveRequest(String name) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.NAVIPOINT) @@ -215,14 +215,14 @@ public static JsonObject sendNaviPointRemoveRequest(String name) { .getAsJsonObject(); } - public static JsonObject sendPlayerRequest() { + public static JsonObject sendPlayerRequest() throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.PLAYER) .getAsJsonObject(); } - public static JsonObject sendPlayerAddRequest(String name, String group) { + public static JsonObject sendPlayerAddRequest(String name, String group) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.PLAYER) @@ -233,7 +233,7 @@ public static JsonObject sendPlayerAddRequest(String name, String group) { .getAsJsonObject(); } - public static JsonObject sendPlayerRemoveRequest(String name, String group) { + public static JsonObject sendPlayerRemoveRequest(String name, String group) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.PLAYER) @@ -244,7 +244,7 @@ public static JsonObject sendPlayerRemoveRequest(String name, String group) { .getAsJsonObject(); } - public static JsonObject sendStatisticRequest() { + public static JsonObject sendStatisticRequest() throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.STATISTIC) @@ -261,7 +261,7 @@ public static void sendStatisticAddRequest(StatisticType statisticType) { .sendAsync(); } - public static JsonObject sendStatisticTopRequest() { + public static JsonObject sendStatisticTopRequest() throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.STATISTIC) @@ -269,7 +269,7 @@ public static JsonObject sendStatisticTopRequest() { .getAsJsonObject(); } - public static JsonObject sendTokenCreateRequest() { + public static JsonObject sendTokenCreateRequest() throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.TOKEN) @@ -280,22 +280,14 @@ public static JsonObject sendTokenCreateRequest() { .getAsJsonObject(); } - public static JsonObject sendTokenRevokeRequest() { - return RequestBuilder.getBuilder() - .nonProd(NON_PROD) - .applicationPath(ApplicationPath.TOKEN) - .subPath(REVOKE_SUB_PATH) - .getAsJsonObject(); - } - - public static JsonArray sendWantedReasonRequest() { + public static JsonArray sendWantedReasonRequest() throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.WANTEDREASON) .getAsJsonArray(); } - public static JsonObject sendWantedReasonAddRequest(String reason, String points) { + public static JsonObject sendWantedReasonAddRequest(String reason, String points) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.WANTEDREASON) @@ -306,7 +298,7 @@ public static JsonObject sendWantedReasonAddRequest(String reason, String points .getAsJsonObject(); } - public static JsonObject sendWantedReasonRemoveRequest(String reason) { + public static JsonObject sendWantedReasonRemoveRequest(String reason) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.WANTEDREASON) @@ -315,14 +307,14 @@ public static JsonObject sendWantedReasonRemoveRequest(String reason) { .getAsJsonObject(); } - public static JsonArray sendYasinRequest() { + public static JsonArray sendYasinRequest() throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.YASIN) .getAsJsonArray(); } - public static JsonObject sendYasinAddRequest(String name) { + public static JsonObject sendYasinAddRequest(String name) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.YASIN) @@ -331,7 +323,7 @@ public static JsonObject sendYasinAddRequest(String name) { .getAsJsonObject(); } - public static JsonObject sendYasinRemoveRequest(String name) { + public static JsonObject sendYasinRemoveRequest(String name) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.YASIN) @@ -340,7 +332,7 @@ public static JsonObject sendYasinRemoveRequest(String name) { .getAsJsonObject(); } - public static JsonObject sendYasinDoneRequest(String name) { + public static JsonObject sendYasinDoneRequest(String name) throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) .applicationPath(ApplicationPath.YASIN) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/builder/RequestBuilder.java b/src/main/java/com/rettichlp/unicacityaddon/base/builder/RequestBuilder.java index 8c8aa2165..8a8d3c928 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/builder/RequestBuilder.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/builder/RequestBuilder.java @@ -49,29 +49,30 @@ public Builder parameter(Map parameter) { return this; } - public JsonElement send() { - try { - String urlString = WebsiteUtils.createUrl(this.nonProd, this.applicationPath, this.subPath, this.parameter); - String response = WebsiteUtils.sendRequest(urlString); - return new JsonParser().parse(response); - } catch (APIResponseException e) { - e.sendInfoMessage(); - return null; - } + public JsonElement send() throws APIResponseException { + String urlString = WebsiteUtils.createUrl(this.nonProd, this.applicationPath, this.subPath, this.parameter); + String response = WebsiteUtils.sendRequest(urlString); + return new JsonParser().parse(response); } public void sendAsync() { - new Thread(this::send).start(); + new Thread(() -> { + try { + send(); + } catch (APIResponseException e) { + e.sendInfo(); + } + }).start(); } - public JsonObject getAsJsonObject() { + public JsonObject getAsJsonObject() throws APIResponseException { JsonElement jsonElement = send(); - return jsonElement != null ? jsonElement.getAsJsonObject() : null; + return jsonElement.getAsJsonObject(); } - public JsonArray getAsJsonArray() { + public JsonArray getAsJsonArray() throws APIResponseException { JsonElement jsonElement = send(); - return jsonElement != null ? jsonElement.getAsJsonArray() : null; + return jsonElement.getAsJsonArray(); } } } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java b/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java index 0fc66ba26..4dfd7f901 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/utils/UpdateUtils.java @@ -5,6 +5,7 @@ import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.api.Syncer; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.config.ConfigElements; import com.rettichlp.unicacityaddon.base.models.ManagementUser; @@ -153,8 +154,13 @@ private static void replaceJar() throws IOException { } private static String getLatestVersion() { - JsonObject response = APIRequest.sendManagementRequest(); - return response != null ? response.get("latestVersion").getAsString() : UnicacityAddon.VERSION; + try { + JsonObject response = APIRequest.sendManagementRequest(); + return response.get("latestVersion").getAsString(); + } catch (APIResponseException e) { + e.sendInfo(); + return UnicacityAddon.VERSION; + } } public static boolean hasPlayerLatestAddonVersion(String name) { diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/BlacklistReasonCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/BlacklistReasonCommand.java index 96c9a0c2d..e7f5b768f 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/BlacklistReasonCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/BlacklistReasonCommand.java @@ -4,6 +4,7 @@ import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.api.Syncer; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; import com.rettichlp.unicacityaddon.base.models.BlacklistReason; @@ -53,42 +54,50 @@ public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull IComman } @Override - public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, String[] args) { + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { UPlayer p = AbstractionLayer.getPlayer(); - if (args.length < 1) { - p.sendEmptyMessage(); - p.sendMessage(Message.getBuilder() - .of("Blacklist-Gründe:").color(ColorCode.DARK_AQUA).bold().advance() - .createComponent()); - - Syncer.BLACKLISTREASONLIST.forEach(blacklistReasonEntry -> p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.GRAY).advance().space() - .of(blacklistReasonEntry.getReason()).color(ColorCode.AQUA) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder() - .of("Preis:").color(ColorCode.RED).advance().space() - .of(String.valueOf(blacklistReasonEntry.getPrice())).color(ColorCode.DARK_RED).advance().space() - .of("Kills:").color(ColorCode.RED).advance().space() - .of(String.valueOf(blacklistReasonEntry.getKills())).color(ColorCode.DARK_RED).advance() - .createComponent()) - .advance() - .createComponent())); - - p.sendEmptyMessage(); - - } else if (args.length == 4 && args[0].equalsIgnoreCase("add")) { - JsonObject response = APIRequest.sendBlacklistReasonAddRequest(args[1], args[2], args[3]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else if (args.length == 2 && args[0].equalsIgnoreCase("remove")) { - JsonObject response = APIRequest.sendBlacklistReasonRemoveRequest(args[1]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else { - p.sendSyntaxMessage(getUsage(sender)); - } + new Thread(() -> { + if (args.length < 1) { + Syncer.BLACKLISTREASONLIST = Syncer.getBlacklistReasonList(); + + p.sendEmptyMessage(); + p.sendMessage(Message.getBuilder() + .of("Blacklist-Gründe:").color(ColorCode.DARK_AQUA).bold().advance() + .createComponent()); + + Syncer.BLACKLISTREASONLIST.forEach(blacklistReasonEntry -> p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.GRAY).advance().space() + .of(blacklistReasonEntry.getReason()).color(ColorCode.AQUA) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder() + .of("Preis:").color(ColorCode.RED).advance().space() + .of(String.valueOf(blacklistReasonEntry.getPrice())).color(ColorCode.DARK_RED).advance().space() + .of("Kills:").color(ColorCode.RED).advance().space() + .of(String.valueOf(blacklistReasonEntry.getKills())).color(ColorCode.DARK_RED).advance() + .createComponent()) + .advance() + .createComponent())); + + p.sendEmptyMessage(); + + } else if (args.length == 4 && args[0].equalsIgnoreCase("add")) { + try { + JsonObject response = APIRequest.sendBlacklistReasonAddRequest(args[1], args[2], args[3]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else if (args.length == 2 && args[0].equalsIgnoreCase("remove")) { + try { + JsonObject response = APIRequest.sendBlacklistReasonRemoveRequest(args[1]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else { + p.sendSyntaxMessage(getUsage(sender)); + } + }).start(); } @Override diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/BroadcastCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/BroadcastCommand.java index 35542e258..0910cb77e 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/BroadcastCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/BroadcastCommand.java @@ -1,9 +1,9 @@ package com.rettichlp.unicacityaddon.commands.api; -import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; @@ -60,53 +60,56 @@ public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull IComman * Quote: *Stille* "Hat das Vorteile?" - RettichLP zu der WG von Fio, 29.09.2022 */ @Override - public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, String[] args) { + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { UPlayer p = AbstractionLayer.getPlayer(); - if (args.length == 1 && args[0].equalsIgnoreCase("queue")) { - JsonArray response = APIRequest.sendBroadcastQueueRequest(); - if (response == null) - return; - - p.sendEmptyMessage(); - p.sendMessage(Message.getBuilder() - .of("Aktive Broadcasts:").color(ColorCode.DARK_AQUA).bold().advance() - .createComponent()); - - response.forEach(jsonElement -> { - JsonObject o = jsonElement.getAsJsonObject(); - String broadcast = o.get("broadcast").getAsString(); - String issuerName = o.get("issuerName").getAsString(); - - p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.GRAY).advance().space() - .of(broadcast).color(ColorCode.AQUA).advance().space() - .of("(").color(ColorCode.GRAY).advance() - .of(issuerName).color(ColorCode.GRAY).advance() - .of(")").color(ColorCode.GRAY).advance() - .createComponent()); - }); - - p.sendEmptyMessage(); - - } else if (args.length > 3 && args[0].equalsIgnoreCase("send")) { - String date = args[1]; // TT.MM.JJJJ - String time = args[2]; // HH:MM:SS - String message = TextUtils.makeStringByArgs(args, " ") - .replace("send ", "") - .replace(date + " ", "") - .replace(time + " ", ""); - - LocalDateTime localDateTime = LocalDateTime.parse(date + " " + time, DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss")); - long sendTime = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); - - JsonObject response = APIRequest.sendBroadcastSendRequest(message, String.valueOf(sendTime)); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else { - p.sendSyntaxMessage(getUsage(sender)); - } + new Thread(() -> { + if (args.length == 1 && args[0].equalsIgnoreCase("queue")) { + try { + p.sendEmptyMessage(); + p.sendMessage(Message.getBuilder() + .of("Aktive Broadcasts:").color(ColorCode.DARK_AQUA).bold().advance() + .createComponent()); + + APIRequest.sendBroadcastQueueRequest().forEach(jsonElement -> { + JsonObject o = jsonElement.getAsJsonObject(); + String broadcast = o.get("broadcast").getAsString(); + String issuerName = o.get("issuerName").getAsString(); + + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.GRAY).advance().space() + .of(broadcast).color(ColorCode.AQUA).advance().space() + .of("(").color(ColorCode.GRAY).advance() + .of(issuerName).color(ColorCode.GRAY).advance() + .of(")").color(ColorCode.GRAY).advance() + .createComponent()); + }); + + p.sendEmptyMessage(); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else if (args.length > 3 && args[0].equalsIgnoreCase("send")) { + String date = args[1]; // TT.MM.JJJJ + String time = args[2]; // HH:MM:SS + String message = TextUtils.makeStringByArgs(args, " ") + .replace("send ", "") + .replace(date + " ", "") + .replace(time + " ", ""); + + LocalDateTime localDateTime = LocalDateTime.parse(date + " " + time, DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss")); + long sendTime = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); + + try { + JsonObject response = APIRequest.sendBroadcastSendRequest(message, String.valueOf(sendTime)); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else { + p.sendSyntaxMessage(getUsage(sender)); + } + }).start(); } @Override diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanCommand.java index 15eca09d4..55e869833 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanCommand.java @@ -4,6 +4,7 @@ import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.api.Syncer; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; import com.rettichlp.unicacityaddon.base.models.HouseBanReason; @@ -55,75 +56,83 @@ public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull IComman } @Override - public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, String[] args) { + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { UPlayer p = AbstractionLayer.getPlayer(); - if (args.length < 1) { - p.sendEmptyMessage(); - p.sendMessage(Message.getBuilder() - .of("Hausverbote:").color(ColorCode.DARK_AQUA).bold().advance() - .createComponent()); - - Syncer.HOUSEBANLIST.forEach(houseBanEntry -> { - long durationInMillis = houseBanEntry.getExpirationTime() - System.currentTimeMillis(); - - String duration = Message.getBuilder() - .add(ColorCode.AQUA.getCode() + TextUtils.parseTimerWithTimeUnit(durationInMillis) - .replace("d", ColorCode.DARK_AQUA.getCode() + "d" + ColorCode.AQUA.getCode()) - .replace("h", ColorCode.DARK_AQUA.getCode() + "h" + ColorCode.AQUA.getCode()) - .replace("m", ColorCode.DARK_AQUA.getCode() + "m" + ColorCode.AQUA.getCode()) - .replace("s", ColorCode.DARK_AQUA.getCode() + "s")) - .create(); - - ColorCode colorCode = ColorCode.AQUA; - int days = (int) TimeUnit.MILLISECONDS.toDays(durationInMillis); - if (days == 0) - colorCode = ColorCode.DARK_GREEN; - else if (days > 0 && days <= 5) - colorCode = ColorCode.GREEN; - else if (days > 5 && days <= 14) - colorCode = ColorCode.YELLOW; - else if (days > 14 && days <= 25) - colorCode = ColorCode.GOLD; - else if (days > 25 && days <= 50) - colorCode = ColorCode.RED; - else if (days > 50) - colorCode = ColorCode.DARK_RED; - - Message.Builder builder = Message.getBuilder(); - houseBanEntry.getHouseBanReasonList().forEach(houseBanReason -> builder - .of("-").color(ColorCode.GRAY).advance().space() - .of(houseBanReason.getReason().replace("-", " ")).color(ColorCode.RED).advance().space() - .of(houseBanReason.getCreatorName() != null ? "(" : "").color(ColorCode.GRAY).advance() - .of(houseBanReason.getCreatorName() != null ? houseBanReason.getCreatorName() : "").color(ColorCode.GRAY).advance() - .of(houseBanReason.getCreatorName() != null ? ")" : "").color(ColorCode.GRAY).advance().space() - .newline()); + new Thread(() -> { + if (args.length < 1) { + Syncer.HOUSEBANLIST = Syncer.getHouseBanList(); + p.sendEmptyMessage(); p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.GRAY).advance().space() - .of(houseBanEntry.getName()).color(colorCode).advance().space() - .of("-").color(ColorCode.GRAY).advance().space() - .of(duration).color(ColorCode.AQUA) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, builder.createComponent()) - .advance() + .of("Hausverbote:").color(ColorCode.DARK_AQUA).bold().advance() .createComponent()); - }); - - p.sendEmptyMessage(); - - } else if (args.length == 3 && args[0].equalsIgnoreCase("add")) { - JsonObject response = APIRequest.sendHouseBanAddRequest(args[1], args[2]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else if (args.length == 3 && args[0].equalsIgnoreCase("remove")) { - JsonObject response = APIRequest.sendHouseBanRemoveRequest(args[1], args[2]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else { - p.sendSyntaxMessage(getUsage(sender)); - } + + Syncer.HOUSEBANLIST.forEach(houseBanEntry -> { + long durationInMillis = houseBanEntry.getExpirationTime() - System.currentTimeMillis(); + + String duration = Message.getBuilder() + .add(ColorCode.AQUA.getCode() + TextUtils.parseTimerWithTimeUnit(durationInMillis) + .replace("d", ColorCode.DARK_AQUA.getCode() + "d" + ColorCode.AQUA.getCode()) + .replace("h", ColorCode.DARK_AQUA.getCode() + "h" + ColorCode.AQUA.getCode()) + .replace("m", ColorCode.DARK_AQUA.getCode() + "m" + ColorCode.AQUA.getCode()) + .replace("s", ColorCode.DARK_AQUA.getCode() + "s")) + .create(); + + ColorCode colorCode = ColorCode.AQUA; + int days = (int) TimeUnit.MILLISECONDS.toDays(durationInMillis); + if (days == 0) + colorCode = ColorCode.DARK_GREEN; + else if (days > 0 && days <= 5) + colorCode = ColorCode.GREEN; + else if (days > 5 && days <= 14) + colorCode = ColorCode.YELLOW; + else if (days > 14 && days <= 25) + colorCode = ColorCode.GOLD; + else if (days > 25 && days <= 50) + colorCode = ColorCode.RED; + else if (days > 50) + colorCode = ColorCode.DARK_RED; + + Message.Builder builder = Message.getBuilder(); + houseBanEntry.getHouseBanReasonList().forEach(houseBanReason -> builder + .of("-").color(ColorCode.GRAY).advance().space() + .of(houseBanReason.getReason().replace("-", " ")).color(ColorCode.RED).advance().space() + .of(houseBanReason.getCreatorName() != null ? "(" : "").color(ColorCode.GRAY).advance() + .of(houseBanReason.getCreatorName() != null ? houseBanReason.getCreatorName() : "").color(ColorCode.GRAY).advance() + .of(houseBanReason.getCreatorName() != null ? ")" : "").color(ColorCode.GRAY).advance().space() + .newline()); + + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.GRAY).advance().space() + .of(houseBanEntry.getName()).color(colorCode).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(duration).color(ColorCode.AQUA) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, builder.createComponent()) + .advance() + .createComponent()); + }); + + p.sendEmptyMessage(); + + } else if (args.length == 3 && args[0].equalsIgnoreCase("add")) { + try { + JsonObject response = APIRequest.sendHouseBanAddRequest(args[1], args[2]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else if (args.length == 3 && args[0].equalsIgnoreCase("remove")) { + try { + JsonObject response = APIRequest.sendHouseBanRemoveRequest(args[1], args[2]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else { + p.sendSyntaxMessage(getUsage(sender)); + } + }).start(); } @Override diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanReasonCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanReasonCommand.java index 747c1703d..990967c60 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanReasonCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/HousebanReasonCommand.java @@ -4,6 +4,7 @@ import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.api.Syncer; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; import com.rettichlp.unicacityaddon.base.models.HouseBanReason; @@ -54,43 +55,51 @@ public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull IComman } @Override - public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, String[] args) { + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { UPlayer p = AbstractionLayer.getPlayer(); - if (args.length < 1) { - p.sendEmptyMessage(); - p.sendMessage(Message.getBuilder() - .of("Hausverbot-Gründe:").color(ColorCode.DARK_AQUA).bold().advance() - .createComponent()); - - Syncer.HOUSEBANREASONLIST.forEach(houseBanReason -> p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.GRAY).advance().space() - .of(houseBanReason.getReason()).color(ColorCode.AQUA) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder() - .of("Hinzugefügt von").color(ColorCode.GRAY).advance().space() - .of(houseBanReason.getCreatorName()).color(ColorCode.RED).advance() - .createComponent()) - .advance().space() - .of("-").color(ColorCode.GRAY).advance().space() - .of(String.valueOf(houseBanReason.getDays())).color(ColorCode.AQUA).advance().space() - .of(houseBanReason.getDays() == 1 ? "Tag" : "Tage").color(ColorCode.AQUA).advance() - .createComponent())); - - p.sendEmptyMessage(); - - } else if (args.length == 3 && args[0].equalsIgnoreCase("add") && MathUtils.isInteger(args[2])) { - JsonObject response = APIRequest.sendHouseBanReasonAddRequest(args[1], args[2]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else if (args.length == 2 && args[0].equalsIgnoreCase("remove")) { - JsonObject response = APIRequest.sendHouseBanReasonRemoveRequest(args[1]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else { - p.sendSyntaxMessage(getUsage(sender)); - } + new Thread(() -> { + if (args.length < 1) { + Syncer.HOUSEBANREASONLIST = Syncer.getHouseBanReasonList(); + + p.sendEmptyMessage(); + p.sendMessage(Message.getBuilder() + .of("Hausverbot-Gründe:").color(ColorCode.DARK_AQUA).bold().advance() + .createComponent()); + + Syncer.HOUSEBANREASONLIST.forEach(houseBanReason -> p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.GRAY).advance().space() + .of(houseBanReason.getReason()).color(ColorCode.AQUA) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder() + .of("Hinzugefügt von").color(ColorCode.GRAY).advance().space() + .of(houseBanReason.getCreatorName()).color(ColorCode.RED).advance() + .createComponent()) + .advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(String.valueOf(houseBanReason.getDays())).color(ColorCode.AQUA).advance().space() + .of(houseBanReason.getDays() == 1 ? "Tag" : "Tage").color(ColorCode.AQUA).advance() + .createComponent())); + + p.sendEmptyMessage(); + + } else if (args.length == 3 && args[0].equalsIgnoreCase("add") && MathUtils.isInteger(args[2])) { + try { + JsonObject response = APIRequest.sendHouseBanReasonAddRequest(args[1], args[2]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else if (args.length == 2 && args[0].equalsIgnoreCase("remove")) { + try { + JsonObject response = APIRequest.sendHouseBanReasonRemoveRequest(args[1]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else { + p.sendSyntaxMessage(getUsage(sender)); + } + }).start(); } /** diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/NaviPointCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/NaviPointCommand.java index 6681240c5..212e4d338 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/NaviPointCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/NaviPointCommand.java @@ -4,6 +4,7 @@ import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.api.Syncer; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; import com.rettichlp.unicacityaddon.base.models.NaviPoint; @@ -50,22 +51,28 @@ public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull IComman } @Override - public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, String[] args) { + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { UPlayer p = AbstractionLayer.getPlayer(); - if (args.length == 6 && args[0].equalsIgnoreCase("add")) { - JsonObject response = APIRequest.sendNaviPointAddRequest(args[1], args[2], args[3], args[4], args[5]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else if (args.length == 2 && args[0].equalsIgnoreCase("remove")) { - JsonObject response = APIRequest.sendNaviPointRemoveRequest(args[1]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else { - p.sendSyntaxMessage(getUsage(sender)); - } + new Thread(() -> { + if (args.length == 6 && args[0].equalsIgnoreCase("add")) { + try { + JsonObject response = APIRequest.sendNaviPointAddRequest(args[1], args[2], args[3], args[4], args[5]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else if (args.length == 2 && args[0].equalsIgnoreCase("remove")) { + try { + JsonObject response = APIRequest.sendNaviPointRemoveRequest(args[1]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else { + p.sendSyntaxMessage(getUsage(sender)); + } + }).start(); } @Override diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/PlayerGroupCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/PlayerGroupCommand.java index 3a5ca5db5..abc607aab 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/PlayerGroupCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/PlayerGroupCommand.java @@ -3,6 +3,7 @@ import com.google.gson.JsonObject; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; import com.rettichlp.unicacityaddon.base.enums.api.AddonGroup; @@ -52,36 +53,42 @@ public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull IComman } @Override - public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, String[] args) { + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { UPlayer p = AbstractionLayer.getPlayer(); - if (args.length == 2 && args[0].equalsIgnoreCase("list") && Arrays.stream(AddonGroup.values()).anyMatch(addonGroup -> addonGroup.name().equals(args[1]))) { - p.sendEmptyMessage(); - p.sendMessage(Message.getBuilder() - .of("Spielergruppe:").color(ColorCode.DARK_AQUA).bold().advance().space() - .of(args[1]).color(ColorCode.DARK_AQUA).advance() - .createComponent()); - - AddonGroup.valueOf(args[1]).getMemberList().forEach(s -> p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.GRAY).advance().space() - .of(s).color(ColorCode.AQUA).advance() - .createComponent())); - - p.sendEmptyMessage(); - - } else if (args.length == 3 && args[0].equalsIgnoreCase("add")) { - JsonObject response = APIRequest.sendPlayerAddRequest(args[2], args[1]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else if (args.length == 3 && args[0].equalsIgnoreCase("remove")) { - JsonObject response = APIRequest.sendPlayerRemoveRequest(args[2], args[1]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else { - p.sendSyntaxMessage(getUsage(sender)); - } + new Thread(() -> { + if (args.length == 2 && args[0].equalsIgnoreCase("list") && Arrays.stream(AddonGroup.values()).anyMatch(addonGroup -> addonGroup.name().equals(args[1]))) { + p.sendEmptyMessage(); + p.sendMessage(Message.getBuilder() + .of("Spielergruppe:").color(ColorCode.DARK_AQUA).bold().advance().space() + .of(args[1]).color(ColorCode.DARK_AQUA).advance() + .createComponent()); + + AddonGroup.valueOf(args[1]).getMemberList().forEach(s -> p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.GRAY).advance().space() + .of(s).color(ColorCode.AQUA).advance() + .createComponent())); + + p.sendEmptyMessage(); + + } else if (args.length == 3 && args[0].equalsIgnoreCase("add")) { + try { + JsonObject response = APIRequest.sendPlayerAddRequest(args[2], args[1]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else if (args.length == 3 && args[0].equalsIgnoreCase("remove")) { + try { + JsonObject response = APIRequest.sendPlayerRemoveRequest(args[2], args[1]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else { + p.sendSyntaxMessage(getUsage(sender)); + } + }).start(); } @Override diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/TokenCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/TokenCommand.java index 84ddfb0c0..7aab0aa92 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/TokenCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/TokenCommand.java @@ -4,6 +4,7 @@ import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.api.TokenManager; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; @@ -53,42 +54,41 @@ public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull IComman } @Override - public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, String[] args) { + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { UPlayer p = AbstractionLayer.getPlayer(); - if (args.length == 0) { - p.sendMessage(Message.getBuilder() - .prefix() - .of("Mit diesem").color(ColorCode.GRAY).advance().space() - .of("Token").color(ColorCode.AQUA) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of(TokenManager.API_TOKEN).color(ColorCode.RED).advance().createComponent()) - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/token copy") - .advance().space() - .of("kann jeder in deinem Namen Anfragen an die API senden.").color(ColorCode.GRAY).advance() - .createComponent()); - } else if (args.length == 1 && args[0].equalsIgnoreCase("create")) { - JsonObject response = APIRequest.sendTokenCreateRequest(); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else if (args.length == 1 && args[0].equalsIgnoreCase("copy")) { - p.copyToClipboard(TokenManager.API_TOKEN); - LabyMod.getInstance().notifyMessageRaw(ColorCode.GREEN.getCode() + "Kopiert!", "Token in Zwischenablage kopiert."); - } else if (args.length == 1 && args[0].equalsIgnoreCase("revoke")) { - JsonObject response = APIRequest.sendTokenRevokeRequest(); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else { - p.sendSyntaxMessage(getUsage(sender)); - } + new Thread(() -> { + if (args.length == 0) { + p.sendMessage(Message.getBuilder() + .prefix() + .of("Mit diesem").color(ColorCode.GRAY).advance().space() + .of("Token").color(ColorCode.AQUA) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of(TokenManager.API_TOKEN).color(ColorCode.RED).advance().createComponent()) + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/token copy") + .advance().space() + .of("kann jeder in deinem Namen Anfragen an die API senden.").color(ColorCode.GRAY).advance() + .createComponent()); + } else if (args.length == 1 && args[0].equalsIgnoreCase("create")) { + try { + JsonObject response = APIRequest.sendTokenCreateRequest(); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else if (args.length == 1 && args[0].equalsIgnoreCase("copy")) { + p.copyToClipboard(TokenManager.API_TOKEN); + LabyMod.getInstance().notifyMessageRaw(ColorCode.GREEN.getCode() + "Kopiert!", "Token in Zwischenablage kopiert."); + } else { + p.sendSyntaxMessage(getUsage(sender)); + } + }).start(); } @Override @Nonnull public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { return TabCompletionBuilder.getBuilder(args) - .addAtIndex(1, "create", "revoke") + .addAtIndex(1, "create") .build(); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/TopListCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/TopListCommand.java index dc2959e72..7e003b7e6 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/TopListCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/TopListCommand.java @@ -1,9 +1,9 @@ package com.rettichlp.unicacityaddon.commands.api; import com.google.gson.JsonArray; -import com.google.gson.JsonObject; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; @@ -61,42 +61,43 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen UPlayer p = AbstractionLayer.getPlayer(); new Thread(() -> { - JsonObject response = APIRequest.sendStatisticTopRequest(); - if (response == null) - return; - JsonArray kdJsonArray = response.getAsJsonArray("kd"); - - p.sendEmptyMessage(); - p.sendMessage(Message.getBuilder() - .of("Top 10 Spieler:").color(ColorCode.DARK_AQUA).bold().advance() - .createComponent()); - - AtomicInteger place = new AtomicInteger(); - kdJsonArray.forEach(jsonElement -> { - String name = jsonElement.getAsJsonObject().get("name").getAsString(); - String kd = DECIMAL_FORMAT.format(jsonElement.getAsJsonObject().get("value").getAsFloat()); - String deaths = String.valueOf(jsonElement.getAsJsonObject().get("deaths").getAsInt()); - String kills = String.valueOf(jsonElement.getAsJsonObject().get("kills").getAsInt()); - - place.getAndIncrement(); + try { + JsonArray kdJsonArray = APIRequest.sendStatisticTopRequest().getAsJsonArray("kd"); + + p.sendEmptyMessage(); p.sendMessage(Message.getBuilder() - .of(String.valueOf(place.get())).color(ColorCode.GOLD).advance() - .of(".").color(ColorCode.GRAY).advance().space() - .of(name).color(ColorCode.AQUA) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder() - .of("Tode:").color(ColorCode.GRAY).advance().space() - .of(deaths).color(ColorCode.RED).advance().newline() - .of("Kills:").color(ColorCode.GRAY).advance().space() - .of(kills).color(ColorCode.RED).advance() - .createComponent()) - .advance().space() - .of("-").color(ColorCode.GRAY).advance().space() - .of(kd).color(ColorCode.AQUA).advance().space() - .of("Punkte").color(ColorCode.AQUA).advance().space() + .of("Top 10 Spieler:").color(ColorCode.DARK_AQUA).bold().advance() .createComponent()); - }); - p.sendEmptyMessage(); + AtomicInteger place = new AtomicInteger(); + kdJsonArray.forEach(jsonElement -> { + String name = jsonElement.getAsJsonObject().get("name").getAsString(); + String kd = DECIMAL_FORMAT.format(jsonElement.getAsJsonObject().get("value").getAsFloat()); + String deaths = String.valueOf(jsonElement.getAsJsonObject().get("deaths").getAsInt()); + String kills = String.valueOf(jsonElement.getAsJsonObject().get("kills").getAsInt()); + + place.getAndIncrement(); + p.sendMessage(Message.getBuilder() + .of(String.valueOf(place.get())).color(ColorCode.GOLD).advance() + .of(".").color(ColorCode.GRAY).advance().space() + .of(name).color(ColorCode.AQUA) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder() + .of("Tode:").color(ColorCode.GRAY).advance().space() + .of(deaths).color(ColorCode.RED).advance().newline() + .of("Kills:").color(ColorCode.GRAY).advance().space() + .of(kills).color(ColorCode.RED).advance() + .createComponent()) + .advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(kd).color(ColorCode.AQUA).advance().space() + .of("Punkte").color(ColorCode.AQUA).advance().space() + .createComponent()); + }); + + p.sendEmptyMessage(); + } catch (APIResponseException e) { + e.sendInfo(); + } }).start(); } diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/WantedReasonCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/WantedReasonCommand.java index 9eb8426c5..1cbf8ee94 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/WantedReasonCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/WantedReasonCommand.java @@ -4,6 +4,7 @@ import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; import com.rettichlp.unicacityaddon.base.api.Syncer; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; import com.rettichlp.unicacityaddon.base.models.WantedReason; @@ -50,22 +51,28 @@ public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull IComman } @Override - public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, String[] args) { + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { UPlayer p = AbstractionLayer.getPlayer(); - if (args.length == 3 && args[0].equalsIgnoreCase("add")) { - JsonObject response = APIRequest.sendWantedReasonAddRequest(args[1], args[2]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else if (args.length == 2 && args[0].equalsIgnoreCase("remove")) { - JsonObject response = APIRequest.sendWantedReasonRemoveRequest(args[1]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); - } else { - p.sendSyntaxMessage(getUsage(sender)); - } + new Thread(() -> { + if (args.length == 3 && args[0].equalsIgnoreCase("add")) { + try { + JsonObject response = APIRequest.sendWantedReasonAddRequest(args[1], args[2]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else if (args.length == 2 && args[0].equalsIgnoreCase("remove")) { + try { + JsonObject response = APIRequest.sendWantedReasonRemoveRequest(args[1]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } + } else { + p.sendSyntaxMessage(getUsage(sender)); + } + }).start(); } @Override diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/YasinCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/YasinCommand.java similarity index 55% rename from src/main/java/com/rettichlp/unicacityaddon/commands/YasinCommand.java rename to src/main/java/com/rettichlp/unicacityaddon/commands/api/YasinCommand.java index 3f4be1131..2c5069401 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/YasinCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/YasinCommand.java @@ -1,13 +1,14 @@ -package com.rettichlp.unicacityaddon.commands; +package com.rettichlp.unicacityaddon.commands.api; -import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.base.text.FormattingCode; import com.rettichlp.unicacityaddon.base.text.Message; import net.minecraft.command.ICommand; import net.minecraft.command.ICommandSender; @@ -67,65 +68,58 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen new Thread(() -> { if (args.length == 0) { - yasinList(p); + try { + p.sendEmptyMessage(); + p.sendMessage(Message.getBuilder() + .of("Yasin's Liste:").color(ColorCode.DARK_AQUA).bold().advance() + .createComponent()); + + APIRequest.sendYasinRequest().getAsJsonArray().forEach(jsonElement -> { + JsonObject jsonObject = jsonElement.getAsJsonObject(); + String name = jsonObject.get("name").getAsString(); + boolean done = jsonObject.get("done").getAsBoolean(); + + p.sendMessage(Message.getBuilder() + .of("»").color(ColorCode.GRAY).advance().space() + .of(done ? FormattingCode.STRIKETHROUGH.getCode() : "" + name).color(ColorCode.AQUA).advance().space() + .of(!done ? "[✔] " : "").color(ColorCode.GREEN) + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/yasin done " + name) + .advance() + .of("[✕]").color(ColorCode.RED) + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/yasin remove " + name) + .advance() + .createComponent()); + }); + + p.sendEmptyMessage(); + } catch (APIResponseException e) { + e.sendInfo(); + } } else if (args.length == 2 && args[0].equalsIgnoreCase("add")) { - JsonObject response = APIRequest.sendYasinAddRequest(args[1]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); + try { + JsonObject response = APIRequest.sendYasinAddRequest(args[1]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } } else if (args.length == 2 && args[0].equalsIgnoreCase("remove")) { - JsonObject response = APIRequest.sendYasinRemoveRequest(args[1]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); + try { + JsonObject response = APIRequest.sendYasinRemoveRequest(args[1]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } } else if (args.length > 1 && args[0].equalsIgnoreCase("done")) { - JsonObject response = APIRequest.sendYasinDoneRequest(args[1]); - if (response == null) - return; - p.sendAPIMessage(response.get("info").getAsString(), true); + try { + JsonObject response = APIRequest.sendYasinDoneRequest(args[1]); + p.sendAPIMessage(response.get("info").getAsString(), true); + } catch (APIResponseException e) { + e.sendInfo(); + } } }).start(); } - private void yasinList(UPlayer p) { - p.sendEmptyMessage(); - p.sendMessage(Message.getBuilder() - .of("Yasin's Liste:").color(ColorCode.DARK_AQUA).bold().advance() - .createComponent()); - - JsonArray response = APIRequest.sendYasinRequest(); - if (response == null) - return; - - response.getAsJsonArray().forEach(jsonElement -> { - JsonObject jsonObject = jsonElement.getAsJsonObject(); - String name = jsonObject.get("name").getAsString(); - boolean done = jsonObject.get("done").getAsBoolean(); - - if (done) - p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.GRAY).advance().space() - .of(name).color(ColorCode.AQUA).strikethrough().advance().space() - .of("[✕]").color(ColorCode.RED) - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/yasin remove " + name) - .advance() - .createComponent()); - else - p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.GRAY).advance().space() - .of(name).color(ColorCode.AQUA).advance().space() - .of("[✔]").color(ColorCode.GREEN) - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/yasin done " + name) - .advance().space() - .of("[✕]").color(ColorCode.RED) - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/yasin remove " + name) - .advance() - .createComponent()); - }); - - p.sendEmptyMessage(); - } - @Override public boolean allowUsageWithoutPrefix(ICommandSender sender, String message) { return false; diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java index 0c2a5e1d6..29dd45dbf 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/AccountEventHandler.java @@ -4,6 +4,7 @@ import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.api.exception.APIResponseException; import com.rettichlp.unicacityaddon.base.api.request.APIRequest; import com.rettichlp.unicacityaddon.base.config.ConfigElements; import com.rettichlp.unicacityaddon.base.manager.FileManager; @@ -91,9 +92,8 @@ public void run() { } if (PatternHandler.ACCOUNT_TREUEBONUS_PATTERN.matcher(msg).find()) { - JsonObject response = APIRequest.sendStatisticRequest(); - if (response != null) { - JsonObject gameplayJsonObject = response.getAsJsonObject("gameplay"); + try { + JsonObject gameplayJsonObject = APIRequest.sendStatisticRequest().getAsJsonObject("gameplay"); int deaths = gameplayJsonObject.get("deaths").getAsInt(); int kills = gameplayJsonObject.get("kills").getAsInt(); float kd = gameplayJsonObject.get("kd").getAsFloat(); @@ -130,6 +130,8 @@ public void run() { .of(":").color(ColorCode.DARK_GRAY).advance().space() .of(playTime + (playTime == 1 ? " Stunde" : " Stunden")).color(ColorCode.RED).advance() .createComponent()); + } catch (APIResponseException ex) { + ex.sendInfo(); } return; } From 0302eaa637c8582cc0465b64f265dd160c52810f Mon Sep 17 00:00:00 2001 From: RettichLP <97811064+rettichlp@users.noreply.github.com> Date: Sat, 11 Mar 2023 17:22:14 +0100 Subject: [PATCH 131/136] Update src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java --- .../rettichlp/unicacityaddon/base/config/ConfigElements.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java index e0f7ee194..9706f957e 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/config/ConfigElements.java @@ -408,7 +408,7 @@ public static boolean getPlantBurnMessageActivated() { // BombScreenshot public static boolean getAutomatedBombScreenshot() { - return !UnicacityAddon.ADDON.getConfig().has("AUTOMATED_BOMB_SCREEN_SETTINGS") && UnicacityAddon.ADDON.getConfig().get("AUTOMATED_BOMB_SCREEN_SETTINGS") + return UnicacityAddon.ADDON.getConfig().has("AUTOMATED_BOMB_SCREEN_SETTINGS") && UnicacityAddon.ADDON.getConfig().get("AUTOMATED_BOMB_SCREEN_SETTINGS") .getAsBoolean(); // default = false } From 34e2846b358aba28b1232d83f8a5b8efa653f156 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sat, 11 Mar 2023 17:45:25 +0100 Subject: [PATCH 132/136] Fix tab completion in yasin command --- .../rettichlp/unicacityaddon/commands/api/YasinCommand.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/YasinCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/YasinCommand.java index 2c5069401..7c3e484a5 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/api/YasinCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/YasinCommand.java @@ -54,7 +54,9 @@ public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull IComman @Override @Nonnull public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { - return TabCompletionBuilder.getBuilder(args).build(); + return TabCompletionBuilder.getBuilder(args) + .addAtIndex(1, "add", "done", "remove") + .build(); } @Override From f6023e217737f061ad17f9bebb4a76d07885a07e Mon Sep 17 00:00:00 2001 From: Gelegenheitscode Date: Sat, 11 Mar 2023 17:57:36 +0100 Subject: [PATCH 133/136] automatic drugwithdrawel + more hq messages --- .../base/text/PatternHandler.java | 2 ++ .../events/DrugEventHandler.java | 23 +++++++++++++++++++ .../faction/state/HQMessageEventHandler.java | 20 ++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index c006900f3..99ff5e00e 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -90,6 +90,8 @@ public class PatternHandler { public static final Pattern WANTED_GIVEN_POINTS_PATTERN = Pattern.compile("^HQ: (?:\\[UC])*(\\w+)'s momentanes WantedLevel: (\\d+)$"); public static final Pattern WANTED_KILL = Pattern.compile("^HQ: (?:\\[UC])*(\\w+) wurde von (?:\\[UC])*([a-zA-Z0-9_]+) getötet\\.$"); public static final Pattern WANTED_DELETE = Pattern.compile("^HQ: .+ (?:\\[UC])*(\\w+) hat (?:\\[UC])*([a-zA-Z0-9_]+)'s Akten gelöscht, over\\.$"); + public static final Pattern WANTED_UNARREST_PATTERN = Pattern.compile("^HQ: .+ (?:\\[UC])*(\\w+) hat (?:\\[UC])*(\\w+) aus dem Gefängnis entlassen\\.$"); + public static final Pattern PEILSENDER_PATTERN = Pattern.compile("^HQ: Agent (?:\\[UC])*(\\w+) hat ein Peilsender an (?:\\[UC])*(\\w+) befestigt, over\\.$"); public static final Pattern WANTED_JAIL = Pattern.compile("^HQ: (?:\\[UC])*(\\w+) wurde von (?:\\[UC])*([a-zA-Z0-9_]+) eingesperrt\\.$"); public static final Pattern WANTEDS_TICKET_PATTERN = Pattern.compile("^HQ: .+ (?:\\[UC])*(\\w+) hat (?:\\[UC])*([a-zA-Z0-9_]+)(?:'s)*(?: seine| ihre)* Akten gelöscht, over\\.$"); public static final Pattern WANTED_DELETED_PATTERN = Pattern.compile("^HQ: (?:\\[UC])*(\\w+) wurde von (?:\\[UC])*\\w+ eingesperrt\\.$" + diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/DrugEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/DrugEventHandler.java index dd1d7cb5a..99fa761f4 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/DrugEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/DrugEventHandler.java @@ -5,11 +5,14 @@ import com.rettichlp.unicacityaddon.base.config.ConfigElements; import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; +import com.rettichlp.unicacityaddon.base.enums.faction.Faction; import com.rettichlp.unicacityaddon.base.manager.FileManager; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; import com.rettichlp.unicacityaddon.base.text.PatternHandler; +import net.minecraft.util.text.event.ClickEvent; +import net.minecraft.util.text.event.HoverEvent; import net.minecraftforge.client.event.ClientChatEvent; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -41,6 +44,26 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { if (drugGetMatcher.find()) { extractDrugData(drugGetMatcher); type = "ADD"; + + if (p.getFaction().equals(Faction.FBI) && p.getRank() > 1) { + String name = drugGetMatcher.group(1); + p.sendMessage(Message.getBuilder().of("Drogenabnahme?").color(ColorCode.DARK_AQUA).advance().space() + .of("[DA5]").color(ColorCode.AQUA).bold() + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Gebe dem Spieler die Wantedmodifikation").color(ColorCode.GOLD).advance().createComponent()) + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/mw " + name + " da5") + .advance() + .space() + .of("[DA10]").color(ColorCode.AQUA).bold() + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Gebe dem Spieler die Wantedmodifikation").color(ColorCode.GOLD).advance().createComponent()) + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/mw " + name + " da10") + .advance() + .space() + .of("[DA15]").color(ColorCode.AQUA).bold() + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Gebe dem Spieler die Wantedmodifikation").color(ColorCode.GOLD).advance().createComponent()) + .clickEvent(ClickEvent.Action.RUN_COMMAND, "/mw " + name + " da15") + .advance() + .createComponent()); + } return; } diff --git a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java index 4f0120784..b99c37c21 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java +++ b/src/main/java/com/rettichlp/unicacityaddon/events/faction/state/HQMessageEventHandler.java @@ -66,6 +66,16 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { return; } + m = PatternHandler.WANTED_UNARREST_PATTERN.matcher(msg); + if (m.find()) { + e.setMessage(Message.getBuilder().of("Entlassung").color(ColorCode.RED).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(2)).color(ColorCode.BLUE).advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(1)).color(ColorCode.BLUE).advance().createComponent()); + return; + } + m = PatternHandler.WANTED_GIVEN_REASON_PATTERN.matcher(msg); if (m.find()) { e.setMessage(Message.getBuilder().of("Gesucht").color(ColorCode.RED).advance().space() @@ -151,6 +161,16 @@ public void onClientChatReceived(ClientChatReceivedEvent e) { .of(m.group(3)).color(ColorCode.BLUE).advance().space() .of("-").color(ColorCode.GRAY).advance().space() .of(m.group(2)).color(ColorCode.BLUE).advance().createComponent()); + return; + } + + m = PatternHandler.PEILSENDER_PATTERN.matcher(msg); + if (m.find()) { + e.setMessage(Message.getBuilder().of("Peilsender").color(ColorCode.RED).bold().advance().space() + .of("-").color(ColorCode.GRAY).advance().space() + .of(m.group(1)).color(ColorCode.DARK_AQUA).advance().space() + .of("»").color(ColorCode.GRAY).advance().space() + .of(m.group(2)).color(ColorCode.GOLD).advance().createComponent()); } } } From 42338674e874af67691db26afc2b822d0a66e2ed Mon Sep 17 00:00:00 2001 From: Gelegenheitscode <90222460+Gelegenheitscode@users.noreply.github.com> Date: Sat, 11 Mar 2023 19:17:11 +0100 Subject: [PATCH 134/136] new corruption drug value --- .../commands/faction/fbi/KorruptionsrechnerCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java index 18537bae7..682e9f52d 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/faction/fbi/KorruptionsrechnerCommand.java @@ -65,7 +65,7 @@ public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sen } int money = wanted.getAmount() * 150; - int drugs = money / 55; + int drugs = money / 45; int methDrugs0 = money / 110; int methDrugs1 = money / 100; int methDrugs2 = money / 50; From a5860b53630526b472cbc61c2f51c2035cec5bc6 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sat, 11 Mar 2023 23:46:12 +0100 Subject: [PATCH 135/136] Add revive stats client endpoint according to api response --- .../unicacityaddon/base/api/Syncer.java | 55 ++++++ .../base/api/request/APIRequest.java | 23 +++ .../base/enums/api/ApplicationPath.java | 1 + .../unicacityaddon/base/models/Revive.java | 17 ++ .../commands/api/ReviveStatsCommand.java | 171 ++++++++++++++++++ 5 files changed, 267 insertions(+) create mode 100644 src/main/java/com/rettichlp/unicacityaddon/base/models/Revive.java create mode 100644 src/main/java/com/rettichlp/unicacityaddon/commands/api/ReviveStatsCommand.java diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java index 273182a40..6ea3c8c45 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/Syncer.java @@ -13,6 +13,7 @@ import com.rettichlp.unicacityaddon.base.models.HouseBanReason; import com.rettichlp.unicacityaddon.base.models.ManagementUser; import com.rettichlp.unicacityaddon.base.models.NaviPoint; +import com.rettichlp.unicacityaddon.base.models.Revive; import com.rettichlp.unicacityaddon.base.models.WantedReason; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.PatternHandler; @@ -246,6 +247,60 @@ private static List getNaviPointList() { return naviPointList; } + public static List getReviveList() { + List reviveList = new ArrayList<>(); + try { + APIRequest.sendReviveRequest().forEach(jsonElement -> { + JsonObject o = jsonElement.getAsJsonObject(); + + int currentWeekReviveAmount = o.get("currentWeekReviveAmount").getAsInt(); + int lastWeekReviveAmount = o.get("lastWeekReviveAmount").getAsInt(); + String minecraftName = o.get("minecraftName").getAsString(); + String minecraftUuid = o.get("minecraftUuid").getAsString(); + + reviveList.add(new Revive(currentWeekReviveAmount, lastWeekReviveAmount, minecraftName, minecraftUuid)); + }); + } catch (APIResponseException e) { + e.sendInfo(); + } + return reviveList; + } + + public static List getReviveRankList(int rank) { + List reviveList = new ArrayList<>(); + try { + APIRequest.sendReviveRankRequest(rank).forEach(jsonElement -> { + JsonObject o = jsonElement.getAsJsonObject(); + + int currentWeekReviveAmount = o.get("currentWeekReviveAmount").getAsInt(); + int lastWeekReviveAmount = o.get("lastWeekReviveAmount").getAsInt(); + String minecraftName = o.get("minecraftName").getAsString(); + String minecraftUuid = o.get("minecraftUuid").getAsString(); + + reviveList.add(new Revive(currentWeekReviveAmount, lastWeekReviveAmount, minecraftName, minecraftUuid)); + }); + } catch (APIResponseException e) { + e.sendInfo(); + } + return reviveList; + } + + public static Revive getRevivePlayer(String minecraftNameString) { + try { + JsonObject jsonObject = APIRequest.sendRevivePlayerRequest(minecraftNameString); + + int currentWeekReviveAmount = jsonObject.get("currentWeekReviveAmount").getAsInt(); + int lastWeekReviveAmount = jsonObject.get("lastWeekReviveAmount").getAsInt(); + String minecraftName = jsonObject.get("minecraftName").getAsString(); + String minecraftUuid = jsonObject.get("minecraftUuid").getAsString(); + + return new Revive(currentWeekReviveAmount, lastWeekReviveAmount, minecraftName, minecraftUuid); + } catch (APIResponseException e) { + e.sendInfo(); + return null; + } + } + private static List getWantedReasonList() { List wantedReasonList = new ArrayList<>(); try { diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java b/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java index 948fa276d..7ba249385 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/api/request/APIRequest.java @@ -244,6 +244,29 @@ public static JsonObject sendPlayerRemoveRequest(String name, String group) thro .getAsJsonObject(); } + public static JsonArray sendReviveRequest() throws APIResponseException { + return RequestBuilder.getBuilder() + .nonProd(NON_PROD) + .applicationPath(ApplicationPath.REVIVE) + .getAsJsonArray(); + } + + public static JsonArray sendReviveRankRequest(int rank) throws APIResponseException { + return RequestBuilder.getBuilder() + .nonProd(NON_PROD) + .applicationPath(ApplicationPath.REVIVE) + .subPath(String.valueOf(rank)) + .getAsJsonArray(); + } + + public static JsonObject sendRevivePlayerRequest(String minecraftName) throws APIResponseException { + return RequestBuilder.getBuilder() + .nonProd(NON_PROD) + .applicationPath(ApplicationPath.REVIVE) + .subPath(minecraftName) + .getAsJsonObject(); + } + public static JsonObject sendStatisticRequest() throws APIResponseException { return RequestBuilder.getBuilder() .nonProd(NON_PROD) diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java b/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java index 0f7f8da45..eef9581ad 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java +++ b/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java @@ -11,6 +11,7 @@ public enum ApplicationPath { MANAGEMENT("/mgmt"), NAVIPOINT("/navipoint"), PLAYER("/player"), + REVIVE("/revive"), STATISTIC("/statistic"), TOKEN(""), WANTEDREASON("/wantedreason"), diff --git a/src/main/java/com/rettichlp/unicacityaddon/base/models/Revive.java b/src/main/java/com/rettichlp/unicacityaddon/base/models/Revive.java new file mode 100644 index 000000000..f763af6b7 --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/base/models/Revive.java @@ -0,0 +1,17 @@ +package com.rettichlp.unicacityaddon.base.models; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author RettichLP + */ +@AllArgsConstructor +@Getter +public class Revive { + + private int currentWeekReviveAmount; + private int lastWeekReviveAmount; + private String minecraftName; + private String minecraftUuid; +} \ No newline at end of file diff --git a/src/main/java/com/rettichlp/unicacityaddon/commands/api/ReviveStatsCommand.java b/src/main/java/com/rettichlp/unicacityaddon/commands/api/ReviveStatsCommand.java new file mode 100644 index 000000000..42ad7b2fa --- /dev/null +++ b/src/main/java/com/rettichlp/unicacityaddon/commands/api/ReviveStatsCommand.java @@ -0,0 +1,171 @@ +package com.rettichlp.unicacityaddon.commands.api; + +import com.rettichlp.unicacityaddon.UnicacityAddon; +import com.rettichlp.unicacityaddon.base.abstraction.AbstractionLayer; +import com.rettichlp.unicacityaddon.base.abstraction.UPlayer; +import com.rettichlp.unicacityaddon.base.api.Syncer; +import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; +import com.rettichlp.unicacityaddon.base.enums.faction.Faction; +import com.rettichlp.unicacityaddon.base.models.Revive; +import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.base.text.FormattingCode; +import com.rettichlp.unicacityaddon.base.text.Message; +import com.rettichlp.unicacityaddon.base.utils.MathUtils; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.event.HoverEvent; +import net.minecraftforge.client.IClientCommand; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author RettichLP + */ +@UCCommand +public class ReviveStatsCommand implements IClientCommand { + + @Override + @Nonnull + public String getName() { + return "revivestats"; + } + + @Override + @Nonnull + public String getUsage(@Nonnull ICommandSender sender) { + return "/revivestats (Spieler|Rank)"; + } + + @Override + @Nonnull + public List getAliases() { + return Collections.singletonList("rstats"); + } + + @Override + public boolean checkPermission(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender) { + return true; + } + + @Override + public void execute(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args) { + UPlayer p = AbstractionLayer.getPlayer(); + + UnicacityAddon.MINECRAFT.ingameGUI.setOverlayMessage(ColorCode.AQUA.getCode() + FormattingCode.BOLD.getCode() + "Revivestats werden geladen...", true); + + new Thread(() -> { + if (args.length > 0 && MathUtils.isInteger(args[0])) { + List reviveList = Syncer.getReviveRankList(Integer.parseInt(args[0])); + p.sendEmptyMessage(); + p.sendMessage(Message.getBuilder() + .of("Revivestats (Rang " + args[0] + "):").color(ColorCode.DARK_AQUA).bold().advance() + .createComponent()); + sendList(reviveList); + p.sendEmptyMessage(); + } else if (args.length > 0) { + Revive revive = Syncer.getRevivePlayer(args[0]); + + if (revive != null) { + int currentWeekReviveAmount = revive.getCurrentWeekReviveAmount(); + int lastWeekReviveAmount = revive.getLastWeekReviveAmount(); + + int difference = currentWeekReviveAmount - lastWeekReviveAmount; + String differenceString = ColorCode.GREEN.getCode() + (difference > 0 ? "+" : "") + difference; + + p.sendEmptyMessage(); + p.sendMessage(Message.getBuilder() + .of("Revivestats von").color(ColorCode.DARK_AQUA).advance().space() + .of(args[0]).color(ColorCode.AQUA).advance() + .of(":").color(ColorCode.DARK_AQUA).advance().space() + .of(String.valueOf(currentWeekReviveAmount)).color(ColorCode.AQUA).advance().space() + .of("(").color(ColorCode.DARK_GRAY).advance() + .of(differenceString).color(difference >= 0 ? ColorCode.GREEN : ColorCode.RED) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder() + .of("Diese Woche:").color(ColorCode.GRAY).advance().space() + .of(String.valueOf(currentWeekReviveAmount)).color(ColorCode.RED).advance().newline() + .of("Letzte Woche:").color(ColorCode.GRAY).advance().space() + .of(String.valueOf(lastWeekReviveAmount)).color(ColorCode.RED).advance() + .createComponent()) + .advance() + .of(")").color(ColorCode.DARK_GRAY).advance() + .createComponent()); + + p.sendEmptyMessage(); + } + } else { + List reviveList = Syncer.getReviveList(); + p.sendEmptyMessage(); + p.sendMessage(Message.getBuilder() + .of("Revivestats:").color(ColorCode.DARK_AQUA).bold().advance() + .createComponent()); + sendList(reviveList); + p.sendEmptyMessage(); + } + }).start(); + } + + @Override + @Nonnull + public List getTabCompletions(@Nonnull MinecraftServer server, @Nonnull ICommandSender sender, @Nonnull String[] args, @Nullable BlockPos targetPos) { + return TabCompletionBuilder.getBuilder(args) + .addAtIndex(1, Syncer.PLAYERFACTIONMAP.entrySet().stream() + .filter(stringFactionEntry -> stringFactionEntry.getValue().equals(Faction.RETTUNGSDIENST)) + .map(Map.Entry::getKey) + .sorted() + .collect(Collectors.toList())) + .addAtIndex(1, "0", "1", "2", "3", "4", "5", "6") + .build(); + } + + @Override + public boolean isUsernameIndex(@Nonnull String[] args, int index) { + return false; + } + + @Override + public boolean allowUsageWithoutPrefix(ICommandSender sender, String message) { + return false; + } + + @Override + public int compareTo(@Nonnull ICommand o) { + return 0; + } + + private void sendList(List reviveList) { + reviveList.stream() + .sorted(Comparator.comparing(Revive::getCurrentWeekReviveAmount)) + .forEach(revive -> { + int currentWeekReviveAmount = revive.getCurrentWeekReviveAmount(); + int lastWeekReviveAmount = revive.getLastWeekReviveAmount(); + + int difference = currentWeekReviveAmount - lastWeekReviveAmount; + String differenceString = ColorCode.GREEN.getCode() + (difference > 0 ? "+" : "") + difference; + + AbstractionLayer.getPlayer().sendMessage(Message.getBuilder() + .of("»").color(ColorCode.GRAY).advance().space() + .of(revive.getMinecraftName() + ":").color(ColorCode.GRAY).advance().space() + .of(String.valueOf(currentWeekReviveAmount)).color(ColorCode.AQUA).advance().space() + .of("(").color(ColorCode.DARK_GRAY).advance() + .of(differenceString).color(difference >= 0 ? ColorCode.GREEN : ColorCode.RED) + .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder() + .of("Diese Woche:").color(ColorCode.GRAY).advance().space() + .of(String.valueOf(currentWeekReviveAmount)).color(ColorCode.RED).advance().newline() + .of("Letzte Woche:").color(ColorCode.GRAY).advance().space() + .of(String.valueOf(lastWeekReviveAmount)).color(ColorCode.RED).advance() + .createComponent()) + .advance() + .of(")").color(ColorCode.DARK_GRAY).advance() + .createComponent()); + }); + } +} \ No newline at end of file From f51ba459c600a1f7e53fbfd69835731594aa0db9 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Sun, 12 Mar 2023 01:40:28 +0100 Subject: [PATCH 136/136] Update version to 1.9.0 --- .github/ISSUE_TEMPLATE/bug-oder-fehler.md | 2 +- build.gradle | 2 +- src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java | 2 +- src/main/resources/mcmod.info | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-oder-fehler.md b/.github/ISSUE_TEMPLATE/bug-oder-fehler.md index 671106af9..7e055ca2d 100644 --- a/.github/ISSUE_TEMPLATE/bug-oder-fehler.md +++ b/.github/ISSUE_TEMPLATE/bug-oder-fehler.md @@ -25,4 +25,4 @@ Füge gegebenenfalls Screenshots hinzu, um das Problem zu erläutern. **Weitere Informationen (bitte ausfüllen):** Minecraft Version: `1.12.2` -Addon Version: `1.9.0-dev` +Addon Version: `1.9.0` diff --git a/build.gradle b/build.gradle index 3be9d1552..c5acd4e89 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ apply plugin: 'net.minecraftforge.gradle' apply plugin: 'idea' apply plugin: 'maven-publish' -version = '1.9.0-dev' +version = '1.9.0' group = 'com.rettichlp' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'UnicacityAddon' diff --git a/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java b/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java index be248b882..acc8cb8ef 100644 --- a/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java +++ b/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java @@ -36,7 +36,7 @@ @Mod(name = "UnicacityAddon", modid = "unicacityaddon", version = UnicacityAddon.VERSION, clientSideOnly = true, acceptedMinecraftVersions = "[1.12,1.12.2]") public class UnicacityAddon extends LabyModAddon { - public static final String VERSION = "1.9.0-dev"; + public static final String VERSION = "1.9.0"; public static final Minecraft MINECRAFT = Minecraft.getMinecraft(); public static UnicacityAddon ADDON; public static final Logger LOGGER = LogManager.getLogger(); diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index e0e91ea5c..dda8d441d 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "unicacityaddon", "name": "UnicacityAddon", "description": "This addon is a modification for UnicaCity providing specialized and nice-to-have features and utilities for everyday gameplay.", - "version": "1.9.0-dev", + "version": "1.9.0", "mcversion": "1.12.2", "url": "", "updateUrl": "",