From d929b60c6817be79a85513635a733384567217bd Mon Sep 17 00:00:00 2001 From: NopoTheGamer <40329022+NopoTheGamer@users.noreply.github.com> Date: Mon, 8 Jul 2024 23:40:46 +1000 Subject: meta: Add clipboard caching (#1229) --- .../moulberry/notenoughupdates/NEUOverlay.java | 5 +- .../notenoughupdates/core/util/MiscUtils.java | 127 --------------------- .../listener/ItemTooltipListener.java | 14 +-- .../notenoughupdates/miscgui/GuiEnchantColour.java | 23 +--- .../miscgui/GuiInvButtonEditor.java | 32 ++---- .../miscgui/minionhelper/Minion.java | 3 +- .../moulberry/notenoughupdates/util/Utils.java | 40 +++++++ .../commands/dev/DevTestCommand.kt | 3 +- .../commands/dev/NEUStatsCommand.kt | 8 +- .../commands/dev/PackDevCommand.kt | 9 +- 10 files changed, 71 insertions(+), 193 deletions(-) delete mode 100644 src/main/java/io/github/moulberry/notenoughupdates/core/util/MiscUtils.java diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java index 0a7b3378..087365e0 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java @@ -87,7 +87,6 @@ import org.lwjgl.opengl.GL14; import org.lwjgl.util.vector.Vector2f; import java.awt.*; -import java.awt.datatransfer.StringSelection; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; @@ -1079,9 +1078,7 @@ public class NEUOverlay extends Gui { BigDecimal calculate = Calculator.calculate(textField.getText(), PROVIDE_LOWEST_BIN); textField.setText(calculate.toPlainString()); if (NotEnoughUpdates.INSTANCE.config.toolbar.copyToClipboardWhenGettingResult) { - Toolkit.getDefaultToolkit().getSystemClipboard() - .setContents(new StringSelection(calculate.toPlainString()), null); - + Utils.copyToClipboard(calculate.toPlainString()); } } catch (Calculator.CalculatorException | IllegalStateException | HeadlessException ignored) { } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/core/util/MiscUtils.java b/src/main/java/io/github/moulberry/notenoughupdates/core/util/MiscUtils.java deleted file mode 100644 index 41780140..00000000 --- a/src/main/java/io/github/moulberry/notenoughupdates/core/util/MiscUtils.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) 2022 NotEnoughUpdates contributors - * - * This file is part of NotEnoughUpdates. - * - * NotEnoughUpdates is free software: you can redistribute it - * and/or modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - * - * NotEnoughUpdates is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with NotEnoughUpdates. If not, see . - */ - -package io.github.moulberry.notenoughupdates.core.util; - -import net.minecraft.client.Minecraft; -import net.minecraft.util.ResourceLocation; -import org.lwjgl.BufferUtils; -import org.lwjgl.input.Cursor; -import org.lwjgl.input.Mouse; - -import javax.imageio.ImageIO; -import java.awt.*; -import java.awt.datatransfer.StringSelection; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.IntBuffer; -import java.nio.file.Files; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; - -public class MiscUtils { - public static void copyToClipboard(String str) { - Toolkit.getDefaultToolkit().getSystemClipboard() - .setContents(new StringSelection(str), null); - } - - private static void unzip(InputStream src, File dest) { - //buffer for read and write data to file - byte[] buffer = new byte[1024]; - try { - ZipInputStream zis = new ZipInputStream(src); - ZipEntry ze = zis.getNextEntry(); - while (ze != null) { - if (!ze.isDirectory()) { - String fileName = ze.getName(); - File newFile = new File(dest, fileName); - //create directories for sub directories in zip - new File(newFile.getParent()).mkdirs(); - FileOutputStream fos = new FileOutputStream(newFile); - int len; - while ((len = zis.read(buffer)) > 0) { - fos.write(buffer, 0, len); - } - fos.close(); - } - //close this ZipEntry - zis.closeEntry(); - ze = zis.getNextEntry(); - } - //close last ZipEntry - zis.closeEntry(); - zis.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public static void recursiveDelete(File file) { - if (file.isDirectory() && !Files.isSymbolicLink(file.toPath())) { - for (File child : file.listFiles()) { - recursiveDelete(child); - } - } - file.delete(); - } - - private static String currentCursor = null; - - public static void resetCursor() { - if (currentCursor == null) { - return; - } - currentCursor = null; - try { - Mouse.setNativeCursor(null); - } catch (Exception ignored) { - } - } - - public static void setCursor(ResourceLocation loc, int hotspotX, int hotspotY) { - if (currentCursor != null && loc.getResourcePath().equals(currentCursor)) { - return; - } - currentCursor = loc.getResourcePath(); - try { - BufferedImage image = ImageIO.read(Minecraft.getMinecraft() - .getResourceManager().getResource(loc).getInputStream()); - int maxSize = Cursor.getMaxCursorSize(); - IntBuffer buffer = BufferUtils.createIntBuffer(maxSize * maxSize); - for (int i = 0; i < maxSize * maxSize; i++) { - int cursorX = i % maxSize; - int cursorY = i / maxSize; - if (cursorX >= image.getWidth() || cursorY >= image.getHeight()) { - buffer.put(0x00000000); - } else { - buffer.put(image.getRGB(cursorX, image.getHeight() - 1 - cursorY)); - } - } - buffer.flip(); - Mouse.setNativeCursor(new Cursor(maxSize, maxSize, hotspotX, hotspotY, 1, - buffer, null - )); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/src/main/java/io/github/moulberry/notenoughupdates/listener/ItemTooltipListener.java b/src/main/java/io/github/moulberry/notenoughupdates/listener/ItemTooltipListener.java index 11912e29..a3669000 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/listener/ItemTooltipListener.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/listener/ItemTooltipListener.java @@ -27,7 +27,6 @@ import com.mojang.authlib.GameProfile; import com.mojang.authlib.minecraft.MinecraftProfileTexture; import io.github.moulberry.notenoughupdates.ItemPriceInformation; import io.github.moulberry.notenoughupdates.NotEnoughUpdates; -import io.github.moulberry.notenoughupdates.core.util.MiscUtils; import io.github.moulberry.notenoughupdates.core.util.StringUtils; import io.github.moulberry.notenoughupdates.miscfeatures.PetInfoOverlay; import io.github.moulberry.notenoughupdates.util.Constants; @@ -48,7 +47,6 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import org.apache.commons.lang3.text.WordUtils; import org.lwjgl.input.Keyboard; -import java.awt.*; import java.awt.datatransfer.StringSelection; import java.text.DecimalFormat; import java.util.ArrayList; @@ -752,7 +750,7 @@ public class ItemTooltipListener { if (!copied) { copied = true; StringSelection selection = new StringSelection(sb.toString().replace("§r§7", "")); - Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection, selection); + Utils.copyToClipboard(selection, selection); } } else { copied = false; @@ -773,14 +771,14 @@ public class ItemTooltipListener { boolean b = Keyboard.isKeyDown(Keyboard.KEY_B); if (!copied && f && NotEnoughUpdates.INSTANCE.config.hidden.dev) { - MiscUtils.copyToClipboard(NotEnoughUpdates.INSTANCE.manager.getSkullValueForItem(event.itemStack)); + Utils.copyToClipboard(NotEnoughUpdates.INSTANCE.manager.getSkullValueForItem(event.itemStack)); } event.toolTip.add( EnumChatFormatting.AQUA + "Internal Name: " + EnumChatFormatting.GRAY + internal + EnumChatFormatting.GOLD + " [K]"); if (!copied && k) { - MiscUtils.copyToClipboard(internal); + Utils.copyToClipboard(internal); } if (event.itemStack.getTagCompound() != null) { @@ -789,7 +787,7 @@ public class ItemTooltipListener { event.toolTip.add(EnumChatFormatting.AQUA + "NBT: " + EnumChatFormatting.GRAY + "[...]" + EnumChatFormatting.GOLD + " [B]"); if (!copied && b) { - MiscUtils.copyToClipboard(tag.toString()); + Utils.copyToClipboard(tag.toString()); } if (tag.hasKey("SkullOwner", 10)) { @@ -799,7 +797,7 @@ public class ItemTooltipListener { event.toolTip.add(EnumChatFormatting.AQUA + "Skull UUID: " + EnumChatFormatting.GRAY + gameprofile.getId() + EnumChatFormatting.GOLD + " [M]"); if (!copied && m) { - MiscUtils.copyToClipboard(gameprofile.getId().toString()); + Utils.copyToClipboard(gameprofile.getId().toString()); } Map map = @@ -812,7 +810,7 @@ public class ItemTooltipListener { EnumChatFormatting.GOLD + " [N]"); if (!copied && n) { - MiscUtils.copyToClipboard(profTex.getUrl()); + Utils.copyToClipboard(profTex.getUrl()); } } } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/GuiEnchantColour.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/GuiEnchantColour.java index 86ea09f9..395a045f 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/GuiEnchantColour.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/GuiEnchantColour.java @@ -40,10 +40,6 @@ import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; -import java.awt.*; -import java.awt.datatransfer.DataFlavor; -import java.awt.datatransfer.StringSelection; -import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -524,12 +520,9 @@ public class GuiEnchantColour extends GuiScreen { } private boolean validShareContents() { - try { - String base64 = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor); - return Objects.equals(TemplateUtil.getTemplatePrefix(base64), sharePrefix); - } catch (HeadlessException | IOException | UnsupportedFlavorException | IllegalStateException e) { - return false; - } + String base64 = Utils.getClipboard(); + if (base64 == null) return false; + return Objects.equals(TemplateUtil.getTemplatePrefix(base64), sharePrefix); } @Override @@ -630,13 +623,9 @@ public class GuiEnchantColour extends GuiScreen { if (mouseX > guiLeft + xSize + 3 && mouseX < guiLeft + xSize + 3 + 88) { if (mouseY > guiTopSidebar + 2 && mouseY < guiTopSidebar + 20 + 2) { - String base64; - try { - base64 = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor); - } catch (HeadlessException | IOException | UnsupportedFlavorException e) { - return; - } + String base64 = Utils.getClipboard(); + if (base64 == null) return; JsonArray presetArray = TemplateUtil.maybeDecodeTemplate(sharePrefix, base64, JsonArray.class); ArrayList presetList = new ArrayList<>(); @@ -663,7 +652,7 @@ public class GuiEnchantColour extends GuiScreen { } String base64String = TemplateUtil.encodeTemplate(sharePrefix, jsonArray); - Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(base64String), null); + Utils.copyToClipboard(base64String); } else if (mouseY > guiTopSidebar + 2 + (24 * 2) && mouseY < guiTopSidebar + 20 + 2 + 24 * 2) { NotEnoughUpdates.INSTANCE.config.hidden.enchantColours = NEUConfig.createDefaultEnchantColours(); } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/GuiInvButtonEditor.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/GuiInvButtonEditor.java index 2e3c7dce..e6125101 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/GuiInvButtonEditor.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/GuiInvButtonEditor.java @@ -45,10 +45,6 @@ import net.minecraft.util.ResourceLocation; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; -import java.awt.*; -import java.awt.datatransfer.DataFlavor; -import java.awt.datatransfer.StringSelection; -import java.awt.datatransfer.UnsupportedFlavorException; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -680,19 +676,16 @@ public class GuiInvButtonEditor extends GuiScreen { } private boolean validShareContents() { - try { - String base64 = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor); + String base64 = Utils.getClipboard(); + if (base64 == null) return false; - if (base64.length() <= sharePrefix.length()) return false; + if (base64.length() <= sharePrefix.length()) return false; - base64 = base64.trim(); + base64 = base64.trim(); - try { - return new String(Base64.getDecoder().decode(base64)).startsWith(sharePrefix); - } catch (IllegalArgumentException e) { - return false; - } - } catch (HeadlessException | IOException | UnsupportedFlavorException | IllegalStateException e) { + try { + return new String(Base64.getDecoder().decode(base64)).startsWith(sharePrefix); + } catch (IllegalArgumentException e) { return false; } } @@ -806,13 +799,8 @@ public class GuiInvButtonEditor extends GuiScreen { if (mouseX > guiLeft - 2 - 88 - 22 && mouseX < guiLeft - 2 - 22) { if (mouseY > guiTop + 2 && mouseY < guiTop + 22) { - String base64; - - try { - base64 = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor); - } catch (HeadlessException | IOException | UnsupportedFlavorException e) { - return; - } + String base64 = Utils.getClipboard(); + if (base64 == null) return; if (base64.length() <= sharePrefix.length()) return; @@ -871,7 +859,7 @@ public class GuiInvButtonEditor extends GuiScreen { } String base64String = Base64.getEncoder().encodeToString((sharePrefix + jsonArray).getBytes(StandardCharsets.UTF_8)); - Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(base64String), null); + Utils.copyToClipboard(base64String); return; } } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/Minion.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/Minion.java index 4dcb1ec2..a7b914b6 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/Minion.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/Minion.java @@ -21,7 +21,6 @@ package io.github.moulberry.notenoughupdates.miscgui.minionhelper; import io.github.moulberry.notenoughupdates.NotEnoughUpdates; import io.github.moulberry.notenoughupdates.auction.APIManager; -import io.github.moulberry.notenoughupdates.core.util.MiscUtils; import io.github.moulberry.notenoughupdates.miscgui.minionhelper.render.renderables.OverviewLine; import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.MinionRequirement; import io.github.moulberry.notenoughupdates.miscgui.minionhelper.sources.CraftingSource; @@ -138,7 +137,7 @@ public class Minion extends OverviewLine { String bazaarName = resource.get().getKey(); int totalAmount = resource.get().getValue(); - MiscUtils.copyToClipboard(String.valueOf(totalAmount)); + Utils.copyToClipboard(String.valueOf(totalAmount)); ItemStack itemStack = new ItemResolutionQuery(NotEnoughUpdates.INSTANCE.manager).withKnownInternalName( bazaarName).resolveToItemStack(); if (itemStack != null) { diff --git a/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java b/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java index 041bf104..b94fac03 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java @@ -75,6 +75,11 @@ import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL14; import java.awt.*; +import java.awt.datatransfer.ClipboardOwner; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.StringSelection; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -2433,4 +2438,39 @@ public class Utils { .resolveToItemStack(false); return itemStack != null; } + + public static void copyToClipboard(String str) { + Toolkit.getDefaultToolkit().getSystemClipboard() + .setContents(new StringSelection(str), null); + } + + public static void copyToClipboard(StringSelection stringSelection, ClipboardOwner owner) { + Toolkit.getDefaultToolkit().getSystemClipboard() + .setContents(stringSelection, owner); + } + + private static String clipboardCache = ""; + private static long lastClipboard = -1; + + public static String getClipboard() { + if (System.currentTimeMillis() - lastClipboard < 500) { + return clipboardCache; + } + lastClipboard = System.currentTimeMillis(); + try { + Transferable clipboard = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); + + if (clipboard != null && clipboard.isDataFlavorSupported(DataFlavor.stringFlavor)) { + String clipboardText = (String) clipboard.getTransferData(DataFlavor.stringFlavor); + clipboardCache = clipboardText; + return clipboardText; + } else { + clipboardCache = null; + return null; + } + } catch (UnsupportedFlavorException | IOException | HeadlessException | IllegalStateException ignored) { + clipboardCache = null; + return null; + } + } } diff --git a/src/main/kotlin/io/github/moulberry/notenoughupdates/commands/dev/DevTestCommand.kt b/src/main/kotlin/io/github/moulberry/notenoughupdates/commands/dev/DevTestCommand.kt index 15c26daa..e8023f52 100644 --- a/src/main/kotlin/io/github/moulberry/notenoughupdates/commands/dev/DevTestCommand.kt +++ b/src/main/kotlin/io/github/moulberry/notenoughupdates/commands/dev/DevTestCommand.kt @@ -23,7 +23,6 @@ import com.mojang.brigadier.arguments.StringArgumentType import io.github.moulberry.notenoughupdates.BuildFlags import io.github.moulberry.notenoughupdates.NotEnoughUpdates import io.github.moulberry.notenoughupdates.autosubscribe.NEUAutoSubscribe -import io.github.moulberry.notenoughupdates.core.util.MiscUtils import io.github.moulberry.notenoughupdates.events.RegisterBrigadierCommandEvent import io.github.moulberry.notenoughupdates.miscfeatures.FishingHelper import io.github.moulberry.notenoughupdates.miscfeatures.customblockzones.CustomBiomes @@ -253,7 +252,7 @@ class DevTestCommand { } thenLiteralExecute("copytablist") { val tabList = TabListUtils.getTabList().joinToString("\n", postfix = "\n") - MiscUtils.copyToClipboard(tabList) + Utils.copyToClipboard(tabList) reply("Copied tablist to clipboard!") }.withHelp("Copy the tab list") thenLiteral("useragent") { diff --git a/src/main/kotlin/io/github/moulberry/notenoughupdates/commands/dev/NEUStatsCommand.kt b/src/main/kotlin/io/github/moulberry/notenoughupdates/commands/dev/NEUStatsCommand.kt index 85a14e15..fee66cbe 100644 --- a/src/main/kotlin/io/github/moulberry/notenoughupdates/commands/dev/NEUStatsCommand.kt +++ b/src/main/kotlin/io/github/moulberry/notenoughupdates/commands/dev/NEUStatsCommand.kt @@ -25,14 +25,11 @@ import com.sun.management.UnixOperatingSystemMXBean import io.github.moulberry.notenoughupdates.NotEnoughUpdates import io.github.moulberry.notenoughupdates.autosubscribe.NEUAutoSubscribe import io.github.moulberry.notenoughupdates.events.RegisterBrigadierCommandEvent -import io.github.moulberry.notenoughupdates.util.DiscordMarkdownBuilder -import io.github.moulberry.notenoughupdates.util.SBInfo -import io.github.moulberry.notenoughupdates.util.TabListUtils +import io.github.moulberry.notenoughupdates.util.* import io.github.moulberry.notenoughupdates.util.brigadier.reply import io.github.moulberry.notenoughupdates.util.brigadier.thenExecute import io.github.moulberry.notenoughupdates.util.brigadier.thenLiteralExecute import io.github.moulberry.notenoughupdates.util.brigadier.withHelp -import io.github.moulberry.notenoughupdates.util.copyToClipboard import net.minecraft.client.Minecraft import net.minecraft.client.renderer.OpenGlHelper import net.minecraft.command.ICommandSender @@ -44,7 +41,6 @@ import net.minecraftforge.fml.common.Loader import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import org.lwjgl.opengl.Display import org.lwjgl.opengl.GL11 -import java.awt.Toolkit import java.awt.datatransfer.StringSelection import java.lang.management.ManagementFactory import javax.management.JMX @@ -239,7 +235,7 @@ class NEUStatsCommand { } try { val clipboard = StringSelection(data) - Toolkit.getDefaultToolkit().systemClipboard.setContents(clipboard, null) + Utils.copyToClipboard(clipboard, null) reply("${GREEN}Dev info copied to clipboard.") } catch (ignored: Exception) { reply("${DARK_RED}Could not copy to clipboard.") diff --git a/src/main/kotlin/io/github/moulberry/notenoughupdates/commands/dev/PackDevCommand.kt b/src/main/kotlin/io/github/moulberry/notenoughupdates/commands/dev/PackDevCommand.kt index e083cd06..0b5ba512 100644 --- a/src/main/kotlin/io/github/moulberry/notenoughupdates/commands/dev/PackDevCommand.kt +++ b/src/main/kotlin/io/github/moulberry/notenoughupdates/commands/dev/PackDevCommand.kt @@ -23,8 +23,8 @@ import com.mojang.brigadier.arguments.DoubleArgumentType.doubleArg import com.mojang.brigadier.builder.ArgumentBuilder import io.github.moulberry.notenoughupdates.NotEnoughUpdates import io.github.moulberry.notenoughupdates.autosubscribe.NEUAutoSubscribe -import io.github.moulberry.notenoughupdates.core.util.MiscUtils import io.github.moulberry.notenoughupdates.events.RegisterBrigadierCommandEvent +import io.github.moulberry.notenoughupdates.util.Utils import io.github.moulberry.notenoughupdates.util.brigadier.* import net.minecraft.block.state.IBlockState import net.minecraft.client.Minecraft @@ -39,7 +39,6 @@ import net.minecraft.item.ItemStack import net.minecraft.tileentity.TileEntitySkull import net.minecraft.util.EnumChatFormatting import net.minecraftforge.fml.common.eventhandler.SubscribeEvent -import java.util.* @NEUAutoSubscribe @@ -71,7 +70,7 @@ class PackDevCommand { reply("No $name found within $dist blocks") return@thenArgumentExecute } - MiscUtils.copyToClipboard(StringBuilder().also { it.appendEntityData(entity) }.toString().trim()) + Utils.copyToClipboard(StringBuilder().also { it.appendEntityData(entity) }.toString().trim()) reply("Copied data to clipboard") }.withHelp("Find the nearest $name and copy data about them to your clipboard") } @@ -85,7 +84,7 @@ class PackDevCommand { entity.forEach { sb.appendEntityData(it) } - MiscUtils.copyToClipboard(sb.toString().trim()) + Utils.copyToClipboard(sb.toString().trim()) reply("Copied data to clipboard") } @@ -174,7 +173,7 @@ class PackDevCommand { } }.toString().trim() - MiscUtils.copyToClipboard(s) + Utils.copyToClipboard(s) reply("Copied data to clipboard") return@thenLiteralExecute } -- cgit