diff options
Diffstat (limited to 'src/main/java')
54 files changed, 1326 insertions, 291 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index 5c7f2a99..b28ad3d4 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -4,10 +4,7 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.*; -import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonBlaze; -import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonMap; -import me.xmrvizzy.skyblocker.skyblock.dungeon.LividColor; -import me.xmrvizzy.skyblocker.skyblock.dungeon.TicTacToe; +import me.xmrvizzy.skyblocker.skyblock.dungeon.*; import me.xmrvizzy.skyblocker.skyblock.dungeon.secrets.DungeonSecrets; import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud; import me.xmrvizzy.skyblocker.skyblock.item.*; @@ -15,6 +12,8 @@ import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNav; import me.xmrvizzy.skyblocker.skyblock.rift.TheRift; import me.xmrvizzy.skyblocker.skyblock.shortcut.Shortcuts; +import me.xmrvizzy.skyblocker.skyblock.special.SpecialEffects; +import me.xmrvizzy.skyblocker.skyblock.spidersden.Relics; import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.ScreenMaster; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; @@ -40,14 +39,11 @@ import java.nio.file.Path; * 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; - - @SuppressWarnings("deprecation") - public final Scheduler scheduler = new Scheduler(); - public final MessageScheduler messageScheduler = new MessageScheduler(); public final ContainerSolverManager containerSolverManager = new ContainerSolverManager(); public final StatusBarTracker statusBarTracker = new StatusBarTracker(); @@ -79,6 +75,7 @@ public class SkyblockerMod implements ClientModInitializer { ItemRegistry.init(); NEURepo.init(); FairySouls.init(); + Relics.init(); BackpackPreview.init(); QuickNav.init(); DwarvenHud.init(); @@ -91,6 +88,7 @@ public class SkyblockerMod implements ClientModInitializer { DungeonMap.init(); DungeonSecrets.init(); DungeonBlaze.init(); + DungeonChestProfit.init(); TheRift.init(); TitleContainer.init(); ScreenMaster.init(); @@ -101,15 +99,16 @@ public class SkyblockerMod implements ClientModInitializer { CustomArmorTrims.init(); TicTacToe.init(); QuiverWarning.init(); + SpecialEffects.init(); containerSolverManager.init(); statusBarTracker.init(); - scheduler.scheduleCyclic(Utils::update, 20); - scheduler.scheduleCyclic(DiscordRPCManager::updateDataAndPresence, 100); - scheduler.scheduleCyclic(TicTacToe::tick, 4); - scheduler.scheduleCyclic(LividColor::update, 10); - scheduler.scheduleCyclic(BackpackPreview::tick, 50); - scheduler.scheduleCyclic(DwarvenHud::update, 40); - scheduler.scheduleCyclic(PlayerListMgr::updateList, 20); + 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); } /** @@ -119,7 +118,7 @@ public class SkyblockerMod implements ClientModInitializer { * @param client the Minecraft client. */ public void tick(MinecraftClient client) { - scheduler.tick(); - messageScheduler.tick(); + Scheduler.INSTANCE.tick(); + MessageScheduler.INSTANCE.tick(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/compatibility/MixinPlugin.java b/src/main/java/me/xmrvizzy/skyblocker/compatibility/MixinPlugin.java index c6fc1924..8b96499d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/compatibility/MixinPlugin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/compatibility/MixinPlugin.java @@ -26,7 +26,7 @@ public class MixinPlugin implements IMixinConfigPlugin { public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { //OptiFabric Compatibility if (mixinClassName.endsWith("WorldRendererMixin") && OPTIFABRIC_LOADED) return false; - + return true; } @@ -41,7 +41,7 @@ public class MixinPlugin implements IMixinConfigPlugin { } @Override - public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { //Do nothing } diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 127bc601..5848ed15 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -20,7 +20,9 @@ import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.minecraft.client.resource.language.I18n; import net.minecraft.text.Style; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; +import org.eclipse.jgit.util.StringUtils; import java.util.ArrayList; import java.util.List; @@ -67,11 +69,19 @@ public class SkyblockerConfig implements ConfigData { @ConfigEntry.Category("button3") @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button3 = new QuickNavItem(true, new ItemData("bone"), "\\(\\d+/\\d+\\) Pets", "/pets"); + public QuickNavItem button3 = new QuickNavItem(true, new ItemData("bone"), "Pets(:? \\(\\d+\\/\\d+\\))?", "/pets"); + /* REGEX Explanation + * "Pets" : simple match on letters + * "(?: \\(\\d+\\/\\d+\\))?" : optional match on the non-capturing group for the page in the format " ($number/$number)" + */ @ConfigEntry.Category("button4") @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button4 = new QuickNavItem(true, new ItemData("leather_chestplate", 1, "tag:{display:{color:8991416}}"), "Wardrobe \\([12]/2\\)", "/wardrobe"); + public QuickNavItem button4 = new QuickNavItem(true, new ItemData("leather_chestplate", 1, "tag:{display:{color:8991416}}"), "Wardrobe \\([12]\\/2\\)", "/wardrobe"); + /* REGEX Explanation + * "Wardrobe" : simple match on letters + * " \\([12]\\/2\\)" : match on the page either " (1/2)" or " (2/2)" + */ @ConfigEntry.Category("button5") @ConfigEntry.Gui.CollapsibleObject() @@ -79,7 +89,12 @@ public class SkyblockerConfig implements ConfigData { @ConfigEntry.Category("button6") @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), "(?:Rift )?Storage(?: \\(1/2\\))?", "/storage"); + public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), "(?:Rift )?Storage(?: \\([12]\\/2\\))?", "/storage"); + /* 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)" + */ @ConfigEntry.Category("button7") @ConfigEntry.Gui.CollapsibleObject() @@ -145,7 +160,9 @@ public class SkyblockerConfig implements ConfigData { public static class General { public boolean acceptReparty = true; public boolean backpackPreviewWithoutShift = false; + public boolean compactorDeletorPreview = true; public boolean hideEmptyTooltips = true; + public boolean hideStatusEffectOverlay = false; @ConfigEntry.Category("tabHud") @ConfigEntry.Gui.CollapsibleObject() @@ -185,11 +202,15 @@ public class SkyblockerConfig implements ConfigData { @ConfigEntry.Category("itemTooltip") @ConfigEntry.Gui.CollapsibleObject() public ItemTooltip itemTooltip = new ItemTooltip(); - + @ConfigEntry.Category("itemInfoDisplay") @ConfigEntry.Gui.CollapsibleObject public ItemInfoDisplay itemInfoDisplay = new ItemInfoDisplay(); + @ConfigEntry.Category("specialEffects") + @ConfigEntry.Gui.CollapsibleObject + public SpecialEffects specialEffects = new SpecialEffects(); + @ConfigEntry.Category("hitbox") @ConfigEntry.Gui.CollapsibleObject() public Hitbox hitbox = new Hitbox(); @@ -259,7 +280,6 @@ public class SkyblockerConfig implements ConfigData { public BarPosition defenceBarPosition = BarPosition.LAYER1; @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) public BarPosition experienceBarPosition = BarPosition.LAYER1; - } public enum BarPosition { @@ -295,6 +315,9 @@ public class SkyblockerConfig implements ConfigData { public static class FairySouls { public boolean enableFairySoulsHelper = false; + public boolean highlightFoundSouls = true; + @ConfigEntry.Gui.Tooltip() + public boolean highlightOnlyNearbySouls = false; } public static class Shortcuts { @@ -401,12 +424,17 @@ public class SkyblockerConfig implements ConfigData { public boolean enableBazaarPrice = true; public boolean enableMuseumDate = true; } - + public static class ItemInfoDisplay { - @ConfigEntry.Gui.Tooltip + @ConfigEntry.Gui.Tooltip public boolean attributeShardInfo = true; } + public static class SpecialEffects { + @ConfigEntry.Gui.Tooltip + public boolean rareDungeonDropEffects = true; + } + public static class Locations { @ConfigEntry.Category("barn") @ConfigEntry.Gui.CollapsibleObject() @@ -423,11 +451,17 @@ public class SkyblockerConfig implements ConfigData { @ConfigEntry.Category("rift") @ConfigEntry.Gui.CollapsibleObject() public Rift rift = new Rift(); + + @ConfigEntry.Category("spidersden") + @ConfigEntry.Gui.CollapsibleObject() + public SpidersDen spidersDen = new SpidersDen(); } public static class Dungeons { @ConfigEntry.Gui.CollapsibleObject public SecretWaypoints secretWaypoints = new SecretWaypoints(); + @ConfigEntry.Gui.CollapsibleObject + public DungeonChestProfit dungeonChestProfit = new DungeonChestProfit(); @ConfigEntry.Gui.Tooltip() public boolean croesusHelper = true; public boolean enableMap = true; @@ -466,6 +500,61 @@ public class SkyblockerConfig implements ConfigData { public boolean enableDefaultWaypoints = true; } + public static class DungeonChestProfit { + @ConfigEntry.Gui.Tooltip + public boolean enableProfitCalculator = true; + @ConfigEntry.Gui.Tooltip + public boolean includeKismet = false; + @ConfigEntry.Gui.Tooltip + public boolean includeEssence = true; + @ConfigEntry.Gui.Tooltip + public int neutralThreshold = 1000; + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.DROPDOWN) + public FormattingOption neutralColor = FormattingOption.DARK_GRAY; + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.DROPDOWN) + public FormattingOption profitColor = FormattingOption.DARK_GREEN; + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.DROPDOWN) + public FormattingOption lossColor = FormattingOption.RED; + @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.DROPDOWN) + @ConfigEntry.Gui.Tooltip + public FormattingOption incompleteColor = FormattingOption.BLUE; + } + + public enum FormattingOption { + BLACK(Formatting.BLACK), + DARK_BLUE(Formatting.DARK_BLUE), + DARK_GREEN(Formatting.DARK_GREEN), + DARK_AQUA(Formatting.DARK_AQUA), + DARK_RED(Formatting.DARK_RED), + DARK_PURPLE(Formatting.DARK_PURPLE), + GOLD(Formatting.GOLD), + GRAY(Formatting.GRAY), + DARK_GRAY(Formatting.DARK_GRAY), + BLUE(Formatting.BLUE), + GREEN(Formatting.GREEN), + AQUA(Formatting.AQUA), + RED(Formatting.RED), + LIGHT_PURPLE(Formatting.LIGHT_PURPLE), + YELLOW(Formatting.YELLOW), + WHITE(Formatting.WHITE), + OBFUSCATED(Formatting.OBFUSCATED), + BOLD(Formatting.BOLD), + STRIKETHROUGH(Formatting.STRIKETHROUGH), + UNDERLINE(Formatting.UNDERLINE), + ITALIC(Formatting.ITALIC), + RESET(Formatting.RESET); + public final Formatting formatting; + + FormattingOption(Formatting formatting) { + this.formatting = formatting; + } + + @Override + public String toString() { + return StringUtils.capitalize(formatting.getName().replaceAll("_", " ")); + } + } + public static class LividColor { @ConfigEntry.Gui.Tooltip() public boolean enableLividColor = true; @@ -524,6 +613,17 @@ public class SkyblockerConfig implements ConfigData { public int mcGrubberStacks = 0; } + public static class SpidersDen { + @ConfigEntry.Category("relics") + @ConfigEntry.Gui.CollapsibleObject() + public Relics relics = new Relics(); + } + + public static class Relics { + public boolean enableRelicsHelper = false; + public boolean highlightFoundRelics = true; + } + public static class Slayer { @ConfigEntry.Category("vampire") @ConfigEntry.Gui.CollapsibleObject() diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/AbstractInventoryScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/AbstractInventoryScreenMixin.java new file mode 100644 index 00000000..db517411 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/AbstractInventoryScreenMixin.java @@ -0,0 +1,19 @@ +package me.xmrvizzy.skyblocker.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.Utils; +import net.minecraft.client.gui.screen.ingame.AbstractInventoryScreen; + +@Mixin(AbstractInventoryScreen.class) +public class AbstractInventoryScreenMixin { + + @Inject(method = "drawStatusEffects", at = @At("HEAD"), cancellable = true) + private void skyblocker$dontDrawStatusEffects(CallbackInfo ci) { + if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.hideStatusEffectOverlay) ci.cancel(); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/BatEntityMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/BatEntityMixin.java index 86c4e672..3eb13073 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/BatEntityMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/BatEntityMixin.java @@ -6,7 +6,6 @@ import net.minecraft.entity.mob.AmbientEntity; import net.minecraft.entity.passive.BatEntity; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; @Mixin(BatEntity.class) public abstract class BatEntityMixin extends AmbientEntity { diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java index 0a1084cf..cfe979d0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java @@ -36,7 +36,7 @@ public abstract class DrawContextMixin { @Shadow public abstract void fill(RenderLayer layer, int x1, int x2, int y1, int y2, int color); - + @Shadow public abstract int drawText(TextRenderer textRenderer, @Nullable String text, int x, int y, int color, boolean shadow); @@ -96,35 +96,35 @@ public abstract class DrawContextMixin { matrices.pop(); RenderSystem.enableDepthTest(); |
