aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java75
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java14
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java21
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java7
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java3
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java14
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/LeverBlockMixin.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java52
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java1
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java160
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java3
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Events.java34
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Scheduler.java60
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/ToastBuilder.java34
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java55
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java48
23 files changed, 402 insertions, 200 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
index 575a87d3..2c0a8ad6 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
@@ -1,88 +1,31 @@
package me.xmrvizzy.skyblocker;
-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.dungeon.DungeonBlaze;
+import me.xmrvizzy.skyblocker.utils.Scheduler;
import me.xmrvizzy.skyblocker.utils.Utils;
-import net.minecraft.client.MinecraftClient;
-
-import java.util.Objects;
public class SkyblockerMod {
public static final String NAMESPACE = "skyblocker";
private static final SkyblockerMod instance = new SkyblockerMod();
+
+ public final Scheduler scheduler = new Scheduler();
public final ContainerSolverManager containerSolverManager = new ContainerSolverManager();
- public DiscordRPCManager discordRPCManager = new DiscordRPCManager();
+ public final DiscordRPCManager discordRPCManager = new DiscordRPCManager();
private SkyblockerMod() {
+ scheduler.scheduleCyclic(Utils::sbChecker, 20);
+ scheduler.scheduleCyclic(discordRPCManager::update, 100);
+ scheduler.scheduleCyclic(DungeonBlaze::update, 4);
}
public static SkyblockerMod getInstance() {
return instance;
}
- private int ticks = 0;
- private int rpTimer = 0;
-
public void onTick() {
- MinecraftClient client = MinecraftClient.getInstance();
- if (client == null) return;
- ticks++;
- if(onHypxiel()) {
- BackpackPreview.tick();
- if (ticks % 4 == 0)
- try {
- if (Utils.isDungeons) {
- DungeonBlaze.DungeonBlaze();
- }
- } catch (Exception e) {
- //System.out.println("Blazesolver: " + e);
- }
- if (ticks % 20 == 0) {
- rpTimer++;
- if (rpTimer == 5) {
- if (discordRPCManager.isConnected && Utils.isSkyblock && SkyblockerConfig.get().richPresence.enableRichPresence) {
- discordRPCManager.updatePresence();
- }
- if (discordRPCManager.isConnected && Utils.isSkyblock && SkyblockerConfig.get().richPresence.cycleMode) {
- discordRPCManager.cycleCount++;
- if (discordRPCManager.cycleCount == 3) discordRPCManager.cycleCount = 0;
- }
- rpTimer = 0;
- }
- if (client.world != null && !client.isInSingleplayer())
- Utils.sbChecker();
- if (!discordRPCManager.isConnected && Utils.isSkyblock && SkyblockerConfig.get().richPresence.enableRichPresence)
- discordRPCManager.start();
- if (discordRPCManager.isConnected && !SkyblockerConfig.get().richPresence.enableRichPresence)
- discordRPCManager.stop();
- ticks = 0;
- }
- } else {
- if (ticks % 20 == 0) {
- if (discordRPCManager.isConnected) {
- discordRPCManager.stop();
- }
- Utils.sbChecker();
- ticks = 0;
- }
- }
- }
- public static MinecraftClient client() {
- try {
- return MinecraftClient.getInstance();
- }
- catch(NullPointerException e) {
- return null;
- }
- }
- public static boolean onHypxiel() {
- try {
- return client() != null && !client().isInSingleplayer() && Objects.requireNonNull(client().getCurrentServerEntry()).address != null && client().getCurrentServerEntry().address.contains("hypixel.net");
- } catch (NullPointerException exception) {
- return false;
- }
+ scheduler.tick();
}
-} \ No newline at end of file
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index 9471620b..40b20b98 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -42,6 +42,12 @@ public class SkyblockerConfig implements ConfigData {
@ConfigEntry.Gui.CollapsibleObject(startExpanded = true)
public Quicknav quicknav = new Quicknav();
+ public boolean enableUpdateNotification = true;
+
+ @ConfigEntry.Category("itemTooltip")
+ @ConfigEntry.Gui.CollapsibleObject(startExpanded = true)
+ public ItemTooltip itemTooltip = new ItemTooltip();
+
@ConfigEntry.Gui.Excluded
public List<Integer> lockedSlots = new ArrayList<>();
}
@@ -66,6 +72,14 @@ public class SkyblockerConfig implements ConfigData {
public boolean enableQuicknav = true;
}
+ public static class ItemTooltip {
+ public boolean enableNPCPrice = true;
+ public boolean enableAvgBIN = true;
+ public boolean enableLowestBIN = true;
+ public boolean enableBazaarPrice = true;
+ public boolean enableMuseumDate = true;
+ }
+
public static class Locations {
@ConfigEntry.Category("dungeons")
@ConfigEntry.Gui.CollapsibleObject(startExpanded = true)
diff --git a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java
index 96da1198..b854613a 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java
@@ -20,6 +20,17 @@ public class DiscordRPCManager implements IPCListener{
public static DecimalFormat dFormat = new DecimalFormat("###,###.##");
public int cycleCount = 0;
+ public void update() {
+ if (!SkyblockerConfig.get().richPresence.enableRichPresence || !Utils.isOnSkyblock) {
+ if (isConnected) stop();
+ return;
+ }
+ if (!isConnected) start();
+ if (SkyblockerConfig.get().richPresence.cycleMode)
+ cycleCount = (cycleCount + 1) % 3;
+ updatePresence();
+ }
+
public void start(){
try {
logger.info("Starting...");
@@ -66,10 +77,12 @@ public class DiscordRPCManager implements IPCListener{
}
public void stop(){
- logger.info("Closing...");
- isConnected = false;
- client.close();
- client = null;
+ if (client != null){
+ logger.info("Closing...");
+ isConnected = false;
+ client.close();
+ client = null;
+ }
}
@Override
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java
index 43103159..9170f1db 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java
@@ -1,20 +1,15 @@
package me.xmrvizzy.skyblocker.mixin;
import me.xmrvizzy.skyblocker.chat.ChatParser;
-import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.utils.Utils;
-import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.hud.ChatHudListener;
-import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.network.MessageType;
-import net.minecraft.text.ClickEvent;
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;
-import java.util.List;
import java.util.UUID;
@Mixin(ChatHudListener.class)
@@ -24,7 +19,7 @@ public class ChatHudListenerMixin {
@Inject(method = "onChatMessage", at = @At("HEAD"), cancellable = true)
public void onMessage(MessageType messageType, Text message, UUID senderUuid, CallbackInfo ci) {
- if (!Utils.isSkyblock)
+ if (!Utils.isOnSkyblock)
return;
if (parser.shouldFilter(message.getString()))
ci.cancel();
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java
index 5825b394..160c8078 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayerEntityMixin.java
@@ -29,6 +29,6 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity
@Inject(method = "dropSelectedItem", at = @At("HEAD"), cancellable = true)
public void dropSelectedItem(boolean dropEntireStack, CallbackInfoReturnable<Boolean> cir) {
- if (Utils.isSkyblock) 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/GenericContainerScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java
index 3e6bf16a..d63d17b8 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/GenericContainerScreenMixin.java
@@ -25,7 +25,7 @@ public abstract class GenericContainerScreenMixin extends HandledScreen<GenericC
@Override
protected void drawForeground(MatrixStack matrices, int mouseX, int mouseY) {
super.drawForeground(matrices, mouseX, mouseY);
- if (Utils.isSkyblock)
+ 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/HandledScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java
index 88676f08..cba87f48 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java
@@ -35,7 +35,8 @@ public abstract class HandledScreenMixin extends Screen {
@Inject(method = "init()V", at = @At("TAIL"))
private void init(CallbackInfo ci) {
- if (Utils.isSkyblock && SkyblockerConfig.get().general.quicknav.enableQuicknav) {
+ // quicknav
+ if (Utils.isOnSkyblock && SkyblockerConfig.get().general.quicknav.enableQuicknav) {
String screenTitle = super.getTitle().getString().trim();
List<QuickNavButton> buttons = QuickNav.init(screenTitle);
for (QuickNavButton button : buttons) super.addDrawableChild(button);
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java
index 2653aeef..19e0d79e 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java
@@ -43,7 +43,7 @@ public abstract class InGameHudMixin extends DrawableHelper {
@Inject(method = "setOverlayMessage(Lnet/minecraft/text/Text;Z)V", at = @At("HEAD"), cancellable = true)
private void onSetOverlayMessage(Text message, boolean tinted, CallbackInfo ci) {
- if(!Utils.isSkyblock)
+ if(!Utils.isOnSkyblock)
return;
String msg = message.getString();
if(statusBars.update(msg))
@@ -52,7 +52,7 @@ public abstract class InGameHudMixin extends DrawableHelper {
@Inject(method = "renderHotbar", at = @At("HEAD"))
public void renderHotbar(float f, MatrixStack matrices, CallbackInfo ci) {
- if (Utils.isSkyblock) {
+ if (Utils.isOnSkyblock) {
hotbarMatrices = matrices;
hotbarSlotIndex = 0;
}
@@ -60,7 +60,7 @@ public abstract class InGameHudMixin extends DrawableHelper {
@Inject(method = "renderHotbarItem", at = @At("HEAD"))
public void renderHotbarItem(int i, int j, float f, PlayerEntity player, ItemStack stack, int seed, CallbackInfo ci) {
- if (Utils.isSkyblock) {
+ if (Utils.isOnSkyblock) {
if (HotbarSlotLock.isLocked(hotbarSlotIndex)) {
RenderSystem.setShaderTexture(0,SLOT_LOCK);
this.drawTexture(hotbarMatrices, i, j, 0, 0,16, 16);
@@ -71,18 +71,18 @@ public abstract class InGameHudMixin extends DrawableHelper {
@Inject(method = "renderExperienceBar", at = @At("HEAD"), cancellable = true)
private void renderExperienceBar(MatrixStack matrices, int x, CallbackInfo ci) {
- if (Utils.isSkyblock && 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 renderStatusBars(MatrixStack matrices, CallbackInfo ci) {
- if(!Utils.isSkyblock)
+ if(!Utils.isOnSkyblock)
return;
if(statusBars.render(matrices, scaledWidth, scaledHeight))
ci.cancel();
- if (Utils.isDungeons && SkyblockerConfig.get().locations.dungeons.enableMap)
+ if (Utils.isInDungeons && SkyblockerConfig.get().locations.dungeons.enableMap)
DungeonMap.render(matrices);
RenderSystem.setShaderTexture(0, GUI_ICONS_TEXTURE);
@@ -90,7 +90,7 @@ public abstract class InGameHudMixin extends DrawableHelper {
@Inject(method = "renderMountHealth", at = @At("HEAD"), cancellable = true)
private void renderMountHealth(MatrixStack matrices, CallbackInfo ci) {
- if (Utils.isSkyblock && 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 fcdbf706..4bff2779 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 class InventoryScreenMixin {
)
)
RecipeBookWidget constructor() {
- if (Utils.isSkyblock && 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 002497ce..395027bc 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java
@@ -28,7 +28,7 @@ public abstract class ItemRendererMixin {
@Inject(method = "renderGuiItemOverlay(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At("HEAD"))
public void renderItemBar(TextRenderer renderer, ItemStack stack, int x, int y, @Nullable String countLabel, CallbackInfo ci) {
- if (Utils.isSkyblock && 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 f1c6661d..c3ff287e 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 onGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable<VoxelShape> cir) {
- if (Utils.isSkyblock) {
+ 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 21730e69..6561eb5b 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/MinecraftClientMixin.java
@@ -27,13 +27,13 @@ public class MinecraftClientMixin {
@Inject(method = "handleInputEvents", at = @At("HEAD"))
public void handleInputEvents(CallbackInfo ci) {
- if (Utils.isSkyblock) HotbarSlotLock.handleInputEvents(player);
+ if (Utils.isOnSkyblock) HotbarSlotLock.handleInputEvents(player);
}
@Inject(method = "setScreen", at = @At("HEAD"))
public void onSetScreen(Screen screen, CallbackInfo ci) {
ContainerSolverManager manager = SkyblockerMod.getInstance().containerSolverManager;
- if(Utils.isSkyblock && screen instanceof GenericContainerScreen)
+ if(Utils.isOnSkyblock && screen instanceof GenericContainerScreen)
manager.onSetScreen((GenericContainerScreen) screen);
else
manager.clearScreen();
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 ab81cd75..d4f7fec5 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java
@@ -1,6 +1,7 @@
package me.xmrvizzy.skyblocker.skyblock.dungeon;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import me.xmrvizzy.skyblocker.utils.Utils;
import me.xmrvizzy.skyblocker.utils.color.QuadColor;
import me.xmrvizzy.skyblocker.utils.RenderUtils;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
@@ -14,13 +15,15 @@ public class DungeonBlaze {
static Entity lowestBlaze = null;
static boolean renderHooked = false;
- public static void DungeonBlaze() {
+ public static void update() {
+ if (!Utils.isInDungeons) return;
MinecraftClient client = MinecraftClient.getInstance();
if(!renderHooked){
WorldRenderEvents.END.register(DungeonBlaze::blazeRenderer);
renderHooked = true;
}
+ assert client.world != null;
Iterable<Entity> entities = client.world.getEntities();
int highestHealth = 0;
int lowestHealth = 99999999;
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 69278023..65b9648f 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
@@ -1,5 +1,6 @@
package me.xmrvizzy.skyblocker.skyblock.dungeon;
+import me.xmrvizzy.skyblocker.SkyblockerMod;
import me.xmrvizzy.skyblocker.chat.ChatListener;
import me.xmrvizzy.skyblocker.utils.Utils;
import net.fabricmc.fabric.api.client.command.v1.ClientCommandManager;
@@ -11,8 +12,9 @@ import java.util.regex.Pattern;
public class Reparty extends ChatListener {
private static final MinecraftClient client = MinecraftClient.getInstance();
+ private static final SkyblockerMod skyblocker = SkyblockerMod.getInstance();
public static final Pattern PLAYER = Pattern.compile(" ([a-zA-Z0-9_]{2,16}) ●");
- private static final int SLEEP_TIME = 600;
+ private static final int BASE_DELAY = 20;
private String[] players;
private int playersSoFar;
@@ -23,7 +25,7 @@ public class Reparty extends ChatListener {
repartying = false;
ClientCommandManager.DISPATCHER.register(
ClientCommandManager.literal("rp").executes(context -> {
- if (!Utils.isSkyblock || repartying)
+ if (!Utils.isOnSkyblock || repartying)
return 0;
assert client.player != null;
repartying = true;
@@ -53,45 +55,31 @@ public class Reparty extends ChatListener {
return false;
}
if (playersSoFar == players.length)
- new Thread(this::reparty).start();
+ reparty();
return false;
}
private void reparty() {
ClientPlayerEntity playerEntity = client.player;
assert playerEntity != null;
- StringBuilder sb = new StringBuilder("/p disband");
- for (int i = 0; i < players.length; i++) {
- if (i % 5 == 0) {
- sleep();
- playerEntity.sendChatMessage(sb.toString());
- sb.setLength(0);
- sb.append("/p invite");
+ sendCommand(playerEntity, "/p disband", 1);
+ StringBuilder sb = new StringBuilder();
+ int invites = (players.length - 1) / 5 + 1;
+ for(int i = 0; i < invites; i++) {
+ sb.setLength(0);
+ sb.append("/p invite");
+ for(int j = 0; j < 5 && i * 5 + j < players.length; j++) {
+ sb.append(' ');
+ sb.append(players[i * 5 + j]);
}
- sb.append(' ');
- sb.append(players[i]);
+ sendCommand(playerEntity, sb.toString(), i + 2);
}
- if (players.length % 5 != 0) {
- sleep();
- playerEntity.sendChatMessage(sb.toString());
- }
- repartying = false;
+ skyblocker.scheduler.schedule(() -> repartying = false, invites + 2);
}
- private void sleep() {
- long sleepStart = System.currentTimeMillis();
- boolean interrupted = false;
- long sleepLeft = SLEEP_TIME;
- do {
- if (interrupted) {
- sleepLeft = sleepStart + SLEEP_TIME - System.currentTimeMillis();
- interrupted = false;
- }
- try {
- Thread.sleep(sleepLeft);
- } catch (InterruptedException e) {
- interrupted = true;
- }
- } while (interrupted);
+ private void sendCommand(ClientPlayerEntity player, String command, int delay) {
+ skyblocker.scheduler.schedule(() ->
+ player.sendChatMessage(command), delay * BASE_DELAY
+ );
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java
index c6b5be9e..266006b4 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java
@@ -33,7 +33,7 @@ public class Fetchur extends ChatListener {
static {
answers = new HashMap<>();
answers.put("red and soft", new TranslatableText("block.minecraft.red_wool").getString());
- answers.put("yellow and see-through", new TranslatableText("block.minecraft.yellow_stained_glass").getString());
+ answers.put("yellow and see through", new TranslatableText("block.minecraft.yellow_stained_glass").getString());
answers.put("circular and sometimes moves", new TranslatableText("item.minecraft.compass").getString());
answers.put("expensive minerals", "Mithril");
answers.put("useful during celebrations", new TranslatableText("item.minecraft.firework_rocket").getString());
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java
index e95a7507..3e117955 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java
@@ -21,7 +21,6 @@ public class Puzzler extends ChatListener {
public boolean onMessage(String[] groups) {
int x = 181;
int z = 135;
- System.out.println(groups[1]);
for (char c : groups[1].toCharArray()) {
if (c == '▲') z++;
else if (c == '▼') z--;
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 ab24ff27..daad1d26 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java
@@ -1,8 +1,8 @@
package me.xmrvizzy.skyblocker.skyblock.item;
import com.google.gson.Gson;
-import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.item.TooltipContext;
import net.minecraft.item.ItemStack;
@@ -20,55 +20,104 @@ import java.net.URL;
import java.time.Month;
import java.util.List;
import java.util.Locale;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
import java.util.zip.GZIPInputStream;
public class PriceInfoTooltip {
- private static JsonObject shopPricesJson;
+ private static JsonObject npcPricesJson;
private static JsonObject bazaarPricesJson;
- private static JsonObject auctionPricesJson;
- private static JsonObject lbAuctionPricesJson;
+ private static JsonObject avgPricesJson;
+ private static JsonObject lowestPricesJson;
private static JsonObject isMuseumJson;
- public static void onInjectTooltip(ItemStack stack, TooltipContext context, List<Text> list) {
+ public static void onInjectTooltip(ItemStack stack, TooltipContext context, List<Text> lines) {
+ int count = stack.getCount();
String name = getInternalNameFromNBT(stack);
String timestamp = getTimestamp(stack);
- List<String> listString = list.stream()
+ List<String> listString = lines.stream()
.map(Text::getString)
.collect(Collectors.toList());
+
try {
- if (!listString.contains("NPC Price") && shopPricesJson != null && shopPricesJson.has(name)) {
- JsonElement getPrice = shopPricesJson.get(name);
- list.add(new LiteralText(String.format("%-23s", "NPC Price:")).formatted(Formatting.YELLOW).append(getCoinsMessage(getPrice.getAsDouble())));
+ if (SkyblockerConfig.get().general.itemTooltip.enableNPCPrice
+ && !listString.contains("NPC Price") && npcPricesJson != null && npcPricesJson.has(name)) {
+
+ lines.add(new LiteralText(String.format("%-21s", "NPC Price:"))
+ .formatted(Formatting.YELLOW)
+ .append(getCoinsMessage(npcPricesJson.get(name).getAsDouble(), count)));
}
- if ((!listString.contains("Bazaar buy Price") || !listString.contains("Bazaar sell Price")) && bazaarPricesJson != null && bazaarPricesJson.has(name)) {
-