From bd3f0329d0e391bd84b5f9e3ff207d9dd9815853 Mon Sep 17 00:00:00 2001 From: Yasin Date: Mon, 9 Oct 2023 12:58:02 +0200 Subject: new pr because fixing merge conflict would take too long --- .../java/de/hysky/skyblocker/SkyblockerMod.java | 130 ++++ .../skyblocker/compatibility/MixinPlugin.java | 52 ++ .../compatibility/emi/SkyblockEmiRecipe.java | 38 + .../compatibility/emi/SkyblockerEMIPlugin.java | 29 + .../compatibility/modmenu/ModMenuEntry.java | 15 + .../compatibility/rei/SkyblockCategory.java | 84 +++ .../compatibility/rei/SkyblockCraftingDisplay.java | 40 ++ .../rei/SkyblockCraftingDisplayGenerator.java | 65 ++ .../rei/SkyblockerREIClientPlugin.java | 34 + .../de/hysky/skyblocker/config/ConfigUtils.java | 25 + .../hysky/skyblocker/config/SkyblockerConfig.java | 787 +++++++++++++++++++++ .../skyblocker/config/SkyblockerConfigManager.java | 86 +++ .../config/categories/DiscordRPCCategory.java | 49 ++ .../config/categories/DungeonsCategory.java | 316 +++++++++ .../config/categories/DwarvenMinesCategory.java | 94 +++ .../config/categories/GeneralCategory.java | 508 +++++++++++++ .../config/categories/LocationsCategory.java | 80 +++ .../config/categories/MessageFilterCategory.java | 98 +++ .../config/categories/QuickNavigationCategory.java | 605 ++++++++++++++++ .../config/categories/SlayersCategory.java | 116 +++ .../config/controllers/EnumDropdownController.java | 93 +++ .../controllers/EnumDropdownControllerBuilder.java | 27 + .../EnumDropdownControllerBuilderImpl.java | 27 + .../controllers/EnumDropdownControllerElement.java | 26 + .../events/ClientPlayerBlockBreakEvent.java | 23 + .../de/hysky/skyblocker/events/SkyblockEvents.java | 33 + .../mixin/AbstractInventoryScreenMixin.java | 19 + .../de/hysky/skyblocker/mixin/ArmorTrimMixin.java | 37 + .../de/hysky/skyblocker/mixin/BatEntityMixin.java | 21 + .../mixin/ClientPlayNetworkHandlerMixin.java | 48 ++ .../skyblocker/mixin/ClientPlayerEntityMixin.java | 35 + .../mixin/ClientPlayerInteractionManagerMixin.java | 27 + .../hysky/skyblocker/mixin/DrawContextMixin.java | 72 ++ .../hysky/skyblocker/mixin/DyeableItemMixin.java | 27 + .../hysky/skyblocker/mixin/FarmlandBlockMixin.java | 38 + .../mixin/GenericContainerScreenHandlerMixin.java | 30 + .../hysky/skyblocker/mixin/HandledScreenMixin.java | 193 +++++ .../de/hysky/skyblocker/mixin/InGameHudMixin.java | 93 +++ .../skyblocker/mixin/InventoryScreenMixin.java | 18 + .../java/de/hysky/skyblocker/mixin/ItemMixin.java | 22 + .../de/hysky/skyblocker/mixin/ItemStackMixin.java | 61 ++ .../de/hysky/skyblocker/mixin/LeverBlockMixin.java | 29 + .../skyblocker/mixin/MinecraftClientMixin.java | 25 + .../hysky/skyblocker/mixin/PlayerListHudMixin.java | 57 ++ .../skyblocker/mixin/PlayerSkinProviderMixin.java | 29 + .../de/hysky/skyblocker/mixin/ScoreboardMixin.java | 16 + .../SocialInteractionsPlayerListWidgetMixin.java | 24 + .../hysky/skyblocker/mixin/WorldRendererMixin.java | 33 + .../YggdrasilMinecraftSessionServiceMixin.java | 20 + .../mixin/YggdrasilServicesKeyInfoMixin.java | 59 ++ .../accessor/BeaconBlockEntityRendererInvoker.java | 16 + .../mixin/accessor/DrawContextInvoker.java | 17 + .../skyblocker/mixin/accessor/FrustumInvoker.java | 15 + .../mixin/accessor/HandledScreenAccessor.java | 20 + .../mixin/accessor/PlayerListHudAccessor.java | 17 + .../mixin/accessor/RecipeBookWidgetAccessor.java | 14 + .../skyblocker/mixin/accessor/ScreenAccessor.java | 14 + .../mixin/accessor/WorldRendererAccessor.java | 13 + .../de/hysky/skyblocker/skyblock/FairySouls.java | 215 ++++++ .../hysky/skyblocker/skyblock/FancyStatusBars.java | 192 +++++ .../hysky/skyblocker/skyblock/FishingHelper.java | 62 ++ .../hysky/skyblocker/skyblock/HotbarSlotLock.java | 40 ++ .../hysky/skyblocker/skyblock/QuiverWarning.java | 66 ++ .../skyblocker/skyblock/StatusBarTracker.java | 109 +++ .../hysky/skyblocker/skyblock/TeleportOverlay.java | 114 +++ .../skyblocker/skyblock/barn/HungryHiker.java | 47 ++ .../skyblocker/skyblock/barn/TreasureHunter.java | 61 ++ .../skyblocker/skyblock/dungeon/CroesusHelper.java | 34 + .../skyblocker/skyblock/dungeon/DungeonBlaze.java | 152 ++++ .../skyblock/dungeon/DungeonChestProfit.java | 169 +++++ .../skyblocker/skyblock/dungeon/DungeonMap.java | 61 ++ .../skyblock/dungeon/DungeonMapConfigScreen.java | 62 ++ .../skyblocker/skyblock/dungeon/LividColor.java | 42 ++ .../skyblocker/skyblock/dungeon/OldLever.java | 40 ++ .../hysky/skyblocker/skyblock/dungeon/Reparty.java | 94 +++ .../skyblock/dungeon/StarredMobGlow.java | 56 ++ .../skyblocker/skyblock/dungeon/ThreeWeirdos.java | 39 + .../skyblocker/skyblock/dungeon/TicTacToe.java | 136 ++++ .../hysky/skyblocker/skyblock/dungeon/Trivia.java | 100 +++ .../skyblock/dungeon/secrets/DungeonMapUtils.java | 275 +++++++ .../skyblock/dungeon/secrets/DungeonSecrets.java | 451 ++++++++++++ .../skyblocker/skyblock/dungeon/secrets/Room.java | 473 +++++++++++++ .../skyblock/dungeon/secrets/SecretWaypoint.java | 142 ++++ .../skyblock/dungeon/terminal/ColorTerminal.java | 72 ++ .../skyblock/dungeon/terminal/OrderTerminal.java | 58 ++ .../dungeon/terminal/StartsWithTerminal.java | 35 + .../skyblocker/skyblock/dwarven/DwarvenHud.java | 144 ++++ .../skyblock/dwarven/DwarvenHudConfigScreen.java | 66 ++ .../hysky/skyblocker/skyblock/dwarven/Fetchur.java | 53 ++ .../hysky/skyblocker/skyblock/dwarven/Puzzler.java | 39 + .../skyblock/experiment/ChronomatronSolver.java | 129 ++++ .../skyblock/experiment/ExperimentSolver.java | 60 ++ .../skyblock/experiment/SuperpairsSolver.java | 81 +++ .../skyblock/experiment/UltrasequencerSolver.java | 80 +++ .../skyblocker/skyblock/filters/AbilityFilter.java | 15 + .../skyblocker/skyblock/filters/AdFilter.java | 39 + .../skyblocker/skyblock/filters/AoteFilter.java | 15 + .../skyblocker/skyblock/filters/AutopetFilter.java | 35 + .../skyblocker/skyblock/filters/ComboFilter.java | 16 + .../skyblocker/skyblock/filters/HealFilter.java | 15 + .../skyblock/filters/ImplosionFilter.java | 15 + .../skyblock/filters/MoltenWaveFilter.java | 15 + .../skyblocker/skyblock/filters/ShowOffFilter.java | 18 + .../skyblock/filters/SimpleChatFilter.java | 17 + .../skyblock/filters/TeleportPadFilter.java | 16 + .../skyblocker/skyblock/item/AttributeShards.java | 59 ++ .../skyblocker/skyblock/item/BackpackPreview.java | 235 ++++++ .../skyblock/item/CompactorDeletorPreview.java | 92 +++ .../item/CompactorPreviewTooltipComponent.java | 54 ++ .../skyblock/item/CustomArmorDyeColors.java | 82 +++ .../skyblocker/skyblock/item/CustomArmorTrims.java | 154 ++++ .../skyblocker/skyblock/item/CustomItemNames.java | 74 ++ .../skyblocker/skyblock/item/ItemCooldowns.java | 115 +++ .../skyblocker/skyblock/item/ItemProtection.java | 75 ++ .../skyblock/item/ItemRarityBackgrounds.java | 109 +++ .../skyblocker/skyblock/item/PriceInfoTooltip.java | 443 ++++++++++++ .../skyblock/item/SkyblockItemRarity.java | 29 + .../hysky/skyblocker/skyblock/item/WikiLookup.java | 56 ++ .../skyblock/itemlist/ItemFixerUpper.java | 341 +++++++++ .../skyblock/itemlist/ItemListWidget.java | 102 +++ .../skyblocker/skyblock/itemlist/ItemRegistry.java | 137 ++++ .../skyblock/itemlist/ItemStackBuilder.java | 154 ++++ .../skyblock/itemlist/ResultButtonWidget.java | 65 ++ .../skyblock/itemlist/SearchResultsWidget.java | 228 ++++++ .../skyblock/itemlist/SkyblockCraftingRecipe.java | 60 ++ .../skyblocker/skyblock/quicknav/QuickNav.java | 80 +++ .../skyblock/quicknav/QuickNavButton.java | 107 +++ .../skyblocker/skyblock/rift/EffigyWaypoints.java | 71 ++ .../skyblock/rift/HealingMelonIndicator.java | 27 + .../skyblocker/skyblock/rift/ManiaIndicator.java | 42 ++ .../skyblock/rift/MirrorverseWaypoints.java | 88 +++ .../skyblocker/skyblock/rift/StakeIndicator.java | 27 + .../de/hysky/skyblocker/skyblock/rift/TheRift.java | 22 + .../skyblock/rift/TwinClawsIndicator.java | 43 ++ .../skyblocker/skyblock/shortcut/Shortcuts.java | 208 ++++++ .../shortcut/ShortcutsConfigListWidget.java | 232 ++++++ .../skyblock/shortcut/ShortcutsConfigScreen.java | 113 +++ .../skyblock/special/SpecialEffects.java | 96 +++ .../skyblocker/skyblock/spidersden/Relics.java | 171 +++++ .../hysky/skyblocker/skyblock/tabhud/TabHud.java | 39 + .../tabhud/screenbuilder/ScreenBuilder.java | 179 +++++ .../tabhud/screenbuilder/ScreenMaster.java | 144 ++++ .../tabhud/screenbuilder/pipeline/AlignStage.java | 83 +++ .../screenbuilder/pipeline/CollideStage.java | 153 ++++ .../screenbuilder/pipeline/PipelineStage.java | 14 + .../tabhud/screenbuilder/pipeline/PlaceStage.java | 94 +++ .../tabhud/screenbuilder/pipeline/StackStage.java | 114 +++ .../hysky/skyblocker/skyblock/tabhud/util/Ico.java | 60 ++ .../skyblock/tabhud/util/PlayerListMgr.java | 171 +++++ .../skyblock/tabhud/util/PlayerLocator.java | 87 +++ .../skyblock/tabhud/util/ScreenConst.java | 13 + .../tabhud/widget/CameraPositionWidget.java | 37 + .../skyblock/tabhud/widget/CommsWidget.java | 63 ++ .../skyblock/tabhud/widget/ComposterWidget.java | 30 + .../skyblock/tabhud/widget/CookieWidget.java | 50 ++ .../skyblock/tabhud/widget/DungeonBuffWidget.java | 68 ++ .../skyblock/tabhud/widget/DungeonDeathWidget.java | 47 ++ .../tabhud/widget/DungeonDownedWidget.java | 44 ++ .../tabhud/widget/DungeonPlayerWidget.java | 103 +++ .../tabhud/widget/DungeonPuzzleWidget.java | 57 ++ .../tabhud/widget/DungeonSecretWidget.java | 26 + .../tabhud/widget/DungeonServerWidget.java | 48 ++ .../skyblock/tabhud/widget/EffectWidget.java | 67 ++ .../skyblock/tabhud/widget/ElectionWidget.java | 104 +++ .../skyblock/tabhud/widget/ErrorWidget.java | 32 + .../skyblock/tabhud/widget/EssenceWidget.java | 47 ++ .../skyblock/tabhud/widget/EventWidget.java | 35 + .../skyblock/tabhud/widget/FireSaleWidget.java | 68 ++ .../skyblock/tabhud/widget/ForgeWidget.java | 81 +++ .../skyblock/tabhud/widget/GardenServerWidget.java | 54 ++ .../skyblock/tabhud/widget/GardenSkillsWidget.java | 80 +++ .../tabhud/widget/GardenVisitorsWidget.java | 30 + .../skyblock/tabhud/widget/GuestServerWidget.java | 30 + .../skyblock/tabhud/widget/IslandGuestsWidget.java | 47 ++ .../skyblock/tabhud/widget/IslandOwnersWidget.java | 66 ++ .../skyblock/tabhud/widget/IslandSelfWidget.java | 43 ++ .../skyblock/tabhud/widget/IslandServerWidget.java | 32 + .../tabhud/widget/JacobsContestWidget.java | 62 ++ .../skyblock/tabhud/widget/MinionWidget.java | 151 ++++ .../skyblock/tabhud/widget/ParkServerWidget.java | 30 + .../skyblock/tabhud/widget/PlayerListWidget.java | 71 ++ .../skyblock/tabhud/widget/PowderWidget.java | 29 + .../skyblock/tabhud/widget/ProfileWidget.java | 28 + .../skyblock/tabhud/widget/QuestWidget.java | 33 + .../skyblock/tabhud/widget/ReputationWidget.java | 69 ++ .../skyblock/tabhud/widget/ServerWidget.java | 30 + .../skyblock/tabhud/widget/SkillsWidget.java | 78 ++ .../skyblock/tabhud/widget/TrapperWidget.java | 25 + .../skyblock/tabhud/widget/UpgradeWidget.java | 51 ++ .../skyblock/tabhud/widget/VolcanoWidget.java | 59 ++ .../skyblocker/skyblock/tabhud/widget/Widget.java | 216 ++++++ .../tabhud/widget/component/Component.java | 31 + .../widget/component/IcoFatTextComponent.java | 45 ++ .../tabhud/widget/component/IcoTextComponent.java | 40 ++ .../widget/component/PlainTextComponent.java | 30 + .../tabhud/widget/component/PlayerComponent.java | 39 + .../tabhud/widget/component/ProgressComponent.java | 69 ++ .../tabhud/widget/component/TableComponent.java | 58 ++ .../skyblock/tabhud/widget/hud/HudCommsWidget.java | 73 ++ .../tabhud/widget/rift/AdvertisementWidget.java | 35 + .../tabhud/widget/rift/GoodToKnowWidget.java | 69 ++ .../tabhud/widget/rift/RiftProfileWidget.java | 21 + .../tabhud/widget/rift/RiftProgressWidget.java | 123 ++++ .../tabhud/widget/rift/RiftServerInfoWidget.java | 27 + .../tabhud/widget/rift/RiftStatsWidget.java | 43 ++ .../skyblock/tabhud/widget/rift/ShenWidget.java | 22 + src/main/java/de/hysky/skyblocker/utils/Boxes.java | 50 ++ .../java/de/hysky/skyblocker/utils/Constants.java | 8 + src/main/java/de/hysky/skyblocker/utils/Http.java | 89 +++ .../java/de/hysky/skyblocker/utils/ItemUtils.java | 111 +++ .../java/de/hysky/skyblocker/utils/NEURepo.java | 101 +++ .../java/de/hysky/skyblocker/utils/PosUtils.java | 14 + .../de/hysky/skyblocker/utils/SlayerUtils.java | 54 ++ src/main/java/de/hysky/skyblocker/utils/Utils.java | 370 ++++++++++ .../skyblocker/utils/chat/ChatFilterResult.java | 18 + .../skyblocker/utils/chat/ChatMessageListener.java | 89 +++ .../skyblocker/utils/chat/ChatPatternListener.java | 30 + .../utils/discord/DiscordRPCManager.java | 122 ++++ .../skyblocker/utils/render/FrustumUtils.java | 21 + .../skyblocker/utils/render/RenderHelper.java | 247 +++++++ .../utils/render/culling/OcclusionCulling.java | 47 ++ .../utils/render/culling/WorldProvider.java | 28 + .../utils/render/culling/package-info.java | 4 + .../utils/render/gui/ColorHighlight.java | 24 + .../utils/render/gui/ContainerSolver.java | 44 ++ .../utils/render/gui/ContainerSolverManager.java | 125 ++++ .../hysky/skyblocker/utils/render/title/Title.java | 53 ++ .../utils/render/title/TitleContainer.java | 175 +++++ .../render/title/TitleContainerConfigScreen.java | 170 +++++ .../utils/scheduler/MessageScheduler.java | 66 ++ .../skyblocker/utils/scheduler/Scheduler.java | 140 ++++ .../skyblocker/utils/tictactoe/TicTacToeUtils.java | 104 +++ 232 files changed, 19396 insertions(+) create mode 100644 src/main/java/de/hysky/skyblocker/SkyblockerMod.java create mode 100644 src/main/java/de/hysky/skyblocker/compatibility/MixinPlugin.java create mode 100644 src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockEmiRecipe.java create mode 100644 src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java create mode 100644 src/main/java/de/hysky/skyblocker/compatibility/modmenu/ModMenuEntry.java create mode 100644 src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockCategory.java create mode 100644 src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockCraftingDisplay.java create mode 100644 src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockCraftingDisplayGenerator.java create mode 100644 src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockerREIClientPlugin.java create mode 100644 src/main/java/de/hysky/skyblocker/config/ConfigUtils.java create mode 100644 src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java create mode 100644 src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java create mode 100644 src/main/java/de/hysky/skyblocker/config/categories/DiscordRPCCategory.java create mode 100644 src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java create mode 100644 src/main/java/de/hysky/skyblocker/config/categories/DwarvenMinesCategory.java create mode 100644 src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java create mode 100644 src/main/java/de/hysky/skyblocker/config/categories/LocationsCategory.java create mode 100644 src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java create mode 100644 src/main/java/de/hysky/skyblocker/config/categories/QuickNavigationCategory.java create mode 100644 src/main/java/de/hysky/skyblocker/config/categories/SlayersCategory.java create mode 100644 src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownController.java create mode 100644 src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilder.java create mode 100644 src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerBuilderImpl.java create mode 100644 src/main/java/de/hysky/skyblocker/config/controllers/EnumDropdownControllerElement.java create mode 100644 src/main/java/de/hysky/skyblocker/events/ClientPlayerBlockBreakEvent.java create mode 100644 src/main/java/de/hysky/skyblocker/events/SkyblockEvents.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/AbstractInventoryScreenMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/ArmorTrimMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/BatEntityMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/ClientPlayerEntityMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/ClientPlayerInteractionManagerMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/DrawContextMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/DyeableItemMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/FarmlandBlockMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/GenericContainerScreenHandlerMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/HandledScreenMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/InGameHudMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/InventoryScreenMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/ItemMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/ItemStackMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/LeverBlockMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/MinecraftClientMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/PlayerListHudMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/PlayerSkinProviderMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/ScoreboardMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/SocialInteractionsPlayerListWidgetMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/WorldRendererMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/YggdrasilMinecraftSessionServiceMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/YggdrasilServicesKeyInfoMixin.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/accessor/BeaconBlockEntityRendererInvoker.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/accessor/DrawContextInvoker.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/accessor/FrustumInvoker.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/accessor/HandledScreenAccessor.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/accessor/PlayerListHudAccessor.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/accessor/RecipeBookWidgetAccessor.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/accessor/ScreenAccessor.java create mode 100644 src/main/java/de/hysky/skyblocker/mixin/accessor/WorldRendererAccessor.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/FairySouls.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/FancyStatusBars.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/FishingHelper.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/HotbarSlotLock.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/QuiverWarning.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/StatusBarTracker.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/TeleportOverlay.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/barn/HungryHiker.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/barn/TreasureHunter.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/CroesusHelper.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonBlaze.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonChestProfit.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonMap.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/LividColor.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/OldLever.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/Reparty.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/StarredMobGlow.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/ThreeWeirdos.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/TicTacToe.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/Trivia.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/DungeonMapUtils.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/DungeonSecrets.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/Room.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dwarven/DwarvenHud.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dwarven/Fetchur.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/dwarven/Puzzler.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/experiment/ChronomatronSolver.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/experiment/ExperimentSolver.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/experiment/SuperpairsSolver.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/experiment/UltrasequencerSolver.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/filters/AbilityFilter.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/filters/AdFilter.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/filters/AoteFilter.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/filters/AutopetFilter.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/filters/ComboFilter.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/filters/HealFilter.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/filters/ImplosionFilter.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/filters/MoltenWaveFilter.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/filters/ShowOffFilter.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/filters/SimpleChatFilter.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/filters/TeleportPadFilter.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/AttributeShards.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/BackpackPreview.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/CompactorDeletorPreview.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/CompactorPreviewTooltipComponent.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorDyeColors.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorTrims.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/CustomItemNames.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/ItemCooldowns.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/ItemProtection.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/ItemRarityBackgrounds.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/PriceInfoTooltip.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/SkyblockItemRarity.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemFixerUpper.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemListWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemRegistry.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemStackBuilder.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/itemlist/ResultButtonWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/itemlist/SearchResultsWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/itemlist/SkyblockCraftingRecipe.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/quicknav/QuickNav.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/quicknav/QuickNavButton.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/rift/EffigyWaypoints.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/rift/HealingMelonIndicator.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/rift/ManiaIndicator.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/rift/MirrorverseWaypoints.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/rift/StakeIndicator.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/rift/TheRift.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/rift/TwinClawsIndicator.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/shortcut/Shortcuts.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/shortcut/ShortcutsConfigListWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/special/SpecialEffects.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/spidersden/Relics.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/TabHud.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenMaster.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/AlignStage.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/CollideStage.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PipelineStage.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/PlaceStage.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/StackStage.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/Ico.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListMgr.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerLocator.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/ScreenConst.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/CameraPositionWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/CommsWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ComposterWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/CookieWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/DungeonBuffWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/DungeonDeathWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/DungeonDownedWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/DungeonPlayerWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/DungeonPuzzleWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/DungeonSecretWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/DungeonServerWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/EffectWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ElectionWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ErrorWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/EssenceWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/EventWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ForgeWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/GardenServerWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/GardenSkillsWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/GardenVisitorsWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/GuestServerWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/IslandGuestsWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/IslandOwnersWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/IslandSelfWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/IslandServerWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/MinionWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ParkServerWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/PowderWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ProfileWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/QuestWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ReputationWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ServerWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/SkillsWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/TrapperWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/UpgradeWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/VolcanoWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/Widget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/component/Component.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/component/IcoFatTextComponent.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/component/IcoTextComponent.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/component/PlainTextComponent.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/component/ProgressComponent.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/component/TableComponent.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudCommsWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/rift/AdvertisementWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/rift/GoodToKnowWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/rift/RiftProfileWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/rift/RiftProgressWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/rift/RiftServerInfoWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/rift/RiftStatsWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/rift/ShenWidget.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/Boxes.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/Constants.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/Http.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/ItemUtils.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/NEURepo.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/PosUtils.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/SlayerUtils.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/Utils.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/chat/ChatFilterResult.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/chat/ChatPatternListener.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/discord/DiscordRPCManager.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/render/FrustumUtils.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/render/culling/OcclusionCulling.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/render/culling/WorldProvider.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/render/culling/package-info.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/render/gui/ColorHighlight.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/render/title/Title.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/render/title/TitleContainer.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/render/title/TitleContainerConfigScreen.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/scheduler/MessageScheduler.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/scheduler/Scheduler.java create mode 100644 src/main/java/de/hysky/skyblocker/utils/tictactoe/TicTacToeUtils.java (limited to 'src/main/java/de') diff --git a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java new file mode 100644 index 00000000..2cf46706 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java @@ -0,0 +1,130 @@ +package de.hysky.skyblocker; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import de.hysky.skyblocker.skyblock.*; +import de.hysky.skyblocker.skyblock.dungeon.*; +import de.hysky.skyblocker.skyblock.dungeon.secrets.DungeonSecrets; +import de.hysky.skyblocker.skyblock.item.*; +import de.hysky.skyblocker.skyblock.tabhud.screenbuilder.ScreenMaster; +import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.skyblock.*; +import de.hysky.skyblocker.skyblock.dungeon.*; +import de.hysky.skyblocker.skyblock.dwarven.DwarvenHud; +import de.hysky.skyblocker.skyblock.item.*; +import de.hysky.skyblocker.skyblock.itemlist.ItemRegistry; +import de.hysky.skyblocker.skyblock.quicknav.QuickNav; +import de.hysky.skyblocker.skyblock.rift.TheRift; +import de.hysky.skyblocker.skyblock.shortcut.Shortcuts; +import de.hysky.skyblocker.skyblock.special.SpecialEffects; +import de.hysky.skyblocker.skyblock.spidersden.Relics; +import de.hysky.skyblocker.skyblock.tabhud.TabHud; +import de.hysky.skyblocker.skyblock.tabhud.util.PlayerListMgr; +import de.hysky.skyblocker.utils.NEURepo; +import de.hysky.skyblocker.utils.Utils; +import de.hysky.skyblocker.utils.chat.ChatMessageListener; +import de.hysky.skyblocker.utils.discord.DiscordRPCManager; +import de.hysky.skyblocker.utils.render.culling.OcclusionCulling; +import de.hysky.skyblocker.utils.render.gui.ContainerSolverManager; +import de.hysky.skyblocker.utils.render.title.TitleContainer; +import de.hysky.skyblocker.utils.scheduler.MessageScheduler; +import de.hysky.skyblocker.utils.scheduler.Scheduler; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.MinecraftClient; + +import java.nio.file.Path; + +/** + * Main class for Skyblocker which initializes features, registers events, and + * manages ticks. This class will be instantiated by Fabric. Do not instantiate + * this class. + */ +public class SkyblockerMod implements ClientModInitializer { + public static final String VERSION = FabricLoader.getInstance().getModContainer("skyblocker").get().getMetadata().getVersion().getFriendlyString(); + public static final String NAMESPACE = "skyblocker"; + public static final Path CONFIG_DIR = FabricLoader.getInstance().getConfigDir().resolve(NAMESPACE); + public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); + private static SkyblockerMod INSTANCE; + public final ContainerSolverManager containerSolverManager = new ContainerSolverManager(); + public final StatusBarTracker statusBarTracker = new StatusBarTracker(); + + /** + * Do not instantiate this class. Use {@link #getInstance()} instead. + */ + @Deprecated + public SkyblockerMod() { + INSTANCE = this; + } + + public static SkyblockerMod getInstance() { + return INSTANCE; + } + + /** + * Register {@link #tick(MinecraftClient)} to + * {@link ClientTickEvents#END_CLIENT_TICK}, initialize all features, and + * schedule tick events. + */ + @Override + public void onInitializeClient() { + ClientTickEvents.END_CLIENT_TICK.register(this::tick); + Utils.init(); + HotbarSlotLock.init(); + SkyblockerConfigManager.init(); + PriceInfoTooltip.init(); + WikiLookup.init(); + ItemRegistry.init(); + NEURepo.init(); + FairySouls.init(); + Relics.init(); + BackpackPreview.init(); + QuickNav.init(); + ItemCooldowns.init(); + DwarvenHud.init(); + ChatMessageListener.init(); + Shortcuts.init(); + DiscordRPCManager.init(); + LividColor.init(); + FishingHelper.init(); + TabHud.init(); + DungeonMap.init(); + DungeonSecrets.init(); + DungeonBlaze.init(); + DungeonChestProfit.init(); + TheRift.init(); + TitleContainer.init(); + ScreenMaster.init(); + OcclusionCulling.init(); + TeleportOverlay.init(); + CustomItemNames.init(); + CustomArmorDyeColors.init(); + CustomArmorTrims.init(); + TicTacToe.init(); + QuiverWarning.init(); + SpecialEffects.init(); + ItemProtection.init(); + ItemRarityBackgrounds.init(); + containerSolverManager.init(); + statusBarTracker.init(); + Scheduler.INSTANCE.scheduleCyclic(Utils::update, 20); + Scheduler.INSTANCE.scheduleCyclic(DiscordRPCManager::updateDataAndPresence, 100); + Scheduler.INSTANCE.scheduleCyclic(TicTacToe::tick, 4); + Scheduler.INSTANCE.scheduleCyclic(LividColor::update, 10); + Scheduler.INSTANCE.scheduleCyclic(BackpackPreview::tick, 50); + Scheduler.INSTANCE.scheduleCyclic(DwarvenHud::update, 40); + Scheduler.INSTANCE.scheduleCyclic(PlayerListMgr::updateList, 20); + } + + /** + * Ticks the scheduler. Called once at the end of every client tick through + * {@link ClientTickEvents#END_CLIENT_TICK}. + * + * @param client the Minecraft client. + */ + public void tick(MinecraftClient client) { + Scheduler.INSTANCE.tick(); + MessageScheduler.INSTANCE.tick(); + } +} diff --git a/src/main/java/de/hysky/skyblocker/compatibility/MixinPlugin.java b/src/main/java/de/hysky/skyblocker/compatibility/MixinPlugin.java new file mode 100644 index 00000000..c7fc6973 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/compatibility/MixinPlugin.java @@ -0,0 +1,52 @@ +package de.hysky.skyblocker.compatibility; + +import java.util.List; +import java.util.Set; + +import org.objectweb.asm.tree.ClassNode; +import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; +import org.spongepowered.asm.mixin.extensibility.IMixinInfo; + +import net.fabricmc.loader.api.FabricLoader; + +public class MixinPlugin implements IMixinConfigPlugin { + private static final boolean OPTIFABRIC_LOADED = FabricLoader.getInstance().isModLoaded("optifabric"); + + @Override + public void onLoad(String mixinPackage) { + //Do nothing + } + + @Override + public String getRefMapperConfig() { + return null; + } + + @Override + public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { + //OptiFabric Compatibility + if (mixinClassName.endsWith("WorldRendererMixin") && OPTIFABRIC_LOADED) return false; + + return true; + } + + @Override + public void acceptTargets(Set myTargets, Set otherTargets) { + //Do nothing + } + + @Override + public List getMixins() { + return null; + } + + @Override + public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + //Do nothing + } + + @Override + public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + //Do nothing + } +} diff --git a/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockEmiRecipe.java b/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockEmiRecipe.java new file mode 100644 index 00000000..5875327d --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockEmiRecipe.java @@ -0,0 +1,38 @@ +package de.hysky.skyblocker.compatibility.emi; + +import de.hysky.skyblocker.skyblock.itemlist.ItemRegistry; +import de.hysky.skyblocker.skyblock.itemlist.SkyblockCraftingRecipe; +import dev.emi.emi.api.recipe.EmiCraftingRecipe; +import dev.emi.emi.api.recipe.EmiRecipeCategory; +import dev.emi.emi.api.stack.Comparison; +import dev.emi.emi.api.stack.EmiIngredient; +import dev.emi.emi.api.stack.EmiStack; +import dev.emi.emi.api.widget.WidgetHolder; +import net.minecraft.client.MinecraftClient; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; + +public class SkyblockEmiRecipe extends EmiCraftingRecipe { + private final String craftText; + + public SkyblockEmiRecipe(SkyblockCraftingRecipe recipe) { + super(recipe.getGrid().stream().map(EmiStack::of).map(EmiIngredient.class::cast).toList(), EmiStack.of(recipe.getResult()).comparison(Comparison.compareNbt()), Identifier.of("skyblock", ItemRegistry.getInternalName(recipe.getResult()).toLowerCase().replace(';', '_'))); + this.craftText = recipe.getCraftText(); + } + + @Override + public EmiRecipeCategory getCategory() { + return SkyblockerEMIPlugin.SKYBLOCK; + } + + @Override + public int getDisplayHeight() { + return super.getDisplayHeight() + (craftText.isEmpty() ? 0 : 10); + } + + @Override + public void addWidgets(WidgetHolder widgets) { + super.addWidgets(widgets); + widgets.addText(Text.of(craftText), 59 - MinecraftClient.getInstance().textRenderer.getWidth(craftText) / 2, 55, 0xFFFFFF, true); + } +} diff --git a/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java b/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java new file mode 100644 index 00000000..c6147016 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java @@ -0,0 +1,29 @@ +package de.hysky.skyblocker.compatibility.emi; + +import de.hysky.skyblocker.SkyblockerMod; +import de.hysky.skyblocker.skyblock.itemlist.ItemRegistry; +import de.hysky.skyblocker.utils.ItemUtils; +import dev.emi.emi.api.EmiPlugin; +import dev.emi.emi.api.EmiRegistry; +import dev.emi.emi.api.recipe.EmiRecipeCategory; +import dev.emi.emi.api.render.EmiTexture; +import dev.emi.emi.api.stack.EmiStack; +import net.minecraft.item.Items; +import net.minecraft.util.Identifier; + +/** + * EMI integration + */ +public class SkyblockerEMIPlugin implements EmiPlugin { + public static final Identifier SIMPLIFIED_TEXTURES = new Identifier("emi", "textures/gui/widgets.png"); + // TODO: Custom simplified texture for Skyblock + public static final EmiRecipeCategory SKYBLOCK = new EmiRecipeCategory(new Identifier(SkyblockerMod.NAMESPACE, "skyblock"), EmiStack.of(ItemUtils.getSkyblockerStack()), new EmiTexture(SIMPLIFIED_TEXTURES, 240, 240, 16, 16)); + + @Override + public void register(EmiRegistry registry) { + ItemRegistry.getItemsStream().map(EmiStack::of).forEach(registry::addEmiStack); + registry.addCategory(SKYBLOCK); + registry.addWorkstation(SKYBLOCK, EmiStack.of(Items.CRAFTING_TABLE)); + ItemRegistry.getRecipesStream().map(SkyblockEmiRecipe::new).forEach(registry::addRecipe); + } +} diff --git a/src/main/java/de/hysky/skyblocker/compatibility/modmenu/ModMenuEntry.java b/src/main/java/de/hysky/skyblocker/compatibility/modmenu/ModMenuEntry.java new file mode 100644 index 00000000..e0b0bc2f --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/compatibility/modmenu/ModMenuEntry.java @@ -0,0 +1,15 @@ +package de.hysky.skyblocker.compatibility.modmenu; + +import com.terraformersmc.modmenu.api.ConfigScreenFactory; +import com.terraformersmc.modmenu.api.ModMenuApi; +import de.hysky.skyblocker.config.SkyblockerConfigManager; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) +public class ModMenuEntry implements ModMenuApi { + @Override + public ConfigScreenFactory getModConfigScreenFactory() { + return SkyblockerConfigManager::createGUI; + } +} \ No newline at end of file diff --git a/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockCategory.java b/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockCategory.java new file mode 100644 index 00000000..dfc6e871 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockCategory.java @@ -0,0 +1,84 @@ +package de.hysky.skyblocker.compatibility.rei; + +import com.google.common.collect.Lists; +import de.hysky.skyblocker.utils.ItemUtils; +import me.shedaniel.math.Point; +import me.shedaniel.math.Rectangle; +import me.shedaniel.rei.api.client.gui.Renderer; +import me.shedaniel.rei.api.client.gui.widgets.Label; +import me.shedaniel.rei.api.client.gui.widgets.Slot; +import me.shedaniel.rei.api.client.gui.widgets.Widget; +import me.shedaniel.rei.api.client.gui.widgets.Widgets; +import me.shedaniel.rei.api.client.registry.display.DisplayCategory; +import me.shedaniel.rei.api.common.category.CategoryIdentifier; +import me.shedaniel.rei.api.common.entry.EntryIngredient; +import me.shedaniel.rei.api.common.util.EntryStacks; +import net.minecraft.text.Text; + +import java.util.ArrayList; +import java.util.List; + +/** + * Skyblock recipe category class for REI + */ +public class SkyblockCategory implements DisplayCategory { + @Override + public CategoryIdentifier getCategoryIdentifier() { + return SkyblockerREIClientPlugin.SKYBLOCK; + } + + @Override + public Text getTitle() { + return Text.translatable("emi.category.skyblocker.skyblock"); + } + + @Override + public Renderer getIcon() { + return EntryStacks.of(ItemUtils.getSkyblockerStack()); + } + + @Override + public int getDisplayHeight() { + return 73; + } + + /** + * Draws display for SkyblockCraftingDisplay + * + * @param display the display + * @param bounds the bounds of the display, configurable with overriding the width, height methods. + */ + @Override + public List setupDisplay(SkyblockCraftingDisplay display, Rectangle bounds) { + List out = new ArrayList<>(); + out.add(Widgets.createRecipeBase(bounds)); + + Point startPoint; + if (!display.getCraftText().isEmpty() && display.getCraftText() != null) { + startPoint = new Point(bounds.getCenterX() - 58, bounds.getCenterY() - 31); + } + else { + startPoint = new Point(bounds.getCenterX() - 58, bounds.getCenterY() - 26); + } + Point resultPoint = new Point(startPoint.x + 95, startPoint.y + 19); + out.add(Widgets.createArrow(new Point(startPoint.x + 60, startPoint.y + 18))); + out.add(Widgets.createResultSlotBackground(resultPoint)); + + // Generate Slots + List input = display.getInputEntries(); + List slots = Lists.newArrayList(); + for (int y = 0; y < 3; y++) + for (int x = 0; x < 3; x++) + slots.add(Widgets.createSlot(new Point(startPoint.x + 1 + x * 18, startPoint.y + 1 + y * 18)).markInput()); + for (int i = 0; i < input.size(); i++) { + slots.get(i).entries(input.get(i)).markInput(); + } + out.addAll(slots); + out.add(Widgets.createSlot(resultPoint).entries(display.getOutputEntries().get(0)).disableBackground().markOutput()); + + // Add craftingText Label + Label craftTextLabel = Widgets.createLabel(new Point(bounds.getCenterX(), startPoint.y + 55), Text.of(display.getCraftText())); + out.add(craftTextLabel); + return out; + } +} diff --git a/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockCraftingDisplay.java b/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockCraftingDisplay.java new file mode 100644 index 00000000..7cd712f2 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockCraftingDisplay.java @@ -0,0 +1,40 @@ +package de.hysky.skyblocker.compatibility.rei; + + +import me.shedaniel.rei.api.common.category.CategoryIdentifier; +import me.shedaniel.rei.api.common.display.SimpleGridMenuDisplay; +import me.shedaniel.rei.api.common.display.basic.BasicDisplay; +import me.shedaniel.rei.api.common.entry.EntryIngredient; + +import java.util.List; + +/** + * Skyblock Crafting Recipe display class for REI + */ +public class SkyblockCraftingDisplay extends BasicDisplay implements SimpleGridMenuDisplay { + private final String craftText; + + public SkyblockCraftingDisplay(List input, List output, String craftText) { + super(input, output); + this.craftText = craftText; + } + + public String getCraftText() { + return craftText; + } + + @Override + public int getWidth() { + return 3; + } + + @Override + public int getHeight() { + return 3; + } + + @Override + public CategoryIdentifier getCategoryIdentifier() { + return SkyblockerREIClientPlugin.SKYBLOCK; + } +} \ No newline at end of file diff --git a/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockCraftingDisplayGenerator.java b/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockCraftingDisplayGenerator.java new file mode 100644 index 00000000..8db617dc --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockCraftingDisplayGenerator.java @@ -0,0 +1,65 @@ +package de.hysky.skyblocker.compatibility.rei; + +import de.hysky.skyblocker.skyblock.itemlist.ItemRegistry; +import de.hysky.skyblocker.skyblock.itemlist.SkyblockCraftingRecipe; +import me.shedaniel.rei.api.client.registry.display.DynamicDisplayGenerator; +import me.shedaniel.rei.api.common.entry.EntryIngredient; +import me.shedaniel.rei.api.common.entry.EntryStack; +import me.shedaniel.rei.api.common.util.EntryStacks; +import net.minecraft.item.ItemStack; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +public class SkyblockCraftingDisplayGenerator implements DynamicDisplayGenerator { + + @Override + public Optional> getRecipeFor(EntryStack entry) { + if (!(entry.getValue() instanceof ItemStack)) return Optional.empty(); + EntryStack inputItem = EntryStacks.of((ItemStack) entry.getValue()); + List filteredRecipes = ItemRegistry.getRecipesStream() + .filter(recipe -> ItemRegistry.getInternalName(recipe.getResult()).equals(ItemRegistry.getInternalName(inputItem.getValue()))) + .toList(); + + return Optional.of(generateDisplays(filteredRecipes)); + } + + @Override + public Optional> getUsageFor(EntryStack entry) { + if (!(entry.getValue() instanceof ItemStack)) return Optional.empty(); + EntryStack inputItem = EntryStacks.of((ItemStack) entry.getValue()); + List filteredRecipes = ItemRegistry.getRecipesStream() + .filter(recipe -> { + for (ItemStack item : recipe.getGrid()) { + if(!ItemRegistry.getInternalName(item).isEmpty() && ItemRegistry.getInternalName(item).equals(ItemRegistry.getInternalName(inputItem.getValue()))) + return true; + } + return false; + }) + .toList(); + return Optional.of(generateDisplays(filteredRecipes)); + } + + /** + * Generate Displays from a list of recipes + */ + private List generateDisplays(List recipes) { + List displays = new ArrayList<>(); + for (SkyblockCraftingRecipe recipe : recipes) { + List inputs = new ArrayList<>(); + List outputs = new ArrayList<>(); + + ArrayList> inputEntryStacks = new ArrayList<>(); + recipe.getGrid().forEach((item) -> inputEntryStacks.add(EntryStacks.of(item))); + + for (EntryStack entryStack : inputEntryStacks) { + inputs.add(EntryIngredient.of(entryStack)); + } + outputs.add(EntryIngredient.of(EntryStacks.of(recipe.getResult()))); + + displays.add(new SkyblockCraftingDisplay(inputs, outputs, recipe.getCraftText())); + } + return displays; + } +} diff --git a/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockerREIClientPlugin.java b/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockerREIClientPlugin.java new file mode 100644 index 00000000..97651718 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockerREIClientPlugin.java @@ -0,0 +1,34 @@ +package de.hysky.skyblocker.compatibility.rei; + +import de.hysky.skyblocker.SkyblockerMod; +import de.hysky.skyblocker.skyblock.itemlist.ItemRegistry; +import me.shedaniel.rei.api.client.plugins.REIClientPlugin; +import me.shedaniel.rei.api.client.registry.category.CategoryRegistry; +import me.shedaniel.rei.api.client.registry.display.DisplayRegistry; +import me.shedaniel.rei.api.client.registry.entry.EntryRegistry; +import me.shedaniel.rei.api.common.category.CategoryIdentifier; +import me.shedaniel.rei.api.common.util.EntryStacks; +import net.minecraft.item.Items; + +/** + * REI integration + */ +public class SkyblockerREIClientPlugin implements REIClientPlugin { + public static final CategoryIdentifier SKYBLOCK = CategoryIdentifier.of(SkyblockerMod.NAMESPACE, "skyblock"); + + @Override + public void registerCategories(CategoryRegistry categoryRegistry) { + categoryRegistry.addWorkstations(SKYBLOCK, EntryStacks.of(Items.CRAFTING_TABLE)); + categoryRegistry.add(new SkyblockCategory()); + } + + @Override + public void registerDisplays(DisplayRegistry displayRegistry) { + displayRegistry.registerDisplayGenerator(SKYBLOCK, new SkyblockCraftingDisplayGenerator()); + } + + @Override + public void registerEntries(EntryRegistry entryRegistry) { + entryRegistry.addEntries(ItemRegistry.getItemsStream().map(EntryStacks::of).toList()); + } +} diff --git a/src/main/java/de/hysky/skyblocker/config/ConfigUtils.java b/src/main/java/de/hysky/skyblocker/config/ConfigUtils.java new file mode 100644 index 00000000..9a7a41b5 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/config/ConfigUtils.java @@ -0,0 +1,25 @@ +package de.hysky.skyblocker.config; + +import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; +import dev.isxander.yacl3.api.controller.EnumControllerBuilder; +import dev.isxander.yacl3.api.controller.ValueFormatter; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; +import org.apache.commons.lang3.StringUtils; + +import java.util.function.Function; + +public class ConfigUtils { + public static final Function FORMATTING_TO_STRING = formatting -> StringUtils.capitalize(formatting.getName().replaceAll("_", " ")); + public static final ValueFormatter FLOAT_TWO_FORMATTER = value -> Text.literal(String.format("%,.2f", value).replaceAll("[\u00a0\u202F]", " ")); + + public static BooleanControllerBuilder createBooleanController(Option opt) { + return BooleanControllerBuilder.create(opt).yesNoFormatter().coloured(true); + } + + @SuppressWarnings("unchecked") + public static > EnumControllerBuilder createEnumCyclingListController(Option opt) { + return EnumControllerBuilder.create(opt).enumClass((Class) opt.binding().defaultValue().getClass()); + } +} diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java new file mode 100644 index 00000000..cb51afdc --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java @@ -0,0 +1,787 @@ +package de.hysky.skyblocker.config; + +import dev.isxander.yacl3.config.v2.api.SerialEntry; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; +import de.hysky.skyblocker.skyblock.item.CustomArmorTrims; +import de.hysky.skyblocker.utils.chat.ChatFilterResult; +import net.minecraft.client.resource.language.I18n; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +import java.util.ArrayList; +import java.util.List; + +public class SkyblockerConfig { + @SerialEntry + public int version = 1; + + @SerialEntry + public General general = new General(); + + @SerialEntry + public Locations locations = new Locations(); + + @SerialEntry + public Slayer slayer = new Slayer(); + + @SerialEntry + public QuickNav quickNav = new QuickNav(); + + @SerialEntry + public Messages messages = new Messages(); + + @SerialEntry + public RichPresence richPresence = new RichPresence(); + + public static class QuickNav { + @SerialEntry + public boolean enableQuickNav = true; + + @SerialEntry + public QuickNavItem button1 = new QuickNavItem(true, new ItemData("diamond_sword"), "Your Skills", "/skills"); + + @SerialEntry + public QuickNavItem button2 = new QuickNavItem(true, new ItemData("painting"), "Collections", "/collection"); + + /* REGEX Explanation + * "Pets" : simple match on letters + * "(?: \\(\\d+\\/\\d+\\))?" : optional match on the non-capturing group for the page in the format " ($number/$number)" + */ + @SerialEntry + public QuickNavItem button3 = new QuickNavItem(true, new ItemData("bone"), "Pets(:? \\(\\d+\\/\\d+\\))?", "/pets"); + + /* REGEX Explanation + * "Wardrobe" : simple match on letters + * " \\([12]\\/2\\)" : match on the page either " (1/2)" or " (2/2)" + */ + @SerialEntry + public QuickNavItem button4 = new QuickNavItem(true, + new ItemData("leather_chestplate", 1, "tag:{display:{color:8991416}}"), "Wardrobe \\([12]/2\\)", + "/wardrobe"); + + @SerialEntry + public QuickNavItem button5 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;-2081424676,-57521078,-2073572414,158072763],Properties:{textures:[{Value:\"ewogICJ0aW1lc3RhbXAiIDogMTU5MTMxMDU4NTYwOSwKICAicHJvZmlsZUlkIiA6ICI0MWQzYWJjMmQ3NDk0MDBjOTA5MGQ1NDM0ZDAzODMxYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWdha2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODBhMDc3ZTI0OGQxNDI3NzJlYTgwMDg2NGY4YzU3OGI5ZDM2ODg1YjI5ZGFmODM2YjY0YTcwNjg4MmI2ZWMxMCIKICAgIH0KICB9Cn0=\"}]}}}"), + "Sack of Sacks", "/sacks"); + + /* REGEX Explanation + * "(?:Rift )?" : optional match on the non-capturing group "Rift " + * "Storage" : simple match on letters + * "(?: \\([12]\\/2\\))?" : optional match on the non-capturing group " (1/2)" or " (2/2)" + */ + @SerialEntry + public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), + "(?:Rift )?Storage(?: \\(1/2\\))?", "/storage"); + + @SerialEntry + public QuickNavItem button7 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;-300151517,-631415889,-1193921967,-1821784279],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=\"}]}}}"), + "none", "/hub"); + + @SerialEntry + public QuickNavItem button8 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;1605800870,415127827,-1236127084,15358548],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg5MWQ1YjI3M2ZmMGJjNTBjOTYwYjJjZDg2ZWVmMWM0MGExYjk0MDMyYWU3MWU3NTQ3NWE1NjhhODI1NzQyMSJ9fX0=\"}]}}}"), + "none", "/warp dungeon_hub"); + + @SerialEntry + public QuickNavItem button9 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;-562285948,532499670,-1705302742,775653035],Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjVkZjU1NTkyNjQzMGQ1ZDc1YWRlZDIxZGQ5NjE5Yjc2YzViN2NhMmM3ZjU0MDE0NDA1MjNkNTNhOGJjZmFhYiJ9fX0=\"}]}}}"), + "Visit prtl", "/visit prtl"); + + @SerialEntry + public QuickNavItem button10 = new QuickNavItem(true, new ItemData("enchanting_table"), "Enchant Item", + "/etable"); + + @SerialEntry + public QuickNavItem button11 = new QuickNavItem(true, new ItemData("anvil"), "Anvil", "/anvil"); + + @SerialEntry + public QuickNavItem button12 = new QuickNavItem(true, new ItemData("crafting_table"), "Craft Item", "/craft"); + } + + public static class QuickNavItem { + public QuickNavItem(Boolean render, ItemData itemData, String uiTitle, String clickEvent) { + this.render = render; + this.item = itemData; + this.clickEvent = clickEvent; + this.uiTitle = uiTitle; + } + + @SerialEntry + public Boolean render; + + @SerialEntry + public ItemData item; + + @SerialEntry + public String uiTitle; + + @SerialEntry + public String clickEvent; + } + + public static cla