From fca101c2d22c682856f7097a1c013c59d0850e0d Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Wed, 3 May 2023 17:35:43 -0400 Subject: Migrated client tick and container mixins to ClientTickEvents and ScreenEvents --- .../xmrvizzy/skyblocker/SkyblockerInitializer.java | 29 ------------------- .../java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 33 ++++++++++++++++++++-- .../container/ContainerSolverManager.java | 15 ++++++++++ .../mixin/GenericContainerScreenMixin.java | 31 -------------------- .../skyblocker/mixin/MinecraftClientMixin.java | 22 ++------------- src/main/resources/fabric.mod.json | 2 +- src/main/resources/skyblocker.mixins.json | 1 - 7 files changed, 50 insertions(+), 83 deletions(-) delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java deleted file mode 100644 index 3d713727..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java +++ /dev/null @@ -1,29 +0,0 @@ -package me.xmrvizzy.skyblocker; - -import me.xmrvizzy.skyblocker.chat.ChatMessageListener; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.discord.DiscordRPCManager; -import me.xmrvizzy.skyblocker.skyblock.HotbarSlotLock; -import me.xmrvizzy.skyblocker.skyblock.api.StatsCommand; -import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud; -import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; -import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup; -import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; -import me.xmrvizzy.skyblocker.utils.UpdateChecker; -import net.fabricmc.api.ClientModInitializer; - -public class SkyblockerInitializer implements ClientModInitializer { - @Override - public void onInitializeClient() { - HotbarSlotLock.init(); - SkyblockerConfig.init(); - PriceInfoTooltip.init(); - WikiLookup.init(); - ItemRegistry.init(); - StatsCommand.init(); - DwarvenHud.init(); - ChatMessageListener.init(); - UpdateChecker.init(); - DiscordRPCManager.init(); - } -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index f804d90e..f91192ba 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -1,15 +1,28 @@ package me.xmrvizzy.skyblocker; +import me.xmrvizzy.skyblocker.chat.ChatMessageListener; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.container.ContainerSolverManager; import me.xmrvizzy.skyblocker.discord.DiscordRPCManager; import me.xmrvizzy.skyblocker.skyblock.BackpackPreview; +import me.xmrvizzy.skyblocker.skyblock.HotbarSlotLock; import me.xmrvizzy.skyblocker.skyblock.StatusBarTracker; +import me.xmrvizzy.skyblocker.skyblock.api.StatsCommand; import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonBlaze; import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud; +import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; +import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup; +import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; import me.xmrvizzy.skyblocker.utils.Scheduler; +import me.xmrvizzy.skyblocker.utils.UpdateChecker; import me.xmrvizzy.skyblocker.utils.Utils; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.minecraft.client.MinecraftClient; -public class SkyblockerMod { +import java.awt.*; + +public class SkyblockerMod implements ClientModInitializer { public static final String NAMESPACE = "skyblocker"; private static final SkyblockerMod instance = new SkyblockerMod(); @@ -29,7 +42,23 @@ public class SkyblockerMod { return instance; } - public void onTick() { + @Override + public void onInitializeClient() { + ClientTickEvents.END_CLIENT_TICK.register(this::tick); + HotbarSlotLock.init(); + SkyblockerConfig.init(); + PriceInfoTooltip.init(); + WikiLookup.init(); + ItemRegistry.init(); + ContainerSolverManager.init(); + StatsCommand.init(); + DwarvenHud.init(); + ChatMessageListener.init(); + UpdateChecker.init(); + DiscordRPCManager.init(); + } + + public void tick(MinecraftClient client) { scheduler.tick(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/container/ContainerSolverManager.java b/src/main/java/me/xmrvizzy/skyblocker/container/ContainerSolverManager.java index 276ac3b9..e2bf359f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/container/ContainerSolverManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/container/ContainerSolverManager.java @@ -1,10 +1,13 @@ package me.xmrvizzy.skyblocker.container; import com.mojang.blaze3d.systems.RenderSystem; +import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.skyblock.dungeon.CroesusHelper; import me.xmrvizzy.skyblocker.skyblock.dungeon.terminal.ColorTerminal; import me.xmrvizzy.skyblocker.skyblock.dungeon.terminal.OrderTerminal; import me.xmrvizzy.skyblocker.skyblock.dungeon.terminal.StartsWithTerminal; +import me.xmrvizzy.skyblocker.utils.Utils; +import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; import net.minecraft.client.util.math.MatrixStack; @@ -34,6 +37,18 @@ public class ContainerSolverManager extends DrawableHelper { }; } + public static void init() { + ScreenEvents.BEFORE_INIT.register((client, screen, scaledWidth, scaledHeight) -> { + ContainerSolverManager containerSolverManager = SkyblockerMod.getInstance().containerSolverManager; + if (Utils.isOnSkyblock && screen instanceof GenericContainerScreen genericContainerScreen) { + ScreenEvents.afterRender(screen).register((screen1, matrices, mouseX, mouseY, delta) -> containerSolverManager.onDraw(matrices, genericContainerScreen.getScreenHandler().slots.subList(0, genericContainerScreen.getScreenHandler().getRows() * 9))); + containerSolverManager.onSetScreen(genericContainerScreen); + } else { + containerSolverManager.clearScreen(); + } + }); + } + public void onSetScreen(@NotNull GenericContainerScreen screen) { String screenName = screen.getTitle().getString(); Matcher matcher = PLACEHOLDER_PATTERN.matcher(screenName); diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java deleted file mode 100644 index d63d17b8..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java +++ /dev/null @@ -1,31 +0,0 @@ -package me.xmrvizzy.skyblocker.mixin; - -import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.utils.Utils; -import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; -import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.screen.GenericContainerScreenHandler; -import net.minecraft.text.Text; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@Mixin(GenericContainerScreen.class) -public abstract class GenericContainerScreenMixin extends HandledScreen { - @Shadow - @Final - private int rows; - - public GenericContainerScreenMixin(GenericContainerScreenHandler handler, PlayerInventory inventory, Text title) { - super(handler, inventory, title); - } - - @Override - protected void drawForeground(MatrixStack matrices, int mouseX, int mouseY) { - super.drawForeground(matrices, mouseX, mouseY); - if (Utils.isOnSkyblock) - SkyblockerMod.getInstance().containerSolverManager.onDraw(matrices, this.handler.slots.subList(0, rows * 9)); - } -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java index 2bc47bba..24e27c08 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java @@ -1,12 +1,8 @@ package me.xmrvizzy.skyblocker.mixin; -import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.container.ContainerSolverManager; import me.xmrvizzy.skyblocker.skyblock.HotbarSlotLock; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; import net.minecraft.client.network.ClientPlayerEntity; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; @@ -22,22 +18,10 @@ public abstract class MinecraftClientMixin { @Nullable public ClientPlayerEntity player; - @Inject(method = "tick", at = @At("HEAD")) - public void skyblocker$tick(CallbackInfo ci) { - SkyblockerMod.getInstance().onTick(); - } - @Inject(method = "handleInputEvents", at = @At("HEAD")) public void skyblocker$handleInputEvents(CallbackInfo ci) { - if (Utils.isOnSkyblock) HotbarSlotLock.handleInputEvents(player); - } - - @Inject(method = "setScreen", at = @At("HEAD")) - public void skyblocker$onSetScreen(Screen screen, CallbackInfo ci) { - ContainerSolverManager manager = SkyblockerMod.getInstance().containerSolverManager; - if (Utils.isOnSkyblock && screen instanceof GenericContainerScreen) - manager.onSetScreen((GenericContainerScreen) screen); - else - manager.clearScreen(); + if (Utils.isOnSkyblock) { + HotbarSlotLock.handleInputEvents(player); + } } } \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index d8ef4941..00bf5b57 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "environment": "client", "entrypoints": { "client": [ - "me.xmrvizzy.skyblocker.SkyblockerInitializer" + "me.xmrvizzy.skyblocker.SkyblockerMod" ], "modmenu": [ "me.xmrvizzy.skyblocker.config.modmenu.ModMenuEntry" diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json index 4a6be779..24feafda 100644 --- a/src/main/resources/skyblocker.mixins.json +++ b/src/main/resources/skyblocker.mixins.json @@ -11,7 +11,6 @@ "FarmlandBlockMixin", "MinecraftClientMixin", "AccessorWorldRenderer", - "GenericContainerScreenMixin", "GenericContainerScreenHandlerMixin", "HandledScreenMixin", "InventoryScreenMixin", -- cgit From 38d19549c1f02dee99d803e735d7989f528637f6 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Wed, 3 May 2023 17:55:23 -0400 Subject: Migrated backpack and QuickNav mixins to ScreenEvents --- src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 5 +++-- .../xmrvizzy/skyblocker/mixin/HandledScreenMixin.java | 17 ----------------- .../xmrvizzy/skyblocker/skyblock/BackpackPreview.java | 9 +++++++++ .../xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java | 17 +++++++++++++++-- 4 files changed, 27 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index f91192ba..80b02eee 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -13,6 +13,7 @@ import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup; import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; +import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNav; import me.xmrvizzy.skyblocker.utils.Scheduler; import me.xmrvizzy.skyblocker.utils.UpdateChecker; import me.xmrvizzy.skyblocker.utils.Utils; @@ -20,8 +21,6 @@ import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.minecraft.client.MinecraftClient; -import java.awt.*; - public class SkyblockerMod implements ClientModInitializer { public static final String NAMESPACE = "skyblocker"; private static final SkyblockerMod instance = new SkyblockerMod(); @@ -51,6 +50,8 @@ public class SkyblockerMod implements ClientModInitializer { WikiLookup.init(); ItemRegistry.init(); ContainerSolverManager.init(); + BackpackPreview.init(); + QuickNav.init(); StatsCommand.init(); DwarvenHud.init(); ChatMessageListener.init(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java index 44b1b5c8..2d200a86 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java @@ -3,9 +3,6 @@ package me.xmrvizzy.skyblocker.mixin; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.BackpackPreview; import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup; -import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNav; -import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNavButton; -import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.util.math.MatrixStack; @@ -19,8 +16,6 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import java.util.List; - @Mixin(HandledScreen.class) public abstract class HandledScreenMixin extends Screen { protected HandledScreenMixin(Text title) { @@ -31,18 +26,6 @@ public abstract class HandledScreenMixin extends Screen { @Nullable protected Slot focusedSlot; - @Inject(method = "init()V", at = @At("TAIL")) - private void skyblocker$init(CallbackInfo ci) { - // quicknav - if (Utils.isOnSkyblock && SkyblockerConfig.get().quickNav.enableQuickNav) { - String screenTitle = super.getTitle().getString().trim(); - List buttons = QuickNav.init(screenTitle); - for (QuickNavButton button : buttons) super.addDrawableChild(button); - } - // backpack preview - BackpackPreview.updateStorage((HandledScreen) (Object) this); - } - @Inject(at = @At("HEAD"), method = "keyPressed") public void skyblocker$keyPressed(int keyCode, int scanCode, int modifiers, CallbackInfoReturnable cir) { if (this.focusedSlot != null) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java index d8cca051..a6dfe31d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java @@ -3,6 +3,7 @@ package me.xmrvizzy.skyblocker.skyblock; import com.mojang.blaze3d.systems.RenderSystem; import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.utils.Utils; +import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; @@ -40,6 +41,14 @@ public class BackpackPreview extends DrawableHelper { private static String loaded = ""; // uuid + sb profile currently loaded private static Path save_dir = null; + public static void init() { + ScreenEvents.AFTER_INIT.register((client, screen, scaledWidth, scaledHeight) -> { + if (screen instanceof HandledScreen handledScreen) { + updateStorage(handledScreen); + } + }); + } + public static void tick() { Utils.sbChecker(); // force update isOnSkyblock to prevent crash on disconnect if (Utils.isOnSkyblock) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java index 99e1c529..8ab49754 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java @@ -1,9 +1,11 @@ package me.xmrvizzy.skyblocker.skyblock.quicknav; import com.mojang.brigadier.exceptions.CommandSyntaxException; - import me.xmrvizzy.skyblocker.config.SkyblockerConfig; - +import me.xmrvizzy.skyblocker.utils.Utils; +import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; +import net.fabricmc.fabric.api.client.screen.v1.Screens; +import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.item.ItemStack; import net.minecraft.nbt.StringNbtReader; @@ -14,6 +16,17 @@ import java.util.Locale; public class QuickNav { private static final String skyblockHubIconNbt = "{id:\"minecraft:player_head\",Count:1,tag:{SkullOwner:{Id:[I;-300151517,-631415889,-1193921967,-1821784279],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=\"}]}}}}"; private static final String dungeonHubIconNbt = "{id:\"minecraft:player_head\",Count:1,tag:{SkullOwner:{Id:[I;1605800870,415127827,-1236127084,15358548],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg5MWQ1YjI3M2ZmMGJjNTBjOTYwYjJjZDg2ZWVmMWM0MGExYjk0MDMyYWU3MWU3NTQ3NWE1NjhhODI1NzQyMSJ9fX0=\"}]}}}}"; + + public static void init() { + ScreenEvents.AFTER_INIT.register((client, screen, scaledWidth, scaledHeight) -> { + if (Utils.isOnSkyblock && SkyblockerConfig.get().quickNav.enableQuickNav && screen instanceof HandledScreen) { + String screenTitle = screen.getTitle().getString().trim(); + List buttons = QuickNav.init(screenTitle); + for (QuickNavButton button : buttons) Screens.getButtons(screen).add(button); + } + }); + } + public static List init(String screenTitle) { List buttons = new ArrayList<>(); SkyblockerConfig.QuickNav data = SkyblockerConfig.get().quickNav; -- cgit From 2093b1fc1c2a75009b367bcd7b378bcf6e1d16b8 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Tue, 16 May 2023 19:40:01 -0400 Subject: Added config screen command --- .../java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 17 +++++----- .../skyblocker/config/SkyblockerConfig.java | 38 +++++++++++++++++++--- 2 files changed, 43 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index 80b02eee..1023f3c8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -23,22 +23,18 @@ import net.minecraft.client.MinecraftClient; public class SkyblockerMod implements ClientModInitializer { public static final String NAMESPACE = "skyblocker"; - private static final SkyblockerMod instance = new SkyblockerMod(); + private static SkyblockerMod INSTANCE; public final Scheduler scheduler = new Scheduler(); public final ContainerSolverManager containerSolverManager = new ContainerSolverManager(); public final StatusBarTracker statusBarTracker = new StatusBarTracker(); - private SkyblockerMod() { - scheduler.scheduleCyclic(Utils::sbChecker, 20); - scheduler.scheduleCyclic(DiscordRPCManager::update, 100); - scheduler.scheduleCyclic(DungeonBlaze::update, 4); - scheduler.scheduleCyclic(BackpackPreview::tick, 50); - scheduler.scheduleCyclic(DwarvenHud::update, 40); + public SkyblockerMod() { + INSTANCE = this; } public static SkyblockerMod getInstance() { - return instance; + return INSTANCE; } @Override @@ -57,6 +53,11 @@ public class SkyblockerMod implements ClientModInitializer { ChatMessageListener.init(); UpdateChecker.init(); DiscordRPCManager.init(); + scheduler.scheduleCyclic(Utils::sbChecker, 20); + scheduler.scheduleCyclic(DiscordRPCManager::update, 100); + scheduler.scheduleCyclic(DungeonBlaze::update, 4); + scheduler.scheduleCyclic(BackpackPreview::tick, 50); + scheduler.scheduleCyclic(DwarvenHud::update, 40); } public void tick(MinecraftClient client) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 48eb31c7..e2e7b4ca 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -1,16 +1,24 @@ package me.xmrvizzy.skyblocker.config; +import com.mojang.brigadier.builder.LiteralArgumentBuilder; import me.shedaniel.autoconfig.AutoConfig; import me.shedaniel.autoconfig.ConfigData; import me.shedaniel.autoconfig.annotation.Config; import me.shedaniel.autoconfig.annotation.ConfigEntry; import me.shedaniel.autoconfig.serializer.GsonConfigSerializer; +import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.chat.ChatFilterResult; +import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; +import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.resource.language.I18n; import java.util.ArrayList; import java.util.List; +import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; + @Config(name = "skyblocker") public class SkyblockerConfig implements ConfigData { @@ -59,7 +67,7 @@ public class SkyblockerConfig implements ConfigData { @ConfigEntry.Category("button6") @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), "Storage", "/storage"); + public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), "Storage", "/storage"); @ConfigEntry.Category("button7") @ConfigEntry.Gui.CollapsibleObject() @@ -133,7 +141,7 @@ public class SkyblockerConfig implements ConfigData { @ConfigEntry.Category("bars") @ConfigEntry.Gui.CollapsibleObject() public Bars bars = new Bars(); - + @ConfigEntry.Category("itemList") @ConfigEntry.Gui.CollapsibleObject() public ItemList itemList = new ItemList(); @@ -177,7 +185,7 @@ public class SkyblockerConfig implements ConfigData { NONE; @Override - public String toString() { + public String toString() { return I18n.translate("text.autoconfig.skyblocker.option.general.bars.barpositions." + name()); } @@ -215,7 +223,7 @@ public class SkyblockerConfig implements ConfigData { BOTH; @Override - public String toString() { + public String toString() { return I18n.translate("text.autoconfig.skyblocker.option.general.itemTooltip.avg." + name()); } } @@ -310,14 +318,36 @@ public class SkyblockerConfig implements ConfigData { PURSE, BITS, LOCATION; + @Override public String toString() { return I18n.translate("text.autoconfig.skyblocker.option.richPresence.info." + name()); } } + /** + * Registers the config to AutoConfig and register commands to open the config screen. + */ public static void init() { AutoConfig.register(SkyblockerConfig.class, GsonConfigSerializer::new); + ClientCommandRegistrationCallback.EVENT.register(((dispatcher, registryAccess) -> dispatcher.register(literal("skyblocker").then(optionsLiteral("config")).then(optionsLiteral("options"))))); + } + + /** + * Registers an options command with the given name. Used for registering both options and config as valid commands. + * + * @param name the name of the command node + * @return the command builder + */ + private static LiteralArgumentBuilder optionsLiteral(String name) { + return literal(name).executes(context -> { + // Don't immediately open the next screen as it will be closed by ChatScreen right after this command is executed + SkyblockerMod.getInstance().scheduler.schedule(() -> { + Screen a = AutoConfig.getConfigScreen(SkyblockerConfig.class, null).get(); + MinecraftClient.getInstance().setScreen(a); + }, 0); + return 1; + }); } public static SkyblockerConfig get() { -- cgit From 78add48c71a6d59035e9c1d638ec162ede2813b7 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Thu, 18 May 2023 15:26:58 -0400 Subject: Refactored ContainerSolverManager.init --- src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 2 +- .../me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index a2ace0c0..503d3a64 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -47,7 +47,6 @@ public class SkyblockerMod implements ClientModInitializer { WikiLookup.init(); ItemRegistry.init(); RepositoryUpdate.init(); - ContainerSolverManager.init(); BackpackPreview.init(); QuickNav.init(); StatsCommand.init(); @@ -55,6 +54,7 @@ public class SkyblockerMod implements ClientModInitializer { ChatMessageListener.init(); UpdateChecker.init(); DiscordRPCManager.init(); + containerSolverManager.init(); scheduler.scheduleCyclic(Utils::sbChecker, 20); scheduler.scheduleCyclic(DiscordRPCManager::update, 100); scheduler.scheduleCyclic(DungeonBlaze::update, 4); diff --git a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java index 3e138d14..635475bf 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java @@ -1,7 +1,6 @@ package me.xmrvizzy.skyblocker.gui; import com.mojang.blaze3d.systems.RenderSystem; -import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.skyblock.dungeon.CroesusHelper; import me.xmrvizzy.skyblocker.skyblock.dungeon.terminal.ColorTerminal; import me.xmrvizzy.skyblocker.skyblock.dungeon.terminal.OrderTerminal; @@ -40,14 +39,13 @@ public class ContainerSolverManager extends DrawableHelper { }; } - public static void init() { + public void init() { ScreenEvents.BEFORE_INIT.register((client, screen, scaledWidth, scaledHeight) -> { - ContainerSolverManager containerSolverManager = SkyblockerMod.getInstance().containerSolverManager; if (Utils.isOnSkyblock && screen instanceof GenericContainerScreen genericContainerScreen) { - ScreenEvents.afterRender(screen).register((screen1, matrices, mouseX, mouseY, delta) -> containerSolverManager.onDraw(matrices, genericContainerScreen.getScreenHandler().slots.subList(0, genericContainerScreen.getScreenHandler().getRows() * 9))); - containerSolverManager.onSetScreen(genericContainerScreen); + ScreenEvents.afterRender(screen).register((screen1, matrices, mouseX, mouseY, delta) -> onDraw(matrices, genericContainerScreen.getScreenHandler().slots.subList(0, genericContainerScreen.getScreenHandler().getRows() * 9))); + onSetScreen(genericContainerScreen); } else { - containerSolverManager.clearScreen(); + clearScreen(); } }); } -- cgit From fd4f8bea1c742c8905782ed260d1f1992a732575 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Fri, 19 May 2023 22:49:49 -0400 Subject: Fixed matrixStack translation --- .../java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java index 635475bf..756583f7 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java @@ -1,6 +1,7 @@ package me.xmrvizzy.skyblocker.gui; import com.mojang.blaze3d.systems.RenderSystem; +import me.xmrvizzy.skyblocker.mixin.HandledScreenAccessor; import me.xmrvizzy.skyblocker.skyblock.dungeon.CroesusHelper; import me.xmrvizzy.skyblocker.skyblock.dungeon.terminal.ColorTerminal; import me.xmrvizzy.skyblocker.skyblock.dungeon.terminal.OrderTerminal; @@ -42,7 +43,12 @@ public class ContainerSolverManager extends DrawableHelper { public void init() { ScreenEvents.BEFORE_INIT.register((client, screen, scaledWidth, scaledHeight) -> { if (Utils.isOnSkyblock && screen instanceof GenericContainerScreen genericContainerScreen) { - ScreenEvents.afterRender(screen).register((screen1, matrices, mouseX, mouseY, delta) -> onDraw(matrices, genericContainerScreen.getScreenHandler().slots.subList(0, genericContainerScreen.getScreenHandler().getRows() * 9))); + ScreenEvents.afterRender(screen).register((screen1, matrices, mouseX, mouseY, delta) -> { + matrices.push(); + matrices.translate(((HandledScreenAccessor) genericContainerScreen).getX(), ((HandledScreenAccessor) genericContainerScreen).getY(), 0); + onDraw(matrices, genericContainerScreen.getScreenHandler().slots.subList(0, genericContainerScreen.getScreenHandler().getRows() * 9)); + matrices.pop(); + }); onSetScreen(genericContainerScreen); } else { clearScreen(); -- cgit From 61b13fd1b4010dd4e13d62e365c81ae52cb881fa Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Sat, 20 May 2023 00:13:32 -0400 Subject: Fixed highlight rendering through tooltips --- src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java index 756583f7..850e96ea 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java @@ -45,7 +45,7 @@ public class ContainerSolverManager extends DrawableHelper { if (Utils.isOnSkyblock && screen instanceof GenericContainerScreen genericContainerScreen) { ScreenEvents.afterRender(screen).register((screen1, matrices, mouseX, mouseY, delta) -> { matrices.push(); - matrices.translate(((HandledScreenAccessor) genericContainerScreen).getX(), ((HandledScreenAccessor) genericContainerScreen).getY(), 0); + matrices.translate(((HandledScreenAccessor) genericContainerScreen).getX(), ((HandledScreenAccessor) genericContainerScreen).getY(), 300); onDraw(matrices, genericContainerScreen.getScreenHandler().slots.subList(0, genericContainerScreen.getScreenHandler().getRows() * 9)); matrices.pop(); }); @@ -88,7 +88,6 @@ public class ContainerSolverManager extends DrawableHelper { return; if (highlights == null) highlights = currentSolver.getColors(groups, slotMap(slots)); - RenderSystem.disableDepthTest(); RenderSystem.colorMask(true, true, true, false); for (ColorHighlight highlight : highlights) { Slot slot = slots.get(highlight.slot()); @@ -96,7 +95,6 @@ public class ContainerSolverManager extends DrawableHelper { fillGradient(matrices, slot.x, slot.y, slot.x + 16, slot.y + 16, color, color); } RenderSystem.colorMask(true, true, true, true); - RenderSystem.enableDepthTest(); } private Map slotMap(List slots) { -- cgit From 4fcccc53c1b312d7a5a956ae13fea46564a70b48 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Sat, 20 May 2023 12:19:17 -0400 Subject: Fixed highlight rendering through tooltips --- src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java index 850e96ea..8f3f7e2a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java @@ -88,6 +88,7 @@ public class ContainerSolverManager extends DrawableHelper { return; if (highlights == null) highlights = currentSolver.getColors(groups, slotMap(slots)); + RenderSystem.enableDepthTest(); RenderSystem.colorMask(true, true, true, false); for (ColorHighlight highlight : highlights) { Slot slot = slots.get(highlight.slot()); -- cgit From d9f368296ac5dac6dc60602e25cf1cc989e11ae5 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Sat, 20 May 2023 12:23:28 -0400 Subject: Require fabric api version 0.81.0 and loader version 0.14.19 --- gradle.properties | 6 +++--- src/main/resources/fabric.mod.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/gradle.properties b/gradle.properties index c883c1a2..c87195f7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,12 +3,12 @@ org.gradle.jvmargs=-Xmx1G -Dfile.encoding=UTF-8 -Duser.language=en -Duser.countr # Fabric Properties (https://fabricmc.net/versions.html) ## 1.19.4 minecraft_version=1.19.4 -yarn_mappings=1.19.4+build.1 -loader_version=0.14.18 +yarn_mappings=1.19.4+build.2 +loader_version=0.14.19 #Fabric api ## 1.19.4 -fabric_api_version=0.76.0+1.19.4 +fabric_api_version=0.81.1+1.19.4 # Dependencies ## Cloth Api (https://www.curseforge.com/minecraft/mc-mods/cloth-config/files) diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 00bf5b57..b3079acb 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -26,8 +26,8 @@ "skyblocker.mixins.json" ], "depends": { - "fabricloader": ">=0.14.17", - "fabric-api": ">=0.76.0+1.19.4", + "fabricloader": ">=0.14.19", + "fabric-api": ">=0.81.0+1.19.4", "cloth-config2": "*", "minecraft": "~1.19.4" }, -- cgit From 26b08d04f31cffee9caf77dacaadd7da3ba77dab Mon Sep 17 00:00:00 2001 From: ElSebas02 Date: Sun, 21 May 2023 00:56:25 +0000 Subject: Translated using Weblate (Spanish) [skip ci] Currently translated at 44.4% (84 of 189 strings) Translation: Skyblocker/Skyblocker Translate-URL: https://translate.hysky.de/projects/Skyblocker/skyblocker/es/ --- .../resources/assets/skyblocker/lang/es_ES.json | 58 +++++++++++++++++++++- 1 file changed, 56 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main/resources/assets/skyblocker/lang/es_ES.json b/src/main/resources/assets/skyblocker/lang/es_ES.json index 5aa55294..cde1bbd3 100644 --- a/src/main/resources/assets/skyblocker/lang/es_ES.json +++ b/src/main/resources/assets/skyblocker/lang/es_ES.json @@ -25,7 +25,7 @@ "text.autoconfig.skyblocker.option.general.itemTooltip.avg.BOTH": "Ambos", "text.autoconfig.skyblocker.option.general.itemTooltip.enableLowestBIN": "Habilitar el precio mas bajo de BIN", "text.autoconfig.skyblocker.option.general.itemTooltip.enableBazaarPrice": "Habilitar los precios de compra/venta del Bazar", - "text.autoconfig.skyblocker.option.general.itemTooltip.enableMuseumDate": "Habilitar Museo & datos", + "text.autoconfig.skyblocker.option.general.itemTooltip.enableMuseumDate": "Habilitar Fecha del Museo", "text.autoconfig.skyblocker.option.general.hitbox": "Cajas de Colisión", "text.autoconfig.skyblocker.option.general.hitbox.oldFarmlandHitbox": "Habilitar la Caja de Colisión de la 1.8 para la tierra de cultivo", "text.autoconfig.skyblocker.option.general.hitbox.oldLeverHitbox": "Habilitar la Caja de Colisión de la 1.8 para la palanca", @@ -47,5 +47,59 @@ "text.autoconfig.skyblocker.option.quickNav.button4": "Botón 4", "text.autoconfig.skyblocker.option.quickNav.button5": "Botón 5", "text.autoconfig.skyblocker.option.quickNav.button6": "Botón 6", - "text.autoconfig.skyblocker.option.quickNav.button7": "Botón 7" + "text.autoconfig.skyblocker.option.quickNav.button7": "Botón 7", + "text.autoconfig.skyblocker.option.messages.hideImplosion": "Ocultar el mensaje de Implosion", + "text.autoconfig.skyblocker.option.messages.hideCombo": "Ocultar Mensajes de Combos", + "text.autoconfig.skyblocker.option.locations.dungeons.croesusHelper.@Tooltip": "Obscurece los cofres que ya han sido abiertos.", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enableBackground": "Habilitar Fondo", + "text.autoconfig.skyblocker.option.general.quicknav.enableQuicknav": "Habilitar Navegación Rápida", + "text.autoconfig.skyblocker.option.general.quicknav": "Navegación Rápida", + "text.autoconfig.skyblocker.option.general.itemTooltip": "Información extra de los objetos", + "skyblocker.itemTooltip.nullMessage": "§b[§6Skyblocker§b] §cEl precio en la información en los objetos se actualiza cada 60 segundos. De lo contrario revisa lastest.log", + "text.autoconfig.skyblocker.option.richPresence.info.@Tooltip": "Este valor no importa si estas ciclando", + "text.autoconfig.skyblocker.option.quickNav.button1.item": "Objeto", + "text.autoconfig.skyblocker.option.quickNav.button1.item.itemName": "Nombre del objeto", + "text.autoconfig.skyblocker.option.quickNav.button1.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button1.uiTitle": "Titulo de la Interfaz", + "text.autoconfig.skyblocker.option.quickNav.button2": "Botón 2", + "text.autoconfig.skyblocker.option.quickNav.button2.item": "Objeto", + "text.autoconfig.skyblocker.option.quickNav.button2.item.itemName": "Nombre del objeto", + "text.autoconfig.skyblocker.option.quickNav.button3.item": "Objeto", + "text.autoconfig.skyblocker.option.quickNav.button3.item.itemName": "Nombre del objeto", + "text.autoconfig.skyblocker.option.messages.hideAds": "Ocultar anuncios del Chat Publico", + "text.autoconfig.skyblocker.option.messages.hideTeleportPad": "Ocultar mensajes del Pad de Teletransporte", + "text.autoconfig.skyblocker.option.messages.hideAutopet": "Ocultar mensajes del Autopet", + "text.autoconfig.skyblocker.option.general.itemList": "Lista de Objetos", + "text.autoconfig.skyblocker.option.general.itemList.enableItemList": "Habilitar la Lista de Objetos", + "text.autoconfig.skyblocker.category.locations": "Localizaciones", + "text.autoconfig.skyblocker.option.locations.dungeons": "Mazmorras", + "text.autoconfig.skyblocker.option.locations.dungeons.croesusHelper": "Ayuda con Croesus", + "text.autoconfig.skyblocker.option.locations.dungeons.enableMap": "Habilitar Mapa", + "text.autoconfig.skyblocker.option.locations.dungeons.mapScaling": "Escala del Mapa", + "text.autoconfig.skyblocker.option.locations.dungeons.solveThreeWeirdos": "Resuelve el Acertijo de \"Los Tres Chiflados\"", + "text.autoconfig.skyblocker.option.locations.dungeons.blazesolver": "Resuelve el Acertijo del Blaze", + "text.autoconfig.skyblocker.option.locations.dungeons.solveTrivia": "Resuelve el Acertijo de Trivia", + "text.autoconfig.skyblocker.option.locations.dwarvenMines": "Minas Dwarven", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.enableDrillFuel": "Habilitar Combustible del Taladro", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.solveFetchur": "Resolver Fetchur", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud": "Interfaz de Dwarven", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enabled": "Habilitado", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.x": "X", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.y": "Y", + "text.autoconfig.skyblocker.category.messages": "Mensajes", + "text.autoconfig.skyblocker.option.messages.chatFilterResult.PASS": "Deshabilitado", + "text.autoconfig.skyblocker.option.messages.chatFilterResult.FILTER": "Filtro", + "text.autoconfig.skyblocker.option.messages.chatFilterResult.ACTION_BAR": "Mover a la barra de acción", + "text.autoconfig.skyblocker.option.messages.hideAbility": "Ocultar Mensaje de Enfriamiento (Cooldown)", + "text.autoconfig.skyblocker.option.messages.hideHeal": "Ocultar Mensajes de Curación", + "text.autoconfig.skyblocker.option.messages.hideAOTE": "Ocultar Mensajes de la AOTE", + "text.autoconfig.skyblocker.option.messages.hideMana": "Ocultar los Mensajes del Consumo de Maná de la Barra de Acción", + "text.autoconfig.skyblocker.option.messages.hideMana.@Tooltip": "Da una mejor experiencia con FancyBar", + "skyblocker.update.update_message": "§b[§6Skyblocker§b] §2¡Hay Una nueva versión disponible!", + "skyblocker.update.update_link": " §2§nHas Click Aquí§r", + "skyblocker.update.update_message_end": " §aPara conocer mas sobre las nuevas características.", + "skyblocker.update.hover_text": "Abrir Modrinth", + "text.autoconfig.skyblocker.option.general.enableUpdateNotification": "Notificaciones sobre actualizaciones", + "skyblocker.api.got_key": "§b[§6Skyblocker§b] §2¡Se añadió tu API key automáticamente!", + "skyblocker.updaterepository.failed": "§b[§6Skyblocker§b] §cLa actualización del repositorio local fallo. Elimina los archivos manualmente y reinicia el juego." } -- cgit From 5f05e7bf6c08880af5c3c00ae15c494ec5b87d9c Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Wed, 17 May 2023 23:11:15 -0400 Subject: Added docs to SkyblockerMod and Scheduler and refactored Scheduler --- .../java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 15 ++++++++ .../me/xmrvizzy/skyblocker/utils/Scheduler.java | 45 ++++++++++++++++------ 2 files changed, 48 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index 503d3a64..aa10b29a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -22,14 +22,22 @@ import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.minecraft.client.MinecraftClient; +/** + * 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 NAMESPACE = "skyblocker"; private static SkyblockerMod INSTANCE; + @SuppressWarnings("deprecation") public final Scheduler scheduler = new Scheduler(); 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; } @@ -38,6 +46,9 @@ public class SkyblockerMod implements ClientModInitializer { 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); @@ -62,6 +73,10 @@ public class SkyblockerMod implements ClientModInitializer { scheduler.scheduleCyclic(DwarvenHud::update, 40); } + /** + * 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.tick(); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java index 16e5b023..efba4995 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java @@ -1,27 +1,46 @@ package me.xmrvizzy.skyblocker.utils; +import me.xmrvizzy.skyblocker.SkyblockerMod; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.PriorityQueue; +/** + * A scheduler for running tasks at a later time. Tasks will be run synchronously on the main client thread. Use the instance stored in {@link SkyblockerMod#scheduler}. Do not instantiate this class. + */ public class Scheduler { private static final Logger LOGGER = LoggerFactory.getLogger(Scheduler.class); private int currentTick; private final PriorityQueue tasks; + /** + * Do not instantiate this class. Use {@link SkyblockerMod#scheduler} instead. + */ + @SuppressWarnings("DeprecatedIsStillUsed") + @Deprecated public Scheduler() { currentTick = 0; tasks = new PriorityQueue<>(); } + /** + * Schedules a task to run after a delay. + * @param task the task to run + * @param delay the delay in ticks + */ public void schedule(Runnable task, int delay) { if (delay < 0) LOGGER.warn("Scheduled a task with negative delay"); - ScheduledTask tmp = new ScheduledTask(currentTick + delay, task); + ScheduledTask tmp = new ScheduledTask(task, currentTick + delay); tasks.add(tmp); } + /** + * Schedules a task to run every period ticks. + * @param task the task to run + * @param period the period in ticks + */ public void scheduleCyclic(Runnable task, int period) { if (period <= 0) LOGGER.error("Attempted to schedule a cyclic task with period lower than 1"); @@ -38,23 +57,25 @@ public class Scheduler { } } - private class CyclicTask implements Runnable { - private final Runnable inner; - private final int period; - - public CyclicTask(Runnable task, int period) { - this.inner = task; - this.period = period; - } - + /** + * A task that runs every period ticks. More specifically, this task reschedules itself to run again after period ticks every time it runs. + * @param inner the task to run + * @param period the period in ticks + */ + private record CyclicTask(Runnable inner, int period) implements Runnable { @Override public void run() { - schedule(this, period); + SkyblockerMod.getInstance().scheduler.schedule(this, period); inner.run(); } } - private record ScheduledTask(int schedule, Runnable inner) implements Comparable, Runnable { + /** + * A task that runs at a specific tick, relative to {@link #currentTick}. + * @param inner the task to run + * @param schedule the tick to run at + */ + private record ScheduledTask(Runnable inner, int schedule) implements Comparable, Runnable { @Override public int compareTo(ScheduledTask o) { return schedule - o.schedule; -- cgit From 10ef8bb08547394468f231f66ba749d4c43a59e0 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Wed, 17 May 2023 23:18:48 -0400 Subject: Refactored mixins --- .../xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java | 4 ---- .../me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java | 1 + .../me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java | 1 - src/main/java/me/xmrvizzy/skyblocker/mixin/ScreenMixin.java | 12 ++++-------- 4 files changed, 5 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java index 237f6ba9..e59a3bfb 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java @@ -6,7 +6,6 @@ import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.world.ClientWorld; -// import net.minecraft.network.encryption.PlayerPublicKey; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -14,10 +13,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ClientPlayerEntity.class) public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity { - - // public ClientPlayerEntityMixin(ClientWorld world, GameProfile profile, PlayerPublicKey publicKey) { public ClientPlayerEntityMixin(ClientWorld world, GameProfile profile) { - // super(world, profile, publicKey); super(world, profile); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java index 29da4bd6..74cc4b1c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java @@ -26,6 +26,7 @@ public abstract class FarmlandBlockMixin extends Block { cir.setReturnValue(Block.createCuboidShape(0.0, 0.0, 0.0, 16.0, 16.0, 16.0)); } + @SuppressWarnings("deprecation") @Override public VoxelShape getCullingShape(BlockState state, BlockView world, BlockPos pos) { return Block.createCuboidShape(0.0, 0.0, 0.0, 16.0, 15.0, 16.0); diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java index 24e27c08..66ec5c15 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java @@ -13,7 +13,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(MinecraftClient.class) public abstract class MinecraftClientMixin { - @Shadow @Nullable public ClientPlayerEntity player; diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ScreenMixin.java index 14aa8868..7d54ccb0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ScreenMixin.java @@ -1,21 +1,18 @@ 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.Screen; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; +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; @Mixin(Screen.class) public abstract class ScreenMixin { - @Inject(at = @At("HEAD"), method = "renderTooltip(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/item/ItemStack;II)V", cancellable = true) public void skyblocker$renderTooltip(MatrixStack matrices, ItemStack itemStack, int x, int y, CallbackInfo ci) { Text stackName = itemStack.getName(); @@ -24,5 +21,4 @@ public abstract class ScreenMixin { ci.cancel(); } } - } -- cgit From 3391f91c985c9e34867b651cd3b0c34bd8950cc8 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Fri, 19 May 2023 23:19:10 -0400 Subject: Refactored Utils fields to use getters --- .../xmrvizzy/skyblocker/chat/ChatMessageListener.java | 2 +- .../xmrvizzy/skyblocker/discord/DiscordRPCManager.java | 2 +- .../skyblocker/gui/ContainerSolverManager.java | 2 +- .../skyblocker/mixin/ClientPlayerEntityMixin.java | 2 +- .../xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java | 2 +- .../me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java | 14 +++++++------- .../skyblocker/mixin/InventoryScreenMixin.java | 2 +- .../xmrvizzy/skyblocker/mixin/ItemRendererMixin.java | 2 +- .../me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java | 2 +- .../skyblocker/mixin/MinecraftClientMixin.java | 2 +- .../java/me/xmrvizzy/skyblocker/mixin/ScreenMixin.java | 2 +- .../xmrvizzy/skyblocker/skyblock/BackpackPreview.java | 2 +- .../skyblocker/skyblock/dungeon/DungeonBlaze.java | 2 +- .../xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java | 2 +- .../skyblocker/skyblock/item/PriceInfoTooltip.java | 4 ++-- .../xmrvizzy/skyblocker/skyblock/item/WikiLookup.java | 2 +- .../skyblocker/skyblock/quicknav/QuickNav.java | 2 +- src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java | 18 +++++++++++++++--- 18 files changed, 39 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java index 9e6b5f64..f502a356 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java @@ -62,7 +62,7 @@ public interface ChatMessageListener { } // Register EVENT to ClientReceiveMessageEvents.ALLOW_GAME from fabric api ClientReceiveMessageEvents.ALLOW_GAME.register((message, overlay) -> { - if (!Utils.isOnSkyblock) { + if (!Utils.isOnSkyblock()) { return true; } ChatFilterResult result = EVENT.invoker().onMessage(message, message.getString()); diff --git a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java index 10b88ce8..4fa5265f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java @@ -37,7 +37,7 @@ public class DiscordRPCManager { SkyblockerConfig.get().richPresence.customMessage = "Playing Skyblock"; AutoConfig.getConfigHolder(SkyblockerConfig.class).save(); } - if ((!Utils.isOnSkyblock || !SkyblockerConfig.get().richPresence.enableRichPresence) && DiscordIPC.isConnected()){ + if ((!Utils.isOnSkyblock() || !SkyblockerConfig.get().richPresence.enableRichPresence) && DiscordIPC.isConnected()){ DiscordIPC.stop(); LOGGER.info("Discord RPC stopped"); return; diff --git a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java index 8f3f7e2a..e4ff229d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java @@ -42,7 +42,7 @@ public class ContainerSolverManager extends DrawableHelper { public void init() { ScreenEvents.BEFORE_INIT.register((client, screen, scaledWidth, scaledHeight) -> { - if (Utils.isOnSkyblock && screen instanceof GenericContainerScreen genericContainerScreen) { + if (Utils.isOnSkyblock() && screen instanceof GenericContainerScreen genericContainerScreen) { ScreenEvents.afterRender(screen).register((screen1, matrices, mouseX, mouseY, delta) -> { matrices.push(); matrices.translate(((HandledScreenAccessor) genericContainerScreen).getX(), ((HandledScreenAccessor) genericContainerScreen).getY(), 300); diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java index e59a3bfb..76c4e8ec 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java @@ -19,6 +19,6 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity @Inject(method = "dropSelectedItem", at = @At("HEAD"), cancellable = true) public void skyblocker$dropSelectedItem(boolean dropEntireStack, CallbackInfoReturnable cir) { - if (Utils.isOnSkyblock) HotbarSlotLock.handleDropSelectedItem(this.getInventory().selectedSlot, cir); + if (Utils.isOnSkyblock()) HotbarSlotLock.handleDropSelectedItem(this.getInventory().selectedSlot, cir); } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java index 74cc4b1c..761f8a68 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java @@ -22,7 +22,7 @@ public abstract class FarmlandBlockMixin extends Block { @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) public void skyblocker$onGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { - if (Utils.isOnSkyblock && SkyblockerConfig.get().general.hitbox.oldFarmlandHitbox) + if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.hitbox.oldFarmlandHitbox) cir.setReturnValue(Block.createCuboidShape(0.0, 0.0, 0.0, 16.0, 16.0, 16.0)); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java index c137e6c8..e17795ab 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java @@ -50,7 +50,7 @@ public abstract class InGameHudMixin extends DrawableHelper { @Inject(method = "setOverlayMessage(Lnet/minecraft/text/Text;Z)V", at = @At("HEAD"), cancellable = true) private void skyblocker$onSetOverlayMessage(Text message, boolean tinted, CallbackInfo ci) { - if (!Utils.isOnSkyblock || !SkyblockerConfig.get().general.bars.enableBars) + if (!Utils.isOnSkyblock() || !SkyblockerConfig.get().general.bars.enableBars) return; String msg = message.getString(); String res = statusBarTracker.update(msg, SkyblockerConfig.get().messages.hideMana); @@ -63,7 +63,7 @@ public abstract class InGameHudMixin extends DrawableHelper { @Inject(method = "renderHotbar", at = @At("HEAD")) public void skyblocker$renderHotbar(float f, MatrixStack matrices, CallbackInfo ci) { - if (Utils.isOnSkyblock) { + if (Utils.isOnSkyblock()) { hotbarMatrices = matrices; hotbarSlotIndex = 0; } @@ -71,7 +71,7 @@ public abstract class InGameHudMixin extends DrawableHelper { @Inject(method = "renderHotbarItem", at = @At("HEAD")) public void skyblocker$renderHotbarItem(MatrixStack matrices, int i, int j, float f, PlayerEntity player, ItemStack stack, int seed, CallbackInfo ci) { - if (Utils.isOnSkyblock) { + if (Utils.isOnSkyblock()) { if (HotbarSlotLock.isLocked(hotbarSlotIndex)) { RenderSystem.setShaderTexture(0, SLOT_LOCK); DrawableHelper.drawTexture(hotbarMatrices, i, j, 0, 0, 16, 16); @@ -82,18 +82,18 @@ public abstract class InGameHudMixin extends DrawableHelper { @Inject(method = "renderExperienceBar", at = @At("HEAD"), cancellable = true) private void skyblocker$renderExperienceBar(MatrixStack matrices, int x, CallbackInfo ci) { - if (Utils.isOnSkyblock && SkyblockerConfig.get().general.bars.enableBars) + if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.bars.enableBars) ci.cancel(); } @Inject(method = "renderStatusBars", at = @At("HEAD"), cancellable = true) private void skyblocker$renderStatusBars(MatrixStack matrices, CallbackInfo ci) { - if (!Utils.isOnSkyblock) + if (!Utils.isOnSkyblock()) return; if (statusBars.render(matrices, scaledWidth, scaledHeight)) ci.cancel(); - if (Utils.isInDungeons && SkyblockerConfig.get().locations.dungeons.enableMap) + if (Utils.isInDungeons() && SkyblockerConfig.get().locations.dungeons.enableMap) DungeonMap.render(matrices); RenderSystem.setShaderTexture(0, GUI_ICONS_TEXTURE); @@ -101,7 +101,7 @@ public abstract class InGameHudMixin extends DrawableHelper { @Inject(method = "renderMountHealth", at = @At("HEAD"), cancellable = true) private void skyblocker$renderMountHealth(MatrixStack matrices, CallbackInfo ci) { - if (Utils.isOnSkyblock && SkyblockerConfig.get().general.bars.enableBars) + if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.bars.enableBars) ci.cancel(); } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java index 8de390cc..64a1a4fe 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java @@ -19,7 +19,7 @@ public abstract class InventoryScreenMixin { ) ) RecipeBookWidget skyblocker$constructor() { - if (Utils.isOnSkyblock && SkyblockerConfig.get().general.itemList.enableItemList) + if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.itemList.enableItemList) return new ItemListWidget(); else return new RecipeBookWidget(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java index b9ddc156..26bafc14 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java @@ -27,7 +27,7 @@ public abstract class ItemRendererMixin { @Inject(method = "renderGuiItemOverlay(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At("HEAD")) public void skyblocker$renderItemBar(MatrixStack matrices, TextRenderer renderer, ItemStack stack, int x, int y, @Nullable String countLabel, CallbackInfo ci) { - if (Utils.isOnSkyblock && SkyblockerConfig.get().locations.dwarvenMines.enableDrillFuel) { + if (Utils.isOnSkyblock() && SkyblockerConfig.get().locations.dwarvenMines.enableDrillFuel) { if (!stack.isEmpty()) { NbtCompound tag = stack.getNbt(); if (tag != null && tag.contains("ExtraAttributes")) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java index c28a7096..505de202 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java @@ -22,7 +22,7 @@ public abstract class LeverBlockMixin extends WallMountedBlock { @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) public void skyblocker$onGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { - if (Utils.isOnSkyblock) { + if (Utils.isOnSkyblock()) { VoxelShape shape = OldLever.getShape(state.get(FACE), state.get(FACING)); if (shape != null) cir.setReturnValue(shape); diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java index 66ec5c15..0c1977fe 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java @@ -19,7 +19,7 @@ public abstract class MinecraftClientMixin { @Inject(method = "handleInputEvents", at = @At("HEAD")) public void skyblocker$handleInputEvents(CallbackInfo ci) { - if (Utils.isOnSkyblock) { + if (Utils.isOnSkyblock()) { HotbarSlotLock.handleInputEvents(player); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ScreenMixin.java index 7d54ccb0..9389b792 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ScreenMixin.java @@ -17,7 +17,7 @@ public abstract class ScreenMixin { public void skyblocker$renderTooltip(MatrixStack matrices, ItemStack itemStack, int x, int y, CallbackInfo ci) { Text stackName = itemStack.getName(); String strName = stackName.getString(); - if (Utils.isOnSkyblock && SkyblockerConfig.get().general.hideEmptyTooltips && strName.equals(" ")) { + if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.hideEmptyTooltips && strName.equals(" ")) { ci.cancel(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java index a6dfe31d..4820bc0f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java @@ -51,7 +51,7 @@ public class BackpackPreview extends DrawableHelper { public static void tick() { Utils.sbChecker(); // force update isOnSkyblock to prevent crash on disconnect - if (Utils.isOnSkyblock) { + if (Utils.isOnSkyblock()) { // save all dirty storages saveStorage(); // update save dir based on uuid and sb profile diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java index 4554372b..219f4258 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java @@ -21,7 +21,7 @@ public class DungeonBlaze { public static void update() { ClientWorld world = MinecraftClient.getInstance().world; - if (world == null || !Utils.isInDungeons) return; + if (world == null || !Utils.isInDungeons()) return; if(!renderHooked){ WorldRenderEvents.END.register(DungeonBlaze::blazeRenderer); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java index 42fcc36a..fdc39c42 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -27,7 +27,7 @@ public class Reparty extends ChatPatternListener { super("^(?:You are not currently in a party\\.|Party (?:Membe|Moderato)rs(?: \\(([0-9]+)\\)|:( .*)))$"); this.repartying = false; ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal("rp").executes(context -> { - if (!Utils.isOnSkyblock || this.repartying || client.player == null) return 0; + if (!Utils.isOnSkyblock() || this.repartying || client.player == null) return 0; this.repartying = true; client.player.networkHandler.sendCommand("p list"); return 0; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java index d9263f9a..04f2b596 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java @@ -45,7 +45,7 @@ public class PriceInfoTooltip { private static final Map apiAddresses; public static void onInjectTooltip(ItemStack stack, TooltipContext context, List lines) { - if (!Utils.isOnSkyblock || client.player == null) return; + if (!Utils.isOnSkyblock() || client.player == null) return; String name = getInternalNameFromNBT(stack); if (name == null) return; @@ -295,7 +295,7 @@ public class PriceInfoTooltip { public static int minute = -1; public static void init() { skyblocker.scheduler.scheduleCyclic(() -> { - if (!Utils.isOnSkyblock && 0 < minute++) { + if (!Utils.isOnSkyblock() && 0 < minute++) { nullMsgSend = false; return; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java index 305720d0..d05e5cb8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java @@ -42,7 +42,7 @@ public class WikiLookup { } public static void openWiki(Slot slot) { - if (Utils.isOnSkyblock) { + if (Utils.isOnSkyblock()) { id = getSkyblockId(slot); try { String wikiLink = ItemRegistry.getWikiLink(id); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java index 8ab49754..1d58435e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java @@ -19,7 +19,7 @@ public class QuickNav { public static void init() { ScreenEvents.AFTER_INIT.register((client, screen, scaledWidth, scaledHeight) -> { - if (Utils.isOnSkyblock && SkyblockerConfig.get().quickNav.enableQuickNav && screen instanceof HandledScreen) { + if (Utils.isOnSkyblock() && SkyblockerConfig.get().quickNav.enableQuickNav && screen instanceof HandledScreen) { String screenTitle = screen.getTitle().getString().trim(); List buttons = QuickNav.init(screenTitle); for (QuickNavButton button : buttons) Screens.getButtons(screen).add(button); diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java index 532de0dd..e1de7b6e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java @@ -15,9 +15,21 @@ import java.util.Collections; import java.util.List; public class Utils { - public static boolean isOnSkyblock = false; - public static boolean isInDungeons = false; - public static boolean isInjected = false; + private static boolean isOnSkyblock = false; + private static boolean isInDungeons = false; + private static boolean isInjected = false; + + public static boolean isOnSkyblock() { + return isOnSkyblock; + } + + public static boolean isInDungeons() { + return isInDungeons; + } + + public static boolean isInjected() { + return isInjected; + } public static void sbChecker() { MinecraftClient client = MinecraftClient.getInstance(); -- cgit From 5c8a90cb61f97f710513aac3cd880e04472024a8 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Fri, 19 May 2023 23:21:49 -0400 Subject: Added docs to Utils --- src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java index e1de7b6e..028386ab 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java @@ -14,6 +14,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +/** + * Utility variables and methods for retrieving Skyblock related information. + */ public class Utils { private static boolean isOnSkyblock = false; private static boolean isInDungeons = false; -- cgit From 7abc0a2e873689a1b8d89990398329415ddd67e2 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Sat, 20 May 2023 14:03:53 -0400 Subject: Refactored skyblocker.mixins.json --- src/main/resources/skyblocker.mixins.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json index 91c856a0..2eba53e3 100644 --- a/src/main/resources/skyblocker.mixins.json +++ b/src/main/resources/skyblocker.mixins.json @@ -3,18 +3,18 @@ "package": "me.xmrvizzy.skyblocker.mixin", "compatibilityLevel": "JAVA_17", "client": [ + "AccessorWorldRenderer", "ClientPlayerEntityMixin", - "InGameHudMixin", - "ItemRendererMixin", - "LeverBlockMixin", "FarmlandBlockMixin", - "MinecraftClientMixin", - "AccessorWorldRenderer", "GenericContainerScreenHandlerMixin", + "HandledScreenAccessor", "HandledScreenMixin", + "InGameHudMixin", "InventoryScreenMixin", + "ItemRendererMixin", + "LeverBlockMixin", + "MinecraftClientMixin", "RecipeBookWidgetAccessor", - "HandledScreenAccessor", "ScreenMixin" ], "injectors": { -- cgit From d0b8b3a93a17347b86d3895bfd5ee3f996eb220e Mon Sep 17 00:00:00 2001 From: Fix3d Date: Tue, 23 May 2023 21:11:12 +0300 Subject: return instead of assign --- .../java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java index 04f2b596..25e849ad 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java @@ -344,7 +344,7 @@ public class PriceInfoTooltip { LOGGER.warn("[Skyblocker] Failed to download " + type + " prices!", e); if (type.equals("lowest bins")) - lowestPricesJson = downloadPrices("lowest bins backup"); + return downloadPrices("lowest bins backup"); return null; } -- cgit From 01b896893e36ac634afd395117f7af14940ad8bd Mon Sep 17 00:00:00 2001 From: MrDonSebas <40346644+IngeSebastian@users.noreply.github.com> Date: Tue, 23 May 2023 22:37:44 +0000 Subject: Translated using Weblate (Spanish) [skip ci] Currently translated at 67.1% (127 of 189 strings) Translation: Skyblocker/Skyblocker Translate-URL: https://translate.hysky.de/projects/Skyblocker/skyblocker/es/ --- .../resources/assets/skyblocker/lang/es_ES.json | 45 +++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/resources/assets/skyblocker/lang/es_ES.json b/src/main/resources/assets/skyblocker/lang/es_ES.json index cde1bbd3..7c5ea062 100644 --- a/src/main/resources/assets/skyblocker/lang/es_ES.json +++ b/src/main/resources/assets/skyblocker/lang/es_ES.json @@ -101,5 +101,48 @@ "skyblocker.update.hover_text": "Abrir Modrinth", "text.autoconfig.skyblocker.option.general.enableUpdateNotification": "Notificaciones sobre actualizaciones", "skyblocker.api.got_key": "§b[§6Skyblocker§b] §2¡Se añadió tu API key automáticamente!", - "skyblocker.updaterepository.failed": "§b[§6Skyblocker§b] §cLa actualización del repositorio local fallo. Elimina los archivos manualmente y reinicia el juego." + "skyblocker.updaterepository.failed": "§b[§6Skyblocker§b] §cLa actualización del repositorio local fallo. Elimina los archivos manualmente y reinicia el juego.", + "text.autoconfig.skyblocker.option.quickNav.button11": "Botón 11", + "text.autoconfig.skyblocker.option.quickNav.button9.item.itemName": "Nombre del objeto", + "text.autoconfig.skyblocker.option.quickNav.button3.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button3.uiTitle": "Titulo de la Interfaz", + "text.autoconfig.skyblocker.option.quickNav.button4.item": "Objeto", + "text.autoconfig.skyblocker.option.quickNav.button4.item.itemName": "Nombre del objeto", + "text.autoconfig.skyblocker.option.quickNav.button4.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button4.uiTitle": "Titulo de la Interfaz", + "text.autoconfig.skyblocker.option.quickNav.button5.item": "Objeto", + "text.autoconfig.skyblocker.option.quickNav.button5.item.itemName": "Nombre del objeto", + "text.autoconfig.skyblocker.option.quickNav.button5.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button5.uiTitle": "Titulo de la Interfaz", + "text.autoconfig.skyblocker.option.quickNav.button6.item": "Objeto", + "text.autoconfig.skyblocker.option.quickNav.button6.item.itemName": "Nombre del objeto", + "text.autoconfig.skyblocker.option.quickNav.button6.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button8": "Botón 8", + "text.autoconfig.skyblocker.option.quickNav.button9": "Botón 9", + "text.autoconfig.skyblocker.option.quickNav.button10": "Botón 10", + "text.autoconfig.skyblocker.option.quickNav.button6.uiTitle": "Titulo de la Interfaz", + "text.autoconfig.skyblocker.option.quickNav.button7.item": "Objeto", + "text.autoconfig.skyblocker.option.quickNav.button7.item.itemName": "Nombre del objeto", + "text.autoconfig.skyblocker.option.quickNav.button7.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button7.uiTitle": "Titulo de la Interfaz", + "text.autoconfig.skyblocker.option.quickNav.button8.item": "Objeto", + "text.autoconfig.skyblocker.option.quickNav.button8.item.itemName": "Nombre del objeto", + "text.autoconfig.skyblocker.option.quickNav.button8.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button8.uiTitle": "Titulo de la Interfaz", + "text.autoconfig.skyblocker.option.quickNav.button9.item": "Objeto", + "text.autoconfig.skyblocker.option.quickNav.button9.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button9.uiTitle": "Titulo de la Interfaz", + "text.autoconfig.skyblocker.option.quickNav.button10.item": "Objeto", + "text.autoconfig.skyblocker.option.quickNav.button10.item.itemName": "Nombre del objeto", + "text.autoconfig.skyblocker.option.quickNav.button10.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button10.uiTitle": "Titulo de la Interfaz", + "text.autoconfig.skyblocker.option.quickNav.button11.item": "Objeto", + "text.autoconfig.skyblocker.option.quickNav.button11.item.itemName": "Nombre del objeto", + "text.autoconfig.skyblocker.option.quickNav.button11.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button11.uiTitle": "Titulo de la Interfaz", + "text.autoconfig.skyblocker.option.quickNav.button12": "Botón 12", + "text.autoconfig.skyblocker.option.quickNav.button12.item": "Objeto", + "text.autoconfig.skyblocker.option.quickNav.button12.item.itemName": "Nombre del objeto", + "text.autoconfig.skyblocker.option.quickNav.button12.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button12.uiTitle": "Titulo de la Interfaz" } -- cgit From 45afbe02bba5fa6c8cb3f54a9fa44fbaa65be813 Mon Sep 17 00:00:00 2001 From: KdGaming0 Date: Wed, 24 May 2023 10:52:05 +0000 Subject: Translated using Weblate (Norwegian Bokmål) [skip ci] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 81.4% (154 of 189 strings) Translation: Skyblocker/Skyblocker Translate-URL: https://translate.hysky.de/projects/Skyblocker/skyblocker/nb_NO/ --- .../resources/assets/skyblocker/lang/nb_NO.json | 80 +++++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/resources/assets/skyblocker/lang/nb_NO.json b/src/main/resources/assets/skyblocker/lang/nb_NO.json index 3c7cae87..0f96ebb6 100644 --- a/src/main/resources/assets/skyblocker/lang/nb_NO.json +++ b/src/main/resources/assets/skyblocker/lang/nb_NO.json @@ -82,5 +82,83 @@ "text.autoconfig.skyblocker.option.quickNav.button1": "Knapp 1", "text.autoconfig.skyblocker.option.quickNav.button1.item.itemName": "Gjenstand navn", "text.autoconfig.skyblocker.option.quickNav.button3.render": "Rendering", - "text.autoconfig.skyblocker.option.quickNav.button4.uiTitle": "UI Tittel" + "text.autoconfig.skyblocker.option.quickNav.button4.uiTitle": "UI Tittel", + "text.autoconfig.skyblocker.option.quickNav.button6.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button6.clickEvent": "Klikk hendelse", + "text.autoconfig.skyblocker.option.quickNav.button8.clickEvent": "Klikk hendelse", + "text.autoconfig.skyblocker.option.quickNav.button10.clickEvent": "Klikk hendelse", + "text.autoconfig.skyblocker.option.quickNav.button12.item": "Gjenstand", + "text.autoconfig.skyblocker.option.general.itemList.enableItemList": "Aktiver gjenstad liste", + "text.autoconfig.skyblocker.option.locations.dungeons.blazesolver": "Løs Blaze-puslespillet", + "text.autoconfig.skyblocker.option.quickNav.button5.uiTitle": "UI Tittel", + "text.autoconfig.skyblocker.option.quickNav.button5.clickEvent": "Klikk hendelse", + "text.autoconfig.skyblocker.option.quickNav.button6": "Knapp 6", + "text.autoconfig.skyblocker.option.quickNav.button6.render": "Rendering", + "text.autoconfig.skyblocker.option.quickNav.button6.item": "Gjenstand", + "text.autoconfig.skyblocker.option.quickNav.button6.item.itemName": "Gjenstand navn", + "text.autoconfig.skyblocker.option.quickNav.button6.item.count": "Gjenstand mengde", + "text.autoconfig.skyblocker.option.quickNav.button6.uiTitle": "UI Tittel", + "text.autoconfig.skyblocker.option.quickNav.button7": "Knapp 7", + "text.autoconfig.skyblocker.option.quickNav.button7.render": "Rendering", + "text.autoconfig.skyblocker.option.quickNav.button7.item": "Gjenstand", + "text.autoconfig.skyblocker.option.quickNav.button7.item.itemName": "Gjenstand navn", + "text.autoconfig.skyblocker.option.quickNav.button7.item.count": "Gjenstand navn", + "text.autoconfig.skyblocker.option.quickNav.button7.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button7.uiTitle": "UI Tittel", + "text.autoconfig.skyblocker.option.quickNav.button7.clickEvent": "Klikk hendelse", + "text.autoconfig.skyblocker.option.quickNav.button8": "Knapp 8", + "text.autoconfig.skyblocker.option.quickNav.button8.render": "Rendering", + "text.autoconfig.skyblocker.option.quickNav.button8.item": "Gjenstand", + "text.autoconfig.skyblocker.option.quickNav.button8.item.itemName": "Gjenstand navn", + "text.autoconfig.skyblocker.option.quickNav.button8.item.count": "Gjenstand navn", + "text.autoconfig.skyblocker.option.quickNav.button8.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button8.uiTitle": "UI Tittel", + "text.autoconfig.skyblocker.option.quickNav.button9": "Knapp 8", + "text.autoconfig.skyblocker.option.quickNav.button9.render": "Rendering", + "text.autoconfig.skyblocker.option.quickNav.button9.item": "Gjenstand", + "text.autoconfig.skyblocker.option.quickNav.button9.item.itemName": "Gjenstand Navn", + "text.autoconfig.skyblocker.option.quickNav.button9.item.count": "Gjenstand navn", + "text.autoconfig.skyblocker.option.quickNav.button9.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button9.uiTitle": "UI Tittel", + "text.autoconfig.skyblocker.option.quickNav.button9.clickEvent": "Klikk hendelse", + "text.autoconfig.skyblocker.option.quickNav.button10": "Knapp 1", + "text.autoconfig.skyblocker.option.quickNav.button10.render": "Rendering", + "text.autoconfig.skyblocker.option.quickNav.button10.item": "Gjenstand", + "text.autoconfig.skyblocker.option.quickNav.button10.item.itemName": "Gjenstand Navn", + "text.autoconfig.skyblocker.option.quickNav.button10.item.count": "Gjenstand Mengde", + "text.autoconfig.skyblocker.option.quickNav.button10.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button10.uiTitle": "UI Tittel", + "text.autoconfig.skyblocker.option.quickNav.button11": "Knapp 1", + "text.autoconfig.skyblocker.option.quickNav.button11.render": "Rendering", + "text.autoconfig.skyblocker.option.quickNav.button11.item": "Gjenstand", + "text.autoconfig.skyblocker.option.quickNav.button11.item.itemName": "Gjenstand Navn", + "text.autoconfig.skyblocker.option.quickNav.button11.item.count": "Gjenstand Mengde", + "text.autoconfig.skyblocker.option.quickNav.button11.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button11.uiTitle": "UI Tittel", + "text.autoconfig.skyblocker.option.quickNav.button11.clickEvent": "Klikk hendelse", + "text.autoconfig.skyblocker.option.quickNav.button12": "Knapp 1", + "text.autoconfig.skyblocker.option.quickNav.button12.render": "Rendering", + "text.autoconfig.skyblocker.option.quickNav.button12.item.itemName": "Gjenstand Navn", + "text.autoconfig.skyblocker.option.quickNav.button12.item.count": "Gjenstand Mengde", + "text.autoconfig.skyblocker.option.quickNav.button12.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button12.uiTitle": "UI Tittel", + "text.autoconfig.skyblocker.option.quickNav.button12.clickEvent": "Klikk hendelse", + "text.autoconfig.skyblocker.option.general.itemList": "Gjenstand liste", + "text.autoconfig.skyblocker.option.locations.dungeons": "Dungeons", + "text.autoconfig.skyblocker.category.locations": "Lokasjoner", + "text.autoconfig.skyblocker.option.locations.dungeons.croesusHelper": "Croesus Hjelper", + "text.autoconfig.skyblocker.option.locations.dungeons.croesusHelper.@Tooltip": "Grå ut kister som allerede er åpnet.", + "text.autoconfig.skyblocker.option.locations.dungeons.enableMap": "Aktiver kart", + "text.autoconfig.skyblocker.option.locations.dungeons.mapScaling": "Kart skalering", + "text.autoconfig.skyblocker.option.locations.dungeons.solveThreeWeirdos": "Løs Three Weirdos-puslespillet", + "text.autoconfig.skyblocker.option.locations.dungeons.solveTrivia": "Solve the Blaze puzzle", + "text.autoconfig.skyblocker.option.locations.dungeons.terminals": "Terminalløser", + "text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveColor": "Løsning Velg farget", + "text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveOrder": "Løs klikk i rekkefølge", + "text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveStartsWith": "Løsning starter med", + "text.autoconfig.skyblocker.option.locations.dwarvenMines": "Dverggruver", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.enableDrillFuel": "Aktiver Drill Fuel", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.solveFetchur": "Løse Fetchur", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.solvePuzzler": "Løs Puzzler Puzzle", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud": "Dverg-HUD" } -- cgit From d31e9bc7fc0a1e874c42379bbbfacb3ad621eb1f Mon Sep 17 00:00:00 2001 From: PumpkinXD Date: Wed, 24 May 2023 19:19:01 +0000 Subject: Translated using Weblate (Chinese (Simplified)) [skip ci] Currently translated at 56.6% (107 of 189 strings) Translation: Skyblocker/Skyblocker Translate-URL: https://translate.hysky.de/projects/Skyblocker/skyblocker/zh_Hans/ --- .../resources/assets/skyblocker/lang/zh_cn.json | 30 ++++++++++++---------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/main/resources/assets/skyblocker/lang/zh_cn.json b/src/main/resources/assets/skyblocker/lang/zh_cn.json index 3f4ccdc8..c62be614 100644 --- a/src/main/resources/assets/skyblocker/lang/zh_cn.json +++ b/src/main/resources/assets/skyblocker/lang/zh_cn.json @@ -62,16 +62,16 @@ "text.autoconfig.skyblocker.category.locations": "位置", "text.autoconfig.skyblocker.option.locations.dungeons": "地牢", "text.autoconfig.skyblocker.option.locations.dungeons.croesusHelper": "Croesus助手", - "text.autoconfig.skyblocker.option.locations.dungeons.croesusHelper.@Tooltip": "用灰色显示出已经打开过的箱子", - "text.autoconfig.skyblocker.option.locations.dungeons.enableMap": "启用地图", + "text.autoconfig.skyblocker.option.locations.dungeons.croesusHelper.@Tooltip": "将打开过的箱子标记为灰色", + "text.autoconfig.skyblocker.option.locations.dungeons.enableMap": "启用地牢地图", "text.autoconfig.skyblocker.option.locations.dungeons.solveThreeWeirdos": "解决三怪人迷题", - "text.autoconfig.skyblocker.option.locations.dungeons.blazesolver": "解决烈焰人迷题", - "text.autoconfig.skyblocker.option.locations.dungeons.solveTrivia": "解决常识迷题", + "text.autoconfig.skyblocker.option.locations.dungeons.blazesolver": "烈焰人迷题助手", + "text.autoconfig.skyblocker.option.locations.dungeons.solveTrivia": "常识问答谜题助手", "text.autoconfig.skyblocker.option.locations.dungeons.terminals": "终端助手", - "text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveColor": "解决颜色迷题", - "text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveOrder": "解决排序迷题", - "text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveStartsWith": "解决开头字母迷题", - "text.autoconfig.skyblocker.option.locations.dwarvenMines": "矮人矿道", + "text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveColor": "选色终端助手", + "text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveOrder": "排序终端助手", + "text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveStartsWith": "首字母谜题终端助手", + "text.autoconfig.skyblocker.option.locations.dwarvenMines": "矮人矿井", "text.autoconfig.skyblocker.option.locations.dwarvenMines.enableDrillFuel": "显示钻头燃料", "text.autoconfig.skyblocker.option.locations.dwarvenMines.solveFetchur": "解决Fetchur的迷题", "text.autoconfig.skyblocker.option.locations.dwarvenMines.solvePuzzler": "解决Puzzler的迷题", @@ -86,14 +86,14 @@ "text.autoconfig.skyblocker.option.messages.chatFilterResult.ACTION_BAR": "移动到动作栏", "text.autoconfig.skyblocker.option.messages.hideAbility": "隐藏技能冷却", "text.autoconfig.skyblocker.option.messages.hideHeal": "隐藏治疗消息", - "text.autoconfig.skyblocker.option.messages.hideAOTE": "隐藏AOTE消息", - "text.autoconfig.skyblocker.option.messages.hideImplosion": "隐藏内爆技能消息", - "text.autoconfig.skyblocker.option.messages.hideMoltenWave": "隐藏熔融波技能消息", + "text.autoconfig.skyblocker.option.messages.hideAOTE": "隐藏瞬息之刃的提示消息", + "text.autoconfig.skyblocker.option.messages.hideImplosion": "隐藏核心爆裂技能的提示消息", + "text.autoconfig.skyblocker.option.messages.hideMoltenWave": "隐藏 Molten Wave 技能的提示消息", "text.autoconfig.skyblocker.option.messages.hideAds": "从公屏聊天中隐藏广告", "text.autoconfig.skyblocker.option.messages.hideTeleportPad": "隐藏传送点消息", "text.autoconfig.skyblocker.option.messages.hideCombo": "隐藏连杀消息", "text.autoconfig.skyblocker.option.messages.hideAutopet": "隐藏自动宠物消息", - "text.autoconfig.skyblocker.option.messages.hideMana": "在动作栏中隐藏魔力消耗信息", + "text.autoconfig.skyblocker.option.messages.hideMana": "在动作栏中隐藏法力消耗信息", "text.autoconfig.skyblocker.option.messages.hideMana.@Tooltip": "被已经提供了更好方案的属性条代替", "skyblocker.update.update_message": "§b[§6Skyblocker§b] §2有新版本可用!", "skyblocker.update.update_link": " §2§n点击这里§r", @@ -101,5 +101,9 @@ "skyblocker.update.hover_text": "打开Modrinth", "text.autoconfig.skyblocker.option.general.enableUpdateNotification": "更新通知", "skyblocker.api.got_key": "§b[§6Skyblocker§b] §2自动设置你的API秘钥!", - "text.autoconfig.skyblocker.option.quickNav.button1.item.nbt": "NBT" + "text.autoconfig.skyblocker.option.quickNav.button1.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button4.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.general.hideEmptyTooltips": "隐藏菜单中分隔符的物品信息", + "text.autoconfig.skyblocker.option.locations.dungeons.mapScaling": "地图界面大小", + "skyblocker.updaterepository.failed": "§b[§6Skyblocker§b] §c更新本地数据存储库失败,请手动删库并重启游戏" } -- cgit From 7ff39fb9ddc008d0add5f6d351932cbab8ea4521 Mon Sep 17 00:00:00 2001 From: PumpkinXD Date: Thu, 25 May 2023 11:07:48 +0000 Subject: Translated using Weblate (Chinese (Simplified)) [skip ci] Currently translated at 100.0% (189 of 189 strings) Translation: Skyblocker/Skyblocker Translate-URL: https://translate.hysky.de/projects/Skyblocker/skyblocker/zh_Hans/ --- .../resources/assets/skyblocker/lang/zh_cn.json | 122 +++++++++++++++++---- 1 file changed, 102 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/main/resources/assets/skyblocker/lang/zh_cn.json b/src/main/resources/assets/skyblocker/lang/zh_cn.json index c62be614..ef752b6e 100644 --- a/src/main/resources/assets/skyblocker/lang/zh_cn.json +++ b/src/main/resources/assets/skyblocker/lang/zh_cn.json @@ -9,7 +9,7 @@ "text.autoconfig.skyblocker.option.general.bars.barpositions": "配置属性条位置", "text.autoconfig.skyblocker.option.general.bars.barpositions.LAYER1": "下排", "text.autoconfig.skyblocker.option.general.bars.barpositions.LAYER2": "上排", - "text.autoconfig.skyblocker.option.general.bars.barpositions.RIGHT": "右侧", + "text.autoconfig.skyblocker.option.general.bars.barpositions.RIGHT": "快捷栏右侧", "text.autoconfig.skyblocker.option.general.bars.barpositions.NONE": "禁用", "text.autoconfig.skyblocker.option.general.bars.barpositions.healthBarPosition": "生命条位置", "text.autoconfig.skyblocker.option.general.bars.barpositions.manaBarPosition": "法力条位置", @@ -23,8 +23,8 @@ "text.autoconfig.skyblocker.option.general.itemTooltip.enableAvgBIN": "显示平均BIN(立即购买)价格", "text.autoconfig.skyblocker.option.general.itemTooltip.avg": "平均类型", "text.autoconfig.skyblocker.option.general.itemTooltip.avg.@Tooltip": "你可以选择查看多少天的平均价格", - "text.autoconfig.skyblocker.option.general.itemTooltip.avg.ONE_DAY": "1天价格", - "text.autoconfig.skyblocker.option.general.itemTooltip.avg.THREE_DAY": "3天价格", + "text.autoconfig.skyblocker.option.general.itemTooltip.avg.ONE_DAY": "一日内均价", + "text.autoconfig.skyblocker.option.general.itemTooltip.avg.THREE_DAY": "三日内均价", "text.autoconfig.skyblocker.option.general.itemTooltip.avg.BOTH": "同时显示", "text.autoconfig.skyblocker.option.general.itemTooltip.enableLowestBIN": "显示最低BIN(立即购买)价格", "text.autoconfig.skyblocker.option.general.itemTooltip.enableBazaarPrice": "显示集市购买/卖出价格", @@ -37,26 +37,26 @@ "text.autoconfig.skyblocker.category.richPresence": "Discord活动状态", "text.autoconfig.skyblocker.option.richPresence.info": "Skyblock信息", "text.autoconfig.skyblocker.option.richPresence.info.PURSE": "钱包", - "text.autoconfig.skyblocker.option.richPresence.info.BITS": "比特", + "text.autoconfig.skyblocker.option.richPresence.info.BITS": "点券", "text.autoconfig.skyblocker.option.richPresence.info.LOCATION": "位置", "text.autoconfig.skyblocker.option.richPresence.info.@Tooltip": "如果您正在循环模式,这个值将不会生效", "text.autoconfig.skyblocker.option.richPresence.cycleMode": "循环Skyblock信息", - "text.autoconfig.skyblocker.option.richPresence.enableRichPresence": "启用", + "text.autoconfig.skyblocker.option.richPresence.enableRichPresence": "已启用", "text.autoconfig.skyblocker.option.richPresence.customMessage": "自定义消息", "text.autoconfig.skyblocker.category.quickNav": "快速导航", "text.autoconfig.skyblocker.option.quickNav.enableQuickNav": "启用快速导航", - "text.autoconfig.skyblocker.option.quickNav.button1": "按钮1", - "text.autoconfig.skyblocker.option.quickNav.button2": "按钮2", - "text.autoconfig.skyblocker.option.quickNav.button3": "按钮3", - "text.autoconfig.skyblocker.option.quickNav.button4": "按钮4", - "text.autoconfig.skyblocker.option.quickNav.button5": "按钮5", - "text.autoconfig.skyblocker.option.quickNav.button6": "按钮6", - "text.autoconfig.skyblocker.option.quickNav.button7": "按钮7", - "text.autoconfig.skyblocker.option.quickNav.button8": "按钮8", - "text.autoconfig.skyblocker.option.quickNav.button9": "按钮9", - "text.autoconfig.skyblocker.option.quickNav.button10": "按钮10", - "text.autoconfig.skyblocker.option.quickNav.button11": "按钮11", - "text.autoconfig.skyblocker.option.quickNav.button12": "按钮12", + "text.autoconfig.skyblocker.option.quickNav.button1": "热键1", + "text.autoconfig.skyblocker.option.quickNav.button2": "热键2", + "text.autoconfig.skyblocker.option.quickNav.button3": "热键3", + "text.autoconfig.skyblocker.option.quickNav.button4": "热键4", + "text.autoconfig.skyblocker.option.quickNav.button5": "热键5", + "text.autoconfig.skyblocker.option.quickNav.button6": "热键6", + "text.autoconfig.skyblocker.option.quickNav.button7": "热键7", + "text.autoconfig.skyblocker.option.quickNav.button8": "热键8", + "text.autoconfig.skyblocker.option.quickNav.button9": "热键9", + "text.autoconfig.skyblocker.option.quickNav.button10": "热键10", + "text.autoconfig.skyblocker.option.quickNav.button11": "热键11", + "text.autoconfig.skyblocker.option.quickNav.button12": "热键12", "text.autoconfig.skyblocker.option.general.itemList": "物品列表", "text.autoconfig.skyblocker.option.general.itemList.enableItemList": "启用物品列表", "text.autoconfig.skyblocker.category.locations": "位置", @@ -101,9 +101,91 @@ "skyblocker.update.hover_text": "打开Modrinth", "text.autoconfig.skyblocker.option.general.enableUpdateNotification": "更新通知", "skyblocker.api.got_key": "§b[§6Skyblocker§b] §2自动设置你的API秘钥!", - "text.autoconfig.skyblocker.option.quickNav.button1.item.nbt": "NBT", - "text.autoconfig.skyblocker.option.quickNav.button4.item.nbt": "NBT", + "text.autoconfig.skyblocker.option.quickNav.button1.item.nbt": "物品NBT", + "text.autoconfig.skyblocker.option.quickNav.button4.item.nbt": "物品NBT", "text.autoconfig.skyblocker.option.general.hideEmptyTooltips": "隐藏菜单中分隔符的物品信息", "text.autoconfig.skyblocker.option.locations.dungeons.mapScaling": "地图界面大小", - "skyblocker.updaterepository.failed": "§b[§6Skyblocker§b] §c更新本地数据存储库失败,请手动删库并重启游戏" + "skyblocker.updaterepository.failed": "§b[§6Skyblocker§b] §c更新本地数据存储库失败,请手动删库并重启游戏", + "text.autoconfig.skyblocker.option.quickNav.button1.item": "热键所显示物品", + "text.autoconfig.skyblocker.option.quickNav.button1.uiTitle": "快捷界面标题", + "text.autoconfig.skyblocker.option.quickNav.button1.item.itemName": "物品ID", + "text.autoconfig.skyblocker.option.quickNav.button1.clickEvent": "点击时所执行的命令", + "text.autoconfig.skyblocker.option.quickNav.button1.render": "是否显示该热键", + "text.autoconfig.skyblocker.option.quickNav.button2.render": "是否显示该热键", + "text.autoconfig.skyblocker.option.quickNav.button2.item": "热键所显示物品", + "text.autoconfig.skyblocker.option.quickNav.button2.item.itemName": "物品ID", + "text.autoconfig.skyblocker.option.quickNav.button2.item.count": "物品数量", + "text.autoconfig.skyblocker.option.quickNav.button1.item.count": "物品数量", + "text.autoconfig.skyblocker.option.quickNav.button2.item.nbt": "物品NBT", + "text.autoconfig.skyblocker.option.quickNav.button2.uiTitle": "快捷界面标题", + "text.autoconfig.skyblocker.option.quickNav.button2.clickEvent": "点击时所执行的命令", + "text.autoconfig.skyblocker.option.quickNav.button3.render": "是否显示该热键", + "text.autoconfig.skyblocker.option.quickNav.button3.item.itemName": "物品ID", + "text.autoconfig.skyblocker.option.quickNav.button3.item.count": "物品数量", + "text.autoconfig.skyblocker.option.quickNav.button3.item.nbt": "物品NBT", + "text.autoconfig.skyblocker.option.quickNav.button3.uiTitle": "快捷界面标题", + "text.autoconfig.skyblocker.option.quickNav.button3.clickEvent": "点击时所执行的命令", + "text.autoconfig.skyblocker.option.quickNav.button4.render": "是否显示该热键", + "text.autoconfig.skyblocker.option.quickNav.button4.item": "热键所显示物品", + "text.autoconfig.skyblocker.option.quickNav.button4.item.itemName": "物品ID", + "text.autoconfig.skyblocker.option.quickNav.button4.uiTitle": "快捷界面标题", + "text.autoconfig.skyblocker.option.quickNav.button4.clickEvent": "点击时所执行的命令", + "text.autoconfig.skyblocker.option.quickNav.button5.render": "是否显示该热键", + "text.autoconfig.skyblocker.option.quickNav.button5.item": "热键所显示物品", + "text.autoconfig.skyblocker.option.quickNav.button5.item.itemName": "物品ID", + "text.autoconfig.skyblocker.option.quickNav.button5.item.count": "物品数量", + "text.autoconfig.skyblocker.option.quickNav.button5.item.nbt": "物品NBT", + "text.autoconfig.skyblocker.option.quickNav.button5.uiTitle": "快捷界面标题", + "text.autoconfig.skyblocker.option.quickNav.button5.clickEvent": "点击时所执行的命令", + "text.autoconfig.skyblocker.option.quickNav.button6.render": "是否显示该热键", + "text.autoconfig.skyblocker.option.quickNav.button6.item": "热键所显示物品", + "text.autoconfig.skyblocker.option.quickNav.button6.item.itemName": "物品ID", + "text.autoconfig.skyblocker.option.quickNav.button6.item.count": "物品数量", + "text.autoconfig.skyblocker.option.quickNav.button6.uiTitle": "快捷界面标题", + "text.autoconfig.skyblocker.option.quickNav.button6.clickEvent": "点击时所执行的命令", + "text.autoconfig.skyblocker.option.quickNav.button7.render": "是否显示该热键", + "text.autoconfig.skyblocker.option.quickNav.button7.item": "热键所显示物品", + "text.autoconfig.skyblocker.option.quickNav.button7.item.itemName": "物品ID", + "text.autoconfig.skyblocker.option.quickNav.button7.item.count": "热键物品显示数量", + "text.autoconfig.skyblocker.option.quickNav.button7.item.nbt": "物品NBT", + "text.autoconfig.skyblocker.option.quickNav.button7.uiTitle": "快捷界面标题", + "text.autoconfig.skyblocker.option.quickNav.button8.render": "是否显示该热键", + "text.autoconfig.skyblocker.option.quickNav.button8.item": "热键所显示物品", + "text.autoconfig.skyblocker.option.quickNav.button8.item.itemName": "物品ID", + "text.autoconfig.skyblocker.option.quickNav.button8.item.count": "热键物品显示数量", + "text.autoconfig.skyblocker.option.quickNav.button8.item.nbt": "物品NBT", + "text.autoconfig.skyblocker.option.quickNav.button8.uiTitle": "快捷界面标题", + "text.autoconfig.skyblocker.option.quickNav.button8.clickEvent": "点击时所执行的命令", + "text.autoconfig.skyblocker.option.quickNav.button9.render": "是否显示该热键", + "text.autoconfig.skyblocker.option.quickNav.button9.item": "热键所显示物品", + "text.autoconfig.skyblocker.option.quickNav.button9.item.count": "物品数量", + "text.autoconfig.skyblocker.option.quickNav.button9.item.nbt": "物品NBT", + "text.autoconfig.skyblocker.option.quickNav.button9.uiTitle": "快捷界面标题", + "text.autoconfig.skyblocker.option.quickNav.button9.clickEvent": "点击时所执行的命令", + "text.autoconfig.skyblocker.option.quickNav.button10.render": "是否显示该热键", + "text.autoconfig.skyblocker.option.quickNav.button10.item": "热键所显示物品", + "text.autoconfig.skyblocker.option.quickNav.button10.item.itemName": "物品ID", + "text.autoconfig.skyblocker.option.quickNav.button10.item.count": "物品数量", + "text.autoconfig.skyblocker.option.quickNav.button10.item.nbt": "物品NBT", + "text.autoconfig.skyblocker.option.quickNav.button10.uiTitle": "快捷界面标题", + "text.autoconfig.skyblocker.option.quickNav.button12.clickEvent": "点击时所执行的命令", + "text.autoconfig.skyblocker.option.quickNav.button11.render": "是否显示该热键", + "text.autoconfig.skyblocker.option.quickNav.button11.item": "热键所显示物品", + "text.autoconfig.skyblocker.option.quickNav.button11.item.itemName": "物品ID", + "text.autoconfig.skyblocker.option.quickNav.button11.item.count": "物品数量", + "text.autoconfig.skyblocker.option.quickNav.button11.item.nbt": "物品NBT", + "text.autoconfig.skyblocker.option.quickNav.button11.uiTitle": "快捷界面标题", + "text.autoconfig.skyblocker.option.quickNav.button11.clickEvent": "点击时所执行的命令", + "text.autoconfig.skyblocker.option.quickNav.button12.render": "是否显示该热键", + "text.autoconfig.skyblocker.option.quickNav.button12.item": "热键所显示物品", + "text.autoconfig.skyblocker.option.quickNav.button12.item.itemName": "物品ID", + "text.autoconfig.skyblocker.option.quickNav.button12.item.count": "物品数量", + "text.autoconfig.skyblocker.option.quickNav.button12.item.nbt": "物品NBT", + "text.autoconfig.skyblocker.option.quickNav.button12.uiTitle": "快捷界面标题", + "text.autoconfig.skyblocker.option.quickNav.button3.item": "热键所显示物品", + "text.autoconfig.skyblocker.option.quickNav.button4.item.count": "物品数量", + "text.autoconfig.skyblocker.option.quickNav.button6.item.nbt": "物品NBT", + "text.autoconfig.skyblocker.option.quickNav.button7.clickEvent": "点击时所执行的命令", + "text.autoconfig.skyblocker.option.quickNav.button9.item.itemName": "物品ID", + "text.autoconfig.skyblocker.option.quickNav.button10.clickEvent": "点击时所执行的命令" } -- cgit From 18e0b1c1b18a6a0795894b71565f1950b513f666 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Sat, 20 May 2023 14:10:46 -0400 Subject: Add Fishing Helper --- .../skyblocker/config/SkyblockerConfig.java | 8 +++ .../mixin/ClientPlayNetworkHandlerMixin.java | 24 +++++++++ .../skyblocker/skyblock/FishingHelper.java | 61 ++++++++++++++++++++++ .../resources/assets/skyblocker/lang/en_us.json | 6 ++- src/main/resources/skyblocker.mixins.json | 1 + 5 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/FishingHelper.java (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index e2e7b4ca..13f70137 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -142,6 +142,10 @@ public class SkyblockerConfig implements ConfigData { @ConfigEntry.Gui.CollapsibleObject() public Bars bars = new Bars(); + @ConfigEntry.Category("fishing") + @ConfigEntry.Gui.CollapsibleObject() + public Fishing fishing = new Fishing(); + @ConfigEntry.Category("itemList") @ConfigEntry.Gui.CollapsibleObject() public ItemList itemList = new ItemList(); @@ -199,6 +203,10 @@ public class SkyblockerConfig implements ConfigData { } } + public static class Fishing { + public boolean enableFishingHelper = true; + } + public static class Hitbox { public boolean oldFarmlandHitbox = true; public boolean oldLeverHitbox = false; diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java new file mode 100644 index 00000000..80c98473 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java @@ -0,0 +1,24 @@ +package me.xmrvizzy.skyblocker.mixin; + +import me.xmrvizzy.skyblocker.skyblock.FishingHelper; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientPlayNetworkHandler; +import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ClientPlayNetworkHandler.class) +public abstract class ClientPlayNetworkHandlerMixin { + @Shadow + @Final + private MinecraftClient client; + + @Inject(method = "onPlaySound", at = @At("RETURN")) + private void skyblockmod_onPlaySound(PlaySoundS2CPacket packet, CallbackInfo ci) { + FishingHelper.onSound(client, packet); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FishingHelper.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FishingHelper.java new file mode 100644 index 00000000..790b27bf --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FishingHelper.java @@ -0,0 +1,61 @@ +package me.xmrvizzy.skyblocker.skyblock; + +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import net.fabricmc.fabric.api.event.player.UseItemCallback; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.FishingRodItem; +import net.minecraft.item.ItemStack; +import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; +import net.minecraft.util.TypedActionResult; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; + +public class FishingHelper { + private static long startTime; + private static Vec3d normalYawVector; + + public static void init() { + UseItemCallback.EVENT.register((player, world, hand) -> { + ItemStack stack = player.getStackInHand(hand); + if (stack.getItem() instanceof FishingRodItem) { + if (player.fishHook == null) { + start(player); + } else { + reset(); + } + } + return TypedActionResult.pass(stack); + }); + } + + public static void start(PlayerEntity player) { + startTime = System.currentTimeMillis(); + float yawRad = player.getYaw() * 0.017453292F; + normalYawVector = new Vec3d(-MathHelper.sin(yawRad), 0, MathHelper.cos(yawRad)); + } + + public static void reset() { + startTime = 0; + } + + public static void onSound(MinecraftClient client, PlaySoundS2CPacket packet) { + String path = packet.getSound().value().getId().getPath(); + if (SkyblockerConfig.get().general.fishing.enableFishingHelper && startTime != 0 && System.currentTimeMillis() >= startTime + 2000 && ("entity.generic.splash".equals(path) || "entity.player.splash".equals(path))) { + ClientPlayerEntity player = client.player; + if (player != null && player.fishHook != null) { + Vec3d soundToFishHook = player.fishHook.getPos().subtract(packet.getX(), 0, packet.getZ()); + if (Math.abs(normalYawVector.x * soundToFishHook.z - normalYawVector.z * soundToFishHook.x) < 0.2D && Math.abs(normalYawVector.dotProduct(soundToFishHook)) < 4D && player.getPos().squaredDistanceTo(packet.getX(), packet.getY(), packet.getZ()) > 1D) { + client.inGameHud.setTitleTicks(0, 10, 5); + client.inGameHud.setTitle(Text.translatable("skyblocker.fishing.reelNow").formatted(Formatting.GREEN)); + reset(); + } + } else { + reset(); + } + } + } +} diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 4809b8ab..80e3e05e 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -17,6 +17,8 @@ "text.autoconfig.skyblocker.option.general.bars.barpositions.manaBarPosition": "Mana Bar Position", "text.autoconfig.skyblocker.option.general.bars.barpositions.defenceBarPosition": "Defence Bar Position", "text.autoconfig.skyblocker.option.general.bars.barpositions.experienceBarPosition": "Experience Bar Position", + "text.autoconfig.skyblocker.option.general.fishing": "Fishing Helper", + "text.autoconfig.skyblocker.option.general.fishing.enableFishingHelper": "Enable Fishing Helper", "text.autoconfig.skyblocker.option.general.quicknav": "Quicknav", "text.autoconfig.skyblocker.option.general.quicknav.enableQuicknav": "Enable Quicknav", "text.autoconfig.skyblocker.option.general.backpackPreviewWithoutShift": "View backpack preview without holding Shift", @@ -197,5 +199,7 @@ "skyblocker.updaterepository.failed": "§b[§6Skyblocker§b] §cUpdating local repository failed. Remove files manually and restart game.", - "skyblocker.api.got_key": "§b[§6Skyblocker§b] §2Automatically set your API key!" + "skyblocker.api.got_key": "§b[§6Skyblocker§b] §2Automatically set your API key!", + + "skyblocker.fishing.reelNow": "Reel in now!" } diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json index 2eba53e3..1744b5ba 100644 --- a/src/main/resources/skyblocker.mixins.json +++ b/src/main/resources/skyblocker.mixins.json @@ -5,6 +5,7 @@ "client": [ "AccessorWorldRenderer", "ClientPlayerEntityMixin", + "ClientPlayNetworkHandlerMixin", "FarmlandBlockMixin", "GenericContainerScreenHandlerMixin", "HandledScreenAccessor", -- cgit From d467fab0a81541d5518728edf1028fa2f2dd3e54 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Sat, 20 May 2023 17:23:26 -0400 Subject: Call FishingHelper.init --- src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index aa10b29a..64c09a2f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -5,6 +5,7 @@ import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.discord.DiscordRPCManager; import me.xmrvizzy.skyblocker.gui.ContainerSolverManager; import me.xmrvizzy.skyblocker.skyblock.BackpackPreview; +import me.xmrvizzy.skyblocker.skyblock.FishingHelper; import me.xmrvizzy.skyblocker.skyblock.HotbarSlotLock; import me.xmrvizzy.skyblocker.skyblock.StatusBarTracker; import me.xmrvizzy.skyblocker.skyblock.api.RepositoryUpdate; @@ -65,6 +66,7 @@ public class SkyblockerMod implements ClientModInitializer { ChatMessageListener.init(); UpdateChecker.init(); DiscordRPCManager.init(); + FishingHelper.init(); containerSolverManager.init(); scheduler.scheduleCyclic(Utils::sbChecker, 20); scheduler.scheduleCyclic(DiscordRPCManager::update, 100); -- cgit From 049f988c904e7bee85e4d0a03e2dbbcf0047d27e Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Mon, 22 May 2023 20:30:12 -0400 Subject: Add Livid Color --- .../java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 7 ++++ .../skyblocker/config/SkyblockerConfig.java | 2 + .../skyblocker/skyblock/dungeon/LividColor.java | 43 ++++++++++++++++++++++ .../skyblocker/skyblock/dungeon/Reparty.java | 11 +++--- .../skyblock/quicknav/QuickNavButton.java | 3 +- .../skyblocker/utils/MessageScheduler.java | 43 ++++++++++++++++++++++ .../me/xmrvizzy/skyblocker/utils/Scheduler.java | 13 ++++--- 7 files changed, 110 insertions(+), 12 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/LividColor.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index 64c09a2f..2ab1b45e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -11,11 +11,13 @@ import me.xmrvizzy.skyblocker.skyblock.StatusBarTracker; import me.xmrvizzy.skyblocker.skyblock.api.RepositoryUpdate; import me.xmrvizzy.skyblocker.skyblock.api.StatsCommand; import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonBlaze; +import me.xmrvizzy.skyblocker.skyblock.dungeon.LividColor; import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup; import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNav; +import me.xmrvizzy.skyblocker.utils.MessageScheduler; import me.xmrvizzy.skyblocker.utils.Scheduler; import me.xmrvizzy.skyblocker.utils.UpdateChecker; import me.xmrvizzy.skyblocker.utils.Utils; @@ -32,6 +34,7 @@ public class SkyblockerMod implements ClientModInitializer { @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(); @@ -66,20 +69,24 @@ public class SkyblockerMod implements ClientModInitializer { ChatMessageListener.init(); UpdateChecker.init(); DiscordRPCManager.init(); + LividColor.init(); FishingHelper.init(); containerSolverManager.init(); scheduler.scheduleCyclic(Utils::sbChecker, 20); scheduler.scheduleCyclic(DiscordRPCManager::update, 100); scheduler.scheduleCyclic(DungeonBlaze::update, 4); + scheduler.scheduleCyclic(LividColor::update, 10); scheduler.scheduleCyclic(BackpackPreview::tick, 50); scheduler.scheduleCyclic(DwarvenHud::update, 40); } /** * 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.tick(); + messageScheduler.tick(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 13f70137..65e5c392 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -269,6 +269,8 @@ public class SkyblockerConfig implements ConfigData { public boolean solveThreeWeirdos = true; public boolean blazesolver = true; public boolean solveTrivia = true; + public boolean lividColor = true; + public String lividColorText = "[color]"; @ConfigEntry.Gui.CollapsibleObject() public Terminals terminals = new Terminals(); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/LividColor.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/LividColor.java new file mode 100644 index 00000000..d05c8cb9 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/LividColor.java @@ -0,0 +1,43 @@ +package me.xmrvizzy.skyblocker.skyblock.dungeon; + +import me.xmrvizzy.skyblocker.SkyblockerMod; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.Utils; +import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; +import net.minecraft.client.MinecraftClient; +import net.minecraft.util.math.BlockPos; + +public class LividColor { + private static int tenTicks = 0; + + public static void init() { + ClientReceiveMessageEvents.ALLOW_GAME.register((message, overlay) -> { + if (SkyblockerConfig.get().locations.dungeons.lividColor && message.getString().equals("[BOSS] Livid: I respect you for making it to here, but I'll be your undoing.")) { + tenTicks = 8; + } + return true; + }); + } + + public static void update() { + MinecraftClient client = MinecraftClient.getInstance(); + if (tenTicks != 0) { + if (SkyblockerConfig.get().locations.dungeons.lividColor && Utils.isInDungeons() && client.world != null) { + if (tenTicks == 1) { + SkyblockerMod.getInstance().messageScheduler.sendMessageAfterCooldown(SkyblockerConfig.get().locations.dungeons.lividColorText.replace("[color]", "red")); + tenTicks = 0; + return; + } + String key = client.world.getBlockState(new BlockPos(5, 110, 42)).getBlock().getTranslationKey(); + if (key.startsWith("block.minecraft.") && key.endsWith("wool") && !key.endsWith("red_wool")) { + SkyblockerMod.getInstance().messageScheduler.sendMessageAfterCooldown(SkyblockerConfig.get().locations.dungeons.lividColorText.replace("[color]", key.substring(16, key.length() - 5))); + tenTicks = 0; + return; + } + tenTicks--; + } else { + tenTicks = 0; + } + } + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java index fdc39c42..d6e799ab 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -29,7 +29,7 @@ public class Reparty extends ChatPatternListener { ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal("rp").executes(context -> { if (!Utils.isOnSkyblock() || this.repartying || client.player == null) return 0; this.repartying = true; - client.player.networkHandler.sendCommand("p list"); + SkyblockerMod.getInstance().messageScheduler.sendMessageAfterCooldown("/p list"); return 0; }))); } @@ -63,16 +63,15 @@ public class Reparty extends ChatPatternListener { this.repartying = false; return; } - sendCommand(playerEntity, "p disband", 1); + sendCommand("p disband", 1); for (int i = 0; i < this.players.length; ++i) { String command = "p invite " + this.players[i]; - sendCommand(playerEntity, command, i + 2); + sendCommand(command, i + 2); } skyblocker.scheduler.schedule(() -> this.repartying = false, this.players.length + 2); } - private void sendCommand(ClientPlayerEntity player, String command, int delay) { - // skyblocker.scheduler.schedule(() -> player.sendChatMessage(command, Text.of(command)), delay * BASE_DELAY); - skyblocker.scheduler.schedule(() -> player.networkHandler.sendCommand(command), delay * BASE_DELAY); + private void sendCommand(String command, int delay) { + skyblocker.messageScheduler.queueMessage(command, delay * BASE_DELAY); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java index e31827ab..7269840a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNavButton.java @@ -2,6 +2,7 @@ package me.xmrvizzy.skyblocker.skyblock.quicknav; import com.mojang.blaze3d.systems.RenderSystem; +import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.mixin.HandledScreenAccessor; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -57,7 +58,7 @@ public class QuickNavButton extends ClickableWidget { public void onClick(double mouseX, double mouseY) { if (!this.toggled) { this.toggled = true; - CLIENT.player.networkHandler.sendCommand(command.replace("/", "")); + SkyblockerMod.getInstance().messageScheduler.sendMessageAfterCooldown(command); // TODO : add null check with log error } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java b/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java new file mode 100644 index 00000000..85cc963d --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java @@ -0,0 +1,43 @@ +package me.xmrvizzy.skyblocker.utils; + +import net.minecraft.client.MinecraftClient; + +/** + * A scheduler for sending chat messages or commands. Use the instance in {@link me.xmrvizzy.skyblocker.SkyblockerMod#messageScheduler SkyblockerMod.messageScheduler}. Do not instantiate this class. + */ +@SuppressWarnings("deprecation") +public class MessageScheduler extends Scheduler { + private long lastMessage = 0; + + public void sendMessageAfterCooldown(String message) { + if (lastMessage + 200 < System.currentTimeMillis()) { + sendMessage(message); + lastMessage = System.currentTimeMillis(); + } else { + tasks.add(new ScheduledTask(() -> sendMessage(message), 0)); + } + } + + private void sendMessage(String message) { + if (MinecraftClient.getInstance().player != null) { + MinecraftClient.getInstance().inGameHud.getChatHud().addToMessageHistory(message); + if (message.startsWith("/")) { + MinecraftClient.getInstance().player.networkHandler.sendCommand(message.substring(1)); + } else { + MinecraftClient.getInstance().player.networkHandler.sendChatMessage(message); + } + } + } + + public void queueMessage(String message, int delay) { + tasks.add(new ScheduledTask(() -> sendMessage(message), delay)); + } + + @Override + protected void runTask(Runnable task) { + if (lastMessage + 200 < System.currentTimeMillis()) { + task.run(); + lastMessage = System.currentTimeMillis(); + } + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java index efba4995..09db3f93 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java @@ -12,7 +12,7 @@ import java.util.PriorityQueue; public class Scheduler { private static final Logger LOGGER = LoggerFactory.getLogger(Scheduler.class); private int currentTick; - private final PriorityQueue tasks; + protected final PriorityQueue tasks; /** * Do not instantiate this class. Use {@link SkyblockerMod#scheduler} instead. @@ -52,17 +52,20 @@ public class Scheduler { currentTick += 1; ScheduledTask task; while ((task = tasks.peek()) != null && task.schedule <= currentTick) { - tasks.poll(); - task.run(); + runTask(tasks.poll()); } } + protected void runTask(Runnable task){ + task.run(); + } + /** * A task that runs every period ticks. More specifically, this task reschedules itself to run again after period ticks every time it runs. * @param inner the task to run * @param period the period in ticks */ - private record CyclicTask(Runnable inner, int period) implements Runnable { + protected record CyclicTask(Runnable inner, int period) implements Runnable { @Override public void run() { SkyblockerMod.getInstance().scheduler.schedule(this, period); @@ -75,7 +78,7 @@ public class Scheduler { * @param inner the task to run * @param schedule the tick to run at */ - private record ScheduledTask(Runnable inner, int schedule) implements Comparable, Runnable { + protected record ScheduledTask(Runnable inner, int schedule) implements Comparable, Runnable { @Override public int compareTo(ScheduledTask o) { return schedule - o.schedule; -- cgit From 429d84d8b1ec54a1e96611b4bbb7403b2c19bc65 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Mon, 22 May 2023 21:25:29 -0400 Subject: Add English localization --- src/main/resources/assets/skyblocker/lang/en_us.json | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 80e3e05e..65cb1956 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -160,6 +160,8 @@ "text.autoconfig.skyblocker.option.locations.dungeons.solveThreeWeirdos": "Solve Three Weirdos Puzzle", "text.autoconfig.skyblocker.option.locations.dungeons.blazesolver": "Solve Blaze Puzzle", "text.autoconfig.skyblocker.option.locations.dungeons.solveTrivia": "Solve Trivia Puzzle", + "text.autoconfig.skyblocker.option.locations.dungeons.lividColor": "Livid Color", + "text.autoconfig.skyblocker.option.locations.dungeons.lividColorText": "Livid Color Text", "text.autoconfig.skyblocker.option.locations.dungeons.terminals": "Terminal Solvers", "text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveColor": "Solve Select Colored", "text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveOrder": "Solve Click In Order", -- cgit From 98e875d281b99de6df4e150656e501a3121d2d81 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Sun, 28 May 2023 19:38:12 -0400 Subject: Fix Reparty commands and update config --- .../java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java | 11 +++++++++-- .../me/xmrvizzy/skyblocker/skyblock/dungeon/LividColor.java | 8 ++++---- .../java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java | 4 ++-- src/main/resources/assets/skyblocker/lang/en_us.json | 5 ++++- 4 files changed, 19 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 65e5c392..c87f0ad9 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -269,12 +269,19 @@ public class SkyblockerConfig implements ConfigData { public boolean solveThreeWeirdos = true; public boolean blazesolver = true; public boolean solveTrivia = true; - public boolean lividColor = true; - public String lividColorText = "[color]"; + @ConfigEntry.Gui.CollapsibleObject + public LividColor lividColor = new LividColor(); @ConfigEntry.Gui.CollapsibleObject() public Terminals terminals = new Terminals(); } + public static class LividColor { + @ConfigEntry.Gui.Tooltip() + public boolean enableLividColor = true; + @ConfigEntry.Gui.Tooltip() + public String lividColorText = "The livid color is [color]"; + } + public static class Terminals { public boolean solveColor = true; public boolean solveOrder = true; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/LividColor.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/LividColor.java index d05c8cb9..276a41b6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/LividColor.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/LividColor.java @@ -12,7 +12,7 @@ public class LividColor { public static void init() { ClientReceiveMessageEvents.ALLOW_GAME.register((message, overlay) -> { - if (SkyblockerConfig.get().locations.dungeons.lividColor && message.getString().equals("[BOSS] Livid: I respect you for making it to here, but I'll be your undoing.")) { + if (SkyblockerConfig.get().locations.dungeons.lividColor.enableLividColor && message.getString().equals("[BOSS] Livid: I respect you for making it to here, but I'll be your undoing.")) { tenTicks = 8; } return true; @@ -22,15 +22,15 @@ public class LividColor { public static void update() { MinecraftClient client = MinecraftClient.getInstance(); if (tenTicks != 0) { - if (SkyblockerConfig.get().locations.dungeons.lividColor && Utils.isInDungeons() && client.world != null) { + if (SkyblockerConfig.get().locations.dungeons.lividColor.enableLividColor && Utils.isInDungeons() && client.world != null) { if (tenTicks == 1) { - SkyblockerMod.getInstance().messageScheduler.sendMessageAfterCooldown(SkyblockerConfig.get().locations.dungeons.lividColorText.replace("[color]", "red")); + SkyblockerMod.getInstance().messageScheduler.sendMessageAfterCooldown(SkyblockerConfig.get().locations.dungeons.lividColor.lividColorText.replace("[color]", "red")); tenTicks = 0; return; } String key = client.world.getBlockState(new BlockPos(5, 110, 42)).getBlock().getTranslationKey(); if (key.startsWith("block.minecraft.") && key.endsWith("wool") && !key.endsWith("red_wool")) { - SkyblockerMod.getInstance().messageScheduler.sendMessageAfterCooldown(SkyblockerConfig.get().locations.dungeons.lividColorText.replace("[color]", key.substring(16, key.length() - 5))); + SkyblockerMod.getInstance().messageScheduler.sendMessageAfterCooldown(SkyblockerConfig.get().locations.dungeons.lividColor.lividColorText.replace("[color]", key.substring(16, key.length() - 5))); tenTicks = 0; return; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java index d6e799ab..29c37b94 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -63,9 +63,9 @@ public class Reparty extends ChatPatternListener { this.repartying = false; return; } - sendCommand("p disband", 1); + sendCommand("/p disband", 1); for (int i = 0; i < this.players.length; ++i) { - String command = "p invite " + this.players[i]; + String command = "/p invite " + this.players[i]; sendCommand(command, i + 2); } skyblocker.scheduler.schedule(() -> this.repartying = false, this.players.length + 2); diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 65cb1956..922f73a9 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -161,7 +161,10 @@ "text.autoconfig.skyblocker.option.locations.dungeons.blazesolver": "Solve Blaze Puzzle", "text.autoconfig.skyblocker.option.locations.dungeons.solveTrivia": "Solve Trivia Puzzle", "text.autoconfig.skyblocker.option.locations.dungeons.lividColor": "Livid Color", - "text.autoconfig.skyblocker.option.locations.dungeons.lividColorText": "Livid Color Text", + "text.autoconfig.skyblocker.option.locations.dungeons.lividColor.enableLividColor": "Enable Livid Color", + "text.autoconfig.skyblocker.option.locations.dungeons.lividColor.enableLividColor.@Tooltip": "Send the livid color in the chat during the Livid boss fight.", + "text.autoconfig.skyblocker.option.locations.dungeons.lividColor.lividColorText": "Livid Color Text", + "text.autoconfig.skyblocker.option.locations.dungeons.lividColor.lividColorText.@Tooltip": "Text which will be sent in the chat during the Livid boss fight. The string \"[color]\" will be replaced with the livid color.", "text.autoconfig.skyblocker.option.locations.dungeons.terminals": "Terminal Solvers", "text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveColor": "Solve Select Colored", "text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveOrder": "Solve Click In Order", -- cgit From 300fe03100274d0e4f75e1294d71542cd0cc8e0e Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Tue, 30 May 2023 11:23:46 -0400 Subject: Fix MessageScheduler removing and not sending message tasks during cooldown --- src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java | 6 ++++-- src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java | 7 ++++--- 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java b/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java index 85cc963d..8aff5517 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java @@ -14,7 +14,7 @@ public class MessageScheduler extends Scheduler { sendMessage(message); lastMessage = System.currentTimeMillis(); } else { - tasks.add(new ScheduledTask(() -> sendMessage(message), 0)); + queueMessage(message, 0); } } @@ -34,10 +34,12 @@ public class MessageScheduler extends Scheduler { } @Override - protected void runTask(Runnable task) { + protected boolean runTask(Runnable task) { if (lastMessage + 200 < System.currentTimeMillis()) { task.run(); lastMessage = System.currentTimeMillis(); + return true; } + return false; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java index 09db3f93..73c15efc 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java @@ -51,13 +51,14 @@ public class Scheduler { public void tick() { currentTick += 1; ScheduledTask task; - while ((task = tasks.peek()) != null && task.schedule <= currentTick) { - runTask(tasks.poll()); + while ((task = tasks.peek()) != null && task.schedule <= currentTick && runTask(task)) { + tasks.poll(); } } - protected void runTask(Runnable task){ + protected boolean runTask(Runnable task) { task.run(); + return true; } /** -- cgit From d5bdb1ef2bf50084fb59029184224b84f0b99806 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Tue, 30 May 2023 11:35:48 -0400 Subject: Fix MessageScheduler not scheduling relative to current tick --- src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java | 2 +- src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java b/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java index 8aff5517..a46bb9f3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java @@ -30,7 +30,7 @@ public class MessageScheduler extends Scheduler { } public void queueMessage(String message, int delay) { - tasks.add(new ScheduledTask(() -> sendMessage(message), delay)); + schedule(() -> sendMessage(message), delay); } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java index 73c15efc..7313ec10 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java @@ -12,7 +12,7 @@ import java.util.PriorityQueue; public class Scheduler { private static final Logger LOGGER = LoggerFactory.getLogger(Scheduler.class); private int currentTick; - protected final PriorityQueue tasks; + private final PriorityQueue tasks; /** * Do not instantiate this class. Use {@link SkyblockerMod#scheduler} instead. -- cgit From 69e794ffcd06fe14f76f368b33d5af0e4bc60b3a Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Tue, 30 May 2023 11:43:13 -0400 Subject: Refactored schedulers and added docs --- .../skyblocker/utils/MessageScheduler.java | 22 +++++++++++++-- .../me/xmrvizzy/skyblocker/utils/Scheduler.java | 32 ++++++++++++++-------- 2 files changed, 41 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java b/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java index a46bb9f3..ac6aa293 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/MessageScheduler.java @@ -7,10 +7,22 @@ import net.minecraft.client.MinecraftClient; */ @SuppressWarnings("deprecation") public class MessageScheduler extends Scheduler { + /** + * The minimum delay that the server will accept between chat messages. + */ + private static final int MIN_DELAY = 200; + /** + * The timestamp of the last message send, + */ private long lastMessage = 0; + /** + * Sends a chat message or command after the minimum cooldown. Prefer this method to send messages or commands to the server. + * + * @param message the message to send + */ public void sendMessageAfterCooldown(String message) { - if (lastMessage + 200 < System.currentTimeMillis()) { + if (lastMessage + MIN_DELAY < System.currentTimeMillis()) { sendMessage(message); lastMessage = System.currentTimeMillis(); } else { @@ -29,13 +41,19 @@ public class MessageScheduler extends Scheduler { } } + /** + * Queues a chat message or command to send in {@code delay} ticks. Use this method to send messages or commands a set time in the future. The minimum cooldown is still respected. + * + * @param message the message to send + * @param delay the delay before sending the message in ticks + */ public void queueMessage(String message, int delay) { schedule(() -> sendMessage(message), delay); } @Override protected boolean runTask(Runnable task) { - if (lastMessage + 200 < System.currentTimeMillis()) { + if (lastMessage + MIN_DELAY < System.currentTimeMillis()) { task.run(); lastMessage = System.currentTimeMillis(); return true; diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java index 7313ec10..02162140 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java @@ -11,8 +11,8 @@ import java.util.PriorityQueue; */ public class Scheduler { private static final Logger LOGGER = LoggerFactory.getLogger(Scheduler.class); - private int currentTick; - private final PriorityQueue tasks; + private int currentTick = 0; + private final PriorityQueue tasks = new PriorityQueue<>(); /** * Do not instantiate this class. Use {@link SkyblockerMod#scheduler} instead. @@ -20,32 +20,34 @@ public class Scheduler { @SuppressWarnings("DeprecatedIsStillUsed") @Deprecated public Scheduler() { - currentTick = 0; - tasks = new PriorityQueue<>(); } /** * Schedules a task to run after a delay. - * @param task the task to run + * + * @param task the task to run * @param delay the delay in ticks */ public void schedule(Runnable task, int delay) { - if (delay < 0) + if (delay < 0) { LOGGER.warn("Scheduled a task with negative delay"); + } ScheduledTask tmp = new ScheduledTask(task, currentTick + delay); tasks.add(tmp); } /** * Schedules a task to run every period ticks. - * @param task the task to run + * + * @param task the task to run * @param period the period in ticks */ public void scheduleCyclic(Runnable task, int period) { - if (period <= 0) + if (period <= 0) { LOGGER.error("Attempted to schedule a cyclic task with period lower than 1"); - else + } else { new CyclicTask(task, period).run(); + } } public void tick() { @@ -56,6 +58,12 @@ public class Scheduler { } } + /** + * Runs the task if able. + * + * @param task the task to run + * @return {@code true} if the task is run, and {@link false} if task is not run. + */ protected boolean runTask(Runnable task) { task.run(); return true; @@ -63,7 +71,8 @@ public class Scheduler { /** * A task that runs every period ticks. More specifically, this task reschedules itself to run again after period ticks every time it runs. - * @param inner the task to run + * + * @param inner the task to run * @param period the period in ticks */ protected record CyclicTask(Runnable inner, int period) implements Runnable { @@ -76,7 +85,8 @@ public class Scheduler { /** * A task that runs at a specific tick, relative to {@link #currentTick}. - * @param inner the task to run + * + * @param inner the task to run * @param schedule the tick to run at */ protected record ScheduledTask(Runnable inner, int schedule) implements Comparable, Runnable { -- cgit From 91903894d29c1cfab45ae77481cd111895f38058 Mon Sep 17 00:00:00 2001 From: Fix3d Date: Wed, 31 May 2023 14:15:49 +0300 Subject: fix repository update --- .../skyblocker/skyblock/api/RepositoryUpdate.java | 38 +++++++++++++--------- .../skyblocker/skyblock/itemlist/ItemRegistry.java | 14 ++++++-- 2 files changed, 34 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/RepositoryUpdate.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/RepositoryUpdate.java index 3854dd88..e08cb1c0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/RepositoryUpdate.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/api/RepositoryUpdate.java @@ -3,6 +3,7 @@ package me.xmrvizzy.skyblocker.skyblock.api; import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; +import net.minecraft.client.MinecraftClient; import net.minecraft.text.Text; import java.io.File; @@ -10,6 +11,7 @@ import java.nio.file.Files; import java.util.concurrent.CompletableFuture; public class RepositoryUpdate { + public static final MinecraftClient client = MinecraftClient.getInstance(); /** * Adds command to update repository manually from ingame. @@ -21,22 +23,7 @@ public class RepositoryUpdate { ClientCommandManager.literal("skyblocker") .then(ClientCommandManager.literal("updaterepository") .executes(context -> { - CompletableFuture.runAsync(() -> { - try { - ItemRegistry.filesImported = false; - File dir = ItemRegistry.LOCAL_ITEM_REPO_DIR.toFile(); - recursiveDelete(dir); - } catch (Exception ex) { - ItemRegistry.client.player.sendMessage( - Text.translatable("skyblocker.updaterepository.failed") - , false - ); - return; - } - - ItemRegistry.init(); - }); - + updateRepository(); return 1; }) ) @@ -45,6 +32,25 @@ public class RepositoryUpdate { } + public static void updateRepository() { + CompletableFuture.runAsync(() -> { + try { + ItemRegistry.filesImported = false; + File dir = ItemRegistry.LOCAL_ITEM_REPO_DIR.toFile(); + recursiveDelete(dir); + } catch (Exception ex) { + if (client.player != null) + client.player.sendMessage( + Text.translatable("skyblocker.updaterepository.failed") + , false + ); + return; + } + + ItemRegistry.init(); + }); + } + private static void recursiveDelete(File dir) { if (dir.isDirectory() && !Files.isSymbolicLink(dir.toPath())) { for (File child : dir.listFiles()) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java index a1507b95..d9f3b473 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java @@ -3,6 +3,7 @@ package me.xmrvizzy.skyblocker.skyblock.itemlist; import com.google.gson.JsonObject; import com.google.gson.JsonParser; +import me.xmrvizzy.skyblocker.skyblock.api.RepositoryUpdate; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; import net.minecraft.item.ItemStack; @@ -10,6 +11,7 @@ import net.minecraft.item.Items; import net.minecraft.text.Text; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.PullResult; +import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,20 +49,26 @@ public class ItemRegistry { } private static void updateItemRepo() { + Git git; if (!Files.isDirectory(LOCAL_ITEM_REPO_DIR)) { try { - Git.cloneRepository() + git = Git.cloneRepository() .setURI(REMOTE_ITEM_REPO) .setDirectory(LOCAL_ITEM_REPO_DIR.toFile()) .setBranchesToClone(List.of("refs/heads/master")) .setBranch("refs/heads/master") .call(); + git.close(); + LOGGER.info("[Skyblocker Repository Update] Repository updated."); } catch (Exception e) { e.printStackTrace(); } } else { try { - PullResult pull = Git.open(LOCAL_ITEM_REPO_DIR.toFile()).pull().setRebase(true).call(); + git = Git.open(LOCAL_ITEM_REPO_DIR.toFile()); + PullResult pull = git.pull().setRebase(true).call(); + git.close(); + if (pull.getRebaseResult() == null) { LOGGER.info("[Skyblocker Repository Update] No update result"); } else if (pull.getRebaseResult().getStatus().isSuccessful()) { @@ -68,6 +76,8 @@ public class ItemRegistry { } else if (!pull.getRebaseResult().getStatus().isSuccessful()) { LOGGER.warn("[Skyblocker Repository Update] Status: " + pull.getRebaseResult().getStatus().name()); } + } catch (RepositoryNotFoundException e) { + RepositoryUpdate.updateRepository(); } catch (Exception e) { e.printStackTrace(); } -- cgit