From bbf253c4abcd632a7a0ec50ac456ed116615c2df Mon Sep 17 00:00:00 2001 From: rettichlp Date: Wed, 27 Sep 2023 12:52:38 +0200 Subject: [PATCH 01/12] Update version to 2.5.0-dev --- .github/workflows/build.yml | 1 - .github/workflows/wiki.yml | 1 - build.gradle.kts | 4 ++-- .../rettichlp/unicacityaddon/base/services/UtilService.java | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dac33ddb..2ba845c8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,7 +7,6 @@ on: - 'hotfix/**' pull_request: branches: - - 'main' - 'develop' - 'hotfix/**' workflow_dispatch: diff --git a/.github/workflows/wiki.yml b/.github/workflows/wiki.yml index d24babbf..09049097 100644 --- a/.github/workflows/wiki.yml +++ b/.github/workflows/wiki.yml @@ -7,7 +7,6 @@ on: - 'hotfix/**' pull_request: branches: - - 'main' - 'develop' - 'hotfix/**' workflow_dispatch: diff --git a/build.gradle.kts b/build.gradle.kts index 7ec8c46e..bedf0e5e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } group = "com.rettichlp.unicacityaddon" -version = "2.4.1" +version = "2.5.0-dev" java.toolchain.languageVersion.set(JavaLanguageVersion.of(17)) @@ -17,7 +17,7 @@ labyMod { author = "RettichLP & Dimiikou" description = "UnicacityAddon is a LabyMod addon written for the Minecraft server Unicacity and provides specialized, nice-to-have features and utilities for everyday gameplay." minecraftVersion = "1.12.2<*" - version = System.getenv().getOrDefault("VERSION", "2.4.1") + version = System.getenv().getOrDefault("VERSION", "2.5.0-dev") } minecraft { diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/services/UtilService.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/services/UtilService.java index 26a88b28..32c8e810 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/services/UtilService.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/base/services/UtilService.java @@ -53,7 +53,7 @@ public UtilService(UnicacityAddon unicacityAddon) { @SuppressWarnings("SameReturnValue") public String version() { - return "2.4.1"; + return "2.5.0-dev"; } public boolean isUnicacity() { From c16917886876905b3612df584673fd0025d4d38d Mon Sep 17 00:00:00 2001 From: rettichlp Date: Thu, 12 Oct 2023 11:49:42 +0200 Subject: [PATCH 02/12] Remove style sheet from repository tree --- unicacityaddon.xml | 272 --------------------------------------------- 1 file changed, 272 deletions(-) delete mode 100644 unicacityaddon.xml diff --git a/unicacityaddon.xml b/unicacityaddon.xml deleted file mode 100644 index 760413e1..00000000 --- a/unicacityaddon.xml +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - - \ No newline at end of file From 66f896b3e05d029448ef29018539ca22644e67fb Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 28 Nov 2023 12:59:15 +0100 Subject: [PATCH 03/12] Add versioned controllers for 1.20.2 --- build.gradle.kts | 3 +- .../v1_20_2/VersionedDeadBodyController.java | 95 ++++++++ .../v1_20_2/VersionedGuiController.java | 227 ++++++++++++++++++ .../VersionedPlayerListController.java | 83 +++++++ .../VersionedScreenshotController.java | 44 ++++ .../v1_20_2/VersionedSoundController.java | 119 +++++++++ .../v1_20_2/VersionedTransportController.java | 96 ++++++++ .../VersionedWorldInteractionController.java | 88 +++++++ .../assets/unicacityaddon/.assetsroot | 0 9 files changed, 754 insertions(+), 1 deletion(-) create mode 100644 game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedDeadBodyController.java create mode 100644 game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedGuiController.java create mode 100644 game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedPlayerListController.java create mode 100644 game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedScreenshotController.java create mode 100644 game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedSoundController.java create mode 100644 game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedTransportController.java create mode 100644 game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedWorldInteractionController.java create mode 100644 game-runner/src/v1_20_2/resources/assets/unicacityaddon/.assetsroot diff --git a/build.gradle.kts b/build.gradle.kts index bedf0e5e..980e420b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -30,7 +30,8 @@ labyMod { "1.19.2", "1.19.3", "1.19.4", - "1.20.1" + "1.20.1", + "1.20.2" ) { version, provider -> configureRun(provider, version) } diff --git a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedDeadBodyController.java b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedDeadBodyController.java new file mode 100644 index 00000000..46e57232 --- /dev/null +++ b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedDeadBodyController.java @@ -0,0 +1,95 @@ +package com.rettichlp.unicacityaddon.v1_20_2; + +import com.rettichlp.unicacityaddon.UnicacityAddon; +import com.rettichlp.unicacityaddon.base.enums.faction.Faction; +import com.rettichlp.unicacityaddon.base.text.ColorCode; +import com.rettichlp.unicacityaddon.base.text.Message; +import com.rettichlp.unicacityaddon.controller.DeadBodyController; +import net.labymod.api.models.Implements; +import net.labymod.api.util.math.vector.FloatVector3; +import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TextColor; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.item.Items; +import net.minecraft.world.phys.AABB; + +import javax.inject.Inject; +import javax.inject.Singleton; +import java.util.AbstractMap; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; + +/** + * @author RettichLP + */ +@Singleton +@Implements(DeadBodyController.class) +public class VersionedDeadBodyController extends DeadBodyController { + + /** + * When a corpse is rendered, the display name is automatically changed. The name can reflect the current wanted + * level. However, if this state changes while the corpse has already been rendered, the color will not change. In + * order to ensure this change anyway, the name must be available in every render process. In order not to waste + * performance by calculating the name in every render process, the name that was calculated when the corpse was + * first rendered is used. Likewise, the status of whether the corpse can be revived. + */ + private final Map> corpseMap = new HashMap<>(); + + @Inject + public VersionedDeadBodyController() { + } + + @Override + public void updateDisplayName(UnicacityAddon unicacityAddon) { + FloatVector3 location = unicacityAddon.player().getLocation(); + + assert location != null; + AABB aabb = new AABB( + location.getX() - 50, + location.getY() - 50, + location.getZ() - 50, + location.getX() + 50, + location.getY() + 50, + location.getZ() + 50 + ); + + assert Minecraft.getInstance().level != null; + Minecraft.getInstance().level.getEntitiesOfClass(ItemEntity.class, aabb, itemEntity -> itemEntity != null && itemEntity.hasCustomName() && itemEntity.getItem().getItem().equals(Items.SKELETON_SKULL)).forEach(itemEntity -> { + Component customName = itemEntity.getCustomName(); + + assert customName != null; + List siblings = customName.getSiblings(); + + // get player name and revivable status + String playerName; + boolean nonRevivable; + if (!siblings.isEmpty()) { // sibling size only by not formatted corpses greater than 0 + Component originalCorpseName = siblings.get(0); + playerName = originalCorpseName.getContents().toString().substring(1); + nonRevivable = Objects.equals(originalCorpseName.getStyle().getColor(), TextColor.fromLegacyFormat(ChatFormatting.DARK_GRAY)); + this.corpseMap.put(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>(playerName, nonRevivable)); + } else { + Map.Entry corpse = this.corpseMap.getOrDefault(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>("Unbekannt", false)); + playerName = corpse.getKey(); + nonRevivable = corpse.getValue(); + } + + // use player name and revivable status + String prefix = unicacityAddon.nameTagService().getPrefix(playerName, true); + String factionInfo = unicacityAddon.configuration().nametag().info().get() ? unicacityAddon.api().getPlayerFactionMap().getOrDefault(playerName, Faction.NULL).getNameTagSuffix() : ""; + + String ndn = Message.getBuilder() + .of("✟").color(nonRevivable ? ColorCode.DARK_GRAY : ColorCode.GRAY).advance() + .of((nonRevivable ? ColorCode.DARK_GRAY.getCode() : prefix) + playerName).advance().space() + .of(factionInfo).advance() + .create(); + + itemEntity.setCustomName(Component.nullToEmpty(ndn)); + }); + } +} diff --git a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedGuiController.java b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedGuiController.java new file mode 100644 index 00000000..17b5795e --- /dev/null +++ b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedGuiController.java @@ -0,0 +1,227 @@ +package com.rettichlp.unicacityaddon.v1_20_2; + +import com.rettichlp.unicacityaddon.UnicacityAddon; +import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; +import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; +import com.rettichlp.unicacityaddon.controller.GuiController; +import com.rettichlp.unicacityaddon.listener.ScreenRenderListener; +import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; +import net.labymod.api.models.Implements; +import net.labymod.api.nbt.NBTTagType; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.inventory.ContainerScreen; +import net.minecraft.client.gui.screens.inventory.HopperScreen; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.NonNullList; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; +import net.minecraft.world.inventory.ChestMenu; +import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.HopperMenu; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.Nullable; + +import javax.inject.Singleton; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author RettichLP + */ +@Singleton +@Implements(GuiController.class) +public class VersionedGuiController extends GuiController { + + private int containerId = 0; + + @Override + public int getSlotNumberByDisplayName(String displayName) { + int slotNumber = -1; + + Screen screen = Minecraft.getInstance().screen; + if (screen instanceof ContainerScreen containerScreen) { + ChestMenu chestMenu = containerScreen.getMenu(); + + NonNullList itemStacks = chestMenu.getItems(); + Optional hoveredItemStackOptional = itemStacks.stream() + .filter(itemStack -> itemStack.getDisplayName().getString().contains(displayName)) + .findFirst(); + + if (hoveredItemStackOptional.isPresent()) { + slotNumber = itemStacks.indexOf(hoveredItemStackOptional.get()); + } + } + + return slotNumber; + } + + @Override + public @Nullable String getContainerLegacyName() { + return null; + } + + @Override + public int getContainerId() { + return 0; + } + + @Override + public void inventoryClick(int slotNumber) { + Screen screen = Minecraft.getInstance().screen; + + this.containerId = 0; + if (screen instanceof ContainerScreen containerScreen) { + this.containerId = containerScreen.getMenu().containerId; + } else if (screen instanceof HopperScreen hopperScreen) { + this.containerId = hopperScreen.getMenu().containerId; + } + + LocalPlayer localPlayer = Minecraft.getInstance().player; + assert localPlayer != null; + + ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(this.containerId, 0, slotNumber, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); + localPlayer.connection.send(serverboundContainerClickPacket); + } + + @Override + public void updateDrugInventoryMap(UnicacityAddon unicacityAddon) { + Screen screen = Minecraft.getInstance().screen; + if (screen instanceof ContainerScreen containerScreen) { + ChestMenu chestMenu = containerScreen.getMenu(); + + this.containerId = chestMenu.containerId; + if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) + return; + + unicacityAddon.utilService().command().setLastWindowId(this.containerId); + + if (unicacityAddon.utilService().command().isCocaineCheck()) { + unicacityAddon.utilService().command().setCocaineCheck(false); + // select cocaine to check drug purity + this.inventoryClick(0); + } else if (unicacityAddon.utilService().command().isMarihuanaCheck()) { + unicacityAddon.utilService().command().setMarihuanaCheck(false); + // select marihuana to check drug purity + this.inventoryClick(1); + } else if (unicacityAddon.utilService().command().isMethCheck()) { + unicacityAddon.utilService().command().setMethCheck(false); + // select meth to check drug purity + this.inventoryClick(2); + } else { + chestMenu.getItems().stream() + .filter(itemStack -> !itemStack.isEmpty() && !itemStack.getDisplayName().getString().contains("Pulver") && !itemStack.getDisplayName().getString().contains("Kräuter") && !itemStack.getDisplayName().getString().contains("Kristalle")) + .forEach(itemStack -> { + assert itemStack.getTag() != null; + CompoundTag compoundTag = itemStack.getTag().getCompound("display"); + String lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()).getString(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().getString()); + + if (drugType != null) { + Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); + Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); + drugPurityMap.put(DrugPurity.BEST, amount); + drugInventoryMap.put(drugType, drugPurityMap); + unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); + } + } + }); + + unicacityAddon.utilService().command().setActiveDrugInventoryLoading(false); + assert Minecraft.getInstance().player != null; + Minecraft.getInstance().player.closeContainer(); + } + } else if (screen instanceof HopperScreen hopperScreen && unicacityAddon.utilService().command().isActiveDrugInventoryLoading()) { + HopperMenu hopperMenu = hopperScreen.getMenu(); + + this.containerId = hopperMenu.containerId; + if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) + return; + + unicacityAddon.utilService().command().setLastWindowId(this.containerId); + + hopperMenu.getItems().stream() + .filter(itemStack -> !itemStack.isEmpty()) + .forEach(itemStack -> { + assert itemStack.getTag() != null; + CompoundTag compoundTag = itemStack.getTag().getCompound("display"); + ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); + String drugPurityNbt = lore.getString(1); + String amountNbt = lore.getString(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().getString()); + DrugPurity drugPurity = DrugPurity.getDrugPurity(drugPurityNbt); + + if (drugType != null) { + Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); + Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); + drugPurityMap.put(drugPurity, amount); + drugInventoryMap.put(drugType, drugPurityMap); + unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); + } + } + }); + + // go back to inventory container + this.inventoryClick(4); + } + } + + @Override + public void setSelectedHotbarSlot(int slotNumber) { + assert Minecraft.getInstance().player != null; + Minecraft.getInstance().player.getInventory().selected = slotNumber; + } + + @Override + public void updateSetting(boolean expectedValue) { + Screen screen = Minecraft.getInstance().screen; + if (screen instanceof ContainerScreen containerScreen && !ScreenRenderListener.settingPath.isEmpty()) { + ChestMenu chestMenu = containerScreen.getMenu(); + + if (chestMenu.containerId != this.containerId) { + this.containerId = chestMenu.containerId; + + if (ScreenRenderListener.settingPath.size() > 1) { + this.inventoryClick(ScreenRenderListener.settingPath.remove(0)); + } else { + int slotNumber = ScreenRenderListener.settingPath.remove(0); + ItemStack itemStack = chestMenu.getItems().get(slotNumber); + assert itemStack.getTag() != null; + CompoundTag compoundTag = itemStack.getTag().getCompound("display"); + ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); + if (lore.getString(1).equals("§cAktiviere den Hitsound") && expectedValue) { + this.inventoryClick(slotNumber); + } + assert Minecraft.getInstance().player != null; + Minecraft.getInstance().player.closeContainer(); + } + } + } + } + + @Override + public boolean containsItemContainingString(String name) { + NonNullList itemStackNonNullList = null; + + Screen screen = Minecraft.getInstance().screen; + if (screen instanceof ContainerScreen containerScreen) { + itemStackNonNullList = containerScreen.getMenu().getItems(); + } else if (screen instanceof HopperScreen hopperScreen) { + itemStackNonNullList = hopperScreen.getMenu().getItems(); + } + + return itemStackNonNullList != null && itemStackNonNullList.stream().anyMatch(itemStack -> itemStack.getDisplayName().getContents().toString().contains(name)); + } +} \ No newline at end of file diff --git a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedPlayerListController.java b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedPlayerListController.java new file mode 100644 index 00000000..74fdeda4 --- /dev/null +++ b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedPlayerListController.java @@ -0,0 +1,83 @@ +package com.rettichlp.unicacityaddon.v1_20_2; + +import com.rettichlp.unicacityaddon.UnicacityAddon; +import com.rettichlp.unicacityaddon.base.tab.TabPrefix; +import com.rettichlp.unicacityaddon.controller.PlayerListController; +import net.labymod.api.Laby; +import net.labymod.api.client.network.ClientPacketListener; +import net.labymod.api.client.network.NetworkPlayerInfo; +import net.labymod.api.models.Implements; +import net.minecraft.client.Minecraft; +import net.minecraft.world.scores.PlayerTeam; +import net.minecraft.world.scores.Scoreboard; + +import javax.inject.Inject; +import javax.inject.Singleton; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +/** + * @author RettichLP + */ +@Singleton +@Implements(PlayerListController.class) +public class VersionedPlayerListController extends PlayerListController { + + @Inject + public VersionedPlayerListController() { + } + + @Override + public boolean isKeyPlayerListDown() { + return Minecraft.getInstance().options.keyPlayerList.isDown(); + } + + @Override + public void orderPlayerList(UnicacityAddon unicacityAddon) { + ClientPacketListener clientPacketListener = Laby.labyAPI().minecraft().getClientPacketListener(); + Collection networkPlayerInfos = clientPacketListener != null ? clientPacketListener.getNetworkPlayerInfos() : Collections.emptyList(); + assert Minecraft.getInstance().level != null; + Scoreboard scoreboard = Minecraft.getInstance().level.getScoreboard(); + + // get teams or create if not present + Map tabPrefixScorePlayerTeamMap = getScorePlayerTeamMap(scoreboard); + + // add default player team (m_player) + networkPlayerInfos.stream() + .filter(networkPlayerInfo -> networkPlayerInfo.profile() != null) + .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) + .map(networkPlayerInfo -> networkPlayerInfo.profile().getUsername()) + .forEach(s -> scoreboard.addPlayerToTeam(s, tabPrefixScorePlayerTeamMap.get(TabPrefix.NONE))); + + // add formatted player teams + networkPlayerInfos.stream() + .filter(networkPlayerInfo -> networkPlayerInfo.displayName() != null) + .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) + .forEach(networkPlayerInfo -> { + String displayName = unicacityAddon.utilService().text().legacy(networkPlayerInfo.displayName()); + TabPrefix tabPrefix = TabPrefix.getTypeByDisplayName(displayName); + PlayerTeam playerTeam = tabPrefixScorePlayerTeamMap.get(tabPrefix); + scoreboard.addPlayerToTeam(networkPlayerInfo.profile().getUsername(), playerTeam); + }); + } + + private Map getScorePlayerTeamMap(Scoreboard scoreboard) { + Map scorePlayerTeamMap = new HashMap<>(); + scorePlayerTeamMap.put(TabPrefix.FBI_UC, scoreboard.getPlayerTeam("a_fbi_uc") != null ? scoreboard.getPlayerTeam("a_fbi_uc") : scoreboard.addPlayerTeam("a_fbi_uc")); + scorePlayerTeamMap.put(TabPrefix.FBI, scoreboard.getPlayerTeam("b_fbi") != null ? scoreboard.getPlayerTeam("b_fbi") : scoreboard.addPlayerTeam("b_fbi")); + scorePlayerTeamMap.put(TabPrefix.POLICE_UC, scoreboard.getPlayerTeam("c_police_uc") != null ? scoreboard.getPlayerTeam("c_police_uc") : scoreboard.addPlayerTeam("c_police_uc")); + scorePlayerTeamMap.put(TabPrefix.POLICE, scoreboard.getPlayerTeam("d_police") != null ? scoreboard.getPlayerTeam("d_police") : scoreboard.addPlayerTeam("d_police")); + scorePlayerTeamMap.put(TabPrefix.MEDIC_UC, scoreboard.getPlayerTeam("e_medic_uc") != null ? scoreboard.getPlayerTeam("e_medic_uc") : scoreboard.addPlayerTeam("e_medic_uc")); + scorePlayerTeamMap.put(TabPrefix.MEDIC, scoreboard.getPlayerTeam("f_medic") != null ? scoreboard.getPlayerTeam("f_medic") : scoreboard.addPlayerTeam("f_medic")); + scorePlayerTeamMap.put(TabPrefix.NEWS_UC, scoreboard.getPlayerTeam("g_news_uc") != null ? scoreboard.getPlayerTeam("g_news_uc") : scoreboard.addPlayerTeam("g_news_uc")); + scorePlayerTeamMap.put(TabPrefix.NEWS, scoreboard.getPlayerTeam("h_news") != null ? scoreboard.getPlayerTeam("h_news") : scoreboard.addPlayerTeam("h_news")); + scorePlayerTeamMap.put(TabPrefix.UC_DUTY, scoreboard.getPlayerTeam("i_uc_duty") != null ? scoreboard.getPlayerTeam("i_uc_duty") : scoreboard.addPlayerTeam("i_uc_duty")); + scorePlayerTeamMap.put(TabPrefix.BUILDER, scoreboard.getPlayerTeam("j_builder") != null ? scoreboard.getPlayerTeam("j_builder") : scoreboard.addPlayerTeam("j_builder")); + scorePlayerTeamMap.put(TabPrefix.REPORT, scoreboard.getPlayerTeam("k_report") != null ? scoreboard.getPlayerTeam("k_report") : scoreboard.addPlayerTeam("k_report")); + scorePlayerTeamMap.put(TabPrefix.UC, scoreboard.getPlayerTeam("l_uc") != null ? scoreboard.getPlayerTeam("l_uc") : scoreboard.addPlayerTeam("l_uc")); + scorePlayerTeamMap.put(TabPrefix.NONE, scoreboard.getPlayerTeam("m_player") != null ? scoreboard.getPlayerTeam("m_player") : scoreboard.addPlayerTeam("m_player")); + return scorePlayerTeamMap; + } +} diff --git a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedScreenshotController.java b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedScreenshotController.java new file mode 100644 index 00000000..875b5a4d --- /dev/null +++ b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedScreenshotController.java @@ -0,0 +1,44 @@ +package com.rettichlp.unicacityaddon.v1_20_2; + +import com.mojang.blaze3d.platform.NativeImage; +import com.rettichlp.unicacityaddon.controller.ScreenshotController; +import net.labymod.api.models.Implements; +import net.minecraft.Util; +import net.minecraft.client.Minecraft; +import net.minecraft.client.Screenshot; + +import javax.inject.Inject; +import javax.inject.Singleton; +import java.io.File; +import java.io.IOException; + +/** + * @author RettichLP + */ +@Singleton +@Implements(ScreenshotController.class) +public class VersionedScreenshotController extends ScreenshotController { + + @Inject + public VersionedScreenshotController() { + } + + @Override + public File createScreenshot(File file) { + if (file != null) { + Minecraft minecraft = Minecraft.getInstance(); + + NativeImage nativeImage = Screenshot.takeScreenshot(minecraft.getMainRenderTarget()); + Util.ioPool().execute(() -> { + try { + nativeImage.writeToFile(file); + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + nativeImage.close(); + } + }); + } + return file; + } +} diff --git a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedSoundController.java b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedSoundController.java new file mode 100644 index 00000000..1402169a --- /dev/null +++ b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedSoundController.java @@ -0,0 +1,119 @@ +package com.rettichlp.unicacityaddon.v1_20_2; + +import com.rettichlp.unicacityaddon.controller.SoundController; +import net.labymod.api.models.Implements; +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.sounds.SimpleSoundInstance; +import net.minecraft.sounds.SoundEvents; + +import javax.inject.Inject; +import javax.inject.Singleton; + +/** + * @author RettichLP + */ +@Singleton +@Implements(SoundController.class) +public class VersionedSoundController extends SoundController { + + @Inject + public VersionedSoundController() { + } + + @Override + public void playBankRobStartedSound() { + new Thread(() -> { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); + + try { + Thread.sleep(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.9F)); + + try { + Thread.sleep(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); + }).start(); + } + + @Override + public void playBombPlantedSound() { + new Thread(() -> { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.0F)); + + try { + Thread.sleep(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.8F)); + + try { + Thread.sleep(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.4F)); + }).start(); + } + + @Override + public void playContractSetSound() { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 0.5F)); + + } + + @Override + public void playContractFulfilledSound() { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); + } + + @Override + public void playMobileCallSound() { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.MUSIC_DISC_CAT, 1.0F)); + } + + @Override + public void playMobileSMSSound() { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.SHEEP_AMBIENT, 1.0F)); + } + + @Override + public void playReportSound() { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); + } + + @Override + public void playServiceSound() { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); + } + + @Override + public void playTankWarningSound() { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_HARP, 1.0F)); + } + + @Override + public void playTimerExpiredSound() { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, 1.0F)); + } + + @Override + public void playTeamSpeakSupportSound() { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); + } + + @Override + public void playTeamSpeakPublicitySound() { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.0F)); + } +} diff --git a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedTransportController.java b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedTransportController.java new file mode 100644 index 00000000..b8e1ab17 --- /dev/null +++ b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedTransportController.java @@ -0,0 +1,96 @@ +package com.rettichlp.unicacityaddon.v1_20_2; + +import com.rettichlp.unicacityaddon.UnicacityAddon; +import com.rettichlp.unicacityaddon.base.AddonPlayer; +import com.rettichlp.unicacityaddon.base.enums.location.Bus; +import com.rettichlp.unicacityaddon.commands.BusCommand; +import com.rettichlp.unicacityaddon.controller.TransportController; +import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; +import net.labymod.api.models.Implements; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.inventory.ContainerScreen; +import net.minecraft.client.gui.screens.inventory.HopperScreen; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; +import net.minecraft.world.inventory.ChestMenu; +import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.HopperMenu; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.Items; + +import javax.inject.Singleton; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author RettichLP + */ +@Singleton +@Implements(TransportController.class) +public class VersionedTransportController extends TransportController { + + @Override + public void processBusRouting(UnicacityAddon unicacityAddon) { + AddonPlayer p = unicacityAddon.player(); + Screen screen = Minecraft.getInstance().screen; + if (screen instanceof HopperScreen hopperScreen && BusCommand.active) { + HopperMenu hopperMenu = hopperScreen.getMenu(); + if (hopperMenu.containerId != BusCommand.lastWindowId) { + BusCommand.lastWindowId = hopperMenu.containerId; + + Map busSlotMap = hopperMenu.slots.stream() + .filter(slot -> slot.getItem().getItem().equals(Items.OAK_SIGN)) + .filter(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")) != null) + .collect(Collectors.toMap(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")), slot -> slot)); + + Bus nearestBusToDestination = BusCommand.getNearestBusToDestination(busSlotMap.keySet()); + if (nearestBusToDestination == null) { + p.sendErrorMessage("Es konnte keine Route gefunden werden."); + BusCommand.active = false; + return; + } + + Slot slot = busSlotMap.get(nearestBusToDestination); + LocalPlayer localPlayer = Minecraft.getInstance().player; + assert localPlayer != null; + + if (nearestBusToDestination.equals(BusCommand.destination)) { + ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); + localPlayer.connection.send(serverboundContainerClickPacket); + BusCommand.active = false; + } else if (BusCommand.limiter < 15) { + ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); + localPlayer.connection.send(serverboundContainerClickPacket); + BusCommand.limiter++; + } else { + p.sendErrorMessage("Es konnte keine Route gefunden werden."); + BusCommand.active = false; + } + } + } + } + + @Override + public void carInteract() { + Screen screen = Minecraft.getInstance().screen; + if (screen instanceof ContainerScreen containerScreen) { + + if (containerScreen.getTitle().getString().contains("CarControl")) { + ChestMenu chestMenu = containerScreen.getMenu(); + int numberOfCars = (int) chestMenu.slots.stream() + .map(slot -> slot.getItem().getItem()) + .filter(item -> item.equals(Items.MINECART) || item.equals(Items.EMERALD) || item.equals(Items.REDSTONE)) + .count(); + + if (numberOfCars == 1) { + LocalPlayer localPlayer = Minecraft.getInstance().player; + assert localPlayer != null; + + ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(chestMenu.containerId, 0, 0, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); + localPlayer.connection.send(serverboundContainerClickPacket); + } + } + } + } +} \ No newline at end of file diff --git a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedWorldInteractionController.java b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedWorldInteractionController.java new file mode 100644 index 00000000..5bb1720d --- /dev/null +++ b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedWorldInteractionController.java @@ -0,0 +1,88 @@ +package com.rettichlp.unicacityaddon.v1_20_2; + +import com.rettichlp.unicacityaddon.controller.WorldInteractionController; +import net.labymod.api.models.Implements; +import net.labymod.api.util.math.vector.FloatVector3; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.SignBlock; +import net.minecraft.world.level.block.WallBannerBlock; +import net.minecraft.world.level.block.entity.SignBlockEntity; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; + +import javax.inject.Singleton; +import java.util.Collection; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +/** + * @author RettichLP + */ +@Singleton +@Implements(WorldInteractionController.class) +public class VersionedWorldInteractionController extends WorldInteractionController { + + @Override + public FloatVector3 getClickedBlockLocation() { + assert Minecraft.getInstance().cameraEntity != null; + HitResult hitResult = Minecraft.getInstance().cameraEntity.pick(20, 0, false); + Vec3 vec3 = hitResult.getLocation(); + + return new FloatVector3((float) vec3.x(), (float) vec3.y(), (float) vec3.z()); + } + + @Override + public boolean isHouseNumberSign(FloatVector3 location) { + ClientLevel clientLevel = Minecraft.getInstance().level; + BlockPos blockPos = new BlockPos((int) location.getX(), (int) location.getY(), (int) location.getZ()); + + assert clientLevel != null; + if (clientLevel.getBlockState(blockPos).getBlock() instanceof SignBlock) { + SignBlockEntity signBlockEntity = (SignBlockEntity) clientLevel.getBlockEntity(blockPos); + + if (signBlockEntity != null) { + String text = signBlockEntity.getFrontText().getMessage(1, false).getString(); + return Pattern.compile("^== (\\d+) ==$").matcher(text).find(); + } + } + return false; + } + + @Override + public boolean isBanner(FloatVector3 location) { + ClientLevel clientLevel = Minecraft.getInstance().level; + BlockPos blockPos = new BlockPos((int) location.getX(), (int) location.getY(), (int) location.getZ()); + + assert clientLevel != null; + return clientLevel.getBlockState(blockPos).getBlock() instanceof WallBannerBlock; + } + + @Override + public boolean isPlant(FloatVector3 location) { + ClientLevel clientLevel = Minecraft.getInstance().level; + + assert clientLevel != null; + boolean isFern = clientLevel.getBlockState(new BlockPos((int) location.getX(), (int) location.getY(), (int) location.getZ())).getBlock().equals(Blocks.FERN); + boolean isPodzol = clientLevel.getBlockState(new BlockPos((int) location.getX(), ((int) location.getY()) - 1, (int) location.getZ())).getBlock().equals(Blocks.PODZOL); + + return isFern && isPodzol; + } + + @Override + public Collection getFireBlocksInBox(FloatVector3 one, FloatVector3 two) { + BlockPos oneBlockPos = new BlockPos((int) one.getX(), (int) one.getY(), (int) one.getZ()); + BlockPos twoBlockPos = new BlockPos((int) two.getX(), (int) two.getY(), (int) two.getZ()); + + return StreamSupport.stream(BlockPos.betweenClosed(oneBlockPos, twoBlockPos).spliterator(), false) + .filter(blockPos -> { + assert Minecraft.getInstance().level != null; + return Minecraft.getInstance().level.getBlockState(blockPos).getBlock().equals(Blocks.FIRE); + }) + .map(blockPos -> new FloatVector3(blockPos.getX(), blockPos.getY(), blockPos.getZ())) + .collect(Collectors.toList()); + } +} diff --git a/game-runner/src/v1_20_2/resources/assets/unicacityaddon/.assetsroot b/game-runner/src/v1_20_2/resources/assets/unicacityaddon/.assetsroot new file mode 100644 index 00000000..e69de29b From 0b8dbd362a93387a76251d7253a3faac7254bb33 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 29 Dec 2023 18:55:51 +0100 Subject: [PATCH 04/12] Remove auto nc completely --- .../rettichlp/unicacityaddon/api/AutoNC.java | 18 ----- .../base/enums/api/ApplicationPath.java | 1 - .../unicacityaddon/base/io/api/API.java | 33 --------- .../base/registry/Registry.java | 2 - .../base/text/PatternHandler.java | 1 - .../commands/api/AutoNCCommand.java | 74 ------------------- .../listener/team/NewbieChatListener.java | 71 ------------------ docs/api/endpoints/autonc.md | 47 ------------ docs/api/function/daten-und-speicherung.md | 7 -- mkdocs.yml | 1 - 10 files changed, 255 deletions(-) delete mode 100644 api/src/main/java/com/rettichlp/unicacityaddon/api/AutoNC.java delete mode 100644 core/src/main/java/com/rettichlp/unicacityaddon/commands/api/AutoNCCommand.java delete mode 100644 core/src/main/java/com/rettichlp/unicacityaddon/listener/team/NewbieChatListener.java delete mode 100644 docs/api/endpoints/autonc.md diff --git a/api/src/main/java/com/rettichlp/unicacityaddon/api/AutoNC.java b/api/src/main/java/com/rettichlp/unicacityaddon/api/AutoNC.java deleted file mode 100644 index 35a78d40..00000000 --- a/api/src/main/java/com/rettichlp/unicacityaddon/api/AutoNC.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.rettichlp.unicacityaddon.api; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -import java.util.List; - -/** - * @author RettichLP - */ -@Getter -@AllArgsConstructor -public class AutoNC { - - private final long id; - private final List words; - private final String answer; -} \ No newline at end of file diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java index cb97a87e..752f1578 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java @@ -11,7 +11,6 @@ public enum ApplicationPath { ACTIVITY_CHECK("/activitycheck"), - AUTO_NC("/autonc"), BANNER("/banner"), BLACKLISTREASON("/blacklistreason"), BLACKMARKETLOCATION("/blackmarket"), diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/io/api/API.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/io/api/API.java index 059e4d14..929392c0 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/io/api/API.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/base/io/api/API.java @@ -1,7 +1,6 @@ package com.rettichlp.unicacityaddon.base.io.api; import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.api.AutoNC; import com.rettichlp.unicacityaddon.api.BlackMarketLocation; import com.rettichlp.unicacityaddon.api.BlacklistReason; import com.rettichlp.unicacityaddon.api.NaviPoint; @@ -120,8 +119,6 @@ public class API { private final Map playerFactionMap = new HashMap<>(); private final Map playerRankMap = new HashMap<>(); - @Setter - private List autoNCList = new ArrayList<>(); @Setter private List blacklistReasonList = new ArrayList<>(); @Setter @@ -163,7 +160,6 @@ public void sync(AddonPlayer addonPlayer) { // load api data this.loadPlayerData(); - this.autoNCList = this.sendAutoNCRequest(); this.blacklistReasonList = this.sendBlacklistReasonRequest(); this.blackMarketLocationList = this.sendBlackMarketLocationRequest(); this.houseBanList = this.sendHouseBanRequest(this.addonPlayer.getFaction().equals(Faction.RETTUNGSDIENST)); @@ -228,35 +224,6 @@ private void loadPlayerData() { } } - public List sendAutoNCRequest() { - return RequestBuilder.getBuilder(this.unicacityAddon) - .preCondition(false) // deactivated because Unicacity guidelines - .nonProd(this.unicacityAddon.configuration().local().get()) - .applicationPath(ApplicationPath.AUTO_NC) - .getAsJsonArrayAndParse(AutoNC.class); - } - - public void sendAutoNCAddRequest(String words, String answer) { - RequestBuilder.getBuilder(this.unicacityAddon) - .nonProd(this.unicacityAddon.configuration().local().get()) - .applicationPath(ApplicationPath.AUTO_NC) - .subPath(ADD_SUB_PATH) - .parameter(Map.of( - "words", words, - "answer", answer)) - .sendAsync(); - } - - public void sendAutoNCRemoveRequest(Long id) { - RequestBuilder.getBuilder(this.unicacityAddon) - .nonProd(this.unicacityAddon.configuration().local().get()) - .applicationPath(ApplicationPath.AUTO_NC) - .subPath(REMOVE_SUB_PATH) - .parameter(Map.of( - "id", String.valueOf(id))) - .sendAsync(); - } - public void sendActivityCheckActivity(Activity activity, String type, String value, DrugType drugType, DrugPurity drugPurity, Long date, String screenshot) { RequestBuilder.getBuilder(this.unicacityAddon) .nonProd(this.unicacityAddon.configuration().local().get()) diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/registry/Registry.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/registry/Registry.java index 4c1f67f5..07ecfda4 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/registry/Registry.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/base/registry/Registry.java @@ -51,7 +51,6 @@ import com.rettichlp.unicacityaddon.commands.TimerCommand; import com.rettichlp.unicacityaddon.commands.TodoListCommand; import com.rettichlp.unicacityaddon.commands.api.AddonGroupCommand; -import com.rettichlp.unicacityaddon.commands.api.AutoNCCommand; import com.rettichlp.unicacityaddon.commands.api.BlacklistReasonCommand; import com.rettichlp.unicacityaddon.commands.api.HousebanCommand; import com.rettichlp.unicacityaddon.commands.api.HousebanReasonCommand; @@ -315,7 +314,6 @@ public class Registry { ActivityCommand.class, AddonGroupCommand.class, AutoFirstAidCommand.class, - AutoNCCommand.class, BlackMarketCommand.class, BlacklistInfoCommand.class, BlacklistReasonCommand.class, diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java index 2ea01ae1..656340d9 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/base/text/PatternHandler.java @@ -276,7 +276,6 @@ public class PatternHandler { public static final Pattern REPORT_ACCEPTED_PATTERN = Pattern.compile("^\\[Report] Du hast den Report von \\w+ \\[Level \\d+] angenommen! Thema: [a-zA-Z]+$"); public static final Pattern REPORT_END_PATTERN = Pattern.compile("^\\[Report] Du hast den Report mit \\w+ beendet! \\(#\\d+\\)$"); public static final Pattern AD_CONTROL_PATTERN = Pattern.compile("^\\[Werbung] (\\w+) hat eine Werbung geschalten: .+$"); - public static final Pattern NEWBIE_CHAT = Pattern.compile("^\\[NeulingsChat] (\\w+): (?.+)$"); /** * Pattern for house interaction diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/AutoNCCommand.java b/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/AutoNCCommand.java deleted file mode 100644 index 4b30c297..00000000 --- a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/AutoNCCommand.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.rettichlp.unicacityaddon.commands.api; - -import com.google.common.base.Joiner; -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.api.AutoNC; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; -import com.rettichlp.unicacityaddon.base.registry.UnicacityCommand; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import net.labymod.api.client.component.event.HoverEvent; - -import java.util.List; - -/** - * @author RettichLP - */ -@UCCommand(prefix = "autonc", onlyOnUnicacity = false, usage = "[add|remove] (Wort1,Wort2,Wort3,...|Id) (Antwort)", deactivated = true) -public class AutoNCCommand extends UnicacityCommand { - - private final UnicacityAddon unicacityAddon; - - public AutoNCCommand(UnicacityAddon unicacityAddon, UCCommand ucCommand) { - super(unicacityAddon, ucCommand); - this.unicacityAddon = unicacityAddon; - } - - @Override - public boolean execute(String[] arguments) { - AddonPlayer p = this.unicacityAddon.player(); - - new Thread(() -> { - if (arguments.length >= 3 && arguments[0].equalsIgnoreCase("add")) { - String answer = this.unicacityAddon.utilService().text().makeStringByArgs(arguments, " ") - .replace(arguments[0] + " " + arguments[1] + " ", ""); - - this.unicacityAddon.api().sendAutoNCAddRequest(arguments[1], answer); - } else if (arguments.length == 2 && arguments[0].equalsIgnoreCase("remove")) { - this.unicacityAddon.api().sendAutoNCRemoveRequest(Long.valueOf(arguments[1])); - } else { - new Thread(() -> { - List autoNCList = this.unicacityAddon.api().sendAutoNCRequest(); - this.unicacityAddon.api().setAutoNCList(autoNCList); - - p.sendEmptyMessage(); - p.sendMessage(Message.getBuilder() - .of("Auto Neulings-Chat:").color(ColorCode.DARK_AQUA).bold().advance() - .createComponent()); - - autoNCList.forEach(autoNC -> p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.GRAY).advance().space() - .of(Joiner.on(", ").join(autoNC.getWords())).color(ColorCode.AQUA) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder() - .of("Antwort (ID=" + autoNC.getId() + "):").color(ColorCode.GRAY).advance().newline() - .of(autoNC.getAnswer()).color(ColorCode.RED).advance() - .createComponent()) - .advance().space() - .createComponent())); - - p.sendEmptyMessage(); - }).start(); - } - }).start(); - return true; - } - - @Override - public List complete(String[] arguments) { - return TabCompletionBuilder.getBuilder(this.unicacityAddon, arguments) - .addAtIndex(1, "add", "remove") - .build(); - } -} \ No newline at end of file diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/listener/team/NewbieChatListener.java b/core/src/main/java/com/rettichlp/unicacityaddon/listener/team/NewbieChatListener.java deleted file mode 100644 index caabda78..00000000 --- a/core/src/main/java/com/rettichlp/unicacityaddon/listener/team/NewbieChatListener.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.rettichlp.unicacityaddon.listener.team; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -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.labymod.api.client.component.event.ClickEvent; -import net.labymod.api.client.component.event.HoverEvent; -import net.labymod.api.event.Subscribe; -import net.labymod.api.event.client.chat.ChatMessageSendEvent; -import net.labymod.api.event.client.chat.ChatReceiveEvent; - -import java.util.regex.Matcher; - -/** - * @author RettichLP - */ -@UCEvent -public class NewbieChatListener { - - private String lastNewbieChatMessage; - - private final UnicacityAddon unicacityAddon; - - public NewbieChatListener(UnicacityAddon unicacityAddon) { - this.unicacityAddon = unicacityAddon; - this.lastNewbieChatMessage = ""; - } - - @Subscribe - public void onChatReceive(ChatReceiveEvent e) { - AddonPlayer p = this.unicacityAddon.player(); - String msg = e.chatMessage().getPlainText(); - - Matcher newbieChatMatcher = PatternHandler.NEWBIE_CHAT.matcher(msg); - if (newbieChatMatcher.find()) { - String message = newbieChatMatcher.group("message").toLowerCase(); - this.lastNewbieChatMessage = message; - - this.unicacityAddon.api().getAutoNCList().stream() - .filter(autoNC -> autoNC.getWords().stream().map(String::toLowerCase).allMatch(message::contains)) - .findFirst() - .ifPresent(autoNC -> p.sendMessage(Message.getBuilder() - .of("[").color(ColorCode.DARK_GRAY).advance() - .of("Auto-NC").color(ColorCode.AQUA).advance() - .of("]").color(ColorCode.DARK_GRAY).advance().space() - .of(autoNC.getAnswer()).color(ColorCode.GRAY).advance().space() - .of("[").color(ColorCode.DARK_GRAY).advance() - .of("Senden").color(ColorCode.GREEN) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Nachricht senden").color(ColorCode.GREEN).advance().createComponent()) - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/nc " + autoNC.getAnswer()) - .advance() - .of("]").color(ColorCode.DARK_GRAY).advance() - .createComponent())); - } - } - - @Subscribe - public void onChatMessageSend(ChatMessageSendEvent e) { - String msg = e.getOriginalMessage(); - - // duplicate check - boolean isSameMessage = msg.startsWith("/nc ") && this.lastNewbieChatMessage.equalsIgnoreCase(msg.substring(4)); - if (isSameMessage) { - e.changeMessage("/nc Ich hätte es nicht besser ausdrücken können!"); - this.unicacityAddon.logger().info("Newbie chat message aborted because another message is equal to this message."); - } - } -} \ No newline at end of file diff --git a/docs/api/endpoints/autonc.md b/docs/api/endpoints/autonc.md deleted file mode 100644 index 6bb2b9e6..00000000 --- a/docs/api/endpoints/autonc.md +++ /dev/null @@ -1,47 +0,0 @@ -# Addon Group - -!!! danger "Deactivated" - - Dieser Endpunkt ist zur Zeit nicht in Verwendung. Durch eine Unicacity Richtlinie ist die Verwendung dieses Features - aktuell deaktiviert. - -OpenAPI: (noch nicht verfügbar) - -## [/autonc](https://rettichlp.de:8443/unicacityaddon/v1/dhgpsklnag2354668ec1d905xcv34d9bdee4b877/autonc) - -Gibt eine Übersicht aller Auto-NC Schlüsselwörter und Antworten. - -**Einschränkung**: 🔓 - -**GET** `/unicacityaddon/v1/{tokenString}/autonc` - -| Parameter | Beschreibung | -|---------------|--------------| -| `tokenString` | Addon-Token | - -## [/autonc/add](https://rettichlp.de:8443/unicacityaddon/v1/dhgpsklnag2354668ec1d905xcv34d9bdee4b877/autonc/add?words=Wort1,Wort2,Wort3&answer=Antwort) - -Gibt eine Übersicht aller Gruppen zurück. - -**Einschränkung**: 🔐 - -**GET** `/unicacityaddon/v1/{tokenString}/autonc/add?words={words}&answer={answer}` - -| Parameter | Beschreibung | -|---------------|--------------------------------| -| `tokenString` | Addon-Token | -| `words` | Wörter (Wort1,Wort2,Wort3,...) | -| `answer` | Antwort | - -## [/autonc/remove](https://rettichlp.de:8443/unicacityaddon/v1/dhgpsklnag2354668ec1d905xcv34d9bdee4b877/autonc/remove?id=1) - -Fügt den angegebenen Spieler der angegebenen Gruppe hinzu. - -**Einschränkung**: 🔒 (Administratoren) - -**GET** `/unicacityaddon/v1/{tokenString}/autonc/remove?id={id}` - -| Parameter | Beschreibung | -|---------------|-------------------------------| -| `tokenString` | Addon-Token | -| `id
` | ID des zu löschenden Eintrags | diff --git a/docs/api/function/daten-und-speicherung.md b/docs/api/function/daten-und-speicherung.md index 39d07be9..6760b14c 100644 --- a/docs/api/function/daten-und-speicherung.md +++ b/docs/api/function/daten-und-speicherung.md @@ -9,13 +9,6 @@ Speichert Spieler und (sofern zugeordnet) deren Gruppen. - `minecraftUuid` Minecraft UUID des Spielers - `groupList` Liste aus Gruppen, zu denen der Spieler gehört -## AutoNC - -Speichert Schlüsselwörter oder Symbole und eine Antwort. - -- `words` Liste aus Wörtern oder Symbolen -- `answer` Antwort Text - ## Banner Speichert den Banner-Status. diff --git a/mkdocs.yml b/mkdocs.yml index 33744bb1..c70be232 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -87,7 +87,6 @@ nav: - Daten: api/function/daten-und-speicherung.md - Endpunkte: - Addon Group: api/endpoints/addon-group.md - - AutoNC: api/endpoints/autonc.md - Banner: api/endpoints/banner.md - Blacklist: api/endpoints/blacklist.md - Blackmarket: api/endpoints/blackmarket.md From 19f1d40a6c1cf145daca2516169a053bf4c4d053 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 29 Dec 2023 18:58:43 +0100 Subject: [PATCH 05/12] Remove activity check completely --- .../unicacityaddon/UnicacityAddon.java | 2 - .../base/builder/ActivityCheckBuilder.java | 89 ------------------- .../unicacityaddon/base/enums/Activity.java | 6 -- .../base/enums/api/ApplicationPath.java | 1 - .../unicacityaddon/base/io/api/API.java | 19 ---- .../unicacityaddon/base/io/file/Data.java | 10 --- .../base/registry/Registry.java | 10 --- .../api/activity/DrugActivityCommand.java | 79 ---------------- .../api/activity/MoneyActivityCommand.java | 72 --------------- .../api/activity/PayEquipCommand.java | 71 --------------- .../api/activity/ProtectionMoneyCommand.java | 53 ----------- .../api/activity/RoleplayActivityCommand.java | 56 ------------ .../commands/faction/EquipListCommand.java | 43 --------- .../listener/MoneyListener.java | 9 -- .../faction/badfaction/BannerListener.java | 7 -- 15 files changed, 527 deletions(-) delete mode 100644 core/src/main/java/com/rettichlp/unicacityaddon/base/builder/ActivityCheckBuilder.java delete mode 100644 core/src/main/java/com/rettichlp/unicacityaddon/base/enums/Activity.java delete mode 100644 core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/DrugActivityCommand.java delete mode 100644 core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/MoneyActivityCommand.java delete mode 100644 core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/PayEquipCommand.java delete mode 100644 core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/ProtectionMoneyCommand.java delete mode 100644 core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/RoleplayActivityCommand.java diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java b/core/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java index e3e449c3..ed1febc6 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/UnicacityAddon.java @@ -39,8 +39,6 @@ * user-friendliness, an update should not always have to be created for changes to content-related data. I utilize an * API to provide data, leveraging a private server. Data is available for the following purposes: *
    - *
  • activity check API (unauthorized)
  • - *
  • auto nc API (unauthorized)
  • *
  • addon groups API
  • *
  • banners API
  • *
  • blacklist reasons API (unauthorized)
  • diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/builder/ActivityCheckBuilder.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/builder/ActivityCheckBuilder.java deleted file mode 100644 index 0930547f..00000000 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/builder/ActivityCheckBuilder.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.rettichlp.unicacityaddon.base.builder; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.Activity; -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 lombok.NoArgsConstructor; - -import java.util.Collection; -import java.util.List; - -/** - * @author RettichLP - */ -@NoArgsConstructor -public class ActivityCheckBuilder { - - private static final Collection allowedFactions = List.of(Faction.LEMILIEU); - - public static Builder getBuilder(UnicacityAddon unicacityAddon) { - return new Builder(unicacityAddon); - } - - public static class Builder { - - private Activity activity; - private String type; - private String value; - private DrugType drugType; - private DrugPurity drugPurity; - private long date; - private String screenshot; - - private final UnicacityAddon unicacityAddon; - - public Builder(UnicacityAddon unicacityAddon) { - this.unicacityAddon = unicacityAddon; - } - - public Builder activity(Activity activity) { - this.activity = activity; - return this; - } - - public Builder type(String type) { - this.type = type; - return this; - } - - public Builder value(String value) { - this.value = value; - return this; - } - - public Builder drugType(DrugType drugType) { - this.drugType = drugType; - return this; - } - - public Builder drugPurity(DrugPurity drugPurity) { - this.drugPurity = drugPurity; - return this; - } - - public Builder date(long date) { - this.date = date; - return this; - } - - public Builder screenshot(String screenshot) { - this.screenshot = screenshot; - return this; - } - - public void send() { - if (allowedFactions.contains(this.unicacityAddon.player().getFaction())) { - this.unicacityAddon.api().sendActivityCheckActivity( - this.activity, - this.type, - this.value, - this.drugType, - this.drugPurity, - this.date, - this.screenshot); - } - } - } -} \ No newline at end of file diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/enums/Activity.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/enums/Activity.java deleted file mode 100644 index b68d0923..00000000 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/enums/Activity.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.rettichlp.unicacityaddon.base.enums; - -public enum Activity { - - NULL, MONEY, DRUG, ROLEPLAY, PROTECTION_MONEY, BANNER, EQUIP_ADD, EQUIP_EDIT -} \ No newline at end of file diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java index 752f1578..5ffd37e4 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/base/enums/api/ApplicationPath.java @@ -10,7 +10,6 @@ @AllArgsConstructor public enum ApplicationPath { - ACTIVITY_CHECK("/activitycheck"), BANNER("/banner"), BLACKLISTREASON("/blacklistreason"), BLACKMARKETLOCATION("/blackmarket"), diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/io/api/API.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/io/api/API.java index 929392c0..0f4a0d97 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/io/api/API.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/base/io/api/API.java @@ -19,7 +19,6 @@ import com.rettichlp.unicacityaddon.api.statisticTop.StatisticTop; import com.rettichlp.unicacityaddon.base.AddonPlayer; import com.rettichlp.unicacityaddon.base.builder.RequestBuilder; -import com.rettichlp.unicacityaddon.base.enums.Activity; import com.rettichlp.unicacityaddon.base.enums.api.AddonGroup; import com.rettichlp.unicacityaddon.base.enums.api.ApplicationPath; import com.rettichlp.unicacityaddon.base.enums.api.StatisticType; @@ -60,8 +59,6 @@ * user-friendliness, an update should not always have to be created for changes to content-related data. I utilize an * API to provide data, leveraging a private server. Data is available for the following purposes: *
      - *
    • activity check API (unauthorized)
    • - *
    • auto nc API (unauthorized)
    • *
    • addon groups API
    • *
    • banners API
    • *
    • blacklist reasons API (unauthorized)
    • @@ -224,22 +221,6 @@ private void loadPlayerData() { } } - public void sendActivityCheckActivity(Activity activity, String type, String value, DrugType drugType, DrugPurity drugPurity, Long date, String screenshot) { - RequestBuilder.getBuilder(this.unicacityAddon) - .nonProd(this.unicacityAddon.configuration().local().get()) - .applicationPath(ApplicationPath.ACTIVITY_CHECK) - .subPath(this.addonPlayer.getFaction() + "/add") - .parameter(Map.of( - "activity", String.valueOf(activity), - "type", Optional.ofNullable(type).orElse("").replace(" ", "-"), - "value", Optional.ofNullable(value).orElse("").replace(" ", "-"), - "drugType", Optional.ofNullable(drugType).map(DrugType::name).orElse(""), - "drugPurity", String.valueOf(Optional.ofNullable(drugPurity).map(DrugPurity::getPurity).orElse(-1)), - "date", String.valueOf(Optional.ofNullable(date).orElse(0L)), - "screenshot", Optional.ofNullable(screenshot).orElse("").replace(" ", "-"))) - .sendAsync(); - } - public void sendBannerAddRequest(@NotNull Faction faction, int x, int y, int z, String naviPoint) { RequestBuilder.getBuilder(this.unicacityAddon) .nonProd(this.unicacityAddon.configuration().local().get()) diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/io/file/Data.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/io/file/Data.java index 70a7383c..497e2bae 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/io/file/Data.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/base/io/file/Data.java @@ -2,8 +2,6 @@ import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.builder.ActivityCheckBuilder; -import com.rettichlp.unicacityaddon.base.enums.Activity; import com.rettichlp.unicacityaddon.base.enums.Weapon; import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; @@ -338,14 +336,6 @@ public void addEquipToEquipMap(Equip equip) { newEquipMap.put(equip, newEquipMap.getOrDefault(equip, 0) + 1); equipMap = newEquipMap; saveAndFireEvent(); - - if (unicacityAddon.player().getFaction().equals(Faction.LEMILIEU)) { - ActivityCheckBuilder.getBuilder(unicacityAddon) - .activity(Activity.EQUIP_ADD) - .type(equip.getEquipName()) - .value(String.valueOf(equip.getPrice(unicacityAddon.configuration()))) - .send(); - } } /** diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/registry/Registry.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/registry/Registry.java index 07ecfda4..93400233 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/registry/Registry.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/base/registry/Registry.java @@ -60,11 +60,6 @@ import com.rettichlp.unicacityaddon.commands.api.TopListCommand; import com.rettichlp.unicacityaddon.commands.api.WantedReasonCommand; import com.rettichlp.unicacityaddon.commands.api.YasinCommand; -import com.rettichlp.unicacityaddon.commands.api.activity.DrugActivityCommand; -import com.rettichlp.unicacityaddon.commands.api.activity.MoneyActivityCommand; -import com.rettichlp.unicacityaddon.commands.api.activity.PayEquipCommand; -import com.rettichlp.unicacityaddon.commands.api.activity.ProtectionMoneyCommand; -import com.rettichlp.unicacityaddon.commands.api.activity.RoleplayActivityCommand; import com.rettichlp.unicacityaddon.commands.faction.CheckActiveMembersCommand; import com.rettichlp.unicacityaddon.commands.faction.DropDrugAllCommand; import com.rettichlp.unicacityaddon.commands.faction.EquipListCommand; @@ -334,7 +329,6 @@ public class Registry { DepositCommand.class, DiscordCommand.class, DropDrugAllCommand.class, - DrugActivityCommand.class, DutyCommand.class, DyavolCommand.class, EquipListCommand.class, @@ -354,7 +348,6 @@ public class Registry { MobileMuteCommand.class, ModifyBlacklistCommand.class, ModifyWantedsCommand.class, - MoneyActivityCommand.class, MoveCommand.class, MoveHereCommand.class, MoveToCommand.class, @@ -365,8 +358,6 @@ public class Registry { NearestNaviPointCommand.class, OwnUseCommand.class, OwnUseGiftCommand.class, - PayEquipCommand.class, - ProtectionMoneyCommand.class, PunishCommand.class, RecipeAcceptCommand.class, RecipeCommand.class, @@ -375,7 +366,6 @@ public class Registry { ResetPlantTimerCommand.class, ReviveStatsCommand.class, RichTaxesCommand.class, - RoleplayActivityCommand.class, RoleplayNameCommand.class, SFForceCommand.class, ScreenCommand.class, diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/DrugActivityCommand.java b/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/DrugActivityCommand.java deleted file mode 100644 index 2a953b9c..00000000 --- a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/DrugActivityCommand.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.rettichlp.unicacityaddon.commands.api.activity; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.builder.ActivityCheckBuilder; -import com.rettichlp.unicacityaddon.base.builder.ScreenshotBuilder; -import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; -import com.rettichlp.unicacityaddon.base.enums.Activity; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; -import com.rettichlp.unicacityaddon.base.registry.UnicacityCommand; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; - -import java.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; - -/** - * @author Dimiikou - */ -@UCCommand(prefix = "drugactivity", aliases = {"dact"}, usage = "[Droge] [Reinheit] [Menge] (Screenshot)") -public class DrugActivityCommand extends UnicacityCommand { - - private final UnicacityAddon unicacityAddon; - - public DrugActivityCommand(UnicacityAddon unicacityAddon, UCCommand ucCommand) { - super(unicacityAddon, ucCommand); - this.unicacityAddon = unicacityAddon; - } - - @Override - public boolean execute(String[] arguments) { - AddonPlayer p = this.unicacityAddon.player(); - - if (arguments.length < 3) { - sendUsage(); - return true; - } - - DrugType drugType = DrugType.getDrugType(arguments[0]); - if (drugType == null) { - p.sendErrorMessage("Diese Droge existiert nicht."); - return true; - } - - DrugPurity drugPurity = DrugPurity.getDrugPurity(arguments[1]); - if (drugPurity == null) { - p.sendErrorMessage("Diese Reinheit existiert nicht."); - return true; - } - - try { - int drugAmount = Integer.parseInt(arguments[2]); - File file = this.unicacityAddon.fileService().getNewImageFile(); - String screenshot = arguments.length == 4 ? arguments[3] : ScreenshotBuilder.getBuilder(unicacityAddon).file(file).upload(); - - ActivityCheckBuilder.getBuilder(this.unicacityAddon) - .activity(Activity.DRUG) - .value(String.valueOf(drugAmount)) - .drugType(drugType) - .drugPurity(drugPurity) - .date(System.currentTimeMillis()) - .screenshot(screenshot) - .send(); - } catch (IOException e) { - this.unicacityAddon.logger().error(e.getMessage()); - } - return true; - } - - @Override - public List complete(String[] arguments) { - return TabCompletionBuilder.getBuilder(this.unicacityAddon, arguments) - .addAtIndex(1, Arrays.stream(DrugType.values()).filter(drugType -> !drugType.isLegal()).map(DrugType::getDrugName).toList()) - .addAtIndex(2, Arrays.stream(DrugPurity.values()).map(DrugPurity::getPurityString).toList()) - .build(); - } -} \ No newline at end of file diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/MoneyActivityCommand.java b/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/MoneyActivityCommand.java deleted file mode 100644 index 90860960..00000000 --- a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/MoneyActivityCommand.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.rettichlp.unicacityaddon.commands.api.activity; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.builder.ActivityCheckBuilder; -import com.rettichlp.unicacityaddon.base.builder.ScreenshotBuilder; -import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; -import com.rettichlp.unicacityaddon.base.enums.Activity; -import com.rettichlp.unicacityaddon.base.registry.UnicacityCommand; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; -import com.rettichlp.unicacityaddon.base.services.utils.MathUtils; - -import java.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; - -/** - * @author Dimiikou - */ -@UCCommand(prefix = "moneyactivity", aliases = {"mact"}, usage = "[Typ] [Menge] (Screenshot)") -public class MoneyActivityCommand extends UnicacityCommand { - - private final List typeOptions = Arrays.asList("blacklist", "ausraub", "menschenhandel", "transport", "autoverkauf"); - - private final UnicacityAddon unicacityAddon; - - public MoneyActivityCommand(UnicacityAddon unicacityAddon, UCCommand ucCommand) { - super(unicacityAddon, ucCommand); - this.unicacityAddon = unicacityAddon; - } - - @Override - public boolean execute(String[] arguments) { - AddonPlayer p = this.unicacityAddon.player(); - - if (arguments.length < 2 || !MathUtils.isInteger(arguments[1])) { - sendUsage(); - return true; - } - - if (!typeOptions.contains(arguments[0].toLowerCase())) { - p.sendErrorMessage("Dieser Aktivitätstyp existiert nicht."); - return true; - } - - try { - String type = arguments[0].toLowerCase(); - int value = Integer.parseInt(arguments[1]); - File file = this.unicacityAddon.fileService().getNewImageFile(); - String screenshot = arguments.length == 3 ? arguments[2] : ScreenshotBuilder.getBuilder(unicacityAddon).file(file).upload(); - - ActivityCheckBuilder.getBuilder(this.unicacityAddon) - .activity(Activity.MONEY) - .type(type) - .value(String.valueOf(value)) - .date(System.currentTimeMillis()) - .screenshot(screenshot) - .send(); - } catch (IOException e) { - this.unicacityAddon.logger().error(e.getMessage()); - } - return true; - } - - @Override - public List complete(String[] arguments) { - return TabCompletionBuilder.getBuilder(this.unicacityAddon, arguments) - .addAtIndex(1, typeOptions) - .build(); - } -} \ No newline at end of file diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/PayEquipCommand.java b/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/PayEquipCommand.java deleted file mode 100644 index 987b4bf6..00000000 --- a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/PayEquipCommand.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.rettichlp.unicacityaddon.commands.api.activity; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; -import com.rettichlp.unicacityaddon.base.io.api.APIResponseException; -import com.rettichlp.unicacityaddon.base.registry.UnicacityCommand; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; -import com.rettichlp.unicacityaddon.base.services.utils.MathUtils; - -import java.util.AbstractMap; -import java.util.List; -import java.util.Map; - -/** - * @author Dimiikou - */ -@UCCommand(prefix = "payequip", usage = "[Id]") -public class PayEquipCommand extends UnicacityCommand { - - public static Map.Entry payEquipMap = new AbstractMap.SimpleEntry<>("0", 0); - - private final UnicacityAddon unicacityAddon; - - public PayEquipCommand(UnicacityAddon unicacityAddon, UCCommand ucCommand) { - super(unicacityAddon, ucCommand); - this.unicacityAddon = unicacityAddon; - } - - @Override - public boolean execute(String[] arguments) { - AddonPlayer p = this.unicacityAddon.player(); - - if (arguments.length < 1 || !MathUtils.isInteger(arguments[0])) { - sendUsage(); - return true; - } - - new Thread(() -> { - try { - String response = this.unicacityAddon.webService().sendRequest("https://lemilieu.de/api/equip/get?member=" + p.getShortUniqueId()); - - JsonArray jsonArray = new JsonParser().parse(response).getAsJsonArray(); - jsonArray.forEach(jsonElement -> { - JsonObject jsonObject = jsonElement.getAsJsonObject(); - String id = jsonObject.get("id").getAsString(); - if (id.equals(arguments[0])) { - payEquipMap = new AbstractMap.SimpleEntry<>(id, Integer.parseInt(jsonObject.get("price").getAsString())); - } - }); - - if (payEquipMap.getValue() > 0) { - p.sendServerMessage("/fbank einzahlen " + payEquipMap.getValue()); - } else { - p.sendErrorMessage("Du kannst für die ID kein Equip einzahlen."); - } - } catch (APIResponseException e) { - this.unicacityAddon.logger().error(e.getMessage()); - } - }).start(); - return true; - } - - @Override - public List complete(String[] arguments) { - return TabCompletionBuilder.getBuilder(this.unicacityAddon, arguments).build(); - } -} \ No newline at end of file diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/ProtectionMoneyCommand.java b/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/ProtectionMoneyCommand.java deleted file mode 100644 index 092c80bd..00000000 --- a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/ProtectionMoneyCommand.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.rettichlp.unicacityaddon.commands.api.activity; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.builder.ActivityCheckBuilder; -import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; -import com.rettichlp.unicacityaddon.base.enums.Activity; -import com.rettichlp.unicacityaddon.base.registry.UnicacityCommand; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; -import com.rettichlp.unicacityaddon.base.services.utils.MathUtils; - -import java.util.List; - -/** - * @author Dimiikou - */ -@UCCommand(prefix = "schutzgeld", aliases = {"sgeld"}, usage = "[Spieler] [Preis] [Screenshot]") -public class ProtectionMoneyCommand extends UnicacityCommand { - - private final UnicacityAddon unicacityAddon; - - public ProtectionMoneyCommand(UnicacityAddon unicacityAddon, UCCommand ucCommand) { - super(unicacityAddon, ucCommand); - this.unicacityAddon = unicacityAddon; - } - - @Override - public boolean execute(String[] arguments) { - AddonPlayer p = this.unicacityAddon.player(); - - if (arguments.length < 3 || !MathUtils.isInteger(arguments[1])) { - sendUsage(); - return true; - } - - String playerName = arguments[0]; - int price = Integer.parseInt(arguments[1]); - String screenshot = arguments[2]; - - ActivityCheckBuilder.getBuilder(this.unicacityAddon) - .activity(Activity.PROTECTION_MONEY) - .type(playerName) - .value(String.valueOf(price)) - .screenshot(screenshot) - .send(); - return true; - } - - @Override - public List complete(String[] arguments) { - return TabCompletionBuilder.getBuilder(this.unicacityAddon, arguments).build(); - } -} \ No newline at end of file diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/RoleplayActivityCommand.java b/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/RoleplayActivityCommand.java deleted file mode 100644 index 2fdaf371..00000000 --- a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/activity/RoleplayActivityCommand.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.rettichlp.unicacityaddon.commands.api.activity; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.builder.ActivityCheckBuilder; -import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; -import com.rettichlp.unicacityaddon.base.enums.Activity; -import com.rettichlp.unicacityaddon.base.registry.UnicacityCommand; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; - -import java.util.Arrays; -import java.util.List; - -/** - * @author Dimiikou - */ -@UCCommand(prefix = "roleplayactivity", aliases = {"ract"}, usage = "[Typ] [Screenshot]") -public class RoleplayActivityCommand extends UnicacityCommand { - - private final List typeOptions = Arrays.asList("blacklist", "ausraub", "menschenhandel", "transport", "autoverkauf", "drogenhandel", "verhandlung", "sonstiges"); - - private final UnicacityAddon unicacityAddon; - - public RoleplayActivityCommand(UnicacityAddon unicacityAddon, UCCommand ucCommand) { - super(unicacityAddon, ucCommand); - this.unicacityAddon = unicacityAddon; - } - - @Override - public boolean execute(String[] arguments) { - AddonPlayer p = this.unicacityAddon.player(); - - if (arguments.length < 2) { - sendUsage(); - return true; - } - - String type = typeOptions.contains(arguments[0]) ? arguments[0] : "sonstiges"; - String screenshot = arguments[1]; - - ActivityCheckBuilder.getBuilder(this.unicacityAddon) - .activity(Activity.ROLEPLAY) - .type(type) - .date(System.currentTimeMillis()) - .screenshot(screenshot) - .send(); - return true; - } - - @Override - public List complete(String[] arguments) { - return TabCompletionBuilder.getBuilder(this.unicacityAddon, arguments) - .addAtIndex(1, typeOptions) - .build(); - } -} \ No newline at end of file diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/commands/faction/EquipListCommand.java b/core/src/main/java/com/rettichlp/unicacityaddon/commands/faction/EquipListCommand.java index 768b7c0d..9793e7f8 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/commands/faction/EquipListCommand.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/commands/faction/EquipListCommand.java @@ -1,13 +1,8 @@ package com.rettichlp.unicacityaddon.commands.faction; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.AddonPlayer; import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; -import com.rettichlp.unicacityaddon.base.enums.faction.Faction; -import com.rettichlp.unicacityaddon.base.io.api.APIResponseException; import com.rettichlp.unicacityaddon.base.registry.UnicacityCommand; import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; import com.rettichlp.unicacityaddon.base.text.ColorCode; @@ -41,8 +36,6 @@ public boolean execute(String[] arguments) { if (arguments.length == 1 && arguments[0].equalsIgnoreCase("reset")) { this.unicacityAddon.fileService().data().setEquipMap(new HashMap<>()); p.sendInfoMessage("Equipliste gelöscht."); - } else if (p.getFaction().equals(Faction.LEMILIEU)) { - equipListLeMilieu(p); } else { equipList(p); } @@ -84,40 +77,4 @@ private void equipList(AddonPlayer p) { p.sendEmptyMessage(); } - - private void equipListLeMilieu(AddonPlayer p) { - NumberFormat numberFormat = NumberFormat.getNumberInstance(new Locale("da", "DK")); - p.sendEmptyMessage(); - p.sendMessage(Message.getBuilder() - .of("Equip:").color(ColorCode.DARK_AQUA).bold().advance() - .createComponent()); - - new Thread(() -> { - try { - String response = this.unicacityAddon.webService().sendRequest("https://lemilieu.de/api/equip/get?member=" + p.getShortUniqueId()); - - JsonArray jsonArray = new JsonParser().parse(response).getAsJsonArray(); - jsonArray.forEach(jsonElement -> { - JsonObject jsonObject = jsonElement.getAsJsonObject(); - String payed = jsonObject.get("payed").getAsString(); - - if (payed.equals("false")) { - String id = jsonObject.get("id").getAsString(); - String price = jsonObject.get("price").getAsString(); - String item = jsonObject.get("item").getAsString(); - - p.sendMessage(Message.getBuilder() - .of("» ID " + id + ": " + item + " -").color(ColorCode.GRAY).advance().space() - .of(numberFormat.format(Integer.parseInt(price)) + "$").color(ColorCode.AQUA).advance() - .createComponent()); - } - }); - - p.sendEmptyMessage(); - - } catch (APIResponseException e) { - this.unicacityAddon.logger().error(e.getMessage()); - } - }).start(); - } } \ No newline at end of file diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/listener/MoneyListener.java b/core/src/main/java/com/rettichlp/unicacityaddon/listener/MoneyListener.java index f141737f..2dc5e1d7 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/listener/MoneyListener.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/listener/MoneyListener.java @@ -137,15 +137,6 @@ public void onChatReceive(ChatReceiveEvent e) { if (cashToFBankMatcher.find() && msg.contains(p.getName())) { int money = Integer.parseInt(cashToFBankMatcher.group(1)); this.unicacityAddon.fileService().data().removeCashBalance(money); - - if (PayEquipCommand.payEquipMap.getValue() == money && this.unicacityAddon.utilService().isUnicacity()) { - ActivityCheckBuilder.getBuilder(this.unicacityAddon) - .activity(Activity.EQUIP_EDIT) - .type(PayEquipCommand.payEquipMap.getKey()) - .value("true") - .send(); - } - return; } diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/listener/faction/badfaction/BannerListener.java b/core/src/main/java/com/rettichlp/unicacityaddon/listener/faction/badfaction/BannerListener.java index 51dec6af..0fbd7300 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/listener/faction/badfaction/BannerListener.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/listener/faction/badfaction/BannerListener.java @@ -3,8 +3,6 @@ import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.api.NaviPoint; import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.builder.ActivityCheckBuilder; -import com.rettichlp.unicacityaddon.base.enums.Activity; import com.rettichlp.unicacityaddon.base.registry.annotation.UCEvent; import com.rettichlp.unicacityaddon.base.text.PatternHandler; import net.labymod.api.event.Subscribe; @@ -47,11 +45,6 @@ public void onChatReceive(ChatReceiveEvent e) { if (bannerStartMatcher.find() && lastClickedBannerLocation != null) { NaviPoint naviPoint = this.unicacityAddon.navigationService().getNearestNaviPoint(lastClickedBannerLocation).getValue(); this.unicacityAddon.api().sendBannerAddRequest(p.getFaction(), (int) lastClickedBannerLocation.getX(), (int) lastClickedBannerLocation.getY(), (int) lastClickedBannerLocation.getZ(), naviPoint.getName()); - - ActivityCheckBuilder.getBuilder(this.unicacityAddon) - .activity(Activity.BANNER) - .type("banner") - .send(); } } } From 6df19fff19f5076d367af9279965e84b635c6b65 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 29 Dec 2023 19:00:06 +0100 Subject: [PATCH 06/12] Remove deactivated commands --- .../base/registry/Registry.java | 4 - .../commands/api/BroadcastCommand.java | 0 .../commands/api/TopListCommand.java | 75 ------------------- .../rettungsdienst/CheckFireCommand.java | 72 ------------------ 4 files changed, 151 deletions(-) delete mode 100644 core/src/main/java/com/rettichlp/unicacityaddon/commands/api/BroadcastCommand.java delete mode 100644 core/src/main/java/com/rettichlp/unicacityaddon/commands/api/TopListCommand.java delete mode 100644 core/src/main/java/com/rettichlp/unicacityaddon/commands/faction/rettungsdienst/CheckFireCommand.java diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/registry/Registry.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/registry/Registry.java index 93400233..3e751867 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/registry/Registry.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/base/registry/Registry.java @@ -57,7 +57,6 @@ import com.rettichlp.unicacityaddon.commands.api.NaviPointCommand; import com.rettichlp.unicacityaddon.commands.api.ReviveStatsCommand; import com.rettichlp.unicacityaddon.commands.api.TokenCommand; -import com.rettichlp.unicacityaddon.commands.api.TopListCommand; import com.rettichlp.unicacityaddon.commands.api.WantedReasonCommand; import com.rettichlp.unicacityaddon.commands.api.YasinCommand; import com.rettichlp.unicacityaddon.commands.faction.CheckActiveMembersCommand; @@ -82,7 +81,6 @@ import com.rettichlp.unicacityaddon.commands.faction.chat.SFForceCommand; import com.rettichlp.unicacityaddon.commands.faction.chat.ToggleShoutCommand; import com.rettichlp.unicacityaddon.commands.faction.chat.ToggleWhisperCommand; -import com.rettichlp.unicacityaddon.commands.faction.rettungsdienst.CheckFireCommand; import com.rettichlp.unicacityaddon.commands.faction.rettungsdienst.RecipeAcceptCommand; import com.rettichlp.unicacityaddon.commands.faction.rettungsdienst.RecipeCommand; import com.rettichlp.unicacityaddon.commands.faction.state.ASUCommand; @@ -319,7 +317,6 @@ public class Registry { ChannelActivityCommand.class, ChatLogCommand.class, CheckActiveMembersCommand.class, - CheckFireCommand.class, ClearCommand.class, ClockCommand.class, CoordlistCommand.class, @@ -383,7 +380,6 @@ public class Registry { ToggleShoutCommand.class, ToggleWhisperCommand.class, TokenCommand.class, - TopListCommand.class, WantedReasonCommand.class, YasinCommand.class ); diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/BroadcastCommand.java b/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/BroadcastCommand.java deleted file mode 100644 index e69de29b..00000000 diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/TopListCommand.java b/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/TopListCommand.java deleted file mode 100644 index f16793ec..00000000 --- a/core/src/main/java/com/rettichlp/unicacityaddon/commands/api/TopListCommand.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.rettichlp.unicacityaddon.commands.api; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.api.statisticTop.StatisticTopKdEntry; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; -import com.rettichlp.unicacityaddon.base.registry.UnicacityCommand; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import net.labymod.api.client.component.event.HoverEvent; - -import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; - -import static com.rettichlp.unicacityaddon.base.services.utils.MathUtils.DECIMAL_FORMAT; - -/** - * @author RettichLP - */ -@UCCommand(prefix = "toplist", deactivated = true) -public class TopListCommand extends UnicacityCommand { - - private final UnicacityAddon unicacityAddon; - - public TopListCommand(UnicacityAddon unicacityAddon, UCCommand ucCommand) { - super(unicacityAddon, ucCommand); - this.unicacityAddon = unicacityAddon; - } - - /** - * Quote: "Neue Formel überlegen!" - Dimiikou zu "(0.5f + kd) * (services + revives)", 30.09.2022 - */ - @Override - public boolean execute(String[] arguments) { - AddonPlayer p = this.unicacityAddon.player(); - - new Thread(() -> { - List statisticTopKdEntryList = this.unicacityAddon.api().sendStatisticTopRequest().getKd(); - - p.sendEmptyMessage(); - p.sendMessage(Message.getBuilder() - .of("Top 10 Spieler:").color(ColorCode.DARK_AQUA).bold().advance() - .createComponent()); - - AtomicInteger place = new AtomicInteger(); - statisticTopKdEntryList.forEach(statisticTopKdEntry -> { - place.getAndIncrement(); - p.sendMessage(Message.getBuilder() - .of(String.valueOf(place.get())).color(ColorCode.GOLD).advance() - .of(".").color(ColorCode.GRAY).advance().space() - .of(statisticTopKdEntry.getName()).color(ColorCode.AQUA) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder() - .of("Tode:").color(ColorCode.GRAY).advance().space() - .of(String.valueOf(statisticTopKdEntry.getDeaths())).color(ColorCode.RED).advance().newline() - .of("Kills:").color(ColorCode.GRAY).advance().space() - .of(String.valueOf(statisticTopKdEntry.getKills())).color(ColorCode.RED).advance() - .createComponent()) - .advance().space() - .of("-").color(ColorCode.GRAY).advance().space() - .of(DECIMAL_FORMAT.format(statisticTopKdEntry.getValue())).color(ColorCode.AQUA).advance().space() - .of("Punkte").color(ColorCode.AQUA).advance().space() - .createComponent()); - }); - - p.sendEmptyMessage(); - }).start(); - return true; - } - - @Override - public List complete(String[] arguments) { - return TabCompletionBuilder.getBuilder(this.unicacityAddon, arguments).build(); - } -} \ No newline at end of file diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/commands/faction/rettungsdienst/CheckFireCommand.java b/core/src/main/java/com/rettichlp/unicacityaddon/commands/faction/rettungsdienst/CheckFireCommand.java deleted file mode 100644 index babd814f..00000000 --- a/core/src/main/java/com/rettichlp/unicacityaddon/commands/faction/rettungsdienst/CheckFireCommand.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.rettichlp.unicacityaddon.commands.faction.rettungsdienst; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.builder.TabCompletionBuilder; -import com.rettichlp.unicacityaddon.base.registry.UnicacityCommand; -import com.rettichlp.unicacityaddon.base.registry.annotation.UCCommand; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import net.labymod.api.client.component.event.ClickEvent; -import net.labymod.api.client.component.event.HoverEvent; -import net.labymod.api.util.math.vector.FloatVector3; - -import java.util.Collection; -import java.util.List; - -/** - * @author RettichLP - */ -@UCCommand(prefix = "checkfire", deactivated = true) -public class CheckFireCommand extends UnicacityCommand { - - private final UnicacityAddon unicacityAddon; - - public CheckFireCommand(UnicacityAddon unicacityAddon, UCCommand ucCommand) { - super(unicacityAddon, ucCommand); - this.unicacityAddon = unicacityAddon; - } - - /** - * Quote: "Meine Öffi-Nachricht geht nicht... oh... ich habe den Imgur-Link eingefügt..." - [UC]laaurin_, 02.10.2022 - */ - @Override - public boolean execute(String[] arguments) { - AddonPlayer p = this.unicacityAddon.player(); - FloatVector3 location = p.getLocation(); - - if (location != null) { - FloatVector3 one = location.copy().add(-30, -30, -30); - FloatVector3 two = location.copy().add(30, 30, 30); - - Collection fireBlocks = this.unicacityAddon.worldInteractionController().getFireBlocksInBox(one, two); - if (!fireBlocks.isEmpty()) { - p.sendMessage(Message.getBuilder() - .of("Feuer in der Nähe:").color(ColorCode.DARK_RED).advance() - .createComponent()); - - fireBlocks.forEach(block -> p.sendMessage(Message.getBuilder() - .of("»").color(ColorCode.GRAY).advance().space() - .of("X: " + (int) block.getX() + " | Y: " + (int) block.getY() + " | Z: " + (int) block.getZ()).color(ColorCode.RED).advance().space() - .of("[➤]").color(ColorCode.GREEN) - .hoverEvent(HoverEvent.Action.SHOW_TEXT, Message.getBuilder().of("Route anzeigen").color(ColorCode.RED).advance().createComponent()) - .clickEvent(ClickEvent.Action.RUN_COMMAND, "/navi " + (int) block.getX() + "/" + (int) block.getY() + "/" + (int) block.getZ()) - .advance() - .createComponent())); - } else { - p.sendMessage(Message.getBuilder() - .of("Es wurde").color(ColorCode.GRAY).advance().space() - .of("kein").color(ColorCode.RED).advance().space() - .of("Feuer im Umkreis gefunden!").color(ColorCode.GRAY).advance() - .createComponent()); - } - } - - return true; - } - - @Override - public List complete(String[] arguments) { - return TabCompletionBuilder.getBuilder(this.unicacityAddon, arguments).build(); - } -} \ No newline at end of file From cdb73b8553f28359554c27e5d173dda68ab67918 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 29 Dec 2023 19:00:59 +0100 Subject: [PATCH 07/12] Remove unused api endpoints --- .../com/rettichlp/unicacityaddon/base/io/api/API.java | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/io/api/API.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/io/api/API.java index 0f4a0d97..c6c393fd 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/io/api/API.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/base/io/api/API.java @@ -16,14 +16,11 @@ import com.rettichlp.unicacityaddon.api.player.Player; import com.rettichlp.unicacityaddon.api.player.PlayerEntry; import com.rettichlp.unicacityaddon.api.statistic.Statistic; -import com.rettichlp.unicacityaddon.api.statisticTop.StatisticTop; import com.rettichlp.unicacityaddon.base.AddonPlayer; import com.rettichlp.unicacityaddon.base.builder.RequestBuilder; import com.rettichlp.unicacityaddon.base.enums.api.AddonGroup; import com.rettichlp.unicacityaddon.base.enums.api.ApplicationPath; import com.rettichlp.unicacityaddon.base.enums.api.StatisticType; -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.services.NotificationService; import com.rettichlp.unicacityaddon.base.text.PatternHandler; @@ -530,14 +527,6 @@ public void sendStatisticAddRequest(StatisticType statisticType) { .sendAsync(); } - public StatisticTop sendStatisticTopRequest() { - return RequestBuilder.getBuilder(this.unicacityAddon) - .nonProd(this.unicacityAddon.configuration().local().get()) - .applicationPath(ApplicationPath.STATISTIC) - .subPath(TOP_SUB_PATH) - .getAsJsonObjectAndParse(StatisticTop.class); - } - public void sendTokenCreateRequest(Token token) throws APIResponseException, IOException { File addonFile = getAddonFile(); RequestBuilder.getBuilder(this.unicacityAddon) From 24414cc3270edd18ee5f814753a643775233d85d Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 29 Dec 2023 19:01:52 +0100 Subject: [PATCH 08/12] Remove unused checks and initializations, code cleanup --- .../com/rettichlp/unicacityaddon/base/io/file/Data.java | 3 +-- .../unicacityaddon/listener/NameTagRenderListener.java | 3 --- .../unicacityaddon/listener/chat/ChatLinkListener.java | 6 ------ 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/io/file/Data.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/io/file/Data.java index 497e2bae..b2e07df1 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/io/file/Data.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/base/io/file/Data.java @@ -6,7 +6,6 @@ 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.enums.faction.Faction; import com.rettichlp.unicacityaddon.base.events.OfflineDataChangedEvent; import com.rettichlp.unicacityaddon.base.text.ColorCode; import com.rettichlp.unicacityaddon.base.text.Message; @@ -179,7 +178,7 @@ public void setTimer(Integer timer) { } public List getTodolist() { - return Optional.ofNullable(todolist).orElse(new ArrayList<>()); + return Optional.ofNullable(this.todolist).orElse(new ArrayList<>()); } /** diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/listener/NameTagRenderListener.java b/core/src/main/java/com/rettichlp/unicacityaddon/listener/NameTagRenderListener.java index 84faa999..6e8a8f8f 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/listener/NameTagRenderListener.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/listener/NameTagRenderListener.java @@ -29,9 +29,6 @@ public void onPlayerNameTagRender(PlayerNameTagRenderEvent e) { PlayerNameTagRenderEvent.Context context = e.context(); NetworkPlayerInfo networkPlayerInfo = e.playerInfo(); - if (networkPlayerInfo == null) - return; - String playerName = networkPlayerInfo.profile().getUsername(); if (context.equals(PlayerNameTagRenderEvent.Context.PLAYER_RENDER)) { diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/listener/chat/ChatLinkListener.java b/core/src/main/java/com/rettichlp/unicacityaddon/listener/chat/ChatLinkListener.java index ce67e4b9..cd5f8f80 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/listener/chat/ChatLinkListener.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/listener/chat/ChatLinkListener.java @@ -7,8 +7,6 @@ import com.rettichlp.unicacityaddon.base.text.PatternHandler; import net.labymod.api.client.component.event.ClickEvent; import net.labymod.api.client.component.event.HoverEvent; -import net.labymod.api.client.gui.icon.Icon; -import net.labymod.api.client.resources.ResourceLocation; import net.labymod.api.event.Subscribe; import net.labymod.api.event.client.chat.ChatReceiveEvent; @@ -36,7 +34,6 @@ public void onChatReceive(ChatReceiveEvent e) { Matcher urlImgurMatcher = PatternHandler.URL_IMGUR_PATTERN.matcher(legacyChatMessage); String matchedLink; - Icon icon; String label; ColorCode colorCode; @@ -45,19 +42,16 @@ public void onChatReceive(ChatReceiveEvent e) { matchedLink = urlForumMatcher.group(); label = !title.isEmpty() ? this.unicacityAddon.utilService().text().createTitle(title) : "Unicacity Forum"; - icon = Icon.sprite16(ResourceLocation.create("unicacityaddon", "themes/vanilla/textures/sprite/chat.png"), 0, 0); colorCode = ColorCode.RED; } else if (urlTwitchMatcher.find()) { String channel = urlTwitchMatcher.group("channel"); matchedLink = urlTwitchMatcher.group(); label = !channel.isEmpty() ? this.unicacityAddon.utilService().text().createTitle(channel) : "Twitch"; - icon = Icon.sprite16(ResourceLocation.create("labymod", "themes/vanilla/textures/settings/hud/hud.png"), 4, 3); colorCode = ColorCode.LIGHT_PURPLE; } else if (urlImgurMatcher.find()) { matchedLink = urlImgurMatcher.group(); label = "Imgur"; - icon = Icon.sprite16(ResourceLocation.create("unicacityaddon", "themes/vanilla/textures/sprite/chat.png"), 1, 0); colorCode = ColorCode.GREEN; } else { return; From fec87a601e50ea8ac47cd5c531c9425a041300e5 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 29 Dec 2023 19:03:01 +0100 Subject: [PATCH 09/12] Update labyGradlePluginVersion to 0.3.43 --- build.gradle.kts | 2 +- settings.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 980e420b..9ce03aee 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -16,7 +16,7 @@ labyMod { displayName = "UnicacityAddon" author = "RettichLP & Dimiikou" description = "UnicacityAddon is a LabyMod addon written for the Minecraft server Unicacity and provides specialized, nice-to-have features and utilities for everyday gameplay." - minecraftVersion = "1.12.2<*" + minecraftVersion = "1.12.2<1.20.2" version = System.getenv().getOrDefault("VERSION", "2.5.0-dev") } diff --git a/settings.gradle.kts b/settings.gradle.kts index 72027548..69c9a0fc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,7 +1,7 @@ rootProject.name = "unicacityaddon" pluginManagement { - val labyGradlePluginVersion = "0.3.30" + val labyGradlePluginVersion = "0.3.43" plugins { id("net.labymod.gradle") version (labyGradlePluginVersion) } From c91e9d24355937fd51d92273f178552c189ef74e Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 29 Dec 2023 19:08:30 +0100 Subject: [PATCH 10/12] Fix deprecated methods, optimize imports --- .../com/rettichlp/unicacityaddon/listener/MoneyListener.java | 3 --- .../listener/faction/rettungsdienst/ReviveListener.java | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/listener/MoneyListener.java b/core/src/main/java/com/rettichlp/unicacityaddon/listener/MoneyListener.java index 2dc5e1d7..1b03bd5f 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/listener/MoneyListener.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/listener/MoneyListener.java @@ -2,15 +2,12 @@ import com.rettichlp.unicacityaddon.UnicacityAddon; import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.builder.ActivityCheckBuilder; import com.rettichlp.unicacityaddon.base.config.atm.ATMConfiguration; -import com.rettichlp.unicacityaddon.base.enums.Activity; 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.commands.api.activity.PayEquipCommand; import com.rettichlp.unicacityaddon.commands.money.ATMFillCommand; import com.rettichlp.unicacityaddon.commands.money.RichTaxesCommand; import net.labymod.api.event.Subscribe; diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/listener/faction/rettungsdienst/ReviveListener.java b/core/src/main/java/com/rettichlp/unicacityaddon/listener/faction/rettungsdienst/ReviveListener.java index 7888de66..51c58332 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/listener/faction/rettungsdienst/ReviveListener.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/listener/faction/rettungsdienst/ReviveListener.java @@ -62,7 +62,7 @@ public void onChatReceive(ChatReceiveEvent e) { public void onActionBarReceive(ActionBarReceiveEvent e) { AddonPlayer p = this.unicacityAddon.player(); - if (System.currentTimeMillis() - this.lastReviveMessageDisplayTime > TimeUnit.SECONDS.toMillis(5) && this.unicacityAddon.utilService().text().plain(e.message()).equals("Du lebst nun wieder.")) { + if (System.currentTimeMillis() - this.lastReviveMessageDisplayTime > TimeUnit.SECONDS.toMillis(5) && this.unicacityAddon.utilService().text().plain(e.getMessage()).equals("Du lebst nun wieder.")) { this.lastReviveMessageDisplayTime = System.currentTimeMillis(); this.unicacityAddon.fileService().data().removeBankBalance(50); // successfully revived by medic = 50$ From ab15fe72790b5b80e379e64dd2bb03de601619c6 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 29 Dec 2023 19:53:25 +0100 Subject: [PATCH 11/12] Remove versioned code for all versions without 1.12.2 --- README.md | 8 +- build.gradle.kts | 13 +- .../v1_16_5/VersionedDeadBodyController.java | 95 ------- .../v1_16_5/VersionedGuiController.java | 232 ------------------ .../VersionedPlayerListController.java | 83 ------- .../VersionedScreenshotController.java | 41 ---- .../v1_16_5/VersionedSoundController.java | 118 --------- .../v1_16_5/VersionedTransportController.java | 94 ------- .../VersionedWorldInteractionController.java | 88 ------- .../assets/unicacityaddon/.assetsroot | 0 .../v1_17_1/VersionedDeadBodyController.java | 95 ------- .../v1_17_1/VersionedGuiController.java | 227 ----------------- .../VersionedPlayerListController.java | 83 ------- .../VersionedScreenshotController.java | 44 ---- .../v1_17_1/VersionedSoundController.java | 118 --------- .../v1_17_1/VersionedTransportController.java | 96 -------- .../VersionedWorldInteractionController.java | 88 ------- .../assets/unicacityaddon/.assetsroot | 0 .../v1_18_2/VersionedDeadBodyController.java | 95 ------- .../v1_18_2/VersionedGuiController.java | 227 ----------------- .../VersionedPlayerListController.java | 83 ------- .../VersionedScreenshotController.java | 44 ---- .../v1_18_2/VersionedSoundController.java | 119 --------- .../v1_18_2/VersionedTransportController.java | 96 -------- .../VersionedWorldInteractionController.java | 88 ------- .../assets/unicacityaddon/.assetsroot | 0 .../v1_19_2/VersionedDeadBodyController.java | 95 ------- .../v1_19_2/VersionedGuiController.java | 227 ----------------- .../VersionedPlayerListController.java | 83 ------- .../VersionedScreenshotController.java | 44 ---- .../v1_19_2/VersionedSoundController.java | 119 --------- .../v1_19_2/VersionedTransportController.java | 96 -------- .../VersionedWorldInteractionController.java | 88 ------- .../assets/unicacityaddon/.assetsroot | 0 .../v1_19_3/VersionedDeadBodyController.java | 95 ------- .../v1_19_3/VersionedGuiController.java | 227 ----------------- .../VersionedPlayerListController.java | 83 ------- .../VersionedScreenshotController.java | 44 ---- .../v1_19_3/VersionedSoundController.java | 119 --------- .../v1_19_3/VersionedTransportController.java | 96 -------- .../VersionedWorldInteractionController.java | 88 ------- .../assets/unicacityaddon/.assetsroot | 0 .../v1_19_4/VersionedDeadBodyController.java | 95 ------- .../v1_19_4/VersionedGuiController.java | 227 ----------------- .../VersionedPlayerListController.java | 83 ------- .../VersionedScreenshotController.java | 44 ---- .../v1_19_4/VersionedSoundController.java | 119 --------- .../v1_19_4/VersionedTransportController.java | 96 -------- .../VersionedWorldInteractionController.java | 88 ------- .../assets/unicacityaddon/.assetsroot | 0 .../v1_20_1/VersionedDeadBodyController.java | 95 ------- .../v1_20_1/VersionedGuiController.java | 227 ----------------- .../VersionedPlayerListController.java | 83 ------- .../VersionedScreenshotController.java | 44 ---- .../v1_20_1/VersionedSoundController.java | 119 --------- .../v1_20_1/VersionedTransportController.java | 96 -------- .../VersionedWorldInteractionController.java | 88 ------- .../assets/unicacityaddon/.assetsroot | 0 .../v1_20_2/VersionedDeadBodyController.java | 95 ------- .../v1_20_2/VersionedGuiController.java | 227 ----------------- .../VersionedPlayerListController.java | 83 ------- .../VersionedScreenshotController.java | 44 ---- .../v1_20_2/VersionedSoundController.java | 119 --------- .../v1_20_2/VersionedTransportController.java | 96 -------- .../VersionedWorldInteractionController.java | 88 ------- .../assets/unicacityaddon/.assetsroot | 0 .../assets/unicacityaddon/.assetsroot | 0 67 files changed, 3 insertions(+), 6032 deletions(-) delete mode 100644 game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedDeadBodyController.java delete mode 100644 game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedGuiController.java delete mode 100644 game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedPlayerListController.java delete mode 100644 game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedScreenshotController.java delete mode 100644 game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedSoundController.java delete mode 100644 game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedTransportController.java delete mode 100644 game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedWorldInteractionController.java delete mode 100644 game-runner/src/v1_16_5/resources/assets/unicacityaddon/.assetsroot delete mode 100644 game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedDeadBodyController.java delete mode 100644 game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedGuiController.java delete mode 100644 game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedPlayerListController.java delete mode 100644 game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedScreenshotController.java delete mode 100644 game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedSoundController.java delete mode 100644 game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedTransportController.java delete mode 100644 game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedWorldInteractionController.java delete mode 100644 game-runner/src/v1_17_1/resources/assets/unicacityaddon/.assetsroot delete mode 100644 game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedDeadBodyController.java delete mode 100644 game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedGuiController.java delete mode 100644 game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedPlayerListController.java delete mode 100644 game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedScreenshotController.java delete mode 100644 game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedSoundController.java delete mode 100644 game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedTransportController.java delete mode 100644 game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedWorldInteractionController.java delete mode 100644 game-runner/src/v1_18_2/resources/assets/unicacityaddon/.assetsroot delete mode 100644 game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedDeadBodyController.java delete mode 100644 game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedGuiController.java delete mode 100644 game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedPlayerListController.java delete mode 100644 game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedScreenshotController.java delete mode 100644 game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedSoundController.java delete mode 100644 game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedTransportController.java delete mode 100644 game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedWorldInteractionController.java delete mode 100644 game-runner/src/v1_19_2/resources/assets/unicacityaddon/.assetsroot delete mode 100644 game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedDeadBodyController.java delete mode 100644 game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedGuiController.java delete mode 100644 game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedPlayerListController.java delete mode 100644 game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedScreenshotController.java delete mode 100644 game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedSoundController.java delete mode 100644 game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedTransportController.java delete mode 100644 game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedWorldInteractionController.java delete mode 100644 game-runner/src/v1_19_3/resources/assets/unicacityaddon/.assetsroot delete mode 100644 game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedDeadBodyController.java delete mode 100644 game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedGuiController.java delete mode 100644 game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedPlayerListController.java delete mode 100644 game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedScreenshotController.java delete mode 100644 game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedSoundController.java delete mode 100644 game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedTransportController.java delete mode 100644 game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedWorldInteractionController.java delete mode 100644 game-runner/src/v1_19_4/resources/assets/unicacityaddon/.assetsroot delete mode 100644 game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedDeadBodyController.java delete mode 100644 game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedGuiController.java delete mode 100644 game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedPlayerListController.java delete mode 100644 game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedScreenshotController.java delete mode 100644 game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedSoundController.java delete mode 100644 game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedTransportController.java delete mode 100644 game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedWorldInteractionController.java delete mode 100644 game-runner/src/v1_20_1/resources/assets/unicacityaddon/.assetsroot delete mode 100644 game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedDeadBodyController.java delete mode 100644 game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedGuiController.java delete mode 100644 game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedPlayerListController.java delete mode 100644 game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedScreenshotController.java delete mode 100644 game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedSoundController.java delete mode 100644 game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedTransportController.java delete mode 100644 game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedWorldInteractionController.java delete mode 100644 game-runner/src/v1_20_2/resources/assets/unicacityaddon/.assetsroot delete mode 100644 game-runner/src/v1_8_9/resources/assets/unicacityaddon/.assetsroot diff --git a/README.md b/README.md index c2e1afc2..813d497b 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ and on the other hand the support for Minecraft version 1.16.5+. ### Supported Versions > In LabyMod 3 there was no command implementation, so there was used Minecraft Forge for this. In LabyMod 4 is an own -> command implementation so Minecraft Forge isn't longer needed. +> command implementation so Minecraft Forge is no longer needed. #### LabyMod 3 @@ -60,12 +60,6 @@ Requires Minecraft Forge: ❌
      Supported Minecraft versions: - `1.12.2` -- `1.16.5` -- `1.17.1` -- `1.18.2` -- `1.19.2` -- `1.19.3` -- `1.19.4` ## Installation diff --git a/build.gradle.kts b/build.gradle.kts index 9ce03aee..fd34f879 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -16,22 +16,13 @@ labyMod { displayName = "UnicacityAddon" author = "RettichLP & Dimiikou" description = "UnicacityAddon is a LabyMod addon written for the Minecraft server Unicacity and provides specialized, nice-to-have features and utilities for everyday gameplay." - minecraftVersion = "1.12.2<1.20.2" + minecraftVersion = "1.12.2" version = System.getenv().getOrDefault("VERSION", "2.5.0-dev") } minecraft { registerVersions( - "1.8.9", - "1.12.2", - "1.16.5", - "1.17.1", - "1.18.2", - "1.19.2", - "1.19.3", - "1.19.4", - "1.20.1", - "1.20.2" + "1.12.2" ) { version, provider -> configureRun(provider, version) } diff --git a/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedDeadBodyController.java b/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedDeadBodyController.java deleted file mode 100644 index b5c4a948..00000000 --- a/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedDeadBodyController.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_16_5; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.Faction; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.controller.DeadBodyController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextColor; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.Items; -import net.minecraft.world.phys.AABB; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.AbstractMap; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.UUID; - -/** - * @author RettichLP - */ -@Singleton -@Implements(DeadBodyController.class) -public class VersionedDeadBodyController extends DeadBodyController { - - /** - * When a corpse is rendered, the display name is automatically changed. The name can reflect the current wanted - * level. However, if this state changes while the corpse has already been rendered, the color will not change. In - * order to ensure this change anyway, the name must be available in every render process. In order not to waste - * performance by calculating the name in every render process, the name that was calculated when the corpse was - * first rendered is used. Likewise, the status of whether the corpse can be revived. - */ - private final Map> corpseMap = new HashMap<>(); - - @Inject - public VersionedDeadBodyController() { - } - - @Override - public void updateDisplayName(UnicacityAddon unicacityAddon) { - FloatVector3 location = unicacityAddon.player().getLocation(); - - assert location != null; - AABB aabb = new AABB( - location.getX() - 50, - location.getY() - 50, - location.getZ() - 50, - location.getX() + 50, - location.getY() + 50, - location.getZ() + 50 - ); - - assert Minecraft.getInstance().level != null; - Minecraft.getInstance().level.getEntitiesOfClass(ItemEntity.class, aabb, itemEntity -> itemEntity != null && itemEntity.hasCustomName() && itemEntity.getItem().getItem().equals(Items.SKELETON_SKULL)).forEach(itemEntity -> { - Component customName = itemEntity.getCustomName(); - - assert customName != null; - List siblings = customName.getSiblings(); - - // get player name and revivable status - String playerName; - boolean nonRevivable; - if (!siblings.isEmpty()) { // sibling size only by not formatted corpses greater than 0 - Component originalCorpseName = siblings.get(0); - playerName = originalCorpseName.getContents().substring(1); - nonRevivable = Objects.equals(originalCorpseName.getStyle().getColor(), TextColor.fromLegacyFormat(ChatFormatting.DARK_GRAY)); - this.corpseMap.put(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>(playerName, nonRevivable)); - } else { - Map.Entry corpse = this.corpseMap.getOrDefault(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>("Unbekannt", false)); - playerName = corpse.getKey(); - nonRevivable = corpse.getValue(); - } - - // use player name and revivable status - String prefix = unicacityAddon.nameTagService().getPrefix(playerName, true); - String factionInfo = unicacityAddon.configuration().nametag().info().get() ? unicacityAddon.api().getPlayerFactionMap().getOrDefault(playerName, Faction.NULL).getNameTagSuffix() : ""; - - String ndn = Message.getBuilder() - .of("✟").color(nonRevivable ? ColorCode.DARK_GRAY : ColorCode.GRAY).advance() - .of((nonRevivable ? ColorCode.DARK_GRAY.getCode() : prefix) + playerName).advance().space() - .of(factionInfo).advance() - .create(); - - itemEntity.setCustomName(Component.nullToEmpty(ndn)); - }); - } -} diff --git a/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedGuiController.java b/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedGuiController.java deleted file mode 100644 index 82e64a82..00000000 --- a/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedGuiController.java +++ /dev/null @@ -1,232 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_16_5; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; -import com.rettichlp.unicacityaddon.controller.GuiController; -import com.rettichlp.unicacityaddon.listener.ScreenRenderListener; -import net.labymod.api.models.Implements; -import net.labymod.api.nbt.NBTTagType; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.core.NonNullList; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -import javax.inject.Singleton; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * @author RettichLP - */ -@Singleton -@Implements(GuiController.class) -public class VersionedGuiController extends GuiController { - - private int containerId = 0; - - @Override - public int getSlotNumberByDisplayName(String displayName) { - int slotNumber = -1; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - NonNullList itemStacks = chestMenu.getItems(); - Optional hoveredItemStackOptional = itemStacks.stream() - .filter(itemStack -> itemStack.getDisplayName().getString().contains(displayName)) - .findFirst(); - - if (hoveredItemStackOptional.isPresent()) { - slotNumber = itemStacks.indexOf(hoveredItemStackOptional.get()); - } - } - - return slotNumber; - } - - @Override - public @Nullable String getContainerLegacyName() { - return null; - } - - @Override - public int getContainerId() { - return 0; - } - - @Override - public void inventoryClick(int slotNumber) { - Screen screen = Minecraft.getInstance().screen; - - this.containerId = 0; - if (screen instanceof ContainerScreen containerScreen) { - this.containerId = containerScreen.getMenu().containerId; - } else if (screen instanceof HopperScreen hopperScreen) { - this.containerId = hopperScreen.getMenu().containerId; - } - - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(this.containerId, slotNumber, 0, ClickType.PICKUP, localPlayer.inventory.getSelected(), (short) 0); - localPlayer.connection.send(serverboundContainerClickPacket); - } - - @Override - public void updateDrugInventoryMap(UnicacityAddon unicacityAddon) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - this.containerId = chestMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - if (unicacityAddon.utilService().command().isCocaineCheck()) { - unicacityAddon.utilService().command().setCocaineCheck(false); - // select cocaine to check drug purity - this.inventoryClick(0); - } else if (unicacityAddon.utilService().command().isMarihuanaCheck()) { - unicacityAddon.utilService().command().setMarihuanaCheck(false); - // select marihuana to check drug purity - this.inventoryClick(1); - } else if (unicacityAddon.utilService().command().isMethCheck()) { - unicacityAddon.utilService().command().setMethCheck(false); - // select meth to check drug purity - this.inventoryClick(2); - } else { - chestMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty() && !itemStack.getDisplayName().getString().contains("Pulver") && !itemStack.getDisplayName().getString().contains("Kräuter") && !itemStack.getDisplayName().getString().contains("Kristalle")) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - if (compoundTag != null) { - String lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()).getString(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().getString()); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(DrugPurity.BEST, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - } - }); - - unicacityAddon.utilService().command().setActiveDrugInventoryLoading(false); - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } else if (screen instanceof HopperScreen hopperScreen && unicacityAddon.utilService().command().isActiveDrugInventoryLoading()) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - - this.containerId = hopperMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - hopperMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty()) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - if (compoundTag != null) { - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - String drugPurityNbt = lore.getString(1); - String amountNbt = lore.getString(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().getString()); - DrugPurity drugPurity = DrugPurity.getDrugPurity(drugPurityNbt); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(drugPurity, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - } - }); - - // go back to inventory container - this.inventoryClick(4); - } - } - - @Override - public void setSelectedHotbarSlot(int slotNumber) { - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.inventory.selected = slotNumber; - } - - @Override - public void updateSetting(boolean expectedValue) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen && !ScreenRenderListener.settingPath.isEmpty()) { - ChestMenu chestMenu = containerScreen.getMenu(); - - if (chestMenu.containerId != this.containerId) { - this.containerId = chestMenu.containerId; - - if (ScreenRenderListener.settingPath.size() > 1) { - this.inventoryClick(ScreenRenderListener.settingPath.remove(0)); - } else { - int slotNumber = ScreenRenderListener.settingPath.remove(0); - ItemStack itemStack = chestMenu.getItems().get(slotNumber); - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - if (compoundTag != null) { - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - if (lore.getString(1).equals("§cAktiviere den Hitsound") && expectedValue) { - this.inventoryClick(slotNumber); - } - } - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } - } - } - - @Override - public boolean containsItemContainingString(String name) { - NonNullList itemStackNonNullList = null; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - itemStackNonNullList = containerScreen.getMenu().getItems(); - } else if (screen instanceof HopperScreen hopperScreen) { - itemStackNonNullList = hopperScreen.getMenu().getItems(); - } - - return itemStackNonNullList != null && itemStackNonNullList.stream().anyMatch(itemStack -> itemStack.getDisplayName().getContents().contains(name)); - } -} \ No newline at end of file diff --git a/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedPlayerListController.java b/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedPlayerListController.java deleted file mode 100644 index bfc60460..00000000 --- a/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedPlayerListController.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_16_5; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.tab.TabPrefix; -import com.rettichlp.unicacityaddon.controller.PlayerListController; -import net.labymod.api.Laby; -import net.labymod.api.client.network.ClientPacketListener; -import net.labymod.api.client.network.NetworkPlayerInfo; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.world.scores.PlayerTeam; -import net.minecraft.world.scores.Scoreboard; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * @author RettichLP - */ -@Singleton -@Implements(PlayerListController.class) -public class VersionedPlayerListController extends PlayerListController { - - @Inject - public VersionedPlayerListController() { - } - - @Override - public boolean isKeyPlayerListDown() { - return Minecraft.getInstance().options.keyPlayerList.isDown(); - } - - @Override - public void orderPlayerList(UnicacityAddon unicacityAddon) { - ClientPacketListener clientPacketListener = Laby.labyAPI().minecraft().getClientPacketListener(); - Collection networkPlayerInfos = clientPacketListener != null ? clientPacketListener.getNetworkPlayerInfos() : Collections.emptyList(); - assert Minecraft.getInstance().level != null; - Scoreboard scoreboard = Minecraft.getInstance().level.getScoreboard(); - - // get teams or create if not present - Map tabPrefixScorePlayerTeamMap = getScorePlayerTeamMap(scoreboard); - - // add default player team (m_player) - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.profile() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .map(networkPlayerInfo -> networkPlayerInfo.profile().getUsername()) - .forEach(s -> scoreboard.addPlayerToTeam(s, tabPrefixScorePlayerTeamMap.get(TabPrefix.NONE))); - - // add formatted player teams - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.displayName() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .forEach(networkPlayerInfo -> { - String displayName = unicacityAddon.utilService().text().legacy(networkPlayerInfo.displayName()); - TabPrefix tabPrefix = TabPrefix.getTypeByDisplayName(displayName); - PlayerTeam playerTeam = tabPrefixScorePlayerTeamMap.get(tabPrefix); - scoreboard.addPlayerToTeam(networkPlayerInfo.profile().getUsername(), playerTeam); - }); - } - - private Map getScorePlayerTeamMap(Scoreboard scoreboard) { - Map scorePlayerTeamMap = new HashMap<>(); - scorePlayerTeamMap.put(TabPrefix.FBI_UC, scoreboard.getPlayerTeam("a_fbi_uc") != null ? scoreboard.getPlayerTeam("a_fbi_uc") : scoreboard.addPlayerTeam("a_fbi_uc")); - scorePlayerTeamMap.put(TabPrefix.FBI, scoreboard.getPlayerTeam("b_fbi") != null ? scoreboard.getPlayerTeam("b_fbi") : scoreboard.addPlayerTeam("b_fbi")); - scorePlayerTeamMap.put(TabPrefix.POLICE_UC, scoreboard.getPlayerTeam("c_police_uc") != null ? scoreboard.getPlayerTeam("c_police_uc") : scoreboard.addPlayerTeam("c_police_uc")); - scorePlayerTeamMap.put(TabPrefix.POLICE, scoreboard.getPlayerTeam("d_police") != null ? scoreboard.getPlayerTeam("d_police") : scoreboard.addPlayerTeam("d_police")); - scorePlayerTeamMap.put(TabPrefix.MEDIC_UC, scoreboard.getPlayerTeam("e_medic_uc") != null ? scoreboard.getPlayerTeam("e_medic_uc") : scoreboard.addPlayerTeam("e_medic_uc")); - scorePlayerTeamMap.put(TabPrefix.MEDIC, scoreboard.getPlayerTeam("f_medic") != null ? scoreboard.getPlayerTeam("f_medic") : scoreboard.addPlayerTeam("f_medic")); - scorePlayerTeamMap.put(TabPrefix.NEWS_UC, scoreboard.getPlayerTeam("g_news_uc") != null ? scoreboard.getPlayerTeam("g_news_uc") : scoreboard.addPlayerTeam("g_news_uc")); - scorePlayerTeamMap.put(TabPrefix.NEWS, scoreboard.getPlayerTeam("h_news") != null ? scoreboard.getPlayerTeam("h_news") : scoreboard.addPlayerTeam("h_news")); - scorePlayerTeamMap.put(TabPrefix.UC_DUTY, scoreboard.getPlayerTeam("i_uc_duty") != null ? scoreboard.getPlayerTeam("i_uc_duty") : scoreboard.addPlayerTeam("i_uc_duty")); - scorePlayerTeamMap.put(TabPrefix.BUILDER, scoreboard.getPlayerTeam("j_builder") != null ? scoreboard.getPlayerTeam("j_builder") : scoreboard.addPlayerTeam("j_builder")); - scorePlayerTeamMap.put(TabPrefix.REPORT, scoreboard.getPlayerTeam("k_report") != null ? scoreboard.getPlayerTeam("k_report") : scoreboard.addPlayerTeam("k_report")); - scorePlayerTeamMap.put(TabPrefix.UC, scoreboard.getPlayerTeam("l_uc") != null ? scoreboard.getPlayerTeam("l_uc") : scoreboard.addPlayerTeam("l_uc")); - scorePlayerTeamMap.put(TabPrefix.NONE, scoreboard.getPlayerTeam("m_player") != null ? scoreboard.getPlayerTeam("m_player") : scoreboard.addPlayerTeam("m_player")); - return scorePlayerTeamMap; - } -} diff --git a/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedScreenshotController.java b/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedScreenshotController.java deleted file mode 100644 index 49b9d2ee..00000000 --- a/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedScreenshotController.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_16_5; - -import com.mojang.blaze3d.platform.NativeImage; -import com.rettichlp.unicacityaddon.controller.ScreenshotController; -import net.labymod.api.Laby; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.Screenshot; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.io.File; -import java.io.IOException; - -/** - * @author RettichLP - */ -@Singleton -@Implements(ScreenshotController.class) -public class VersionedScreenshotController extends ScreenshotController { - - @Inject - public VersionedScreenshotController() { - } - - @Override - public File createScreenshot(File file) { - if (file != null) { - Minecraft minecraft = Minecraft.getInstance(); - - Laby.labyAPI().minecraft().executeOnRenderThread(() -> { - try (NativeImage nativeImage = Screenshot.takeScreenshot(minecraft.getWindow().getWidth(), minecraft.getWindow().getHeight(), minecraft.getMainRenderTarget())) { - nativeImage.writeToFile(file); - } catch (IOException e) { - throw new RuntimeException(e); - } - }); - } - return file; - } -} diff --git a/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedSoundController.java b/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedSoundController.java deleted file mode 100644 index ea9e9bf7..00000000 --- a/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedSoundController.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_16_5; - -import com.rettichlp.unicacityaddon.controller.SoundController; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.sounds.SoundEvents; - -import javax.inject.Inject; -import javax.inject.Singleton; - -/** - * @author RettichLP - */ -@Singleton -@Implements(SoundController.class) -public class VersionedSoundController extends SoundController { - - @Inject - public VersionedSoundController() { - } - - @Override - public void playBankRobStartedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.9F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - }).start(); - } - - @Override - public void playBombPlantedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.0F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.8F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.4F)); - }).start(); - } - - @Override - public void playContractSetSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 0.5F)); - } - - @Override - public void playContractFulfilledSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playMobileCallSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.MUSIC_DISC_CAT, 1.0F)); - } - - @Override - public void playMobileSMSSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.SHEEP_AMBIENT, 1.0F)); - } - - @Override - public void playReportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playServiceSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playTankWarningSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_HARP, 1.0F)); - } - - @Override - public void playTimerExpiredSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, 1.0F)); - } - - @Override - public void playTeamSpeakSupportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playTeamSpeakPublicitySound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.0F)); - } -} diff --git a/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedTransportController.java b/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedTransportController.java deleted file mode 100644 index 98b3ede2..00000000 --- a/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedTransportController.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_16_5; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.enums.location.Bus; -import com.rettichlp.unicacityaddon.commands.BusCommand; -import com.rettichlp.unicacityaddon.controller.TransportController; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.Items; - -import javax.inject.Singleton; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author RettichLP - */ -@Singleton -@Implements(TransportController.class) -public class VersionedTransportController extends TransportController { - - @Override - public void processBusRouting(UnicacityAddon unicacityAddon) { - AddonPlayer p = unicacityAddon.player(); - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof HopperScreen hopperScreen && BusCommand.active) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - if (hopperMenu.containerId != BusCommand.lastWindowId) { - BusCommand.lastWindowId = hopperMenu.containerId; - - Map busSlotMap = hopperMenu.slots.stream() - .filter(slot -> slot.getItem().getItem().equals(Items.OAK_SIGN)) - .filter(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")) != null) - .collect(Collectors.toMap(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")), slot -> slot)); - - Bus nearestBusToDestination = BusCommand.getNearestBusToDestination(busSlotMap.keySet()); - if (nearestBusToDestination == null) { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - return; - } - - Slot slot = busSlotMap.get(nearestBusToDestination); - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - if (nearestBusToDestination.equals(BusCommand.destination)) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, slot.index, 0, ClickType.PICKUP, localPlayer.inventory.getSelected(), (short) 0); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.active = false; - } else if (BusCommand.limiter < 15) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, slot.index, 1, ClickType.PICKUP, localPlayer.inventory.getSelected(), (short) 0); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.limiter++; - } else { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - } - } - } - } - - @Override - public void carInteract() { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - if (containerScreen.getTitle().getString().contains("CarControl")) { - ChestMenu chestMenu = containerScreen.getMenu(); - int numberOfCars = (int) chestMenu.slots.stream() - .map(slot -> slot.getItem().getItem()) - .filter(item -> item.equals(Items.MINECART) || item.equals(Items.EMERALD) || item.equals(Items.REDSTONE)) - .count(); - - if (numberOfCars == 1) { - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(chestMenu.containerId, 0, 0, ClickType.PICKUP, localPlayer.inventory.getSelected(), (short) 0); - localPlayer.connection.send(serverboundContainerClickPacket); - } - } - } - } -} \ No newline at end of file diff --git a/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedWorldInteractionController.java b/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedWorldInteractionController.java deleted file mode 100644 index 26b73e90..00000000 --- a/game-runner/src/v1_16_5/java/com/rettichlp/unicacityaddon/v1_16_5/VersionedWorldInteractionController.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_16_5; - -import com.rettichlp.unicacityaddon.controller.WorldInteractionController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SignBlock; -import net.minecraft.world.level.block.WallBannerBlock; -import net.minecraft.world.level.block.entity.SignBlockEntity; -import net.minecraft.world.phys.HitResult; -import net.minecraft.world.phys.Vec3; - -import javax.inject.Singleton; -import java.util.Collection; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.StreamSupport; - -/** - * @author RettichLP - */ -@Singleton -@Implements(WorldInteractionController.class) -public class VersionedWorldInteractionController extends WorldInteractionController { - - @Override - public FloatVector3 getClickedBlockLocation() { - assert Minecraft.getInstance().cameraEntity != null; - HitResult hitResult = Minecraft.getInstance().cameraEntity.pick(20, 0, false); - Vec3 vec3 = hitResult.getLocation(); - - return new FloatVector3((float) vec3.x(), (float) vec3.y(), (float) vec3.z()); - } - - @Override - public boolean isHouseNumberSign(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos(location.getX(), location.getY(), location.getZ()); - - assert clientLevel != null; - if (clientLevel.getBlockState(blockPos).getBlock() instanceof SignBlock) { - SignBlockEntity signBlockEntity = (SignBlockEntity) clientLevel.getBlockEntity(blockPos); - - if (signBlockEntity != null) { - String text = signBlockEntity.getMessage(1).getString(); - return Pattern.compile("^== (\\d+) ==$").matcher(text).find(); - } - } - return false; - } - - @Override - public boolean isBanner(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos(location.getX(), location.getY(), location.getZ()); - - assert clientLevel != null; - return clientLevel.getBlockState(blockPos).getBlock() instanceof WallBannerBlock; - } - - @Override - public boolean isPlant(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - - assert clientLevel != null; - boolean isFern = clientLevel.getBlockState(new BlockPos(location.getX(), location.getY(), location.getZ())).getBlock().equals(Blocks.FERN); - boolean isPodzol = clientLevel.getBlockState(new BlockPos(location.getX(), location.getY() - 1, location.getZ())).getBlock().equals(Blocks.PODZOL); - - return isFern && isPodzol; - } - - @Override - public Collection getFireBlocksInBox(FloatVector3 one, FloatVector3 two) { - BlockPos oneBlockPos = new BlockPos(one.getX(), one.getY(), one.getZ()); - BlockPos twoBlockPos = new BlockPos(two.getX(), two.getY(), two.getZ()); - - return StreamSupport.stream(BlockPos.betweenClosed(oneBlockPos, twoBlockPos).spliterator(), false) - .filter(blockPos -> { - assert Minecraft.getInstance().level != null; - return Minecraft.getInstance().level.getBlockState(blockPos).getBlock().equals(Blocks.FIRE); - }) - .map(blockPos -> new FloatVector3(blockPos.getX(), blockPos.getY(), blockPos.getZ())) - .collect(Collectors.toList()); - } -} diff --git a/game-runner/src/v1_16_5/resources/assets/unicacityaddon/.assetsroot b/game-runner/src/v1_16_5/resources/assets/unicacityaddon/.assetsroot deleted file mode 100644 index e69de29b..00000000 diff --git a/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedDeadBodyController.java b/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedDeadBodyController.java deleted file mode 100644 index 73042e25..00000000 --- a/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedDeadBodyController.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_17_1; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.Faction; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.controller.DeadBodyController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextColor; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.Items; -import net.minecraft.world.phys.AABB; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.AbstractMap; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.UUID; - -/** - * @author RettichLP - */ -@Singleton -@Implements(DeadBodyController.class) -public class VersionedDeadBodyController extends DeadBodyController { - - /** - * When a corpse is rendered, the display name is automatically changed. The name can reflect the current wanted - * level. However, if this state changes while the corpse has already been rendered, the color will not change. In - * order to ensure this change anyway, the name must be available in every render process. In order not to waste - * performance by calculating the name in every render process, the name that was calculated when the corpse was - * first rendered is used. Likewise, the status of whether the corpse can be revived. - */ - private final Map> corpseMap = new HashMap<>(); - - @Inject - public VersionedDeadBodyController() { - } - - @Override - public void updateDisplayName(UnicacityAddon unicacityAddon) { - FloatVector3 location = unicacityAddon.player().getLocation(); - - assert location != null; - AABB aabb = new AABB( - location.getX() - 50, - location.getY() - 50, - location.getZ() - 50, - location.getX() + 50, - location.getY() + 50, - location.getZ() + 50 - ); - - assert Minecraft.getInstance().level != null; - Minecraft.getInstance().level.getEntitiesOfClass(ItemEntity.class, aabb, itemEntity -> itemEntity != null && itemEntity.hasCustomName() && itemEntity.getItem().getItem().equals(Items.SKELETON_SKULL)).forEach(itemEntity -> { - Component customName = itemEntity.getCustomName(); - - assert customName != null; - List siblings = customName.getSiblings(); - - // get player name and revivable status - String playerName; - boolean nonRevivable; - if (!siblings.isEmpty()) { // sibling size only by not formatted corpses greater than 0 - Component originalCorpseName = siblings.get(0); - playerName = originalCorpseName.getContents().substring(1); - nonRevivable = Objects.equals(originalCorpseName.getStyle().getColor(), TextColor.fromLegacyFormat(ChatFormatting.DARK_GRAY)); - this.corpseMap.put(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>(playerName, nonRevivable)); - } else { - Map.Entry corpse = this.corpseMap.getOrDefault(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>("Unbekannt", false)); - playerName = corpse.getKey(); - nonRevivable = corpse.getValue(); - } - - // use player name and revivable status - String prefix = unicacityAddon.nameTagService().getPrefix(playerName, true); - String factionInfo = unicacityAddon.configuration().nametag().info().get() ? unicacityAddon.api().getPlayerFactionMap().getOrDefault(playerName, Faction.NULL).getNameTagSuffix() : ""; - - String ndn = Message.getBuilder() - .of("✟").color(nonRevivable ? ColorCode.DARK_GRAY : ColorCode.GRAY).advance() - .of((nonRevivable ? ColorCode.DARK_GRAY.getCode() : prefix) + playerName).advance().space() - .of(factionInfo).advance() - .create(); - - itemEntity.setCustomName(Component.nullToEmpty(ndn)); - }); - } -} diff --git a/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedGuiController.java b/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedGuiController.java deleted file mode 100644 index 0a33a9f4..00000000 --- a/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedGuiController.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_17_1; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; -import com.rettichlp.unicacityaddon.controller.GuiController; -import com.rettichlp.unicacityaddon.listener.ScreenRenderListener; -import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; -import net.labymod.api.models.Implements; -import net.labymod.api.nbt.NBTTagType; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.core.NonNullList; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -import javax.inject.Singleton; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * @author RettichLP - */ -@Singleton -@Implements(GuiController.class) -public class VersionedGuiController extends GuiController { - - private int containerId = 0; - - @Override - public int getSlotNumberByDisplayName(String displayName) { - int slotNumber = -1; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - NonNullList itemStacks = chestMenu.getItems(); - Optional hoveredItemStackOptional = itemStacks.stream() - .filter(itemStack -> itemStack.getDisplayName().getString().contains(displayName)) - .findFirst(); - - if (hoveredItemStackOptional.isPresent()) { - slotNumber = itemStacks.indexOf(hoveredItemStackOptional.get()); - } - } - - return slotNumber; - } - - @Override - public @Nullable String getContainerLegacyName() { - return null; - } - - @Override - public int getContainerId() { - return 0; - } - - @Override - public void inventoryClick(int slotNumber) { - Screen screen = Minecraft.getInstance().screen; - - this.containerId = 0; - if (screen instanceof ContainerScreen containerScreen) { - this.containerId = containerScreen.getMenu().containerId; - } else if (screen instanceof HopperScreen hopperScreen) { - this.containerId = hopperScreen.getMenu().containerId; - } - - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(this.containerId, 0, slotNumber, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - } - - @Override - public void updateDrugInventoryMap(UnicacityAddon unicacityAddon) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - this.containerId = chestMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - if (unicacityAddon.utilService().command().isCocaineCheck()) { - unicacityAddon.utilService().command().setCocaineCheck(false); - // select cocaine to check drug purity - this.inventoryClick(0); - } else if (unicacityAddon.utilService().command().isMarihuanaCheck()) { - unicacityAddon.utilService().command().setMarihuanaCheck(false); - // select marihuana to check drug purity - this.inventoryClick(1); - } else if (unicacityAddon.utilService().command().isMethCheck()) { - unicacityAddon.utilService().command().setMethCheck(false); - // select meth to check drug purity - this.inventoryClick(2); - } else { - chestMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty() && !itemStack.getDisplayName().getString().contains("Pulver") && !itemStack.getDisplayName().getString().contains("Kräuter") && !itemStack.getDisplayName().getString().contains("Kristalle")) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - String lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()).getString(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().getString()); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(DrugPurity.BEST, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - }); - - unicacityAddon.utilService().command().setActiveDrugInventoryLoading(false); - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } else if (screen instanceof HopperScreen hopperScreen && unicacityAddon.utilService().command().isActiveDrugInventoryLoading()) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - - this.containerId = hopperMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - hopperMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty()) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - String drugPurityNbt = lore.getString(1); - String amountNbt = lore.getString(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().getString()); - DrugPurity drugPurity = DrugPurity.getDrugPurity(drugPurityNbt); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(drugPurity, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - }); - - // go back to inventory container - this.inventoryClick(4); - } - } - - @Override - public void setSelectedHotbarSlot(int slotNumber) { - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.getInventory().selected = slotNumber; - } - - @Override - public void updateSetting(boolean expectedValue) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen && !ScreenRenderListener.settingPath.isEmpty()) { - ChestMenu chestMenu = containerScreen.getMenu(); - - if (chestMenu.containerId != this.containerId) { - this.containerId = chestMenu.containerId; - - if (ScreenRenderListener.settingPath.size() > 1) { - this.inventoryClick(ScreenRenderListener.settingPath.remove(0)); - } else { - int slotNumber = ScreenRenderListener.settingPath.remove(0); - ItemStack itemStack = chestMenu.getItems().get(slotNumber); - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - if (lore.getString(1).equals("§cAktiviere den Hitsound") && expectedValue) { - this.inventoryClick(slotNumber); - } - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } - } - } - - @Override - public boolean containsItemContainingString(String name) { - NonNullList itemStackNonNullList = null; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - itemStackNonNullList = containerScreen.getMenu().getItems(); - } else if (screen instanceof HopperScreen hopperScreen) { - itemStackNonNullList = hopperScreen.getMenu().getItems(); - } - - return itemStackNonNullList != null && itemStackNonNullList.stream().anyMatch(itemStack -> itemStack.getDisplayName().getContents().contains(name)); - } -} \ No newline at end of file diff --git a/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedPlayerListController.java b/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedPlayerListController.java deleted file mode 100644 index e4a8c469..00000000 --- a/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedPlayerListController.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_17_1; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.tab.TabPrefix; -import com.rettichlp.unicacityaddon.controller.PlayerListController; -import net.labymod.api.Laby; -import net.labymod.api.client.network.ClientPacketListener; -import net.labymod.api.client.network.NetworkPlayerInfo; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.world.scores.PlayerTeam; -import net.minecraft.world.scores.Scoreboard; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * @author RettichLP - */ -@Singleton -@Implements(PlayerListController.class) -public class VersionedPlayerListController extends PlayerListController { - - @Inject - public VersionedPlayerListController() { - } - - @Override - public boolean isKeyPlayerListDown() { - return Minecraft.getInstance().options.keyPlayerList.isDown(); - } - - @Override - public void orderPlayerList(UnicacityAddon unicacityAddon) { - ClientPacketListener clientPacketListener = Laby.labyAPI().minecraft().getClientPacketListener(); - Collection networkPlayerInfos = clientPacketListener != null ? clientPacketListener.getNetworkPlayerInfos() : Collections.emptyList(); - assert Minecraft.getInstance().level != null; - Scoreboard scoreboard = Minecraft.getInstance().level.getScoreboard(); - - // get teams or create if not present - Map tabPrefixScorePlayerTeamMap = getScorePlayerTeamMap(scoreboard); - - // add default player team (m_player) - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.profile() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .map(networkPlayerInfo -> networkPlayerInfo.profile().getUsername()) - .forEach(s -> scoreboard.addPlayerToTeam(s, tabPrefixScorePlayerTeamMap.get(TabPrefix.NONE))); - - // add formatted player teams - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.displayName() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .forEach(networkPlayerInfo -> { - String displayName = unicacityAddon.utilService().text().legacy(networkPlayerInfo.displayName()); - TabPrefix tabPrefix = TabPrefix.getTypeByDisplayName(displayName); - PlayerTeam playerTeam = tabPrefixScorePlayerTeamMap.get(tabPrefix); - scoreboard.addPlayerToTeam(networkPlayerInfo.profile().getUsername(), playerTeam); - }); - } - - private Map getScorePlayerTeamMap(Scoreboard scoreboard) { - Map scorePlayerTeamMap = new HashMap<>(); - scorePlayerTeamMap.put(TabPrefix.FBI_UC, scoreboard.getPlayerTeam("a_fbi_uc") != null ? scoreboard.getPlayerTeam("a_fbi_uc") : scoreboard.addPlayerTeam("a_fbi_uc")); - scorePlayerTeamMap.put(TabPrefix.FBI, scoreboard.getPlayerTeam("b_fbi") != null ? scoreboard.getPlayerTeam("b_fbi") : scoreboard.addPlayerTeam("b_fbi")); - scorePlayerTeamMap.put(TabPrefix.POLICE_UC, scoreboard.getPlayerTeam("c_police_uc") != null ? scoreboard.getPlayerTeam("c_police_uc") : scoreboard.addPlayerTeam("c_police_uc")); - scorePlayerTeamMap.put(TabPrefix.POLICE, scoreboard.getPlayerTeam("d_police") != null ? scoreboard.getPlayerTeam("d_police") : scoreboard.addPlayerTeam("d_police")); - scorePlayerTeamMap.put(TabPrefix.MEDIC_UC, scoreboard.getPlayerTeam("e_medic_uc") != null ? scoreboard.getPlayerTeam("e_medic_uc") : scoreboard.addPlayerTeam("e_medic_uc")); - scorePlayerTeamMap.put(TabPrefix.MEDIC, scoreboard.getPlayerTeam("f_medic") != null ? scoreboard.getPlayerTeam("f_medic") : scoreboard.addPlayerTeam("f_medic")); - scorePlayerTeamMap.put(TabPrefix.NEWS_UC, scoreboard.getPlayerTeam("g_news_uc") != null ? scoreboard.getPlayerTeam("g_news_uc") : scoreboard.addPlayerTeam("g_news_uc")); - scorePlayerTeamMap.put(TabPrefix.NEWS, scoreboard.getPlayerTeam("h_news") != null ? scoreboard.getPlayerTeam("h_news") : scoreboard.addPlayerTeam("h_news")); - scorePlayerTeamMap.put(TabPrefix.UC_DUTY, scoreboard.getPlayerTeam("i_uc_duty") != null ? scoreboard.getPlayerTeam("i_uc_duty") : scoreboard.addPlayerTeam("i_uc_duty")); - scorePlayerTeamMap.put(TabPrefix.BUILDER, scoreboard.getPlayerTeam("j_builder") != null ? scoreboard.getPlayerTeam("j_builder") : scoreboard.addPlayerTeam("j_builder")); - scorePlayerTeamMap.put(TabPrefix.REPORT, scoreboard.getPlayerTeam("k_report") != null ? scoreboard.getPlayerTeam("k_report") : scoreboard.addPlayerTeam("k_report")); - scorePlayerTeamMap.put(TabPrefix.UC, scoreboard.getPlayerTeam("l_uc") != null ? scoreboard.getPlayerTeam("l_uc") : scoreboard.addPlayerTeam("l_uc")); - scorePlayerTeamMap.put(TabPrefix.NONE, scoreboard.getPlayerTeam("m_player") != null ? scoreboard.getPlayerTeam("m_player") : scoreboard.addPlayerTeam("m_player")); - return scorePlayerTeamMap; - } -} diff --git a/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedScreenshotController.java b/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedScreenshotController.java deleted file mode 100644 index d0b4d75f..00000000 --- a/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedScreenshotController.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_17_1; - -import com.mojang.blaze3d.platform.NativeImage; -import com.rettichlp.unicacityaddon.controller.ScreenshotController; -import net.labymod.api.models.Implements; -import net.minecraft.Util; -import net.minecraft.client.Minecraft; -import net.minecraft.client.Screenshot; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.io.File; -import java.io.IOException; - -/** - * @author RettichLP - */ -@Singleton -@Implements(ScreenshotController.class) -public class VersionedScreenshotController extends ScreenshotController { - - @Inject - public VersionedScreenshotController() { - } - - @Override - public File createScreenshot(File file) { - if (file != null) { - Minecraft minecraft = Minecraft.getInstance(); - - NativeImage nativeImage = Screenshot.takeScreenshot(minecraft.getMainRenderTarget()); - Util.ioPool().execute(() -> { - try { - nativeImage.writeToFile(file); - } catch (IOException e) { - throw new RuntimeException(e); - } finally { - nativeImage.close(); - } - }); - } - return file; - } -} diff --git a/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedSoundController.java b/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedSoundController.java deleted file mode 100644 index 91bc2d0b..00000000 --- a/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedSoundController.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_17_1; - -import com.rettichlp.unicacityaddon.controller.SoundController; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.sounds.SoundEvents; - -import javax.inject.Inject; -import javax.inject.Singleton; - -/** - * @author RettichLP - */ -@Singleton -@Implements(SoundController.class) -public class VersionedSoundController extends SoundController { - - @Inject - public VersionedSoundController() { - } - - @Override - public void playBankRobStartedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.9F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - }).start(); - } - - @Override - public void playBombPlantedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.0F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.8F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.4F)); - }).start(); - } - - @Override - public void playContractSetSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 0.5F)); - } - - @Override - public void playContractFulfilledSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playMobileCallSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.MUSIC_DISC_CAT, 1.0F)); - } - - @Override - public void playMobileSMSSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.SHEEP_AMBIENT, 1.0F)); - } - - @Override - public void playReportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playServiceSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playTankWarningSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_HARP, 1.0F)); - } - - @Override - public void playTimerExpiredSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, 1.0F)); - } - - @Override - public void playTeamSpeakSupportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playTeamSpeakPublicitySound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.0F)); - } -} diff --git a/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedTransportController.java b/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedTransportController.java deleted file mode 100644 index 6e4c1dee..00000000 --- a/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedTransportController.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_17_1; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.enums.location.Bus; -import com.rettichlp.unicacityaddon.commands.BusCommand; -import com.rettichlp.unicacityaddon.controller.TransportController; -import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.Items; - -import javax.inject.Singleton; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author RettichLP - */ -@Singleton -@Implements(TransportController.class) -public class VersionedTransportController extends TransportController { - - @Override - public void processBusRouting(UnicacityAddon unicacityAddon) { - AddonPlayer p = unicacityAddon.player(); - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof HopperScreen hopperScreen && BusCommand.active) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - if (hopperMenu.containerId != BusCommand.lastWindowId) { - BusCommand.lastWindowId = hopperMenu.containerId; - - Map busSlotMap = hopperMenu.slots.stream() - .filter(slot -> slot.getItem().getItem().equals(Items.OAK_SIGN)) - .filter(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")) != null) - .collect(Collectors.toMap(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")), slot -> slot)); - - Bus nearestBusToDestination = BusCommand.getNearestBusToDestination(busSlotMap.keySet()); - if (nearestBusToDestination == null) { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - return; - } - - Slot slot = busSlotMap.get(nearestBusToDestination); - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - if (nearestBusToDestination.equals(BusCommand.destination)) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.active = false; - } else if (BusCommand.limiter < 15) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.limiter++; - } else { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - } - } - } - } - - @Override - public void carInteract() { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - - if (containerScreen.getTitle().getString().contains("CarControl")) { - ChestMenu chestMenu = containerScreen.getMenu(); - int numberOfCars = (int) chestMenu.slots.stream() - .map(slot -> slot.getItem().getItem()) - .filter(item -> item.equals(Items.MINECART) || item.equals(Items.EMERALD) || item.equals(Items.REDSTONE)) - .count(); - - if (numberOfCars == 1) { - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(chestMenu.containerId, 0, 0, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - } - } - } - } -} \ No newline at end of file diff --git a/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedWorldInteractionController.java b/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedWorldInteractionController.java deleted file mode 100644 index 6836b61f..00000000 --- a/game-runner/src/v1_17_1/java/com/rettichlp/unicacityaddon/v1_17_1/VersionedWorldInteractionController.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_17_1; - -import com.rettichlp.unicacityaddon.controller.WorldInteractionController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SignBlock; -import net.minecraft.world.level.block.WallBannerBlock; -import net.minecraft.world.level.block.entity.SignBlockEntity; -import net.minecraft.world.phys.HitResult; -import net.minecraft.world.phys.Vec3; - -import javax.inject.Singleton; -import java.util.Collection; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.StreamSupport; - -/** - * @author RettichLP - */ -@Singleton -@Implements(WorldInteractionController.class) -public class VersionedWorldInteractionController extends WorldInteractionController { - - @Override - public FloatVector3 getClickedBlockLocation() { - assert Minecraft.getInstance().cameraEntity != null; - HitResult hitResult = Minecraft.getInstance().cameraEntity.pick(20, 0, false); - Vec3 vec3 = hitResult.getLocation(); - - return new FloatVector3((float) vec3.x(), (float) vec3.y(), (float) vec3.z()); - } - - @Override - public boolean isHouseNumberSign(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos(location.getX(), location.getY(), location.getZ()); - - assert clientLevel != null; - if (clientLevel.getBlockState(blockPos).getBlock() instanceof SignBlock) { - SignBlockEntity signBlockEntity = (SignBlockEntity) clientLevel.getBlockEntity(blockPos); - - if (signBlockEntity != null) { - String text = signBlockEntity.getMessage(1, false).getString(); - return Pattern.compile("^== (\\d+) ==$").matcher(text).find(); - } - } - return false; - } - - @Override - public boolean isBanner(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos(location.getX(), location.getY(), location.getZ()); - - assert clientLevel != null; - return clientLevel.getBlockState(blockPos).getBlock() instanceof WallBannerBlock; - } - - @Override - public boolean isPlant(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - - assert clientLevel != null; - boolean isFern = clientLevel.getBlockState(new BlockPos(location.getX(), location.getY(), location.getZ())).getBlock().equals(Blocks.FERN); - boolean isPodzol = clientLevel.getBlockState(new BlockPos(location.getX(), location.getY() - 1, location.getZ())).getBlock().equals(Blocks.PODZOL); - - return isFern && isPodzol; - } - - @Override - public Collection getFireBlocksInBox(FloatVector3 one, FloatVector3 two) { - BlockPos oneBlockPos = new BlockPos(one.getX(), one.getY(), one.getZ()); - BlockPos twoBlockPos = new BlockPos(two.getX(), two.getY(), two.getZ()); - - return StreamSupport.stream(BlockPos.betweenClosed(oneBlockPos, twoBlockPos).spliterator(), false) - .filter(blockPos -> { - assert Minecraft.getInstance().level != null; - return Minecraft.getInstance().level.getBlockState(blockPos).getBlock().equals(Blocks.FIRE); - }) - .map(blockPos -> new FloatVector3(blockPos.getX(), blockPos.getY(), blockPos.getZ())) - .collect(Collectors.toList()); - } -} diff --git a/game-runner/src/v1_17_1/resources/assets/unicacityaddon/.assetsroot b/game-runner/src/v1_17_1/resources/assets/unicacityaddon/.assetsroot deleted file mode 100644 index e69de29b..00000000 diff --git a/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedDeadBodyController.java b/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedDeadBodyController.java deleted file mode 100644 index 95ad3c6d..00000000 --- a/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedDeadBodyController.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_18_2; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.Faction; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.controller.DeadBodyController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextColor; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.Items; -import net.minecraft.world.phys.AABB; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.AbstractMap; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.UUID; - -/** - * @author RettichLP - */ -@Singleton -@Implements(DeadBodyController.class) -public class VersionedDeadBodyController extends DeadBodyController { - - /** - * When a corpse is rendered, the display name is automatically changed. The name can reflect the current wanted - * level. However, if this state changes while the corpse has already been rendered, the color will not change. In - * order to ensure this change anyway, the name must be available in every render process. In order not to waste - * performance by calculating the name in every render process, the name that was calculated when the corpse was - * first rendered is used. Likewise, the status of whether the corpse can be revived. - */ - private final Map> corpseMap = new HashMap<>(); - - @Inject - public VersionedDeadBodyController() { - } - - @Override - public void updateDisplayName(UnicacityAddon unicacityAddon) { - FloatVector3 location = unicacityAddon.player().getLocation(); - - assert location != null; - AABB aabb = new AABB( - location.getX() - 50, - location.getY() - 50, - location.getZ() - 50, - location.getX() + 50, - location.getY() + 50, - location.getZ() + 50 - ); - - assert Minecraft.getInstance().level != null; - Minecraft.getInstance().level.getEntitiesOfClass(ItemEntity.class, aabb, itemEntity -> itemEntity != null && itemEntity.hasCustomName() && itemEntity.getItem().getItem().equals(Items.SKELETON_SKULL)).forEach(itemEntity -> { - Component customName = itemEntity.getCustomName(); - - assert customName != null; - List siblings = customName.getSiblings(); - - // get player name and revivable status - String playerName; - boolean nonRevivable; - if (!siblings.isEmpty()) { // sibling size only by not formatted corpses greater than 0 - Component originalCorpseName = siblings.get(0); - playerName = originalCorpseName.getContents().substring(1); - nonRevivable = Objects.equals(originalCorpseName.getStyle().getColor(), TextColor.fromLegacyFormat(ChatFormatting.DARK_GRAY)); - this.corpseMap.put(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>(playerName, nonRevivable)); - } else { - Map.Entry corpse = this.corpseMap.getOrDefault(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>("Unbekannt", false)); - playerName = corpse.getKey(); - nonRevivable = corpse.getValue(); - } - - // use player name and revivable status - String prefix = unicacityAddon.nameTagService().getPrefix(playerName, true); - String factionInfo = unicacityAddon.configuration().nametag().info().get() ? unicacityAddon.api().getPlayerFactionMap().getOrDefault(playerName, Faction.NULL).getNameTagSuffix() : ""; - - String ndn = Message.getBuilder() - .of("✟").color(nonRevivable ? ColorCode.DARK_GRAY : ColorCode.GRAY).advance() - .of((nonRevivable ? ColorCode.DARK_GRAY.getCode() : prefix) + playerName).advance().space() - .of(factionInfo).advance() - .create(); - - itemEntity.setCustomName(Component.nullToEmpty(ndn)); - }); - } -} diff --git a/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedGuiController.java b/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedGuiController.java deleted file mode 100644 index 68dcf3dc..00000000 --- a/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedGuiController.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_18_2; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; -import com.rettichlp.unicacityaddon.controller.GuiController; -import com.rettichlp.unicacityaddon.listener.ScreenRenderListener; -import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; -import net.labymod.api.models.Implements; -import net.labymod.api.nbt.NBTTagType; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.core.NonNullList; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -import javax.inject.Singleton; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * @author RettichLP - */ -@Singleton -@Implements(GuiController.class) -public class VersionedGuiController extends GuiController { - - private int containerId = 0; - - @Override - public int getSlotNumberByDisplayName(String displayName) { - int slotNumber = -1; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - NonNullList itemStacks = chestMenu.getItems(); - Optional hoveredItemStackOptional = itemStacks.stream() - .filter(itemStack -> itemStack.getDisplayName().getString().contains(displayName)) - .findFirst(); - - if (hoveredItemStackOptional.isPresent()) { - slotNumber = itemStacks.indexOf(hoveredItemStackOptional.get()); - } - } - - return slotNumber; - } - - @Override - public @Nullable String getContainerLegacyName() { - return null; - } - - @Override - public int getContainerId() { - return 0; - } - - @Override - public void inventoryClick(int slotNumber) { - Screen screen = Minecraft.getInstance().screen; - - this.containerId = 0; - if (screen instanceof ContainerScreen containerScreen) { - this.containerId = containerScreen.getMenu().containerId; - } else if (screen instanceof HopperScreen hopperScreen) { - this.containerId = hopperScreen.getMenu().containerId; - } - - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(this.containerId, 0, slotNumber, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - } - - @Override - public void updateDrugInventoryMap(UnicacityAddon unicacityAddon) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - this.containerId = chestMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - if (unicacityAddon.utilService().command().isCocaineCheck()) { - unicacityAddon.utilService().command().setCocaineCheck(false); - // select cocaine to check drug purity - this.inventoryClick(0); - } else if (unicacityAddon.utilService().command().isMarihuanaCheck()) { - unicacityAddon.utilService().command().setMarihuanaCheck(false); - // select marihuana to check drug purity - this.inventoryClick(1); - } else if (unicacityAddon.utilService().command().isMethCheck()) { - unicacityAddon.utilService().command().setMethCheck(false); - // select meth to check drug purity - this.inventoryClick(2); - } else { - chestMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty() && !itemStack.getDisplayName().getString().contains("Pulver") && !itemStack.getDisplayName().getString().contains("Kräuter") && !itemStack.getDisplayName().getString().contains("Kristalle")) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - String lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()).getString(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().getString()); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(DrugPurity.BEST, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - }); - - unicacityAddon.utilService().command().setActiveDrugInventoryLoading(false); - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } else if (screen instanceof HopperScreen hopperScreen && unicacityAddon.utilService().command().isActiveDrugInventoryLoading()) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - - this.containerId = hopperMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - hopperMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty()) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - String drugPurityNbt = lore.getString(1); - String amountNbt = lore.getString(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().getString()); - DrugPurity drugPurity = DrugPurity.getDrugPurity(drugPurityNbt); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(drugPurity, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - }); - - // go back to inventory container - this.inventoryClick(4); - } - } - - @Override - public void setSelectedHotbarSlot(int slotNumber) { - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.getInventory().selected = slotNumber; - } - - @Override - public void updateSetting(boolean expectedValue) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen && !ScreenRenderListener.settingPath.isEmpty()) { - ChestMenu chestMenu = containerScreen.getMenu(); - - if (chestMenu.containerId != this.containerId) { - this.containerId = chestMenu.containerId; - - if (ScreenRenderListener.settingPath.size() > 1) { - this.inventoryClick(ScreenRenderListener.settingPath.remove(0)); - } else { - int slotNumber = ScreenRenderListener.settingPath.remove(0); - ItemStack itemStack = chestMenu.getItems().get(slotNumber); - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - if (lore.getString(1).equals("§cAktiviere den Hitsound") && expectedValue) { - this.inventoryClick(slotNumber); - } - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } - } - } - - @Override - public boolean containsItemContainingString(String name) { - NonNullList itemStackNonNullList = null; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - itemStackNonNullList = containerScreen.getMenu().getItems(); - } else if (screen instanceof HopperScreen hopperScreen) { - itemStackNonNullList = hopperScreen.getMenu().getItems(); - } - - return itemStackNonNullList != null && itemStackNonNullList.stream().anyMatch(itemStack -> itemStack.getDisplayName().getContents().contains(name)); - } -} \ No newline at end of file diff --git a/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedPlayerListController.java b/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedPlayerListController.java deleted file mode 100644 index 8ebd3d80..00000000 --- a/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedPlayerListController.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_18_2; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.tab.TabPrefix; -import com.rettichlp.unicacityaddon.controller.PlayerListController; -import net.labymod.api.Laby; -import net.labymod.api.client.network.ClientPacketListener; -import net.labymod.api.client.network.NetworkPlayerInfo; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.world.scores.PlayerTeam; -import net.minecraft.world.scores.Scoreboard; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * @author RettichLP - */ -@Singleton -@Implements(PlayerListController.class) -public class VersionedPlayerListController extends PlayerListController { - - @Inject - public VersionedPlayerListController() { - } - - @Override - public boolean isKeyPlayerListDown() { - return Minecraft.getInstance().options.keyPlayerList.isDown(); - } - - @Override - public void orderPlayerList(UnicacityAddon unicacityAddon) { - ClientPacketListener clientPacketListener = Laby.labyAPI().minecraft().getClientPacketListener(); - Collection networkPlayerInfos = clientPacketListener != null ? clientPacketListener.getNetworkPlayerInfos() : Collections.emptyList(); - assert Minecraft.getInstance().level != null; - Scoreboard scoreboard = Minecraft.getInstance().level.getScoreboard(); - - // get teams or create if not present - Map tabPrefixScorePlayerTeamMap = getScorePlayerTeamMap(scoreboard); - - // add default player team (m_player) - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.profile() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .map(networkPlayerInfo -> networkPlayerInfo.profile().getUsername()) - .forEach(s -> scoreboard.addPlayerToTeam(s, tabPrefixScorePlayerTeamMap.get(TabPrefix.NONE))); - - // add formatted player teams - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.displayName() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .forEach(networkPlayerInfo -> { - String displayName = unicacityAddon.utilService().text().legacy(networkPlayerInfo.displayName()); - TabPrefix tabPrefix = TabPrefix.getTypeByDisplayName(displayName); - PlayerTeam playerTeam = tabPrefixScorePlayerTeamMap.get(tabPrefix); - scoreboard.addPlayerToTeam(networkPlayerInfo.profile().getUsername(), playerTeam); - }); - } - - private Map getScorePlayerTeamMap(Scoreboard scoreboard) { - Map scorePlayerTeamMap = new HashMap<>(); - scorePlayerTeamMap.put(TabPrefix.FBI_UC, scoreboard.getPlayerTeam("a_fbi_uc") != null ? scoreboard.getPlayerTeam("a_fbi_uc") : scoreboard.addPlayerTeam("a_fbi_uc")); - scorePlayerTeamMap.put(TabPrefix.FBI, scoreboard.getPlayerTeam("b_fbi") != null ? scoreboard.getPlayerTeam("b_fbi") : scoreboard.addPlayerTeam("b_fbi")); - scorePlayerTeamMap.put(TabPrefix.POLICE_UC, scoreboard.getPlayerTeam("c_police_uc") != null ? scoreboard.getPlayerTeam("c_police_uc") : scoreboard.addPlayerTeam("c_police_uc")); - scorePlayerTeamMap.put(TabPrefix.POLICE, scoreboard.getPlayerTeam("d_police") != null ? scoreboard.getPlayerTeam("d_police") : scoreboard.addPlayerTeam("d_police")); - scorePlayerTeamMap.put(TabPrefix.MEDIC_UC, scoreboard.getPlayerTeam("e_medic_uc") != null ? scoreboard.getPlayerTeam("e_medic_uc") : scoreboard.addPlayerTeam("e_medic_uc")); - scorePlayerTeamMap.put(TabPrefix.MEDIC, scoreboard.getPlayerTeam("f_medic") != null ? scoreboard.getPlayerTeam("f_medic") : scoreboard.addPlayerTeam("f_medic")); - scorePlayerTeamMap.put(TabPrefix.NEWS_UC, scoreboard.getPlayerTeam("g_news_uc") != null ? scoreboard.getPlayerTeam("g_news_uc") : scoreboard.addPlayerTeam("g_news_uc")); - scorePlayerTeamMap.put(TabPrefix.NEWS, scoreboard.getPlayerTeam("h_news") != null ? scoreboard.getPlayerTeam("h_news") : scoreboard.addPlayerTeam("h_news")); - scorePlayerTeamMap.put(TabPrefix.UC_DUTY, scoreboard.getPlayerTeam("i_uc_duty") != null ? scoreboard.getPlayerTeam("i_uc_duty") : scoreboard.addPlayerTeam("i_uc_duty")); - scorePlayerTeamMap.put(TabPrefix.BUILDER, scoreboard.getPlayerTeam("j_builder") != null ? scoreboard.getPlayerTeam("j_builder") : scoreboard.addPlayerTeam("j_builder")); - scorePlayerTeamMap.put(TabPrefix.REPORT, scoreboard.getPlayerTeam("k_report") != null ? scoreboard.getPlayerTeam("k_report") : scoreboard.addPlayerTeam("k_report")); - scorePlayerTeamMap.put(TabPrefix.UC, scoreboard.getPlayerTeam("l_uc") != null ? scoreboard.getPlayerTeam("l_uc") : scoreboard.addPlayerTeam("l_uc")); - scorePlayerTeamMap.put(TabPrefix.NONE, scoreboard.getPlayerTeam("m_player") != null ? scoreboard.getPlayerTeam("m_player") : scoreboard.addPlayerTeam("m_player")); - return scorePlayerTeamMap; - } -} diff --git a/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedScreenshotController.java b/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedScreenshotController.java deleted file mode 100644 index be85cd85..00000000 --- a/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedScreenshotController.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_18_2; - -import com.mojang.blaze3d.platform.NativeImage; -import com.rettichlp.unicacityaddon.controller.ScreenshotController; -import net.labymod.api.models.Implements; -import net.minecraft.Util; -import net.minecraft.client.Minecraft; -import net.minecraft.client.Screenshot; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.io.File; -import java.io.IOException; - -/** - * @author RettichLP - */ -@Singleton -@Implements(ScreenshotController.class) -public class VersionedScreenshotController extends ScreenshotController { - - @Inject - public VersionedScreenshotController() { - } - - @Override - public File createScreenshot(File file) { - if (file != null) { - Minecraft minecraft = Minecraft.getInstance(); - - NativeImage nativeImage = Screenshot.takeScreenshot(minecraft.getMainRenderTarget()); - Util.ioPool().execute(() -> { - try { - nativeImage.writeToFile(file); - } catch (IOException e) { - throw new RuntimeException(e); - } finally { - nativeImage.close(); - } - }); - } - return file; - } -} diff --git a/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedSoundController.java b/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedSoundController.java deleted file mode 100644 index 41a032f4..00000000 --- a/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedSoundController.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_18_2; - -import com.rettichlp.unicacityaddon.controller.SoundController; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.sounds.SoundEvents; - -import javax.inject.Inject; -import javax.inject.Singleton; - -/** - * @author RettichLP - */ -@Singleton -@Implements(SoundController.class) -public class VersionedSoundController extends SoundController { - - @Inject - public VersionedSoundController() { - } - - @Override - public void playBankRobStartedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.9F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - }).start(); - } - - @Override - public void playBombPlantedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.0F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.8F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.4F)); - }).start(); - } - - @Override - public void playContractSetSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 0.5F)); - - } - - @Override - public void playContractFulfilledSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playMobileCallSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.MUSIC_DISC_CAT, 1.0F)); - } - - @Override - public void playMobileSMSSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.SHEEP_AMBIENT, 1.0F)); - } - - @Override - public void playReportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playServiceSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playTankWarningSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_HARP, 1.0F)); - } - - @Override - public void playTimerExpiredSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, 1.0F)); - } - - @Override - public void playTeamSpeakSupportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playTeamSpeakPublicitySound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.0F)); - } -} diff --git a/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedTransportController.java b/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedTransportController.java deleted file mode 100644 index 10943509..00000000 --- a/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedTransportController.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_18_2; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.enums.location.Bus; -import com.rettichlp.unicacityaddon.commands.BusCommand; -import com.rettichlp.unicacityaddon.controller.TransportController; -import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.Items; - -import javax.inject.Singleton; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author RettichLP - */ -@Singleton -@Implements(TransportController.class) -public class VersionedTransportController extends TransportController { - - @Override - public void processBusRouting(UnicacityAddon unicacityAddon) { - AddonPlayer p = unicacityAddon.player(); - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof HopperScreen hopperScreen && BusCommand.active) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - if (hopperMenu.containerId != BusCommand.lastWindowId) { - BusCommand.lastWindowId = hopperMenu.containerId; - - Map busSlotMap = hopperMenu.slots.stream() - .filter(slot -> slot.getItem().getItem().equals(Items.OAK_SIGN)) - .filter(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")) != null) - .collect(Collectors.toMap(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")), slot -> slot)); - - Bus nearestBusToDestination = BusCommand.getNearestBusToDestination(busSlotMap.keySet()); - if (nearestBusToDestination == null) { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - return; - } - - Slot slot = busSlotMap.get(nearestBusToDestination); - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - if (nearestBusToDestination.equals(BusCommand.destination)) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.active = false; - } else if (BusCommand.limiter < 15) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.limiter++; - } else { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - } - } - } - } - - @Override - public void carInteract() { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - - if (containerScreen.getTitle().getString().contains("CarControl")) { - ChestMenu chestMenu = containerScreen.getMenu(); - int numberOfCars = (int) chestMenu.slots.stream() - .map(slot -> slot.getItem().getItem()) - .filter(item -> item.equals(Items.MINECART) || item.equals(Items.EMERALD) || item.equals(Items.REDSTONE)) - .count(); - - if (numberOfCars == 1) { - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(chestMenu.containerId, 0, 0, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - } - } - } - } -} \ No newline at end of file diff --git a/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedWorldInteractionController.java b/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedWorldInteractionController.java deleted file mode 100644 index 1878b03e..00000000 --- a/game-runner/src/v1_18_2/java/com/rettichlp/unicacityaddon/v1_18_2/VersionedWorldInteractionController.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_18_2; - -import com.rettichlp.unicacityaddon.controller.WorldInteractionController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SignBlock; -import net.minecraft.world.level.block.WallBannerBlock; -import net.minecraft.world.level.block.entity.SignBlockEntity; -import net.minecraft.world.phys.HitResult; -import net.minecraft.world.phys.Vec3; - -import javax.inject.Singleton; -import java.util.Collection; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.StreamSupport; - -/** - * @author RettichLP - */ -@Singleton -@Implements(WorldInteractionController.class) -public class VersionedWorldInteractionController extends WorldInteractionController { - - @Override - public FloatVector3 getClickedBlockLocation() { - assert Minecraft.getInstance().cameraEntity != null; - HitResult hitResult = Minecraft.getInstance().cameraEntity.pick(20, 0, false); - Vec3 vec3 = hitResult.getLocation(); - - return new FloatVector3((float) vec3.x(), (float) vec3.y(), (float) vec3.z()); - } - - @Override - public boolean isHouseNumberSign(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos(location.getX(), location.getY(), location.getZ()); - - assert clientLevel != null; - if (clientLevel.getBlockState(blockPos).getBlock() instanceof SignBlock) { - SignBlockEntity signBlockEntity = (SignBlockEntity) clientLevel.getBlockEntity(blockPos); - - if (signBlockEntity != null) { - String text = signBlockEntity.getMessage(1, false).getString(); - return Pattern.compile("^== (\\d+) ==$").matcher(text).find(); - } - } - return false; - } - - @Override - public boolean isBanner(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos(location.getX(), location.getY(), location.getZ()); - - assert clientLevel != null; - return clientLevel.getBlockState(blockPos).getBlock() instanceof WallBannerBlock; - } - - @Override - public boolean isPlant(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - - assert clientLevel != null; - boolean isFern = clientLevel.getBlockState(new BlockPos(location.getX(), location.getY(), location.getZ())).getBlock().equals(Blocks.FERN); - boolean isPodzol = clientLevel.getBlockState(new BlockPos(location.getX(), location.getY() - 1, location.getZ())).getBlock().equals(Blocks.PODZOL); - - return isFern && isPodzol; - } - - @Override - public Collection getFireBlocksInBox(FloatVector3 one, FloatVector3 two) { - BlockPos oneBlockPos = new BlockPos(one.getX(), one.getY(), one.getZ()); - BlockPos twoBlockPos = new BlockPos(two.getX(), two.getY(), two.getZ()); - - return StreamSupport.stream(BlockPos.betweenClosed(oneBlockPos, twoBlockPos).spliterator(), false) - .filter(blockPos -> { - assert Minecraft.getInstance().level != null; - return Minecraft.getInstance().level.getBlockState(blockPos).getBlock().equals(Blocks.FIRE); - }) - .map(blockPos -> new FloatVector3(blockPos.getX(), blockPos.getY(), blockPos.getZ())) - .collect(Collectors.toList()); - } -} diff --git a/game-runner/src/v1_18_2/resources/assets/unicacityaddon/.assetsroot b/game-runner/src/v1_18_2/resources/assets/unicacityaddon/.assetsroot deleted file mode 100644 index e69de29b..00000000 diff --git a/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedDeadBodyController.java b/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedDeadBodyController.java deleted file mode 100644 index ce9ec98b..00000000 --- a/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedDeadBodyController.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_2; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.Faction; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.controller.DeadBodyController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextColor; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.Items; -import net.minecraft.world.phys.AABB; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.AbstractMap; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.UUID; - -/** - * @author RettichLP - */ -@Singleton -@Implements(DeadBodyController.class) -public class VersionedDeadBodyController extends DeadBodyController { - - /** - * When a corpse is rendered, the display name is automatically changed. The name can reflect the current wanted - * level. However, if this state changes while the corpse has already been rendered, the color will not change. In - * order to ensure this change anyway, the name must be available in every render process. In order not to waste - * performance by calculating the name in every render process, the name that was calculated when the corpse was - * first rendered is used. Likewise, the status of whether the corpse can be revived. - */ - private final Map> corpseMap = new HashMap<>(); - - @Inject - public VersionedDeadBodyController() { - } - - @Override - public void updateDisplayName(UnicacityAddon unicacityAddon) { - FloatVector3 location = unicacityAddon.player().getLocation(); - - assert location != null; - AABB aabb = new AABB( - location.getX() - 50, - location.getY() - 50, - location.getZ() - 50, - location.getX() + 50, - location.getY() + 50, - location.getZ() + 50 - ); - - assert Minecraft.getInstance().level != null; - Minecraft.getInstance().level.getEntitiesOfClass(ItemEntity.class, aabb, itemEntity -> itemEntity != null && itemEntity.hasCustomName() && itemEntity.getItem().getItem().equals(Items.SKELETON_SKULL)).forEach(itemEntity -> { - Component customName = itemEntity.getCustomName(); - - assert customName != null; - List siblings = customName.getSiblings(); - - // get player name and revivable status - String playerName; - boolean nonRevivable; - if (!siblings.isEmpty()) { // sibling size only by not formatted corpses greater than 0 - Component originalCorpseName = siblings.get(0); - playerName = originalCorpseName.getContents().toString().substring(1); - nonRevivable = Objects.equals(originalCorpseName.getStyle().getColor(), TextColor.fromLegacyFormat(ChatFormatting.DARK_GRAY)); - this.corpseMap.put(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>(playerName, nonRevivable)); - } else { - Map.Entry corpse = this.corpseMap.getOrDefault(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>("Unbekannt", false)); - playerName = corpse.getKey(); - nonRevivable = corpse.getValue(); - } - - // use player name and revivable status - String prefix = unicacityAddon.nameTagService().getPrefix(playerName, true); - String factionInfo = unicacityAddon.configuration().nametag().info().get() ? unicacityAddon.api().getPlayerFactionMap().getOrDefault(playerName, Faction.NULL).getNameTagSuffix() : ""; - - String ndn = Message.getBuilder() - .of("✟").color(nonRevivable ? ColorCode.DARK_GRAY : ColorCode.GRAY).advance() - .of((nonRevivable ? ColorCode.DARK_GRAY.getCode() : prefix) + playerName).advance().space() - .of(factionInfo).advance() - .create(); - - itemEntity.setCustomName(Component.nullToEmpty(ndn)); - }); - } -} diff --git a/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedGuiController.java b/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedGuiController.java deleted file mode 100644 index 425ad2df..00000000 --- a/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedGuiController.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_2; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; -import com.rettichlp.unicacityaddon.controller.GuiController; -import com.rettichlp.unicacityaddon.listener.ScreenRenderListener; -import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; -import net.labymod.api.models.Implements; -import net.labymod.api.nbt.NBTTagType; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.core.NonNullList; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -import javax.inject.Singleton; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * @author RettichLP - */ -@Singleton -@Implements(GuiController.class) -public class VersionedGuiController extends GuiController { - - private int containerId = 0; - - @Override - public int getSlotNumberByDisplayName(String displayName) { - int slotNumber = -1; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - NonNullList itemStacks = chestMenu.getItems(); - Optional hoveredItemStackOptional = itemStacks.stream() - .filter(itemStack -> itemStack.getDisplayName().getString().contains(displayName)) - .findFirst(); - - if (hoveredItemStackOptional.isPresent()) { - slotNumber = itemStacks.indexOf(hoveredItemStackOptional.get()); - } - } - - return slotNumber; - } - - @Override - public @Nullable String getContainerLegacyName() { - return null; - } - - @Override - public int getContainerId() { - return 0; - } - - @Override - public void inventoryClick(int slotNumber) { - Screen screen = Minecraft.getInstance().screen; - - this.containerId = 0; - if (screen instanceof ContainerScreen containerScreen) { - this.containerId = containerScreen.getMenu().containerId; - } else if (screen instanceof HopperScreen hopperScreen) { - this.containerId = hopperScreen.getMenu().containerId; - } - - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(this.containerId, 0, slotNumber, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - } - - @Override - public void updateDrugInventoryMap(UnicacityAddon unicacityAddon) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - this.containerId = chestMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - if (unicacityAddon.utilService().command().isCocaineCheck()) { - unicacityAddon.utilService().command().setCocaineCheck(false); - // select cocaine to check drug purity - this.inventoryClick(0); - } else if (unicacityAddon.utilService().command().isMarihuanaCheck()) { - unicacityAddon.utilService().command().setMarihuanaCheck(false); - // select marihuana to check drug purity - this.inventoryClick(1); - } else if (unicacityAddon.utilService().command().isMethCheck()) { - unicacityAddon.utilService().command().setMethCheck(false); - // select meth to check drug purity - this.inventoryClick(2); - } else { - chestMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty() && !itemStack.getDisplayName().getString().contains("Pulver") && !itemStack.getDisplayName().getString().contains("Kräuter") && !itemStack.getDisplayName().getString().contains("Kristalle")) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - String lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()).getString(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().getString()); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(DrugPurity.BEST, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - }); - - unicacityAddon.utilService().command().setActiveDrugInventoryLoading(false); - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } else if (screen instanceof HopperScreen hopperScreen && unicacityAddon.utilService().command().isActiveDrugInventoryLoading()) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - - this.containerId = hopperMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - hopperMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty()) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - String drugPurityNbt = lore.getString(1); - String amountNbt = lore.getString(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().getString()); - DrugPurity drugPurity = DrugPurity.getDrugPurity(drugPurityNbt); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(drugPurity, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - }); - - // go back to inventory container - this.inventoryClick(4); - } - } - - @Override - public void setSelectedHotbarSlot(int slotNumber) { - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.getInventory().selected = slotNumber; - } - - @Override - public void updateSetting(boolean expectedValue) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen && !ScreenRenderListener.settingPath.isEmpty()) { - ChestMenu chestMenu = containerScreen.getMenu(); - - if (chestMenu.containerId != this.containerId) { - this.containerId = chestMenu.containerId; - - if (ScreenRenderListener.settingPath.size() > 1) { - this.inventoryClick(ScreenRenderListener.settingPath.remove(0)); - } else { - int slotNumber = ScreenRenderListener.settingPath.remove(0); - ItemStack itemStack = chestMenu.getItems().get(slotNumber); - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - if (lore.getString(1).equals("§cAktiviere den Hitsound") && expectedValue) { - this.inventoryClick(slotNumber); - } - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } - } - } - - @Override - public boolean containsItemContainingString(String name) { - NonNullList itemStackNonNullList = null; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - itemStackNonNullList = containerScreen.getMenu().getItems(); - } else if (screen instanceof HopperScreen hopperScreen) { - itemStackNonNullList = hopperScreen.getMenu().getItems(); - } - - return itemStackNonNullList != null && itemStackNonNullList.stream().anyMatch(itemStack -> itemStack.getDisplayName().getContents().toString().contains(name)); - } -} \ No newline at end of file diff --git a/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedPlayerListController.java b/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedPlayerListController.java deleted file mode 100644 index 462d59aa..00000000 --- a/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedPlayerListController.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_2; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.tab.TabPrefix; -import com.rettichlp.unicacityaddon.controller.PlayerListController; -import net.labymod.api.Laby; -import net.labymod.api.client.network.ClientPacketListener; -import net.labymod.api.client.network.NetworkPlayerInfo; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.world.scores.PlayerTeam; -import net.minecraft.world.scores.Scoreboard; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * @author RettichLP - */ -@Singleton -@Implements(PlayerListController.class) -public class VersionedPlayerListController extends PlayerListController { - - @Inject - public VersionedPlayerListController() { - } - - @Override - public boolean isKeyPlayerListDown() { - return Minecraft.getInstance().options.keyPlayerList.isDown(); - } - - @Override - public void orderPlayerList(UnicacityAddon unicacityAddon) { - ClientPacketListener clientPacketListener = Laby.labyAPI().minecraft().getClientPacketListener(); - Collection networkPlayerInfos = clientPacketListener != null ? clientPacketListener.getNetworkPlayerInfos() : Collections.emptyList(); - assert Minecraft.getInstance().level != null; - Scoreboard scoreboard = Minecraft.getInstance().level.getScoreboard(); - - // get teams or create if not present - Map tabPrefixScorePlayerTeamMap = getScorePlayerTeamMap(scoreboard); - - // add default player team (m_player) - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.profile() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .map(networkPlayerInfo -> networkPlayerInfo.profile().getUsername()) - .forEach(s -> scoreboard.addPlayerToTeam(s, tabPrefixScorePlayerTeamMap.get(TabPrefix.NONE))); - - // add formatted player teams - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.displayName() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .forEach(networkPlayerInfo -> { - String displayName = unicacityAddon.utilService().text().legacy(networkPlayerInfo.displayName()); - TabPrefix tabPrefix = TabPrefix.getTypeByDisplayName(displayName); - PlayerTeam playerTeam = tabPrefixScorePlayerTeamMap.get(tabPrefix); - scoreboard.addPlayerToTeam(networkPlayerInfo.profile().getUsername(), playerTeam); - }); - } - - private Map getScorePlayerTeamMap(Scoreboard scoreboard) { - Map scorePlayerTeamMap = new HashMap<>(); - scorePlayerTeamMap.put(TabPrefix.FBI_UC, scoreboard.getPlayerTeam("a_fbi_uc") != null ? scoreboard.getPlayerTeam("a_fbi_uc") : scoreboard.addPlayerTeam("a_fbi_uc")); - scorePlayerTeamMap.put(TabPrefix.FBI, scoreboard.getPlayerTeam("b_fbi") != null ? scoreboard.getPlayerTeam("b_fbi") : scoreboard.addPlayerTeam("b_fbi")); - scorePlayerTeamMap.put(TabPrefix.POLICE_UC, scoreboard.getPlayerTeam("c_police_uc") != null ? scoreboard.getPlayerTeam("c_police_uc") : scoreboard.addPlayerTeam("c_police_uc")); - scorePlayerTeamMap.put(TabPrefix.POLICE, scoreboard.getPlayerTeam("d_police") != null ? scoreboard.getPlayerTeam("d_police") : scoreboard.addPlayerTeam("d_police")); - scorePlayerTeamMap.put(TabPrefix.MEDIC_UC, scoreboard.getPlayerTeam("e_medic_uc") != null ? scoreboard.getPlayerTeam("e_medic_uc") : scoreboard.addPlayerTeam("e_medic_uc")); - scorePlayerTeamMap.put(TabPrefix.MEDIC, scoreboard.getPlayerTeam("f_medic") != null ? scoreboard.getPlayerTeam("f_medic") : scoreboard.addPlayerTeam("f_medic")); - scorePlayerTeamMap.put(TabPrefix.NEWS_UC, scoreboard.getPlayerTeam("g_news_uc") != null ? scoreboard.getPlayerTeam("g_news_uc") : scoreboard.addPlayerTeam("g_news_uc")); - scorePlayerTeamMap.put(TabPrefix.NEWS, scoreboard.getPlayerTeam("h_news") != null ? scoreboard.getPlayerTeam("h_news") : scoreboard.addPlayerTeam("h_news")); - scorePlayerTeamMap.put(TabPrefix.UC_DUTY, scoreboard.getPlayerTeam("i_uc_duty") != null ? scoreboard.getPlayerTeam("i_uc_duty") : scoreboard.addPlayerTeam("i_uc_duty")); - scorePlayerTeamMap.put(TabPrefix.BUILDER, scoreboard.getPlayerTeam("j_builder") != null ? scoreboard.getPlayerTeam("j_builder") : scoreboard.addPlayerTeam("j_builder")); - scorePlayerTeamMap.put(TabPrefix.REPORT, scoreboard.getPlayerTeam("k_report") != null ? scoreboard.getPlayerTeam("k_report") : scoreboard.addPlayerTeam("k_report")); - scorePlayerTeamMap.put(TabPrefix.UC, scoreboard.getPlayerTeam("l_uc") != null ? scoreboard.getPlayerTeam("l_uc") : scoreboard.addPlayerTeam("l_uc")); - scorePlayerTeamMap.put(TabPrefix.NONE, scoreboard.getPlayerTeam("m_player") != null ? scoreboard.getPlayerTeam("m_player") : scoreboard.addPlayerTeam("m_player")); - return scorePlayerTeamMap; - } -} diff --git a/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedScreenshotController.java b/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedScreenshotController.java deleted file mode 100644 index 7db325a8..00000000 --- a/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedScreenshotController.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_2; - -import com.mojang.blaze3d.platform.NativeImage; -import com.rettichlp.unicacityaddon.controller.ScreenshotController; -import net.labymod.api.models.Implements; -import net.minecraft.Util; -import net.minecraft.client.Minecraft; -import net.minecraft.client.Screenshot; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.io.File; -import java.io.IOException; - -/** - * @author RettichLP - */ -@Singleton -@Implements(ScreenshotController.class) -public class VersionedScreenshotController extends ScreenshotController { - - @Inject - public VersionedScreenshotController() { - } - - @Override - public File createScreenshot(File file) { - if (file != null) { - Minecraft minecraft = Minecraft.getInstance(); - - NativeImage nativeImage = Screenshot.takeScreenshot(minecraft.getMainRenderTarget()); - Util.ioPool().execute(() -> { - try { - nativeImage.writeToFile(file); - } catch (IOException e) { - throw new RuntimeException(e); - } finally { - nativeImage.close(); - } - }); - } - return file; - } -} diff --git a/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedSoundController.java b/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedSoundController.java deleted file mode 100644 index a3db1ac8..00000000 --- a/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedSoundController.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_2; - -import com.rettichlp.unicacityaddon.controller.SoundController; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.sounds.SoundEvents; - -import javax.inject.Inject; -import javax.inject.Singleton; - -/** - * @author RettichLP - */ -@Singleton -@Implements(SoundController.class) -public class VersionedSoundController extends SoundController { - - @Inject - public VersionedSoundController() { - } - - @Override - public void playBankRobStartedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.9F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - }).start(); - } - - @Override - public void playBombPlantedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.0F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.8F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.4F)); - }).start(); - } - - @Override - public void playContractSetSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 0.5F)); - - } - - @Override - public void playContractFulfilledSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playMobileCallSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.MUSIC_DISC_CAT, 1.0F)); - } - - @Override - public void playMobileSMSSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.SHEEP_AMBIENT, 1.0F)); - } - - @Override - public void playReportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playServiceSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playTankWarningSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_HARP, 1.0F)); - } - - @Override - public void playTimerExpiredSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, 1.0F)); - } - - @Override - public void playTeamSpeakSupportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playTeamSpeakPublicitySound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.0F)); - } -} diff --git a/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedTransportController.java b/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedTransportController.java deleted file mode 100644 index 511bd9f0..00000000 --- a/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedTransportController.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_2; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.enums.location.Bus; -import com.rettichlp.unicacityaddon.commands.BusCommand; -import com.rettichlp.unicacityaddon.controller.TransportController; -import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.Items; - -import javax.inject.Singleton; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author RettichLP - */ -@Singleton -@Implements(TransportController.class) -public class VersionedTransportController extends TransportController { - - @Override - public void processBusRouting(UnicacityAddon unicacityAddon) { - AddonPlayer p = unicacityAddon.player(); - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof HopperScreen hopperScreen && BusCommand.active) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - if (hopperMenu.containerId != BusCommand.lastWindowId) { - BusCommand.lastWindowId = hopperMenu.containerId; - - Map busSlotMap = hopperMenu.slots.stream() - .filter(slot -> slot.getItem().getItem().equals(Items.OAK_SIGN)) - .filter(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")) != null) - .collect(Collectors.toMap(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")), slot -> slot)); - - Bus nearestBusToDestination = BusCommand.getNearestBusToDestination(busSlotMap.keySet()); - if (nearestBusToDestination == null) { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - return; - } - - Slot slot = busSlotMap.get(nearestBusToDestination); - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - if (nearestBusToDestination.equals(BusCommand.destination)) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.active = false; - } else if (BusCommand.limiter < 15) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.limiter++; - } else { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - } - } - } - } - - @Override - public void carInteract() { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - - if (containerScreen.getTitle().getString().contains("CarControl")) { - ChestMenu chestMenu = containerScreen.getMenu(); - int numberOfCars = (int) chestMenu.slots.stream() - .map(slot -> slot.getItem().getItem()) - .filter(item -> item.equals(Items.MINECART) || item.equals(Items.EMERALD) || item.equals(Items.REDSTONE)) - .count(); - - if (numberOfCars == 1) { - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(chestMenu.containerId, 0, 0, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - } - } - } - } -} \ No newline at end of file diff --git a/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedWorldInteractionController.java b/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedWorldInteractionController.java deleted file mode 100644 index b4b8e87f..00000000 --- a/game-runner/src/v1_19_2/java/com/rettichlp/unicacityaddon/v1_19_2/VersionedWorldInteractionController.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_2; - -import com.rettichlp.unicacityaddon.controller.WorldInteractionController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SignBlock; -import net.minecraft.world.level.block.WallBannerBlock; -import net.minecraft.world.level.block.entity.SignBlockEntity; -import net.minecraft.world.phys.HitResult; -import net.minecraft.world.phys.Vec3; - -import javax.inject.Singleton; -import java.util.Collection; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.StreamSupport; - -/** - * @author RettichLP - */ -@Singleton -@Implements(WorldInteractionController.class) -public class VersionedWorldInteractionController extends WorldInteractionController { - - @Override - public FloatVector3 getClickedBlockLocation() { - assert Minecraft.getInstance().cameraEntity != null; - HitResult hitResult = Minecraft.getInstance().cameraEntity.pick(20, 0, false); - Vec3 vec3 = hitResult.getLocation(); - - return new FloatVector3((float) vec3.x(), (float) vec3.y(), (float) vec3.z()); - } - - @Override - public boolean isHouseNumberSign(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos(location.getX(), location.getY(), location.getZ()); - - assert clientLevel != null; - if (clientLevel.getBlockState(blockPos).getBlock() instanceof SignBlock) { - SignBlockEntity signBlockEntity = (SignBlockEntity) clientLevel.getBlockEntity(blockPos); - - if (signBlockEntity != null) { - String text = signBlockEntity.getMessage(1, false).getString(); - return Pattern.compile("^== (\\d+) ==$").matcher(text).find(); - } - } - return false; - } - - @Override - public boolean isBanner(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos(location.getX(), location.getY(), location.getZ()); - - assert clientLevel != null; - return clientLevel.getBlockState(blockPos).getBlock() instanceof WallBannerBlock; - } - - @Override - public boolean isPlant(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - - assert clientLevel != null; - boolean isFern = clientLevel.getBlockState(new BlockPos(location.getX(), location.getY(), location.getZ())).getBlock().equals(Blocks.FERN); - boolean isPodzol = clientLevel.getBlockState(new BlockPos(location.getX(), location.getY() - 1, location.getZ())).getBlock().equals(Blocks.PODZOL); - - return isFern && isPodzol; - } - - @Override - public Collection getFireBlocksInBox(FloatVector3 one, FloatVector3 two) { - BlockPos oneBlockPos = new BlockPos(one.getX(), one.getY(), one.getZ()); - BlockPos twoBlockPos = new BlockPos(two.getX(), two.getY(), two.getZ()); - - return StreamSupport.stream(BlockPos.betweenClosed(oneBlockPos, twoBlockPos).spliterator(), false) - .filter(blockPos -> { - assert Minecraft.getInstance().level != null; - return Minecraft.getInstance().level.getBlockState(blockPos).getBlock().equals(Blocks.FIRE); - }) - .map(blockPos -> new FloatVector3(blockPos.getX(), blockPos.getY(), blockPos.getZ())) - .collect(Collectors.toList()); - } -} diff --git a/game-runner/src/v1_19_2/resources/assets/unicacityaddon/.assetsroot b/game-runner/src/v1_19_2/resources/assets/unicacityaddon/.assetsroot deleted file mode 100644 index e69de29b..00000000 diff --git a/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedDeadBodyController.java b/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedDeadBodyController.java deleted file mode 100644 index 21f1bd25..00000000 --- a/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedDeadBodyController.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_3; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.Faction; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.controller.DeadBodyController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextColor; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.Items; -import net.minecraft.world.phys.AABB; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.AbstractMap; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.UUID; - -/** - * @author RettichLP - */ -@Singleton -@Implements(DeadBodyController.class) -public class VersionedDeadBodyController extends DeadBodyController { - - /** - * When a corpse is rendered, the display name is automatically changed. The name can reflect the current wanted - * level. However, if this state changes while the corpse has already been rendered, the color will not change. In - * order to ensure this change anyway, the name must be available in every render process. In order not to waste - * performance by calculating the name in every render process, the name that was calculated when the corpse was - * first rendered is used. Likewise, the status of whether the corpse can be revived. - */ - private final Map> corpseMap = new HashMap<>(); - - @Inject - public VersionedDeadBodyController() { - } - - @Override - public void updateDisplayName(UnicacityAddon unicacityAddon) { - FloatVector3 location = unicacityAddon.player().getLocation(); - - assert location != null; - AABB aabb = new AABB( - location.getX() - 50, - location.getY() - 50, - location.getZ() - 50, - location.getX() + 50, - location.getY() + 50, - location.getZ() + 50 - ); - - assert Minecraft.getInstance().level != null; - Minecraft.getInstance().level.getEntitiesOfClass(ItemEntity.class, aabb, itemEntity -> itemEntity != null && itemEntity.hasCustomName() && itemEntity.getItem().getItem().equals(Items.SKELETON_SKULL)).forEach(itemEntity -> { - Component customName = itemEntity.getCustomName(); - - assert customName != null; - List siblings = customName.getSiblings(); - - // get player name and revivable status - String playerName; - boolean nonRevivable; - if (!siblings.isEmpty()) { // sibling size only by not formatted corpses greater than 0 - Component originalCorpseName = siblings.get(0); - playerName = originalCorpseName.getContents().toString().substring(1); - nonRevivable = Objects.equals(originalCorpseName.getStyle().getColor(), TextColor.fromLegacyFormat(ChatFormatting.DARK_GRAY)); - this.corpseMap.put(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>(playerName, nonRevivable)); - } else { - Map.Entry corpse = this.corpseMap.getOrDefault(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>("Unbekannt", false)); - playerName = corpse.getKey(); - nonRevivable = corpse.getValue(); - } - - // use player name and revivable status - String prefix = unicacityAddon.nameTagService().getPrefix(playerName, true); - String factionInfo = unicacityAddon.configuration().nametag().info().get() ? unicacityAddon.api().getPlayerFactionMap().getOrDefault(playerName, Faction.NULL).getNameTagSuffix() : ""; - - String ndn = Message.getBuilder() - .of("✟").color(nonRevivable ? ColorCode.DARK_GRAY : ColorCode.GRAY).advance() - .of((nonRevivable ? ColorCode.DARK_GRAY.getCode() : prefix) + playerName).advance().space() - .of(factionInfo).advance() - .create(); - - itemEntity.setCustomName(Component.nullToEmpty(ndn)); - }); - } -} diff --git a/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedGuiController.java b/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedGuiController.java deleted file mode 100644 index d8b06ae2..00000000 --- a/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedGuiController.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_3; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; -import com.rettichlp.unicacityaddon.controller.GuiController; -import com.rettichlp.unicacityaddon.listener.ScreenRenderListener; -import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; -import net.labymod.api.models.Implements; -import net.labymod.api.nbt.NBTTagType; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.core.NonNullList; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -import javax.inject.Singleton; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * @author RettichLP - */ -@Singleton -@Implements(GuiController.class) -public class VersionedGuiController extends GuiController { - - private int containerId = 0; - - @Override - public int getSlotNumberByDisplayName(String displayName) { - int slotNumber = -1; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - NonNullList itemStacks = chestMenu.getItems(); - Optional hoveredItemStackOptional = itemStacks.stream() - .filter(itemStack -> itemStack.getDisplayName().getString().contains(displayName)) - .findFirst(); - - if (hoveredItemStackOptional.isPresent()) { - slotNumber = itemStacks.indexOf(hoveredItemStackOptional.get()); - } - } - - return slotNumber; - } - - @Override - public @Nullable String getContainerLegacyName() { - return null; - } - - @Override - public int getContainerId() { - return 0; - } - - @Override - public void inventoryClick(int slotNumber) { - Screen screen = Minecraft.getInstance().screen; - - this.containerId = 0; - if (screen instanceof ContainerScreen containerScreen) { - this.containerId = containerScreen.getMenu().containerId; - } else if (screen instanceof HopperScreen hopperScreen) { - this.containerId = hopperScreen.getMenu().containerId; - } - - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(this.containerId, 0, slotNumber, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - } - - @Override - public void updateDrugInventoryMap(UnicacityAddon unicacityAddon) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - this.containerId = chestMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - if (unicacityAddon.utilService().command().isCocaineCheck()) { - unicacityAddon.utilService().command().setCocaineCheck(false); - // select cocaine to check drug purity - this.inventoryClick(0); - } else if (unicacityAddon.utilService().command().isMarihuanaCheck()) { - unicacityAddon.utilService().command().setMarihuanaCheck(false); - // select marihuana to check drug purity - this.inventoryClick(1); - } else if (unicacityAddon.utilService().command().isMethCheck()) { - unicacityAddon.utilService().command().setMethCheck(false); - // select meth to check drug purity - this.inventoryClick(2); - } else { - chestMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty() && !itemStack.getDisplayName().getString().contains("Pulver") && !itemStack.getDisplayName().getString().contains("Kräuter") && !itemStack.getDisplayName().getString().contains("Kristalle")) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - String lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()).getString(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().getString()); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(DrugPurity.BEST, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - }); - - unicacityAddon.utilService().command().setActiveDrugInventoryLoading(false); - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } else if (screen instanceof HopperScreen hopperScreen && unicacityAddon.utilService().command().isActiveDrugInventoryLoading()) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - - this.containerId = hopperMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - hopperMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty()) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - String drugPurityNbt = lore.getString(1); - String amountNbt = lore.getString(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().getString()); - DrugPurity drugPurity = DrugPurity.getDrugPurity(drugPurityNbt); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(drugPurity, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - }); - - // go back to inventory container - this.inventoryClick(4); - } - } - - @Override - public void setSelectedHotbarSlot(int slotNumber) { - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.getInventory().selected = slotNumber; - } - - @Override - public void updateSetting(boolean expectedValue) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen && !ScreenRenderListener.settingPath.isEmpty()) { - ChestMenu chestMenu = containerScreen.getMenu(); - - if (chestMenu.containerId != this.containerId) { - this.containerId = chestMenu.containerId; - - if (ScreenRenderListener.settingPath.size() > 1) { - this.inventoryClick(ScreenRenderListener.settingPath.remove(0)); - } else { - int slotNumber = ScreenRenderListener.settingPath.remove(0); - ItemStack itemStack = chestMenu.getItems().get(slotNumber); - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - if (lore.getString(1).equals("§cAktiviere den Hitsound") && expectedValue) { - this.inventoryClick(slotNumber); - } - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } - } - } - - @Override - public boolean containsItemContainingString(String name) { - NonNullList itemStackNonNullList = null; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - itemStackNonNullList = containerScreen.getMenu().getItems(); - } else if (screen instanceof HopperScreen hopperScreen) { - itemStackNonNullList = hopperScreen.getMenu().getItems(); - } - - return itemStackNonNullList != null && itemStackNonNullList.stream().anyMatch(itemStack -> itemStack.getDisplayName().getContents().toString().contains(name)); - } -} \ No newline at end of file diff --git a/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedPlayerListController.java b/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedPlayerListController.java deleted file mode 100644 index 9db3a48b..00000000 --- a/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedPlayerListController.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_3; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.tab.TabPrefix; -import com.rettichlp.unicacityaddon.controller.PlayerListController; -import net.labymod.api.Laby; -import net.labymod.api.client.network.ClientPacketListener; -import net.labymod.api.client.network.NetworkPlayerInfo; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.world.scores.PlayerTeam; -import net.minecraft.world.scores.Scoreboard; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * @author RettichLP - */ -@Singleton -@Implements(PlayerListController.class) -public class VersionedPlayerListController extends PlayerListController { - - @Inject - public VersionedPlayerListController() { - } - - @Override - public boolean isKeyPlayerListDown() { - return Minecraft.getInstance().options.keyPlayerList.isDown(); - } - - @Override - public void orderPlayerList(UnicacityAddon unicacityAddon) { - ClientPacketListener clientPacketListener = Laby.labyAPI().minecraft().getClientPacketListener(); - Collection networkPlayerInfos = clientPacketListener != null ? clientPacketListener.getNetworkPlayerInfos() : Collections.emptyList(); - assert Minecraft.getInstance().level != null; - Scoreboard scoreboard = Minecraft.getInstance().level.getScoreboard(); - - // get teams or create if not present - Map tabPrefixScorePlayerTeamMap = getScorePlayerTeamMap(scoreboard); - - // add default player team (m_player) - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.profile() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .map(networkPlayerInfo -> networkPlayerInfo.profile().getUsername()) - .forEach(s -> scoreboard.addPlayerToTeam(s, tabPrefixScorePlayerTeamMap.get(TabPrefix.NONE))); - - // add formatted player teams - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.displayName() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .forEach(networkPlayerInfo -> { - String displayName = unicacityAddon.utilService().text().legacy(networkPlayerInfo.displayName()); - TabPrefix tabPrefix = TabPrefix.getTypeByDisplayName(displayName); - PlayerTeam playerTeam = tabPrefixScorePlayerTeamMap.get(tabPrefix); - scoreboard.addPlayerToTeam(networkPlayerInfo.profile().getUsername(), playerTeam); - }); - } - - private Map getScorePlayerTeamMap(Scoreboard scoreboard) { - Map scorePlayerTeamMap = new HashMap<>(); - scorePlayerTeamMap.put(TabPrefix.FBI_UC, scoreboard.getPlayerTeam("a_fbi_uc") != null ? scoreboard.getPlayerTeam("a_fbi_uc") : scoreboard.addPlayerTeam("a_fbi_uc")); - scorePlayerTeamMap.put(TabPrefix.FBI, scoreboard.getPlayerTeam("b_fbi") != null ? scoreboard.getPlayerTeam("b_fbi") : scoreboard.addPlayerTeam("b_fbi")); - scorePlayerTeamMap.put(TabPrefix.POLICE_UC, scoreboard.getPlayerTeam("c_police_uc") != null ? scoreboard.getPlayerTeam("c_police_uc") : scoreboard.addPlayerTeam("c_police_uc")); - scorePlayerTeamMap.put(TabPrefix.POLICE, scoreboard.getPlayerTeam("d_police") != null ? scoreboard.getPlayerTeam("d_police") : scoreboard.addPlayerTeam("d_police")); - scorePlayerTeamMap.put(TabPrefix.MEDIC_UC, scoreboard.getPlayerTeam("e_medic_uc") != null ? scoreboard.getPlayerTeam("e_medic_uc") : scoreboard.addPlayerTeam("e_medic_uc")); - scorePlayerTeamMap.put(TabPrefix.MEDIC, scoreboard.getPlayerTeam("f_medic") != null ? scoreboard.getPlayerTeam("f_medic") : scoreboard.addPlayerTeam("f_medic")); - scorePlayerTeamMap.put(TabPrefix.NEWS_UC, scoreboard.getPlayerTeam("g_news_uc") != null ? scoreboard.getPlayerTeam("g_news_uc") : scoreboard.addPlayerTeam("g_news_uc")); - scorePlayerTeamMap.put(TabPrefix.NEWS, scoreboard.getPlayerTeam("h_news") != null ? scoreboard.getPlayerTeam("h_news") : scoreboard.addPlayerTeam("h_news")); - scorePlayerTeamMap.put(TabPrefix.UC_DUTY, scoreboard.getPlayerTeam("i_uc_duty") != null ? scoreboard.getPlayerTeam("i_uc_duty") : scoreboard.addPlayerTeam("i_uc_duty")); - scorePlayerTeamMap.put(TabPrefix.BUILDER, scoreboard.getPlayerTeam("j_builder") != null ? scoreboard.getPlayerTeam("j_builder") : scoreboard.addPlayerTeam("j_builder")); - scorePlayerTeamMap.put(TabPrefix.REPORT, scoreboard.getPlayerTeam("k_report") != null ? scoreboard.getPlayerTeam("k_report") : scoreboard.addPlayerTeam("k_report")); - scorePlayerTeamMap.put(TabPrefix.UC, scoreboard.getPlayerTeam("l_uc") != null ? scoreboard.getPlayerTeam("l_uc") : scoreboard.addPlayerTeam("l_uc")); - scorePlayerTeamMap.put(TabPrefix.NONE, scoreboard.getPlayerTeam("m_player") != null ? scoreboard.getPlayerTeam("m_player") : scoreboard.addPlayerTeam("m_player")); - return scorePlayerTeamMap; - } -} diff --git a/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedScreenshotController.java b/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedScreenshotController.java deleted file mode 100644 index c69e53f2..00000000 --- a/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedScreenshotController.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_3; - -import com.mojang.blaze3d.platform.NativeImage; -import com.rettichlp.unicacityaddon.controller.ScreenshotController; -import net.labymod.api.models.Implements; -import net.minecraft.Util; -import net.minecraft.client.Minecraft; -import net.minecraft.client.Screenshot; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.io.File; -import java.io.IOException; - -/** - * @author RettichLP - */ -@Singleton -@Implements(ScreenshotController.class) -public class VersionedScreenshotController extends ScreenshotController { - - @Inject - public VersionedScreenshotController() { - } - - @Override - public File createScreenshot(File file) { - if (file != null) { - Minecraft minecraft = Minecraft.getInstance(); - - NativeImage nativeImage = Screenshot.takeScreenshot(minecraft.getMainRenderTarget()); - Util.ioPool().execute(() -> { - try { - nativeImage.writeToFile(file); - } catch (IOException e) { - throw new RuntimeException(e); - } finally { - nativeImage.close(); - } - }); - } - return file; - } -} diff --git a/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedSoundController.java b/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedSoundController.java deleted file mode 100644 index a6f0eb2a..00000000 --- a/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedSoundController.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_3; - -import com.rettichlp.unicacityaddon.controller.SoundController; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.sounds.SoundEvents; - -import javax.inject.Inject; -import javax.inject.Singleton; - -/** - * @author RettichLP - */ -@Singleton -@Implements(SoundController.class) -public class VersionedSoundController extends SoundController { - - @Inject - public VersionedSoundController() { - } - - @Override - public void playBankRobStartedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.9F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - }).start(); - } - - @Override - public void playBombPlantedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.0F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.8F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.4F)); - }).start(); - } - - @Override - public void playContractSetSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 0.5F)); - - } - - @Override - public void playContractFulfilledSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playMobileCallSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.MUSIC_DISC_CAT, 1.0F)); - } - - @Override - public void playMobileSMSSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.SHEEP_AMBIENT, 1.0F)); - } - - @Override - public void playReportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playServiceSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playTankWarningSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_HARP, 1.0F)); - } - - @Override - public void playTimerExpiredSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, 1.0F)); - } - - @Override - public void playTeamSpeakSupportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playTeamSpeakPublicitySound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.0F)); - } -} diff --git a/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedTransportController.java b/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedTransportController.java deleted file mode 100644 index 20bfe24b..00000000 --- a/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedTransportController.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_3; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.enums.location.Bus; -import com.rettichlp.unicacityaddon.commands.BusCommand; -import com.rettichlp.unicacityaddon.controller.TransportController; -import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.Items; - -import javax.inject.Singleton; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author RettichLP - */ -@Singleton -@Implements(TransportController.class) -public class VersionedTransportController extends TransportController { - - @Override - public void processBusRouting(UnicacityAddon unicacityAddon) { - AddonPlayer p = unicacityAddon.player(); - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof HopperScreen hopperScreen && BusCommand.active) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - if (hopperMenu.containerId != BusCommand.lastWindowId) { - BusCommand.lastWindowId = hopperMenu.containerId; - - Map busSlotMap = hopperMenu.slots.stream() - .filter(slot -> slot.getItem().getItem().equals(Items.OAK_SIGN)) - .filter(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")) != null) - .collect(Collectors.toMap(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")), slot -> slot)); - - Bus nearestBusToDestination = BusCommand.getNearestBusToDestination(busSlotMap.keySet()); - if (nearestBusToDestination == null) { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - return; - } - - Slot slot = busSlotMap.get(nearestBusToDestination); - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - if (nearestBusToDestination.equals(BusCommand.destination)) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.active = false; - } else if (BusCommand.limiter < 15) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.limiter++; - } else { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - } - } - } - } - - @Override - public void carInteract() { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - - if (containerScreen.getTitle().getString().contains("CarControl")) { - ChestMenu chestMenu = containerScreen.getMenu(); - int numberOfCars = (int) chestMenu.slots.stream() - .map(slot -> slot.getItem().getItem()) - .filter(item -> item.equals(Items.MINECART) || item.equals(Items.EMERALD) || item.equals(Items.REDSTONE)) - .count(); - - if (numberOfCars == 1) { - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(chestMenu.containerId, 0, 0, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - } - } - } - } -} \ No newline at end of file diff --git a/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedWorldInteractionController.java b/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedWorldInteractionController.java deleted file mode 100644 index 0e04fa9c..00000000 --- a/game-runner/src/v1_19_3/java/com/rettichlp/unicacityaddon/v1_19_3/VersionedWorldInteractionController.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_3; - -import com.rettichlp.unicacityaddon.controller.WorldInteractionController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SignBlock; -import net.minecraft.world.level.block.WallBannerBlock; -import net.minecraft.world.level.block.entity.SignBlockEntity; -import net.minecraft.world.phys.HitResult; -import net.minecraft.world.phys.Vec3; - -import javax.inject.Singleton; -import java.util.Collection; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.StreamSupport; - -/** - * @author RettichLP - */ -@Singleton -@Implements(WorldInteractionController.class) -public class VersionedWorldInteractionController extends WorldInteractionController { - - @Override - public FloatVector3 getClickedBlockLocation() { - assert Minecraft.getInstance().cameraEntity != null; - HitResult hitResult = Minecraft.getInstance().cameraEntity.pick(20, 0, false); - Vec3 vec3 = hitResult.getLocation(); - - return new FloatVector3((float) vec3.x(), (float) vec3.y(), (float) vec3.z()); - } - - @Override - public boolean isHouseNumberSign(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos(location.getX(), location.getY(), location.getZ()); - - assert clientLevel != null; - if (clientLevel.getBlockState(blockPos).getBlock() instanceof SignBlock) { - SignBlockEntity signBlockEntity = (SignBlockEntity) clientLevel.getBlockEntity(blockPos); - - if (signBlockEntity != null) { - String text = signBlockEntity.getMessage(1, false).getString(); - return Pattern.compile("^== (\\d+) ==$").matcher(text).find(); - } - } - return false; - } - - @Override - public boolean isBanner(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos(location.getX(), location.getY(), location.getZ()); - - assert clientLevel != null; - return clientLevel.getBlockState(blockPos).getBlock() instanceof WallBannerBlock; - } - - @Override - public boolean isPlant(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - - assert clientLevel != null; - boolean isFern = clientLevel.getBlockState(new BlockPos(location.getX(), location.getY(), location.getZ())).getBlock().equals(Blocks.FERN); - boolean isPodzol = clientLevel.getBlockState(new BlockPos(location.getX(), location.getY() - 1, location.getZ())).getBlock().equals(Blocks.PODZOL); - - return isFern && isPodzol; - } - - @Override - public Collection getFireBlocksInBox(FloatVector3 one, FloatVector3 two) { - BlockPos oneBlockPos = new BlockPos(one.getX(), one.getY(), one.getZ()); - BlockPos twoBlockPos = new BlockPos(two.getX(), two.getY(), two.getZ()); - - return StreamSupport.stream(BlockPos.betweenClosed(oneBlockPos, twoBlockPos).spliterator(), false) - .filter(blockPos -> { - assert Minecraft.getInstance().level != null; - return Minecraft.getInstance().level.getBlockState(blockPos).getBlock().equals(Blocks.FIRE); - }) - .map(blockPos -> new FloatVector3(blockPos.getX(), blockPos.getY(), blockPos.getZ())) - .collect(Collectors.toList()); - } -} diff --git a/game-runner/src/v1_19_3/resources/assets/unicacityaddon/.assetsroot b/game-runner/src/v1_19_3/resources/assets/unicacityaddon/.assetsroot deleted file mode 100644 index e69de29b..00000000 diff --git a/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedDeadBodyController.java b/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedDeadBodyController.java deleted file mode 100644 index b7836955..00000000 --- a/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedDeadBodyController.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_4; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.Faction; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.controller.DeadBodyController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextColor; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.Items; -import net.minecraft.world.phys.AABB; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.AbstractMap; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.UUID; - -/** - * @author RettichLP - */ -@Singleton -@Implements(DeadBodyController.class) -public class VersionedDeadBodyController extends DeadBodyController { - - /** - * When a corpse is rendered, the display name is automatically changed. The name can reflect the current wanted - * level. However, if this state changes while the corpse has already been rendered, the color will not change. In - * order to ensure this change anyway, the name must be available in every render process. In order not to waste - * performance by calculating the name in every render process, the name that was calculated when the corpse was - * first rendered is used. Likewise, the status of whether the corpse can be revived. - */ - private final Map> corpseMap = new HashMap<>(); - - @Inject - public VersionedDeadBodyController() { - } - - @Override - public void updateDisplayName(UnicacityAddon unicacityAddon) { - FloatVector3 location = unicacityAddon.player().getLocation(); - - assert location != null; - AABB aabb = new AABB( - location.getX() - 50, - location.getY() - 50, - location.getZ() - 50, - location.getX() + 50, - location.getY() + 50, - location.getZ() + 50 - ); - - assert Minecraft.getInstance().level != null; - Minecraft.getInstance().level.getEntitiesOfClass(ItemEntity.class, aabb, itemEntity -> itemEntity != null && itemEntity.hasCustomName() && itemEntity.getItem().getItem().equals(Items.SKELETON_SKULL)).forEach(itemEntity -> { - Component customName = itemEntity.getCustomName(); - - assert customName != null; - List siblings = customName.getSiblings(); - - // get player name and revivable status - String playerName; - boolean nonRevivable; - if (!siblings.isEmpty()) { // sibling size only by not formatted corpses greater than 0 - Component originalCorpseName = siblings.get(0); - playerName = originalCorpseName.getContents().toString().substring(1); - nonRevivable = Objects.equals(originalCorpseName.getStyle().getColor(), TextColor.fromLegacyFormat(ChatFormatting.DARK_GRAY)); - this.corpseMap.put(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>(playerName, nonRevivable)); - } else { - Map.Entry corpse = this.corpseMap.getOrDefault(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>("Unbekannt", false)); - playerName = corpse.getKey(); - nonRevivable = corpse.getValue(); - } - - // use player name and revivable status - String prefix = unicacityAddon.nameTagService().getPrefix(playerName, true); - String factionInfo = unicacityAddon.configuration().nametag().info().get() ? unicacityAddon.api().getPlayerFactionMap().getOrDefault(playerName, Faction.NULL).getNameTagSuffix() : ""; - - String ndn = Message.getBuilder() - .of("✟").color(nonRevivable ? ColorCode.DARK_GRAY : ColorCode.GRAY).advance() - .of((nonRevivable ? ColorCode.DARK_GRAY.getCode() : prefix) + playerName).advance().space() - .of(factionInfo).advance() - .create(); - - itemEntity.setCustomName(Component.nullToEmpty(ndn)); - }); - } -} diff --git a/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedGuiController.java b/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedGuiController.java deleted file mode 100644 index 198bd36e..00000000 --- a/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedGuiController.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_4; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; -import com.rettichlp.unicacityaddon.controller.GuiController; -import com.rettichlp.unicacityaddon.listener.ScreenRenderListener; -import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; -import net.labymod.api.models.Implements; -import net.labymod.api.nbt.NBTTagType; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.core.NonNullList; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -import javax.inject.Singleton; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * @author RettichLP - */ -@Singleton -@Implements(GuiController.class) -public class VersionedGuiController extends GuiController { - - private int containerId = 0; - - @Override - public int getSlotNumberByDisplayName(String displayName) { - int slotNumber = -1; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - NonNullList itemStacks = chestMenu.getItems(); - Optional hoveredItemStackOptional = itemStacks.stream() - .filter(itemStack -> itemStack.getDisplayName().getString().contains(displayName)) - .findFirst(); - - if (hoveredItemStackOptional.isPresent()) { - slotNumber = itemStacks.indexOf(hoveredItemStackOptional.get()); - } - } - - return slotNumber; - } - - @Override - public @Nullable String getContainerLegacyName() { - return null; - } - - @Override - public int getContainerId() { - return 0; - } - - @Override - public void inventoryClick(int slotNumber) { - Screen screen = Minecraft.getInstance().screen; - - this.containerId = 0; - if (screen instanceof ContainerScreen containerScreen) { - this.containerId = containerScreen.getMenu().containerId; - } else if (screen instanceof HopperScreen hopperScreen) { - this.containerId = hopperScreen.getMenu().containerId; - } - - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(this.containerId, 0, slotNumber, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - } - - @Override - public void updateDrugInventoryMap(UnicacityAddon unicacityAddon) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - this.containerId = chestMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - if (unicacityAddon.utilService().command().isCocaineCheck()) { - unicacityAddon.utilService().command().setCocaineCheck(false); - // select cocaine to check drug purity - this.inventoryClick(0); - } else if (unicacityAddon.utilService().command().isMarihuanaCheck()) { - unicacityAddon.utilService().command().setMarihuanaCheck(false); - // select marihuana to check drug purity - this.inventoryClick(1); - } else if (unicacityAddon.utilService().command().isMethCheck()) { - unicacityAddon.utilService().command().setMethCheck(false); - // select meth to check drug purity - this.inventoryClick(2); - } else { - chestMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty() && !itemStack.getDisplayName().getString().contains("Pulver") && !itemStack.getDisplayName().getString().contains("Kräuter") && !itemStack.getDisplayName().getString().contains("Kristalle")) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - String lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()).getString(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().getString()); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(DrugPurity.BEST, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - }); - - unicacityAddon.utilService().command().setActiveDrugInventoryLoading(false); - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } else if (screen instanceof HopperScreen hopperScreen && unicacityAddon.utilService().command().isActiveDrugInventoryLoading()) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - - this.containerId = hopperMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - hopperMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty()) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - String drugPurityNbt = lore.getString(1); - String amountNbt = lore.getString(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().getString()); - DrugPurity drugPurity = DrugPurity.getDrugPurity(drugPurityNbt); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(drugPurity, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - }); - - // go back to inventory container - this.inventoryClick(4); - } - } - - @Override - public void setSelectedHotbarSlot(int slotNumber) { - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.getInventory().selected = slotNumber; - } - - @Override - public void updateSetting(boolean expectedValue) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen && !ScreenRenderListener.settingPath.isEmpty()) { - ChestMenu chestMenu = containerScreen.getMenu(); - - if (chestMenu.containerId != this.containerId) { - this.containerId = chestMenu.containerId; - - if (ScreenRenderListener.settingPath.size() > 1) { - this.inventoryClick(ScreenRenderListener.settingPath.remove(0)); - } else { - int slotNumber = ScreenRenderListener.settingPath.remove(0); - ItemStack itemStack = chestMenu.getItems().get(slotNumber); - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - if (lore.getString(1).equals("§cAktiviere den Hitsound") && expectedValue) { - this.inventoryClick(slotNumber); - } - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } - } - } - - @Override - public boolean containsItemContainingString(String name) { - NonNullList itemStackNonNullList = null; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - itemStackNonNullList = containerScreen.getMenu().getItems(); - } else if (screen instanceof HopperScreen hopperScreen) { - itemStackNonNullList = hopperScreen.getMenu().getItems(); - } - - return itemStackNonNullList != null && itemStackNonNullList.stream().anyMatch(itemStack -> itemStack.getDisplayName().getContents().toString().contains(name)); - } -} \ No newline at end of file diff --git a/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedPlayerListController.java b/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedPlayerListController.java deleted file mode 100644 index 95b64d6d..00000000 --- a/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedPlayerListController.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_4; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.tab.TabPrefix; -import com.rettichlp.unicacityaddon.controller.PlayerListController; -import net.labymod.api.Laby; -import net.labymod.api.client.network.ClientPacketListener; -import net.labymod.api.client.network.NetworkPlayerInfo; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.world.scores.PlayerTeam; -import net.minecraft.world.scores.Scoreboard; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * @author RettichLP - */ -@Singleton -@Implements(PlayerListController.class) -public class VersionedPlayerListController extends PlayerListController { - - @Inject - public VersionedPlayerListController() { - } - - @Override - public boolean isKeyPlayerListDown() { - return Minecraft.getInstance().options.keyPlayerList.isDown(); - } - - @Override - public void orderPlayerList(UnicacityAddon unicacityAddon) { - ClientPacketListener clientPacketListener = Laby.labyAPI().minecraft().getClientPacketListener(); - Collection networkPlayerInfos = clientPacketListener != null ? clientPacketListener.getNetworkPlayerInfos() : Collections.emptyList(); - assert Minecraft.getInstance().level != null; - Scoreboard scoreboard = Minecraft.getInstance().level.getScoreboard(); - - // get teams or create if not present - Map tabPrefixScorePlayerTeamMap = getScorePlayerTeamMap(scoreboard); - - // add default player team (m_player) - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.profile() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .map(networkPlayerInfo -> networkPlayerInfo.profile().getUsername()) - .forEach(s -> scoreboard.addPlayerToTeam(s, tabPrefixScorePlayerTeamMap.get(TabPrefix.NONE))); - - // add formatted player teams - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.displayName() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .forEach(networkPlayerInfo -> { - String displayName = unicacityAddon.utilService().text().legacy(networkPlayerInfo.displayName()); - TabPrefix tabPrefix = TabPrefix.getTypeByDisplayName(displayName); - PlayerTeam playerTeam = tabPrefixScorePlayerTeamMap.get(tabPrefix); - scoreboard.addPlayerToTeam(networkPlayerInfo.profile().getUsername(), playerTeam); - }); - } - - private Map getScorePlayerTeamMap(Scoreboard scoreboard) { - Map scorePlayerTeamMap = new HashMap<>(); - scorePlayerTeamMap.put(TabPrefix.FBI_UC, scoreboard.getPlayerTeam("a_fbi_uc") != null ? scoreboard.getPlayerTeam("a_fbi_uc") : scoreboard.addPlayerTeam("a_fbi_uc")); - scorePlayerTeamMap.put(TabPrefix.FBI, scoreboard.getPlayerTeam("b_fbi") != null ? scoreboard.getPlayerTeam("b_fbi") : scoreboard.addPlayerTeam("b_fbi")); - scorePlayerTeamMap.put(TabPrefix.POLICE_UC, scoreboard.getPlayerTeam("c_police_uc") != null ? scoreboard.getPlayerTeam("c_police_uc") : scoreboard.addPlayerTeam("c_police_uc")); - scorePlayerTeamMap.put(TabPrefix.POLICE, scoreboard.getPlayerTeam("d_police") != null ? scoreboard.getPlayerTeam("d_police") : scoreboard.addPlayerTeam("d_police")); - scorePlayerTeamMap.put(TabPrefix.MEDIC_UC, scoreboard.getPlayerTeam("e_medic_uc") != null ? scoreboard.getPlayerTeam("e_medic_uc") : scoreboard.addPlayerTeam("e_medic_uc")); - scorePlayerTeamMap.put(TabPrefix.MEDIC, scoreboard.getPlayerTeam("f_medic") != null ? scoreboard.getPlayerTeam("f_medic") : scoreboard.addPlayerTeam("f_medic")); - scorePlayerTeamMap.put(TabPrefix.NEWS_UC, scoreboard.getPlayerTeam("g_news_uc") != null ? scoreboard.getPlayerTeam("g_news_uc") : scoreboard.addPlayerTeam("g_news_uc")); - scorePlayerTeamMap.put(TabPrefix.NEWS, scoreboard.getPlayerTeam("h_news") != null ? scoreboard.getPlayerTeam("h_news") : scoreboard.addPlayerTeam("h_news")); - scorePlayerTeamMap.put(TabPrefix.UC_DUTY, scoreboard.getPlayerTeam("i_uc_duty") != null ? scoreboard.getPlayerTeam("i_uc_duty") : scoreboard.addPlayerTeam("i_uc_duty")); - scorePlayerTeamMap.put(TabPrefix.BUILDER, scoreboard.getPlayerTeam("j_builder") != null ? scoreboard.getPlayerTeam("j_builder") : scoreboard.addPlayerTeam("j_builder")); - scorePlayerTeamMap.put(TabPrefix.REPORT, scoreboard.getPlayerTeam("k_report") != null ? scoreboard.getPlayerTeam("k_report") : scoreboard.addPlayerTeam("k_report")); - scorePlayerTeamMap.put(TabPrefix.UC, scoreboard.getPlayerTeam("l_uc") != null ? scoreboard.getPlayerTeam("l_uc") : scoreboard.addPlayerTeam("l_uc")); - scorePlayerTeamMap.put(TabPrefix.NONE, scoreboard.getPlayerTeam("m_player") != null ? scoreboard.getPlayerTeam("m_player") : scoreboard.addPlayerTeam("m_player")); - return scorePlayerTeamMap; - } -} diff --git a/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedScreenshotController.java b/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedScreenshotController.java deleted file mode 100644 index b9b96961..00000000 --- a/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedScreenshotController.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_4; - -import com.mojang.blaze3d.platform.NativeImage; -import com.rettichlp.unicacityaddon.controller.ScreenshotController; -import net.labymod.api.models.Implements; -import net.minecraft.Util; -import net.minecraft.client.Minecraft; -import net.minecraft.client.Screenshot; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.io.File; -import java.io.IOException; - -/** - * @author RettichLP - */ -@Singleton -@Implements(ScreenshotController.class) -public class VersionedScreenshotController extends ScreenshotController { - - @Inject - public VersionedScreenshotController() { - } - - @Override - public File createScreenshot(File file) { - if (file != null) { - Minecraft minecraft = Minecraft.getInstance(); - - NativeImage nativeImage = Screenshot.takeScreenshot(minecraft.getMainRenderTarget()); - Util.ioPool().execute(() -> { - try { - nativeImage.writeToFile(file); - } catch (IOException e) { - throw new RuntimeException(e); - } finally { - nativeImage.close(); - } - }); - } - return file; - } -} diff --git a/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedSoundController.java b/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedSoundController.java deleted file mode 100644 index ee9325d7..00000000 --- a/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedSoundController.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_4; - -import com.rettichlp.unicacityaddon.controller.SoundController; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.sounds.SoundEvents; - -import javax.inject.Inject; -import javax.inject.Singleton; - -/** - * @author RettichLP - */ -@Singleton -@Implements(SoundController.class) -public class VersionedSoundController extends SoundController { - - @Inject - public VersionedSoundController() { - } - - @Override - public void playBankRobStartedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.9F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - }).start(); - } - - @Override - public void playBombPlantedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.0F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.8F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.4F)); - }).start(); - } - - @Override - public void playContractSetSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 0.5F)); - - } - - @Override - public void playContractFulfilledSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playMobileCallSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.MUSIC_DISC_CAT, 1.0F)); - } - - @Override - public void playMobileSMSSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.SHEEP_AMBIENT, 1.0F)); - } - - @Override - public void playReportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playServiceSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playTankWarningSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_HARP, 1.0F)); - } - - @Override - public void playTimerExpiredSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, 1.0F)); - } - - @Override - public void playTeamSpeakSupportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playTeamSpeakPublicitySound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.0F)); - } -} diff --git a/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedTransportController.java b/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedTransportController.java deleted file mode 100644 index f3f0c305..00000000 --- a/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedTransportController.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_4; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.enums.location.Bus; -import com.rettichlp.unicacityaddon.commands.BusCommand; -import com.rettichlp.unicacityaddon.controller.TransportController; -import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.Items; - -import javax.inject.Singleton; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author RettichLP - */ -@Singleton -@Implements(TransportController.class) -public class VersionedTransportController extends TransportController { - - @Override - public void processBusRouting(UnicacityAddon unicacityAddon) { - AddonPlayer p = unicacityAddon.player(); - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof HopperScreen hopperScreen && BusCommand.active) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - if (hopperMenu.containerId != BusCommand.lastWindowId) { - BusCommand.lastWindowId = hopperMenu.containerId; - - Map busSlotMap = hopperMenu.slots.stream() - .filter(slot -> slot.getItem().getItem().equals(Items.OAK_SIGN)) - .filter(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")) != null) - .collect(Collectors.toMap(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")), slot -> slot)); - - Bus nearestBusToDestination = BusCommand.getNearestBusToDestination(busSlotMap.keySet()); - if (nearestBusToDestination == null) { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - return; - } - - Slot slot = busSlotMap.get(nearestBusToDestination); - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - if (nearestBusToDestination.equals(BusCommand.destination)) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.active = false; - } else if (BusCommand.limiter < 15) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.limiter++; - } else { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - } - } - } - } - - @Override - public void carInteract() { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - - if (containerScreen.getTitle().getString().contains("CarControl")) { - ChestMenu chestMenu = containerScreen.getMenu(); - int numberOfCars = (int) chestMenu.slots.stream() - .map(slot -> slot.getItem().getItem()) - .filter(item -> item.equals(Items.MINECART) || item.equals(Items.EMERALD) || item.equals(Items.REDSTONE)) - .count(); - - if (numberOfCars == 1) { - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(chestMenu.containerId, 0, 0, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - } - } - } - } -} \ No newline at end of file diff --git a/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedWorldInteractionController.java b/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedWorldInteractionController.java deleted file mode 100644 index 19219590..00000000 --- a/game-runner/src/v1_19_4/java/com/rettichlp/unicacityaddon/v1_19_4/VersionedWorldInteractionController.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_19_4; - -import com.rettichlp.unicacityaddon.controller.WorldInteractionController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SignBlock; -import net.minecraft.world.level.block.WallBannerBlock; -import net.minecraft.world.level.block.entity.SignBlockEntity; -import net.minecraft.world.phys.HitResult; -import net.minecraft.world.phys.Vec3; - -import javax.inject.Singleton; -import java.util.Collection; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.StreamSupport; - -/** - * @author RettichLP - */ -@Singleton -@Implements(WorldInteractionController.class) -public class VersionedWorldInteractionController extends WorldInteractionController { - - @Override - public FloatVector3 getClickedBlockLocation() { - assert Minecraft.getInstance().cameraEntity != null; - HitResult hitResult = Minecraft.getInstance().cameraEntity.pick(20, 0, false); - Vec3 vec3 = hitResult.getLocation(); - - return new FloatVector3((float) vec3.x(), (float) vec3.y(), (float) vec3.z()); - } - - @Override - public boolean isHouseNumberSign(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos((int) location.getX(), (int) location.getY(), (int) location.getZ()); - - assert clientLevel != null; - if (clientLevel.getBlockState(blockPos).getBlock() instanceof SignBlock) { - SignBlockEntity signBlockEntity = (SignBlockEntity) clientLevel.getBlockEntity(blockPos); - - if (signBlockEntity != null) { - String text = signBlockEntity.getMessage(1, false).getString(); - return Pattern.compile("^== (\\d+) ==$").matcher(text).find(); - } - } - return false; - } - - @Override - public boolean isBanner(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos((int) location.getX(), (int) location.getY(), (int) location.getZ()); - - assert clientLevel != null; - return clientLevel.getBlockState(blockPos).getBlock() instanceof WallBannerBlock; - } - - @Override - public boolean isPlant(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - - assert clientLevel != null; - boolean isFern = clientLevel.getBlockState(new BlockPos((int) location.getX(), (int) location.getY(), (int) location.getZ())).getBlock().equals(Blocks.FERN); - boolean isPodzol = clientLevel.getBlockState(new BlockPos((int) location.getX(), ((int) location.getY()) - 1, (int) location.getZ())).getBlock().equals(Blocks.PODZOL); - - return isFern && isPodzol; - } - - @Override - public Collection getFireBlocksInBox(FloatVector3 one, FloatVector3 two) { - BlockPos oneBlockPos = new BlockPos((int) one.getX(), (int) one.getY(), (int) one.getZ()); - BlockPos twoBlockPos = new BlockPos((int) two.getX(), (int) two.getY(), (int) two.getZ()); - - return StreamSupport.stream(BlockPos.betweenClosed(oneBlockPos, twoBlockPos).spliterator(), false) - .filter(blockPos -> { - assert Minecraft.getInstance().level != null; - return Minecraft.getInstance().level.getBlockState(blockPos).getBlock().equals(Blocks.FIRE); - }) - .map(blockPos -> new FloatVector3(blockPos.getX(), blockPos.getY(), blockPos.getZ())) - .collect(Collectors.toList()); - } -} diff --git a/game-runner/src/v1_19_4/resources/assets/unicacityaddon/.assetsroot b/game-runner/src/v1_19_4/resources/assets/unicacityaddon/.assetsroot deleted file mode 100644 index e69de29b..00000000 diff --git a/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedDeadBodyController.java b/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedDeadBodyController.java deleted file mode 100644 index 28411645..00000000 --- a/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedDeadBodyController.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_20_1; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.Faction; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.controller.DeadBodyController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextColor; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.Items; -import net.minecraft.world.phys.AABB; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.AbstractMap; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.UUID; - -/** - * @author RettichLP - */ -@Singleton -@Implements(DeadBodyController.class) -public class VersionedDeadBodyController extends DeadBodyController { - - /** - * When a corpse is rendered, the display name is automatically changed. The name can reflect the current wanted - * level. However, if this state changes while the corpse has already been rendered, the color will not change. In - * order to ensure this change anyway, the name must be available in every render process. In order not to waste - * performance by calculating the name in every render process, the name that was calculated when the corpse was - * first rendered is used. Likewise, the status of whether the corpse can be revived. - */ - private final Map> corpseMap = new HashMap<>(); - - @Inject - public VersionedDeadBodyController() { - } - - @Override - public void updateDisplayName(UnicacityAddon unicacityAddon) { - FloatVector3 location = unicacityAddon.player().getLocation(); - - assert location != null; - AABB aabb = new AABB( - location.getX() - 50, - location.getY() - 50, - location.getZ() - 50, - location.getX() + 50, - location.getY() + 50, - location.getZ() + 50 - ); - - assert Minecraft.getInstance().level != null; - Minecraft.getInstance().level.getEntitiesOfClass(ItemEntity.class, aabb, itemEntity -> itemEntity != null && itemEntity.hasCustomName() && itemEntity.getItem().getItem().equals(Items.SKELETON_SKULL)).forEach(itemEntity -> { - Component customName = itemEntity.getCustomName(); - - assert customName != null; - List siblings = customName.getSiblings(); - - // get player name and revivable status - String playerName; - boolean nonRevivable; - if (!siblings.isEmpty()) { // sibling size only by not formatted corpses greater than 0 - Component originalCorpseName = siblings.get(0); - playerName = originalCorpseName.getContents().toString().substring(1); - nonRevivable = Objects.equals(originalCorpseName.getStyle().getColor(), TextColor.fromLegacyFormat(ChatFormatting.DARK_GRAY)); - this.corpseMap.put(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>(playerName, nonRevivable)); - } else { - Map.Entry corpse = this.corpseMap.getOrDefault(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>("Unbekannt", false)); - playerName = corpse.getKey(); - nonRevivable = corpse.getValue(); - } - - // use player name and revivable status - String prefix = unicacityAddon.nameTagService().getPrefix(playerName, true); - String factionInfo = unicacityAddon.configuration().nametag().info().get() ? unicacityAddon.api().getPlayerFactionMap().getOrDefault(playerName, Faction.NULL).getNameTagSuffix() : ""; - - String ndn = Message.getBuilder() - .of("✟").color(nonRevivable ? ColorCode.DARK_GRAY : ColorCode.GRAY).advance() - .of((nonRevivable ? ColorCode.DARK_GRAY.getCode() : prefix) + playerName).advance().space() - .of(factionInfo).advance() - .create(); - - itemEntity.setCustomName(Component.nullToEmpty(ndn)); - }); - } -} diff --git a/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedGuiController.java b/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedGuiController.java deleted file mode 100644 index e12d3414..00000000 --- a/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedGuiController.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_20_1; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; -import com.rettichlp.unicacityaddon.controller.GuiController; -import com.rettichlp.unicacityaddon.listener.ScreenRenderListener; -import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; -import net.labymod.api.models.Implements; -import net.labymod.api.nbt.NBTTagType; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.core.NonNullList; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -import javax.inject.Singleton; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * @author RettichLP - */ -@Singleton -@Implements(GuiController.class) -public class VersionedGuiController extends GuiController { - - private int containerId = 0; - - @Override - public int getSlotNumberByDisplayName(String displayName) { - int slotNumber = -1; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - NonNullList itemStacks = chestMenu.getItems(); - Optional hoveredItemStackOptional = itemStacks.stream() - .filter(itemStack -> itemStack.getDisplayName().getString().contains(displayName)) - .findFirst(); - - if (hoveredItemStackOptional.isPresent()) { - slotNumber = itemStacks.indexOf(hoveredItemStackOptional.get()); - } - } - - return slotNumber; - } - - @Override - public @Nullable String getContainerLegacyName() { - return null; - } - - @Override - public int getContainerId() { - return 0; - } - - @Override - public void inventoryClick(int slotNumber) { - Screen screen = Minecraft.getInstance().screen; - - this.containerId = 0; - if (screen instanceof ContainerScreen containerScreen) { - this.containerId = containerScreen.getMenu().containerId; - } else if (screen instanceof HopperScreen hopperScreen) { - this.containerId = hopperScreen.getMenu().containerId; - } - - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(this.containerId, 0, slotNumber, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - } - - @Override - public void updateDrugInventoryMap(UnicacityAddon unicacityAddon) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - this.containerId = chestMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - if (unicacityAddon.utilService().command().isCocaineCheck()) { - unicacityAddon.utilService().command().setCocaineCheck(false); - // select cocaine to check drug purity - this.inventoryClick(0); - } else if (unicacityAddon.utilService().command().isMarihuanaCheck()) { - unicacityAddon.utilService().command().setMarihuanaCheck(false); - // select marihuana to check drug purity - this.inventoryClick(1); - } else if (unicacityAddon.utilService().command().isMethCheck()) { - unicacityAddon.utilService().command().setMethCheck(false); - // select meth to check drug purity - this.inventoryClick(2); - } else { - chestMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty() && !itemStack.getDisplayName().getString().contains("Pulver") && !itemStack.getDisplayName().getString().contains("Kräuter") && !itemStack.getDisplayName().getString().contains("Kristalle")) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - String lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()).getString(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().getString()); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(DrugPurity.BEST, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - }); - - unicacityAddon.utilService().command().setActiveDrugInventoryLoading(false); - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } else if (screen instanceof HopperScreen hopperScreen && unicacityAddon.utilService().command().isActiveDrugInventoryLoading()) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - - this.containerId = hopperMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - hopperMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty()) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - String drugPurityNbt = lore.getString(1); - String amountNbt = lore.getString(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().getString()); - DrugPurity drugPurity = DrugPurity.getDrugPurity(drugPurityNbt); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(drugPurity, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - }); - - // go back to inventory container - this.inventoryClick(4); - } - } - - @Override - public void setSelectedHotbarSlot(int slotNumber) { - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.getInventory().selected = slotNumber; - } - - @Override - public void updateSetting(boolean expectedValue) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen && !ScreenRenderListener.settingPath.isEmpty()) { - ChestMenu chestMenu = containerScreen.getMenu(); - - if (chestMenu.containerId != this.containerId) { - this.containerId = chestMenu.containerId; - - if (ScreenRenderListener.settingPath.size() > 1) { - this.inventoryClick(ScreenRenderListener.settingPath.remove(0)); - } else { - int slotNumber = ScreenRenderListener.settingPath.remove(0); - ItemStack itemStack = chestMenu.getItems().get(slotNumber); - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - if (lore.getString(1).equals("§cAktiviere den Hitsound") && expectedValue) { - this.inventoryClick(slotNumber); - } - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } - } - } - - @Override - public boolean containsItemContainingString(String name) { - NonNullList itemStackNonNullList = null; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - itemStackNonNullList = containerScreen.getMenu().getItems(); - } else if (screen instanceof HopperScreen hopperScreen) { - itemStackNonNullList = hopperScreen.getMenu().getItems(); - } - - return itemStackNonNullList != null && itemStackNonNullList.stream().anyMatch(itemStack -> itemStack.getDisplayName().getContents().toString().contains(name)); - } -} \ No newline at end of file diff --git a/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedPlayerListController.java b/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedPlayerListController.java deleted file mode 100644 index 5bfeb25b..00000000 --- a/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedPlayerListController.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_20_1; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.tab.TabPrefix; -import com.rettichlp.unicacityaddon.controller.PlayerListController; -import net.labymod.api.Laby; -import net.labymod.api.client.network.ClientPacketListener; -import net.labymod.api.client.network.NetworkPlayerInfo; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.world.scores.PlayerTeam; -import net.minecraft.world.scores.Scoreboard; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * @author RettichLP - */ -@Singleton -@Implements(PlayerListController.class) -public class VersionedPlayerListController extends PlayerListController { - - @Inject - public VersionedPlayerListController() { - } - - @Override - public boolean isKeyPlayerListDown() { - return Minecraft.getInstance().options.keyPlayerList.isDown(); - } - - @Override - public void orderPlayerList(UnicacityAddon unicacityAddon) { - ClientPacketListener clientPacketListener = Laby.labyAPI().minecraft().getClientPacketListener(); - Collection networkPlayerInfos = clientPacketListener != null ? clientPacketListener.getNetworkPlayerInfos() : Collections.emptyList(); - assert Minecraft.getInstance().level != null; - Scoreboard scoreboard = Minecraft.getInstance().level.getScoreboard(); - - // get teams or create if not present - Map tabPrefixScorePlayerTeamMap = getScorePlayerTeamMap(scoreboard); - - // add default player team (m_player) - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.profile() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .map(networkPlayerInfo -> networkPlayerInfo.profile().getUsername()) - .forEach(s -> scoreboard.addPlayerToTeam(s, tabPrefixScorePlayerTeamMap.get(TabPrefix.NONE))); - - // add formatted player teams - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.displayName() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .forEach(networkPlayerInfo -> { - String displayName = unicacityAddon.utilService().text().legacy(networkPlayerInfo.displayName()); - TabPrefix tabPrefix = TabPrefix.getTypeByDisplayName(displayName); - PlayerTeam playerTeam = tabPrefixScorePlayerTeamMap.get(tabPrefix); - scoreboard.addPlayerToTeam(networkPlayerInfo.profile().getUsername(), playerTeam); - }); - } - - private Map getScorePlayerTeamMap(Scoreboard scoreboard) { - Map scorePlayerTeamMap = new HashMap<>(); - scorePlayerTeamMap.put(TabPrefix.FBI_UC, scoreboard.getPlayerTeam("a_fbi_uc") != null ? scoreboard.getPlayerTeam("a_fbi_uc") : scoreboard.addPlayerTeam("a_fbi_uc")); - scorePlayerTeamMap.put(TabPrefix.FBI, scoreboard.getPlayerTeam("b_fbi") != null ? scoreboard.getPlayerTeam("b_fbi") : scoreboard.addPlayerTeam("b_fbi")); - scorePlayerTeamMap.put(TabPrefix.POLICE_UC, scoreboard.getPlayerTeam("c_police_uc") != null ? scoreboard.getPlayerTeam("c_police_uc") : scoreboard.addPlayerTeam("c_police_uc")); - scorePlayerTeamMap.put(TabPrefix.POLICE, scoreboard.getPlayerTeam("d_police") != null ? scoreboard.getPlayerTeam("d_police") : scoreboard.addPlayerTeam("d_police")); - scorePlayerTeamMap.put(TabPrefix.MEDIC_UC, scoreboard.getPlayerTeam("e_medic_uc") != null ? scoreboard.getPlayerTeam("e_medic_uc") : scoreboard.addPlayerTeam("e_medic_uc")); - scorePlayerTeamMap.put(TabPrefix.MEDIC, scoreboard.getPlayerTeam("f_medic") != null ? scoreboard.getPlayerTeam("f_medic") : scoreboard.addPlayerTeam("f_medic")); - scorePlayerTeamMap.put(TabPrefix.NEWS_UC, scoreboard.getPlayerTeam("g_news_uc") != null ? scoreboard.getPlayerTeam("g_news_uc") : scoreboard.addPlayerTeam("g_news_uc")); - scorePlayerTeamMap.put(TabPrefix.NEWS, scoreboard.getPlayerTeam("h_news") != null ? scoreboard.getPlayerTeam("h_news") : scoreboard.addPlayerTeam("h_news")); - scorePlayerTeamMap.put(TabPrefix.UC_DUTY, scoreboard.getPlayerTeam("i_uc_duty") != null ? scoreboard.getPlayerTeam("i_uc_duty") : scoreboard.addPlayerTeam("i_uc_duty")); - scorePlayerTeamMap.put(TabPrefix.BUILDER, scoreboard.getPlayerTeam("j_builder") != null ? scoreboard.getPlayerTeam("j_builder") : scoreboard.addPlayerTeam("j_builder")); - scorePlayerTeamMap.put(TabPrefix.REPORT, scoreboard.getPlayerTeam("k_report") != null ? scoreboard.getPlayerTeam("k_report") : scoreboard.addPlayerTeam("k_report")); - scorePlayerTeamMap.put(TabPrefix.UC, scoreboard.getPlayerTeam("l_uc") != null ? scoreboard.getPlayerTeam("l_uc") : scoreboard.addPlayerTeam("l_uc")); - scorePlayerTeamMap.put(TabPrefix.NONE, scoreboard.getPlayerTeam("m_player") != null ? scoreboard.getPlayerTeam("m_player") : scoreboard.addPlayerTeam("m_player")); - return scorePlayerTeamMap; - } -} diff --git a/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedScreenshotController.java b/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedScreenshotController.java deleted file mode 100644 index 1d427a95..00000000 --- a/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedScreenshotController.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_20_1; - -import com.mojang.blaze3d.platform.NativeImage; -import com.rettichlp.unicacityaddon.controller.ScreenshotController; -import net.labymod.api.models.Implements; -import net.minecraft.Util; -import net.minecraft.client.Minecraft; -import net.minecraft.client.Screenshot; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.io.File; -import java.io.IOException; - -/** - * @author RettichLP - */ -@Singleton -@Implements(ScreenshotController.class) -public class VersionedScreenshotController extends ScreenshotController { - - @Inject - public VersionedScreenshotController() { - } - - @Override - public File createScreenshot(File file) { - if (file != null) { - Minecraft minecraft = Minecraft.getInstance(); - - NativeImage nativeImage = Screenshot.takeScreenshot(minecraft.getMainRenderTarget()); - Util.ioPool().execute(() -> { - try { - nativeImage.writeToFile(file); - } catch (IOException e) { - throw new RuntimeException(e); - } finally { - nativeImage.close(); - } - }); - } - return file; - } -} diff --git a/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedSoundController.java b/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedSoundController.java deleted file mode 100644 index 152f63b0..00000000 --- a/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedSoundController.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_20_1; - -import com.rettichlp.unicacityaddon.controller.SoundController; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.sounds.SoundEvents; - -import javax.inject.Inject; -import javax.inject.Singleton; - -/** - * @author RettichLP - */ -@Singleton -@Implements(SoundController.class) -public class VersionedSoundController extends SoundController { - - @Inject - public VersionedSoundController() { - } - - @Override - public void playBankRobStartedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.9F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - }).start(); - } - - @Override - public void playBombPlantedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.0F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.8F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.4F)); - }).start(); - } - - @Override - public void playContractSetSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 0.5F)); - - } - - @Override - public void playContractFulfilledSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playMobileCallSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.MUSIC_DISC_CAT, 1.0F)); - } - - @Override - public void playMobileSMSSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.SHEEP_AMBIENT, 1.0F)); - } - - @Override - public void playReportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playServiceSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playTankWarningSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_HARP, 1.0F)); - } - - @Override - public void playTimerExpiredSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, 1.0F)); - } - - @Override - public void playTeamSpeakSupportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playTeamSpeakPublicitySound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.0F)); - } -} diff --git a/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedTransportController.java b/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedTransportController.java deleted file mode 100644 index 9abd6c58..00000000 --- a/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedTransportController.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_20_1; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.enums.location.Bus; -import com.rettichlp.unicacityaddon.commands.BusCommand; -import com.rettichlp.unicacityaddon.controller.TransportController; -import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.Items; - -import javax.inject.Singleton; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author RettichLP - */ -@Singleton -@Implements(TransportController.class) -public class VersionedTransportController extends TransportController { - - @Override - public void processBusRouting(UnicacityAddon unicacityAddon) { - AddonPlayer p = unicacityAddon.player(); - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof HopperScreen hopperScreen && BusCommand.active) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - if (hopperMenu.containerId != BusCommand.lastWindowId) { - BusCommand.lastWindowId = hopperMenu.containerId; - - Map busSlotMap = hopperMenu.slots.stream() - .filter(slot -> slot.getItem().getItem().equals(Items.OAK_SIGN)) - .filter(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")) != null) - .collect(Collectors.toMap(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")), slot -> slot)); - - Bus nearestBusToDestination = BusCommand.getNearestBusToDestination(busSlotMap.keySet()); - if (nearestBusToDestination == null) { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - return; - } - - Slot slot = busSlotMap.get(nearestBusToDestination); - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - if (nearestBusToDestination.equals(BusCommand.destination)) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.active = false; - } else if (BusCommand.limiter < 15) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.limiter++; - } else { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - } - } - } - } - - @Override - public void carInteract() { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - - if (containerScreen.getTitle().getString().contains("CarControl")) { - ChestMenu chestMenu = containerScreen.getMenu(); - int numberOfCars = (int) chestMenu.slots.stream() - .map(slot -> slot.getItem().getItem()) - .filter(item -> item.equals(Items.MINECART) || item.equals(Items.EMERALD) || item.equals(Items.REDSTONE)) - .count(); - - if (numberOfCars == 1) { - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(chestMenu.containerId, 0, 0, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - } - } - } - } -} \ No newline at end of file diff --git a/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedWorldInteractionController.java b/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedWorldInteractionController.java deleted file mode 100644 index 44cecb2b..00000000 --- a/game-runner/src/v1_20_1/java/com/rettichlp/unicacityaddon/v1_20_1/VersionedWorldInteractionController.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_20_1; - -import com.rettichlp.unicacityaddon.controller.WorldInteractionController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SignBlock; -import net.minecraft.world.level.block.WallBannerBlock; -import net.minecraft.world.level.block.entity.SignBlockEntity; -import net.minecraft.world.phys.HitResult; -import net.minecraft.world.phys.Vec3; - -import javax.inject.Singleton; -import java.util.Collection; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.StreamSupport; - -/** - * @author RettichLP - */ -@Singleton -@Implements(WorldInteractionController.class) -public class VersionedWorldInteractionController extends WorldInteractionController { - - @Override - public FloatVector3 getClickedBlockLocation() { - assert Minecraft.getInstance().cameraEntity != null; - HitResult hitResult = Minecraft.getInstance().cameraEntity.pick(20, 0, false); - Vec3 vec3 = hitResult.getLocation(); - - return new FloatVector3((float) vec3.x(), (float) vec3.y(), (float) vec3.z()); - } - - @Override - public boolean isHouseNumberSign(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos((int) location.getX(), (int) location.getY(), (int) location.getZ()); - - assert clientLevel != null; - if (clientLevel.getBlockState(blockPos).getBlock() instanceof SignBlock) { - SignBlockEntity signBlockEntity = (SignBlockEntity) clientLevel.getBlockEntity(blockPos); - - if (signBlockEntity != null) { - String text = signBlockEntity.getFrontText().getMessage(1, false).getString(); - return Pattern.compile("^== (\\d+) ==$").matcher(text).find(); - } - } - return false; - } - - @Override - public boolean isBanner(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos((int) location.getX(), (int) location.getY(), (int) location.getZ()); - - assert clientLevel != null; - return clientLevel.getBlockState(blockPos).getBlock() instanceof WallBannerBlock; - } - - @Override - public boolean isPlant(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - - assert clientLevel != null; - boolean isFern = clientLevel.getBlockState(new BlockPos((int) location.getX(), (int) location.getY(), (int) location.getZ())).getBlock().equals(Blocks.FERN); - boolean isPodzol = clientLevel.getBlockState(new BlockPos((int) location.getX(), ((int) location.getY()) - 1, (int) location.getZ())).getBlock().equals(Blocks.PODZOL); - - return isFern && isPodzol; - } - - @Override - public Collection getFireBlocksInBox(FloatVector3 one, FloatVector3 two) { - BlockPos oneBlockPos = new BlockPos((int) one.getX(), (int) one.getY(), (int) one.getZ()); - BlockPos twoBlockPos = new BlockPos((int) two.getX(), (int) two.getY(), (int) two.getZ()); - - return StreamSupport.stream(BlockPos.betweenClosed(oneBlockPos, twoBlockPos).spliterator(), false) - .filter(blockPos -> { - assert Minecraft.getInstance().level != null; - return Minecraft.getInstance().level.getBlockState(blockPos).getBlock().equals(Blocks.FIRE); - }) - .map(blockPos -> new FloatVector3(blockPos.getX(), blockPos.getY(), blockPos.getZ())) - .collect(Collectors.toList()); - } -} diff --git a/game-runner/src/v1_20_1/resources/assets/unicacityaddon/.assetsroot b/game-runner/src/v1_20_1/resources/assets/unicacityaddon/.assetsroot deleted file mode 100644 index e69de29b..00000000 diff --git a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedDeadBodyController.java b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedDeadBodyController.java deleted file mode 100644 index 46e57232..00000000 --- a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedDeadBodyController.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_20_2; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.Faction; -import com.rettichlp.unicacityaddon.base.text.ColorCode; -import com.rettichlp.unicacityaddon.base.text.Message; -import com.rettichlp.unicacityaddon.controller.DeadBodyController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextColor; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.Items; -import net.minecraft.world.phys.AABB; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.AbstractMap; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.UUID; - -/** - * @author RettichLP - */ -@Singleton -@Implements(DeadBodyController.class) -public class VersionedDeadBodyController extends DeadBodyController { - - /** - * When a corpse is rendered, the display name is automatically changed. The name can reflect the current wanted - * level. However, if this state changes while the corpse has already been rendered, the color will not change. In - * order to ensure this change anyway, the name must be available in every render process. In order not to waste - * performance by calculating the name in every render process, the name that was calculated when the corpse was - * first rendered is used. Likewise, the status of whether the corpse can be revived. - */ - private final Map> corpseMap = new HashMap<>(); - - @Inject - public VersionedDeadBodyController() { - } - - @Override - public void updateDisplayName(UnicacityAddon unicacityAddon) { - FloatVector3 location = unicacityAddon.player().getLocation(); - - assert location != null; - AABB aabb = new AABB( - location.getX() - 50, - location.getY() - 50, - location.getZ() - 50, - location.getX() + 50, - location.getY() + 50, - location.getZ() + 50 - ); - - assert Minecraft.getInstance().level != null; - Minecraft.getInstance().level.getEntitiesOfClass(ItemEntity.class, aabb, itemEntity -> itemEntity != null && itemEntity.hasCustomName() && itemEntity.getItem().getItem().equals(Items.SKELETON_SKULL)).forEach(itemEntity -> { - Component customName = itemEntity.getCustomName(); - - assert customName != null; - List siblings = customName.getSiblings(); - - // get player name and revivable status - String playerName; - boolean nonRevivable; - if (!siblings.isEmpty()) { // sibling size only by not formatted corpses greater than 0 - Component originalCorpseName = siblings.get(0); - playerName = originalCorpseName.getContents().toString().substring(1); - nonRevivable = Objects.equals(originalCorpseName.getStyle().getColor(), TextColor.fromLegacyFormat(ChatFormatting.DARK_GRAY)); - this.corpseMap.put(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>(playerName, nonRevivable)); - } else { - Map.Entry corpse = this.corpseMap.getOrDefault(itemEntity.getUUID(), new AbstractMap.SimpleEntry<>("Unbekannt", false)); - playerName = corpse.getKey(); - nonRevivable = corpse.getValue(); - } - - // use player name and revivable status - String prefix = unicacityAddon.nameTagService().getPrefix(playerName, true); - String factionInfo = unicacityAddon.configuration().nametag().info().get() ? unicacityAddon.api().getPlayerFactionMap().getOrDefault(playerName, Faction.NULL).getNameTagSuffix() : ""; - - String ndn = Message.getBuilder() - .of("✟").color(nonRevivable ? ColorCode.DARK_GRAY : ColorCode.GRAY).advance() - .of((nonRevivable ? ColorCode.DARK_GRAY.getCode() : prefix) + playerName).advance().space() - .of(factionInfo).advance() - .create(); - - itemEntity.setCustomName(Component.nullToEmpty(ndn)); - }); - } -} diff --git a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedGuiController.java b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedGuiController.java deleted file mode 100644 index 17b5795e..00000000 --- a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedGuiController.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_20_2; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugPurity; -import com.rettichlp.unicacityaddon.base.enums.faction.DrugType; -import com.rettichlp.unicacityaddon.controller.GuiController; -import com.rettichlp.unicacityaddon.listener.ScreenRenderListener; -import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; -import net.labymod.api.models.Implements; -import net.labymod.api.nbt.NBTTagType; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.core.NonNullList; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -import javax.inject.Singleton; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * @author RettichLP - */ -@Singleton -@Implements(GuiController.class) -public class VersionedGuiController extends GuiController { - - private int containerId = 0; - - @Override - public int getSlotNumberByDisplayName(String displayName) { - int slotNumber = -1; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - NonNullList itemStacks = chestMenu.getItems(); - Optional hoveredItemStackOptional = itemStacks.stream() - .filter(itemStack -> itemStack.getDisplayName().getString().contains(displayName)) - .findFirst(); - - if (hoveredItemStackOptional.isPresent()) { - slotNumber = itemStacks.indexOf(hoveredItemStackOptional.get()); - } - } - - return slotNumber; - } - - @Override - public @Nullable String getContainerLegacyName() { - return null; - } - - @Override - public int getContainerId() { - return 0; - } - - @Override - public void inventoryClick(int slotNumber) { - Screen screen = Minecraft.getInstance().screen; - - this.containerId = 0; - if (screen instanceof ContainerScreen containerScreen) { - this.containerId = containerScreen.getMenu().containerId; - } else if (screen instanceof HopperScreen hopperScreen) { - this.containerId = hopperScreen.getMenu().containerId; - } - - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(this.containerId, 0, slotNumber, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - } - - @Override - public void updateDrugInventoryMap(UnicacityAddon unicacityAddon) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - ChestMenu chestMenu = containerScreen.getMenu(); - - this.containerId = chestMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - if (unicacityAddon.utilService().command().isCocaineCheck()) { - unicacityAddon.utilService().command().setCocaineCheck(false); - // select cocaine to check drug purity - this.inventoryClick(0); - } else if (unicacityAddon.utilService().command().isMarihuanaCheck()) { - unicacityAddon.utilService().command().setMarihuanaCheck(false); - // select marihuana to check drug purity - this.inventoryClick(1); - } else if (unicacityAddon.utilService().command().isMethCheck()) { - unicacityAddon.utilService().command().setMethCheck(false); - // select meth to check drug purity - this.inventoryClick(2); - } else { - chestMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty() && !itemStack.getDisplayName().getString().contains("Pulver") && !itemStack.getDisplayName().getString().contains("Kräuter") && !itemStack.getDisplayName().getString().contains("Kristalle")) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - String lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()).getString(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().getString()); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(DrugPurity.BEST, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - }); - - unicacityAddon.utilService().command().setActiveDrugInventoryLoading(false); - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } else if (screen instanceof HopperScreen hopperScreen && unicacityAddon.utilService().command().isActiveDrugInventoryLoading()) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - - this.containerId = hopperMenu.containerId; - if (unicacityAddon.utilService().command().getLastWindowId() == this.containerId) - return; - - unicacityAddon.utilService().command().setLastWindowId(this.containerId); - - hopperMenu.getItems().stream() - .filter(itemStack -> !itemStack.isEmpty()) - .forEach(itemStack -> { - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - String drugPurityNbt = lore.getString(1); - String amountNbt = lore.getString(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().getString()); - DrugPurity drugPurity = DrugPurity.getDrugPurity(drugPurityNbt); - - if (drugType != null) { - Map> drugInventoryMap = unicacityAddon.fileService().data().getDrugInventoryMap(); - Map drugPurityMap = drugInventoryMap.getOrDefault(drugType, new HashMap<>()); - drugPurityMap.put(drugPurity, amount); - drugInventoryMap.put(drugType, drugPurityMap); - unicacityAddon.fileService().data().setDrugInventoryMap(drugInventoryMap); - } - } - }); - - // go back to inventory container - this.inventoryClick(4); - } - } - - @Override - public void setSelectedHotbarSlot(int slotNumber) { - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.getInventory().selected = slotNumber; - } - - @Override - public void updateSetting(boolean expectedValue) { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen && !ScreenRenderListener.settingPath.isEmpty()) { - ChestMenu chestMenu = containerScreen.getMenu(); - - if (chestMenu.containerId != this.containerId) { - this.containerId = chestMenu.containerId; - - if (ScreenRenderListener.settingPath.size() > 1) { - this.inventoryClick(ScreenRenderListener.settingPath.remove(0)); - } else { - int slotNumber = ScreenRenderListener.settingPath.remove(0); - ItemStack itemStack = chestMenu.getItems().get(slotNumber); - assert itemStack.getTag() != null; - CompoundTag compoundTag = itemStack.getTag().getCompound("display"); - ListTag lore = compoundTag.getList("Lore", NBTTagType.STRING.getId()); - if (lore.getString(1).equals("§cAktiviere den Hitsound") && expectedValue) { - this.inventoryClick(slotNumber); - } - assert Minecraft.getInstance().player != null; - Minecraft.getInstance().player.closeContainer(); - } - } - } - } - - @Override - public boolean containsItemContainingString(String name) { - NonNullList itemStackNonNullList = null; - - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - itemStackNonNullList = containerScreen.getMenu().getItems(); - } else if (screen instanceof HopperScreen hopperScreen) { - itemStackNonNullList = hopperScreen.getMenu().getItems(); - } - - return itemStackNonNullList != null && itemStackNonNullList.stream().anyMatch(itemStack -> itemStack.getDisplayName().getContents().toString().contains(name)); - } -} \ No newline at end of file diff --git a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedPlayerListController.java b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedPlayerListController.java deleted file mode 100644 index 74fdeda4..00000000 --- a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedPlayerListController.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_20_2; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.tab.TabPrefix; -import com.rettichlp.unicacityaddon.controller.PlayerListController; -import net.labymod.api.Laby; -import net.labymod.api.client.network.ClientPacketListener; -import net.labymod.api.client.network.NetworkPlayerInfo; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.world.scores.PlayerTeam; -import net.minecraft.world.scores.Scoreboard; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * @author RettichLP - */ -@Singleton -@Implements(PlayerListController.class) -public class VersionedPlayerListController extends PlayerListController { - - @Inject - public VersionedPlayerListController() { - } - - @Override - public boolean isKeyPlayerListDown() { - return Minecraft.getInstance().options.keyPlayerList.isDown(); - } - - @Override - public void orderPlayerList(UnicacityAddon unicacityAddon) { - ClientPacketListener clientPacketListener = Laby.labyAPI().minecraft().getClientPacketListener(); - Collection networkPlayerInfos = clientPacketListener != null ? clientPacketListener.getNetworkPlayerInfos() : Collections.emptyList(); - assert Minecraft.getInstance().level != null; - Scoreboard scoreboard = Minecraft.getInstance().level.getScoreboard(); - - // get teams or create if not present - Map tabPrefixScorePlayerTeamMap = getScorePlayerTeamMap(scoreboard); - - // add default player team (m_player) - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.profile() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .map(networkPlayerInfo -> networkPlayerInfo.profile().getUsername()) - .forEach(s -> scoreboard.addPlayerToTeam(s, tabPrefixScorePlayerTeamMap.get(TabPrefix.NONE))); - - // add formatted player teams - networkPlayerInfos.stream() - .filter(networkPlayerInfo -> networkPlayerInfo.displayName() != null) - .filter(networkPlayerInfo -> networkPlayerInfo.getTeam() == null || (!networkPlayerInfo.getTeam().getTeamName().equals("nopush") && !networkPlayerInfo.getTeam().getTeamName().equals("masked"))) - .forEach(networkPlayerInfo -> { - String displayName = unicacityAddon.utilService().text().legacy(networkPlayerInfo.displayName()); - TabPrefix tabPrefix = TabPrefix.getTypeByDisplayName(displayName); - PlayerTeam playerTeam = tabPrefixScorePlayerTeamMap.get(tabPrefix); - scoreboard.addPlayerToTeam(networkPlayerInfo.profile().getUsername(), playerTeam); - }); - } - - private Map getScorePlayerTeamMap(Scoreboard scoreboard) { - Map scorePlayerTeamMap = new HashMap<>(); - scorePlayerTeamMap.put(TabPrefix.FBI_UC, scoreboard.getPlayerTeam("a_fbi_uc") != null ? scoreboard.getPlayerTeam("a_fbi_uc") : scoreboard.addPlayerTeam("a_fbi_uc")); - scorePlayerTeamMap.put(TabPrefix.FBI, scoreboard.getPlayerTeam("b_fbi") != null ? scoreboard.getPlayerTeam("b_fbi") : scoreboard.addPlayerTeam("b_fbi")); - scorePlayerTeamMap.put(TabPrefix.POLICE_UC, scoreboard.getPlayerTeam("c_police_uc") != null ? scoreboard.getPlayerTeam("c_police_uc") : scoreboard.addPlayerTeam("c_police_uc")); - scorePlayerTeamMap.put(TabPrefix.POLICE, scoreboard.getPlayerTeam("d_police") != null ? scoreboard.getPlayerTeam("d_police") : scoreboard.addPlayerTeam("d_police")); - scorePlayerTeamMap.put(TabPrefix.MEDIC_UC, scoreboard.getPlayerTeam("e_medic_uc") != null ? scoreboard.getPlayerTeam("e_medic_uc") : scoreboard.addPlayerTeam("e_medic_uc")); - scorePlayerTeamMap.put(TabPrefix.MEDIC, scoreboard.getPlayerTeam("f_medic") != null ? scoreboard.getPlayerTeam("f_medic") : scoreboard.addPlayerTeam("f_medic")); - scorePlayerTeamMap.put(TabPrefix.NEWS_UC, scoreboard.getPlayerTeam("g_news_uc") != null ? scoreboard.getPlayerTeam("g_news_uc") : scoreboard.addPlayerTeam("g_news_uc")); - scorePlayerTeamMap.put(TabPrefix.NEWS, scoreboard.getPlayerTeam("h_news") != null ? scoreboard.getPlayerTeam("h_news") : scoreboard.addPlayerTeam("h_news")); - scorePlayerTeamMap.put(TabPrefix.UC_DUTY, scoreboard.getPlayerTeam("i_uc_duty") != null ? scoreboard.getPlayerTeam("i_uc_duty") : scoreboard.addPlayerTeam("i_uc_duty")); - scorePlayerTeamMap.put(TabPrefix.BUILDER, scoreboard.getPlayerTeam("j_builder") != null ? scoreboard.getPlayerTeam("j_builder") : scoreboard.addPlayerTeam("j_builder")); - scorePlayerTeamMap.put(TabPrefix.REPORT, scoreboard.getPlayerTeam("k_report") != null ? scoreboard.getPlayerTeam("k_report") : scoreboard.addPlayerTeam("k_report")); - scorePlayerTeamMap.put(TabPrefix.UC, scoreboard.getPlayerTeam("l_uc") != null ? scoreboard.getPlayerTeam("l_uc") : scoreboard.addPlayerTeam("l_uc")); - scorePlayerTeamMap.put(TabPrefix.NONE, scoreboard.getPlayerTeam("m_player") != null ? scoreboard.getPlayerTeam("m_player") : scoreboard.addPlayerTeam("m_player")); - return scorePlayerTeamMap; - } -} diff --git a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedScreenshotController.java b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedScreenshotController.java deleted file mode 100644 index 875b5a4d..00000000 --- a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedScreenshotController.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_20_2; - -import com.mojang.blaze3d.platform.NativeImage; -import com.rettichlp.unicacityaddon.controller.ScreenshotController; -import net.labymod.api.models.Implements; -import net.minecraft.Util; -import net.minecraft.client.Minecraft; -import net.minecraft.client.Screenshot; - -import javax.inject.Inject; -import javax.inject.Singleton; -import java.io.File; -import java.io.IOException; - -/** - * @author RettichLP - */ -@Singleton -@Implements(ScreenshotController.class) -public class VersionedScreenshotController extends ScreenshotController { - - @Inject - public VersionedScreenshotController() { - } - - @Override - public File createScreenshot(File file) { - if (file != null) { - Minecraft minecraft = Minecraft.getInstance(); - - NativeImage nativeImage = Screenshot.takeScreenshot(minecraft.getMainRenderTarget()); - Util.ioPool().execute(() -> { - try { - nativeImage.writeToFile(file); - } catch (IOException e) { - throw new RuntimeException(e); - } finally { - nativeImage.close(); - } - }); - } - return file; - } -} diff --git a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedSoundController.java b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedSoundController.java deleted file mode 100644 index 1402169a..00000000 --- a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedSoundController.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_20_2; - -import com.rettichlp.unicacityaddon.controller.SoundController; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.sounds.SoundEvents; - -import javax.inject.Inject; -import javax.inject.Singleton; - -/** - * @author RettichLP - */ -@Singleton -@Implements(SoundController.class) -public class VersionedSoundController extends SoundController { - - @Inject - public VersionedSoundController() { - } - - @Override - public void playBankRobStartedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.9F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.6F)); - }).start(); - } - - @Override - public void playBombPlantedSound() { - new Thread(() -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.0F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 0.8F)); - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_BIT, 1.4F)); - }).start(); - } - - @Override - public void playContractSetSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 0.5F)); - - } - - @Override - public void playContractFulfilledSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playMobileCallSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.MUSIC_DISC_CAT, 1.0F)); - } - - @Override - public void playMobileSMSSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.SHEEP_AMBIENT, 1.0F)); - } - - @Override - public void playReportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playServiceSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_CHIME, 1.0F)); - } - - @Override - public void playTankWarningSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_HARP, 1.0F)); - } - - @Override - public void playTimerExpiredSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, 1.0F)); - } - - @Override - public void playTeamSpeakSupportSound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.5F)); - } - - @Override - public void playTeamSpeakPublicitySound() { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.NOTE_BLOCK_PLING, 1.0F)); - } -} diff --git a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedTransportController.java b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedTransportController.java deleted file mode 100644 index b8e1ab17..00000000 --- a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedTransportController.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_20_2; - -import com.rettichlp.unicacityaddon.UnicacityAddon; -import com.rettichlp.unicacityaddon.base.AddonPlayer; -import com.rettichlp.unicacityaddon.base.enums.location.Bus; -import com.rettichlp.unicacityaddon.commands.BusCommand; -import com.rettichlp.unicacityaddon.controller.TransportController; -import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; -import net.labymod.api.models.Implements; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.ContainerScreen; -import net.minecraft.client.gui.screens.inventory.HopperScreen; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.network.protocol.game.ServerboundContainerClickPacket; -import net.minecraft.world.inventory.ChestMenu; -import net.minecraft.world.inventory.ClickType; -import net.minecraft.world.inventory.HopperMenu; -import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.Items; - -import javax.inject.Singleton; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author RettichLP - */ -@Singleton -@Implements(TransportController.class) -public class VersionedTransportController extends TransportController { - - @Override - public void processBusRouting(UnicacityAddon unicacityAddon) { - AddonPlayer p = unicacityAddon.player(); - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof HopperScreen hopperScreen && BusCommand.active) { - HopperMenu hopperMenu = hopperScreen.getMenu(); - if (hopperMenu.containerId != BusCommand.lastWindowId) { - BusCommand.lastWindowId = hopperMenu.containerId; - - Map busSlotMap = hopperMenu.slots.stream() - .filter(slot -> slot.getItem().getItem().equals(Items.OAK_SIGN)) - .filter(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")) != null) - .collect(Collectors.toMap(slot -> Bus.getBus(slot.getItem().getDisplayName().getString().replace("[", "").replace("]", "")), slot -> slot)); - - Bus nearestBusToDestination = BusCommand.getNearestBusToDestination(busSlotMap.keySet()); - if (nearestBusToDestination == null) { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - return; - } - - Slot slot = busSlotMap.get(nearestBusToDestination); - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - if (nearestBusToDestination.equals(BusCommand.destination)) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.active = false; - } else if (BusCommand.limiter < 15) { - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(hopperMenu.containerId, 0, slot.index, 1, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - BusCommand.limiter++; - } else { - p.sendErrorMessage("Es konnte keine Route gefunden werden."); - BusCommand.active = false; - } - } - } - } - - @Override - public void carInteract() { - Screen screen = Minecraft.getInstance().screen; - if (screen instanceof ContainerScreen containerScreen) { - - if (containerScreen.getTitle().getString().contains("CarControl")) { - ChestMenu chestMenu = containerScreen.getMenu(); - int numberOfCars = (int) chestMenu.slots.stream() - .map(slot -> slot.getItem().getItem()) - .filter(item -> item.equals(Items.MINECART) || item.equals(Items.EMERALD) || item.equals(Items.REDSTONE)) - .count(); - - if (numberOfCars == 1) { - LocalPlayer localPlayer = Minecraft.getInstance().player; - assert localPlayer != null; - - ServerboundContainerClickPacket serverboundContainerClickPacket = new ServerboundContainerClickPacket(chestMenu.containerId, 0, 0, 0, ClickType.PICKUP, localPlayer.containerMenu.getCarried(), Int2ObjectMaps.emptyMap()); - localPlayer.connection.send(serverboundContainerClickPacket); - } - } - } - } -} \ No newline at end of file diff --git a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedWorldInteractionController.java b/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedWorldInteractionController.java deleted file mode 100644 index 5bb1720d..00000000 --- a/game-runner/src/v1_20_2/java/com/rettichlp/unicacityaddon/v1_20_2/VersionedWorldInteractionController.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.rettichlp.unicacityaddon.v1_20_2; - -import com.rettichlp.unicacityaddon.controller.WorldInteractionController; -import net.labymod.api.models.Implements; -import net.labymod.api.util.math.vector.FloatVector3; -import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SignBlock; -import net.minecraft.world.level.block.WallBannerBlock; -import net.minecraft.world.level.block.entity.SignBlockEntity; -import net.minecraft.world.phys.HitResult; -import net.minecraft.world.phys.Vec3; - -import javax.inject.Singleton; -import java.util.Collection; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.StreamSupport; - -/** - * @author RettichLP - */ -@Singleton -@Implements(WorldInteractionController.class) -public class VersionedWorldInteractionController extends WorldInteractionController { - - @Override - public FloatVector3 getClickedBlockLocation() { - assert Minecraft.getInstance().cameraEntity != null; - HitResult hitResult = Minecraft.getInstance().cameraEntity.pick(20, 0, false); - Vec3 vec3 = hitResult.getLocation(); - - return new FloatVector3((float) vec3.x(), (float) vec3.y(), (float) vec3.z()); - } - - @Override - public boolean isHouseNumberSign(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos((int) location.getX(), (int) location.getY(), (int) location.getZ()); - - assert clientLevel != null; - if (clientLevel.getBlockState(blockPos).getBlock() instanceof SignBlock) { - SignBlockEntity signBlockEntity = (SignBlockEntity) clientLevel.getBlockEntity(blockPos); - - if (signBlockEntity != null) { - String text = signBlockEntity.getFrontText().getMessage(1, false).getString(); - return Pattern.compile("^== (\\d+) ==$").matcher(text).find(); - } - } - return false; - } - - @Override - public boolean isBanner(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - BlockPos blockPos = new BlockPos((int) location.getX(), (int) location.getY(), (int) location.getZ()); - - assert clientLevel != null; - return clientLevel.getBlockState(blockPos).getBlock() instanceof WallBannerBlock; - } - - @Override - public boolean isPlant(FloatVector3 location) { - ClientLevel clientLevel = Minecraft.getInstance().level; - - assert clientLevel != null; - boolean isFern = clientLevel.getBlockState(new BlockPos((int) location.getX(), (int) location.getY(), (int) location.getZ())).getBlock().equals(Blocks.FERN); - boolean isPodzol = clientLevel.getBlockState(new BlockPos((int) location.getX(), ((int) location.getY()) - 1, (int) location.getZ())).getBlock().equals(Blocks.PODZOL); - - return isFern && isPodzol; - } - - @Override - public Collection getFireBlocksInBox(FloatVector3 one, FloatVector3 two) { - BlockPos oneBlockPos = new BlockPos((int) one.getX(), (int) one.getY(), (int) one.getZ()); - BlockPos twoBlockPos = new BlockPos((int) two.getX(), (int) two.getY(), (int) two.getZ()); - - return StreamSupport.stream(BlockPos.betweenClosed(oneBlockPos, twoBlockPos).spliterator(), false) - .filter(blockPos -> { - assert Minecraft.getInstance().level != null; - return Minecraft.getInstance().level.getBlockState(blockPos).getBlock().equals(Blocks.FIRE); - }) - .map(blockPos -> new FloatVector3(blockPos.getX(), blockPos.getY(), blockPos.getZ())) - .collect(Collectors.toList()); - } -} diff --git a/game-runner/src/v1_20_2/resources/assets/unicacityaddon/.assetsroot b/game-runner/src/v1_20_2/resources/assets/unicacityaddon/.assetsroot deleted file mode 100644 index e69de29b..00000000 diff --git a/game-runner/src/v1_8_9/resources/assets/unicacityaddon/.assetsroot b/game-runner/src/v1_8_9/resources/assets/unicacityaddon/.assetsroot deleted file mode 100644 index e69de29b..00000000 From 944f90986399cb3440ec0c91fc2da7d8e2c55c7e Mon Sep 17 00:00:00 2001 From: rettichlp Date: Fri, 29 Dec 2023 20:02:45 +0100 Subject: [PATCH 12/12] Update version to 2.5.0 --- build.gradle.kts | 4 ++-- .../rettichlp/unicacityaddon/base/services/UtilService.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index fd34f879..ee4db4f5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } group = "com.rettichlp.unicacityaddon" -version = "2.5.0-dev" +version = "2.5.0" java.toolchain.languageVersion.set(JavaLanguageVersion.of(17)) @@ -17,7 +17,7 @@ labyMod { author = "RettichLP & Dimiikou" description = "UnicacityAddon is a LabyMod addon written for the Minecraft server Unicacity and provides specialized, nice-to-have features and utilities for everyday gameplay." minecraftVersion = "1.12.2" - version = System.getenv().getOrDefault("VERSION", "2.5.0-dev") + version = System.getenv().getOrDefault("VERSION", "2.5.0") } minecraft { diff --git a/core/src/main/java/com/rettichlp/unicacityaddon/base/services/UtilService.java b/core/src/main/java/com/rettichlp/unicacityaddon/base/services/UtilService.java index 32c8e810..81835d80 100644 --- a/core/src/main/java/com/rettichlp/unicacityaddon/base/services/UtilService.java +++ b/core/src/main/java/com/rettichlp/unicacityaddon/base/services/UtilService.java @@ -53,7 +53,7 @@ public UtilService(UnicacityAddon unicacityAddon) { @SuppressWarnings("SameReturnValue") public String version() { - return "2.5.0-dev"; + return "2.5.0"; } public boolean isUnicacity() {