diff --git a/Apache License 2.0~ b/Apache License 2.0~ deleted file mode 100644 index e69de29bb..000000000 diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/AbstractMinecraftLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/AbstractMinecraftLoader.java index 2f4056123..cd93c3fc0 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/AbstractMinecraftLoader.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/AbstractMinecraftLoader.java @@ -162,7 +162,7 @@ public abstract class AbstractMinecraftLoader implements IMinecraftLoader { String serverIp = v.getServerIp(); if (lr.getServerIp() != null) serverIp = lr.getServerIp(); if (StrUtils.isNotBlank(serverIp)) { - String[] args = v.getServerIp().split(":"); + String[] args = serverIp.split(":"); res.add("--server"); res.add(args[0]); res.add("--port"); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java index 06f0b9d89..dbfebefea 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java @@ -37,6 +37,11 @@ public abstract class IMinecraftProvider { public IMinecraftProvider(Profile profile) { this.profile = profile; } + + /** + * To download mod packs. + */ + public abstract void initializeMiencraft(); /** * Get the run directory of given version. diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Config.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Config.java index b27cf5e9a..f25e59052 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Config.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Config.java @@ -43,6 +43,9 @@ public final class Config { private String proxyHost, proxyPort, proxyUserName, proxyPassword; @SerializedName("enableShadow") private boolean enableShadow; + + @SerializedName("enableAnimation") + private boolean enableAnimation; @SerializedName("theme") private int theme; @SerializedName("java") @@ -87,6 +90,14 @@ public final class Config { this.bgpath = bgpath; Settings.save(); } + public boolean isEnableAnimation() { + return enableAnimation; + } + + public void setEnableAnimation(boolean enableAnimation) { + this.enableAnimation = enableAnimation; + Settings.save(); + } public String getUsername() { return username; @@ -151,7 +162,7 @@ public final class Config { clientToken = UUID.randomUUID().toString(); username = ""; logintype = downloadtype = 0; - enableShadow = false; + enableShadow = false; enableAnimation = true; theme = 0; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java index fd0974e2b..5107964c0 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java @@ -93,8 +93,10 @@ public final class Profile { } public IMinecraftProvider getMinecraftProvider() { - if (minecraftProvider == null) + if (minecraftProvider == null) { minecraftProvider = new MinecraftVersionManager(this); + minecraftProvider.initializeMiencraft(); + } return minecraftProvider; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/ModInfo.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/ModInfo.java index 49b1de1f2..a77ea5b61 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/ModInfo.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/ModInfo.java @@ -28,7 +28,7 @@ import java.util.zip.ZipFile; import org.jackhuang.hellominecraft.C; import org.jackhuang.hellominecraft.HMCLog; import org.jackhuang.hellominecraft.utils.StrUtils; -import org.jackhuang.hellominecraft.utils.SwingUtils; +import org.jackhuang.hellominecraft.views.SwingUtils; import org.jackhuang.hellominecraft.utils.system.FileUtils; /** diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftModService.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftModService.java index 39ef55c06..1e0dd0f97 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftModService.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftModService.java @@ -18,6 +18,7 @@ package org.jackhuang.hellominecraft.launcher.version; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -27,6 +28,7 @@ import org.jackhuang.hellominecraft.HMCLog; import org.jackhuang.hellominecraft.launcher.launch.IMinecraftModService; import org.jackhuang.hellominecraft.launcher.settings.Profile; import org.jackhuang.hellominecraft.launcher.utils.ModInfo; +import org.jackhuang.hellominecraft.utils.code.DigestUtils; import org.jackhuang.hellominecraft.utils.system.FileUtils; /** @@ -109,4 +111,12 @@ public class MinecraftModService extends IMinecraftModService { recacheMods(); } + public String checkMd5s() throws IOException { + String res = ""; + for (ModInfo i : getMods()) { + res += DigestUtils.md5Hex(new FileInputStream(i.location)); + } + return res; + } + } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersionManager.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersionManager.java index 5736e4404..365296f6c 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersionManager.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersionManager.java @@ -37,6 +37,9 @@ import org.jackhuang.hellominecraft.utils.system.FileUtils; import org.jackhuang.hellominecraft.launcher.utils.MCUtils; import org.jackhuang.hellominecraft.launcher.utils.auth.UserProfileProvider; import org.jackhuang.hellominecraft.launcher.settings.Profile; +import org.jackhuang.hellominecraft.tasks.DecompressTask; +import org.jackhuang.hellominecraft.tasks.TaskWindow; +import org.jackhuang.hellominecraft.tasks.download.FileDownloadTask; import org.jackhuang.hellominecraft.utils.system.IOUtils; import org.jackhuang.hellominecraft.utils.MessageBox; import org.jackhuang.hellominecraft.utils.Utils; @@ -302,4 +305,14 @@ public final class MinecraftVersionManager extends IMinecraftProvider { public IMinecraftAssetService getAssetService() { return mas; } + + @Override + public void initializeMiencraft() { + + } + + private void downloadModpack(String url) throws IOException { + File tmp = File.createTempFile("hmcl", ".zip"); + TaskWindow.getInstance().addTask(new FileDownloadTask(url, tmp)).addTask(new DecompressTask(tmp, baseFolder)).start(); + } } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/AnimatedPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/AnimatedPanel.java index 35f125bd0..fecfcc6fb 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/AnimatedPanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/AnimatedPanel.java @@ -24,6 +24,7 @@ import java.awt.image.BufferedImage; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.Timer; +import org.jackhuang.hellominecraft.launcher.settings.Settings; /** * @@ -40,7 +41,7 @@ public class AnimatedPanel extends JPanel { offsetX += 0.15; if (offsetX >= ANIMATION_LENGTH) { timer.stop(); - AnimatedPanel.this.repaint(); + AnimatedPanel.this.repaint(); } }); }); @@ -51,14 +52,16 @@ public class AnimatedPanel extends JPanel { Timer timer; public void animate() { - offsetX = 0; - timer.start(); + if (Settings.getInstance().isEnableAnimation()) { + offsetX = 0; + timer.start(); + } } @Override public void paint(Graphics g) { double pgs = 1 - Math.sin(Math.PI / 2 / ANIMATION_LENGTH * offsetX); - if(Math.abs(ANIMATION_LENGTH - offsetX) < 0.1) { + if (Math.abs(ANIMATION_LENGTH - offsetX) < 0.1) { super.paint(g); return; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java index 43a7fba66..27af790ed 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java @@ -56,7 +56,7 @@ import org.jackhuang.hellominecraft.utils.MessageBox; import org.jackhuang.hellominecraft.version.MinecraftVersionRequest; import org.jackhuang.hellominecraft.utils.system.OS; import org.jackhuang.hellominecraft.utils.StrUtils; -import org.jackhuang.hellominecraft.utils.SwingUtils; +import org.jackhuang.hellominecraft.views.SwingUtils; import org.jackhuang.hellominecraft.utils.system.Java; import org.jackhuang.hellominecraft.views.LogWindow; import rx.Observable; diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/InstallerPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/InstallerPanel.java index 59ee9f7d4..925e920b6 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/InstallerPanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/InstallerPanel.java @@ -30,7 +30,7 @@ import org.jackhuang.hellominecraft.tasks.TaskWindow; import org.jackhuang.hellominecraft.tasks.communication.DefaultPreviousResult; import org.jackhuang.hellominecraft.utils.MessageBox; import org.jackhuang.hellominecraft.utils.StrUtils; -import org.jackhuang.hellominecraft.utils.SwingUtils; +import org.jackhuang.hellominecraft.views.SwingUtils; /** * diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.form index 09a206a1b..a55c20d14 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.form +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.form @@ -55,13 +55,19 @@ - - - - - + + + + + + + + + + + + - @@ -100,7 +106,10 @@ - + + + + @@ -255,5 +264,13 @@ + + + + + + + + diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java index fa125b163..ecfa149aa 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java @@ -53,6 +53,7 @@ public class LauncherSettingsPanel extends AnimatedPanel { cboDownloadSource.setSelectedIndex(Settings.getInstance().getDownloadType()); cboTheme.setSelectedIndex(Settings.getInstance().getTheme()); chkEnableShadow.setSelected(Settings.getInstance().isEnableShadow()); + chkEnableAnimation.setSelected(Settings.getInstance().isEnableAnimation()); setBackground(Color.white); setOpaque(true); @@ -86,6 +87,7 @@ public class LauncherSettingsPanel extends AnimatedPanel { txtProxyUsername = new javax.swing.JTextField(); txtProxyPassword = new javax.swing.JTextField(); jLabel8 = new javax.swing.JLabel(); + chkEnableAnimation = new javax.swing.JCheckBox(); cboDownloadSource.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { @@ -172,6 +174,13 @@ public class LauncherSettingsPanel extends AnimatedPanel { jLabel8.setText(bundle.getString("proxy.password")); // NOI18N + chkEnableAnimation.setText("启用动态效果"); + chkEnableAnimation.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + chkEnableAnimationFocusLost(evt); + } + }); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( @@ -210,12 +219,16 @@ public class LauncherSettingsPanel extends AnimatedPanel { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(txtProxyPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE)))) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() .addComponent(chkEnableShadow) - .addComponent(btnCheckUpdate)) - .addGap(0, 0, Short.MAX_VALUE))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(chkEnableAnimation)) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(btnCheckUpdate)) + .addGap(0, 0, Short.MAX_VALUE)))) .addContainerGap()) ); layout.setVerticalGroup( @@ -246,7 +259,9 @@ public class LauncherSettingsPanel extends AnimatedPanel { .addComponent(txtProxyPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel8)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(chkEnableShadow) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(chkEnableShadow) + .addComponent(chkEnableAnimation)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnCheckUpdate, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 71, Short.MAX_VALUE) @@ -315,11 +330,16 @@ public class LauncherSettingsPanel extends AnimatedPanel { Settings.getInstance().setProxyPassword(txtProxyPassword.getText()); }//GEN-LAST:event_txtProxyPasswordFocusLost + private void chkEnableAnimationFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_chkEnableAnimationFocusLost + Settings.getInstance().setEnableAnimation(chkEnableAnimation.isSelected()); + }//GEN-LAST:event_chkEnableAnimationFocusLost + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnCheckUpdate; private javax.swing.JButton btnSelBackgroundPath; private javax.swing.JComboBox cboDownloadSource; private javax.swing.JComboBox cboTheme; + private javax.swing.JCheckBox chkEnableAnimation; private javax.swing.JCheckBox chkEnableShadow; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel14; diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DecompressTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DecompressTask.java new file mode 100644 index 000000000..e35ac0ea7 --- /dev/null +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/DecompressTask.java @@ -0,0 +1,46 @@ +/* + * Hello Minecraft! Launcher. + * Copyright (C) 2013 huangyuhui + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see {http://www.gnu.org/licenses/}. + */ +package org.jackhuang.hellominecraft.tasks; + +import java.io.File; +import org.jackhuang.hellominecraft.utils.system.Compressor; + +/** + * + * @author huangyuhui + */ +public class DecompressTask extends Task { + + File src, dest; + + public DecompressTask(File src, File dest) { + this.src = src; + this.dest = dest; + } + + @Override + public void executeTask() throws Throwable { + Compressor.unzip(src, dest); + } + + @Override + public String getInfo() { + return "Decompress: " + src.getAbsolutePath() + " to " + dest.getAbsolutePath(); + } + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java index 6fd194171..b9a6ef4f7 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java @@ -24,7 +24,7 @@ import org.jackhuang.hellominecraft.C; import org.jackhuang.hellominecraft.HMCLog; import org.jackhuang.hellominecraft.utils.MessageBox; import org.jackhuang.hellominecraft.utils.StrUtils; -import org.jackhuang.hellominecraft.utils.SwingUtils; +import org.jackhuang.hellominecraft.views.SwingUtils; /** * diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MessageBox.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MessageBox.java index 1c652a3d8..fa90e928a 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MessageBox.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MessageBox.java @@ -17,6 +17,7 @@ */ package org.jackhuang.hellominecraft.utils; +import org.jackhuang.hellominecraft.views.SwingUtils; import javax.swing.JOptionPane; import org.jackhuang.hellominecraft.C; diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java index 95956416b..5e95ab75c 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java @@ -28,8 +28,6 @@ import org.jackhuang.hellominecraft.logging.Level; import org.jackhuang.hellominecraft.utils.functions.NonFunction; import org.jackhuang.hellominecraft.utils.DoubleOutputStream; import org.jackhuang.hellominecraft.utils.LauncherPrintStream; -import org.jackhuang.hellominecraft.utils.LogWindowOutputStream; -import org.jackhuang.hellominecraft.utils.SwingUtils; import org.jackhuang.hellominecraft.utils.Utils; /** diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LogWindowOutputStream.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindowOutputStream.java similarity index 98% rename from HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LogWindowOutputStream.java rename to HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindowOutputStream.java index f088f5f03..d7f2dd552 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LogWindowOutputStream.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindowOutputStream.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see {http://www.gnu.org/licenses/}. */ -package org.jackhuang.hellominecraft.utils; +package org.jackhuang.hellominecraft.views; import java.io.OutputStream; import java.util.Timer; diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/SwingUtils.java similarity index 98% rename from HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java rename to HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/SwingUtils.java index dd601d981..80bfb1a28 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/SwingUtils.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see {http://www.gnu.org/licenses/}. */ -package org.jackhuang.hellominecraft.utils; +package org.jackhuang.hellominecraft.views; import java.awt.EventQueue; import java.awt.FontMetrics; @@ -29,6 +29,7 @@ import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.table.DefaultTableModel; import org.jackhuang.hellominecraft.HMCLog; +import org.jackhuang.hellominecraft.utils.StrUtils; import org.jackhuang.hellominecraft.utils.functions.NonFunction; /** diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java index ba7252550..81677c240 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java @@ -84,7 +84,7 @@ import org.jackhuang.hellominecraft.svrmgr.threads.MonitorThread; import org.jackhuang.hellominecraft.svrmgr.utils.FolderOpener; import org.jackhuang.hellominecraft.svrmgr.utils.IPGet; import org.jackhuang.hellominecraft.svrmgr.utils.Utilities; -import org.jackhuang.hellominecraft.utils.SwingUtils; +import org.jackhuang.hellominecraft.views.SwingUtils; import org.jackhuang.hellominecraft.version.MinecraftRemoteVersion; import org.jackhuang.hellominecraft.lookandfeel.components.ConstomButton; import org.jackhuang.hellominecraft.utils.Event;