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;