Fixed Issue #1 & Added proxy support

This commit is contained in:
huanghongxun
2015-06-24 13:45:00 +08:00
parent 7bfe7c3432
commit e5621d1a58
30 changed files with 623 additions and 578 deletions

View File

@@ -50,7 +50,7 @@ configure(install.repositories.mavenInstaller) {
dependencies {
compile project(":HMCLAPI")
compile project(":MetroLookAndFeel")
compile files("../../../../repo/org/ho/jyaml/1.3/jyaml-1.3.jar")
compile ('org.jyaml:jyaml:1.3')
compile ("org.tukaani:xz:1.5")
compile ('org.jsoup:jsoup:1.7.2')
}

6
HMCSM/proguard.pro vendored
View File

@@ -1,6 +1,6 @@
-libraryjars D:\Java\jdk1.6.0_45\jre\lib\rt.jar
-libraryjars D:\Java\jdk1.6.0_45\jre\lib\jce.jar
-libraryjars D:\Java\jdk1.6.0_45\jre\lib\jsse.jar
-libraryjars <java.home>/lib/rt.jar
-libraryjars <java.home>/lib/jce.jar
-libraryjars <java.home>/lib/jsse.jar
-dontoptimize
-dontwarn

View File

@@ -9,8 +9,8 @@ package org.jackhuang.hellominecraft.svrmgr.installer.bukkit;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jackhuang.hellominecraft.DoneListener1;
import org.jackhuang.hellominecraft.HMCLog;
import org.jackhuang.hellominecraft.utils.functions.Consumer;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
@@ -22,18 +22,18 @@ import org.jsoup.select.Elements;
*/
public class BukkitFormatThread extends Thread {
DoneListener1<List<BukkitVersion>> lis;
Consumer<List<BukkitVersion>> lis;
List<BukkitVersion> formattedList;
String url;
public BukkitFormatThread(String url, DoneListener1<List<BukkitVersion>> lis) {
public BukkitFormatThread(String url, Consumer<List<BukkitVersion>> lis) {
this.lis = lis;
this.url = url;
}
public void format(String url) {
formattedList = new ArrayList<BukkitVersion>();
formattedList = new ArrayList<>();
try {
Document doc = Jsoup.connect(url).get();
@@ -74,7 +74,7 @@ public class BukkitFormatThread extends Thread {
List<BukkitVersion> al = null;
format(url);
if(lis != null)
lis.onDone(formattedList);
lis.accept(formattedList);
}
}

View File

@@ -9,7 +9,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jackhuang.hellominecraft.DoneListener1;
import org.jackhuang.hellominecraft.utils.functions.Consumer;
import org.jackhuang.hellominecraft.HMCLog;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
@@ -22,10 +22,10 @@ import org.jsoup.select.Elements;
*/
public class ForgeFormatThread extends Thread {
DoneListener1<Map<String, List<ForgeVersion>>> lis;
Consumer<Map<String, List<ForgeVersion>>> lis;
Map<String, List<ForgeVersion>> formattedList;
public ForgeFormatThread(DoneListener1<Map<String, List<ForgeVersion>>> lis) {
public ForgeFormatThread(Consumer<Map<String, List<ForgeVersion>>> lis) {
this.lis = lis;
}
@@ -75,14 +75,14 @@ public class ForgeFormatThread extends Thread {
}
if(!formattedList.containsKey(v.mcver))
formattedList.put(v.mcver, new ArrayList<ForgeVersion>());
formattedList.put(v.mcver, new ArrayList<>());
formattedList.get(v.mcver).add(v);
}
} catch (IOException ex) {
HMCLog.warn("Failed to get forge list", ex);
ForgeVersion v = new ForgeVersion();
v.mcver = v.ver = "获取失败";
formattedList.put(v.mcver, new ArrayList<ForgeVersion>());
formattedList.put(v.mcver, new ArrayList<>());
formattedList.get(v.mcver).add(v);
}
}
@@ -91,7 +91,7 @@ public class ForgeFormatThread extends Thread {
public void run() {
formatNew();
if(lis != null)
lis.onDone(formattedList);
lis.accept(formattedList);
}
}

View File

@@ -22,8 +22,6 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jackhuang.hellominecraft.utils.functions.DoneListener0;
import org.jackhuang.hellominecraft.DoneListener1;
import org.jackhuang.hellominecraft.HMCLog;
import org.jackhuang.hellominecraft.utils.IOUtils;
import org.jackhuang.hellominecraft.utils.MessageBox;
@@ -34,12 +32,15 @@ import org.jackhuang.hellominecraft.svrmgr.settings.SettingsManager;
import org.jackhuang.hellominecraft.svrmgr.threads.MonitorThread;
import org.jackhuang.hellominecraft.svrmgr.threads.WaitForThread;
import org.jackhuang.hellominecraft.svrmgr.utils.Utilities;
import org.jackhuang.hellominecraft.utils.Event;
import org.jackhuang.hellominecraft.utils.EventHandler;
import org.jackhuang.hellominecraft.utils.functions.Consumer;
/**
*
* @author hyh
*/
public class Server implements DoneListener1<Integer>, MonitorThread.MonitorThreadListener,
public class Server implements Event<Integer>, MonitorThread.MonitorThreadListener,
ActionListener {
private static Server instance;
@@ -61,10 +62,11 @@ public class Server implements DoneListener1<Integer>, MonitorThread.MonitorThre
Process server;
MonitorThread threadA, threadB;
WaitForThread threadC;
DoneListener1<Pair<String, String[]>> gettingPlayerNumber;
Consumer<Pair<String, String[]>> gettingPlayerNumber;
ArrayList<MonitorThread.MonitorThreadListener> listeners;
ArrayList<DoneListener1<Integer>> listenersC;
ArrayList<DoneListener0> listenersBegin, listenersDone;
ArrayList<Event<Integer>> listenersC;
//ArrayList<DoneListener0> listenersBegin, listenersDone;
public final EventHandler<Void> startedEvent = new EventHandler<>(this), stoppedEvent = new EventHandler<>(this);
ArrayList<TimerTask> timerTasks;
ArrayList<Schedule> schedules;
BufferedWriter bw;
@@ -78,30 +80,20 @@ public class Server implements DoneListener1<Integer>, MonitorThread.MonitorThre
this.jar = jar;
this.memory = memory;
isRestart = isDone = false;
listeners = new ArrayList<MonitorThread.MonitorThreadListener>();
listenersC = new ArrayList<DoneListener1<Integer>>();
listenersBegin = new ArrayList<DoneListener0>();
listenersDone = new ArrayList<DoneListener0>();
schedules = new ArrayList<Schedule>();
timerTasks = new ArrayList<TimerTask>();
listeners = new ArrayList<>();
listenersC = new ArrayList<>();
schedules = new ArrayList<>();
timerTasks = new ArrayList<>();
}
public void addListener(MonitorThread.MonitorThreadListener l) {
listeners.add(l);
}
public void addListener(DoneListener1<Integer> l) {
public void addListener(Event<Integer> l) {
listenersC.add(l);
}
public void addServerStartedListener(DoneListener0 l) {
listenersBegin.add(l);
}
public void addServerDoneListener(DoneListener0 l) {
listenersDone.add(l);
}
public void run() throws IOException {
String jvmPath;
if (StrUtils.isBlank(SettingsManager.settings.javaDir)) {
@@ -133,9 +125,7 @@ public class Server implements DoneListener1<Integer>, MonitorThread.MonitorThre
bw = new BufferedWriter(new OutputStreamWriter(server.getOutputStream()));
}
isRunning = true;
for (DoneListener0 d : listenersBegin) {
d.onDone();
}
startedEvent.execute(null);
sendStatus("*** 启动服务端中 ***");
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
@@ -156,7 +146,7 @@ public class Server implements DoneListener1<Integer>, MonitorThread.MonitorThre
}
}
public void getPlayerNumber(DoneListener1<Pair<String, String[]>> d) {
public void getPlayerNumber(Consumer<Pair<String, String[]>> d) {
isGettingPlayerNumber = 1;
gettingPlayerNumber = d;
sendCommand("list");
@@ -210,15 +200,13 @@ public class Server implements DoneListener1<Integer>, MonitorThread.MonitorThre
private void registerThreadC(Process p) {
threadC = new WaitForThread(p);
for (DoneListener1<Integer> l : listenersC) {
threadC.addListener(l);
}
threadC.addListener(this);
for (Event<Integer> l : listenersC) threadC.event.register(l);
threadC.event.register(this);
threadC.start();
}
@Override
public void onDone(Integer t) {
public boolean call(Object sender, Integer t) {
if (t == 0) {
sendStatus("*** 服务端已停止 ***");
System.out.println("Server stopped successfully");
@@ -227,17 +215,9 @@ public class Server implements DoneListener1<Integer>, MonitorThread.MonitorThre
System.err.println("Server crashed(exit code: " + t + ")");
}
isRunning = false;
for (int i = 0; i < schedules.size(); i++) {
if (schedules.get(i).timeType == Schedule.TIME_TYPE_SERVER_STOPPED) {
ScheduleTranslator.translate(this, schedules.get(i)).run();
}
}
if (timer != null) {
timer.cancel();
}
if (pastTimer != null) {
pastTimer.stop();
}
for (Schedule schedule : schedules) if (schedule.timeType == Schedule.TIME_TYPE_SERVER_STOPPED) ScheduleTranslator.translate(this, schedule).run();
if (timer != null) timer.cancel();
if (pastTimer != null) pastTimer.stop();
restoreMods();
if (isRestart) {
try {
@@ -248,6 +228,7 @@ public class Server implements DoneListener1<Integer>, MonitorThread.MonitorThre
}
isRestart = false;
}
return true;
}
private static void disactiveMods(ArrayList<String> inactiveExtMods,
@@ -270,58 +251,49 @@ public class Server implements DoneListener1<Integer>, MonitorThread.MonitorThre
System.out.println("没有文件: " + paramString);
return;
}
for (int i = 0; i < files.length; i++) {
File file = files[i];
if (!file.isDirectory()) {
String name = file.getName();
if ((!paramArrayOfString.contains(name))
|| ((!name.toLowerCase().endsWith(".zip")) && (!name.toLowerCase().endsWith(".jar")))) {
continue;
}
String newName = name + "X";
File newFile = new File(file.getParentFile(), newName);
if (newFile.exists()) {
newFile.delete();
}
if (file.renameTo(newFile)) {
System.out.println("禁用: " + name + ", 新名称: " + newFile.getName());
} else {
System.out.println("无法禁用: " + name);
}
}
}
for (File file : files) if (!file.isDirectory()) {
String name = file.getName();
if ((!paramArrayOfString.contains(name))
|| ((!name.toLowerCase().endsWith(".zip")) && (!name.toLowerCase().endsWith(".jar")))) {
continue;
}
String newName = name + "X";
File newFile = new File(file.getParentFile(), newName);
if (newFile.exists()) {
newFile.delete();
}
if (file.renameTo(newFile)) {
System.out.println("已禁用: " + name + ", 新名称: " + newFile.getName());
} else {
System.out.println("无法禁用: " + name);
}
}
}
private static void restoreModsByType(String paramString) {
System.out.println("还原被禁用的文件: " + paramString);
File[] files = new File(Utilities.getGameDir(), paramString).listFiles();
if (files == null) {
return;
}
for (int i = 0; i < files.length; i++) {
File file = files[i];
if (file.isDirectory()) {
continue;
}
String name = file.getName();
String lowName = name.toLowerCase();
if ((!lowName.endsWith(".zipx")) && (!lowName.endsWith(".jarx"))) {
continue;
}
String newName = name.substring(0, name.length() - 1);
File newFile = new File(file.getParentFile(), newName);
if (newFile.exists()) {
file.delete();
} else {
if (!file.renameTo(newFile)) {
System.out.println("无法重命名: " + file.getName() + " 到: " + newFile.getName() + " 在: " + file.getParent());
}
}
}
if (files == null) return;
for (File file : files) if (!file.isDirectory()) {
String name = file.getName();
String lowName = name.toLowerCase();
if ((!lowName.endsWith(".zipx")) && (!lowName.endsWith(".jarx"))) {
continue;
}
String newName = name.substring(0, name.length() - 1);
File newFile = new File(file.getParentFile(), newName);
if (newFile.exists()) {
file.delete();
} else {
if (!file.renameTo(newFile)) {
System.out.println("无法重命名: " + file.getName() + " 到: " + newFile.getName() + " 在: " + file.getParent());
}
}
}
}
static void restoreMods() {
@@ -360,18 +332,16 @@ public class Server implements DoneListener1<Integer>, MonitorThread.MonitorThre
} else {
s = new String[0];
}
Pair<String, String[]> p = new Pair<String, String[]>(playerNumber, s);
Pair<String, String[]> p = new Pair<>(playerNumber, s);
isGettingPlayerNumber = 0;
gettingPlayerNumber.onDone(p);
gettingPlayerNumber.accept(p);
return;
}
if (isDone == false) {
Pattern p = Pattern.compile("\\[INFO\\] Done \\([0-9]*\\.[0-9]*s\\)! For help, type \"help\" or \"\\?\"");
Matcher m = p.matcher(status);
if (m.find()) {
for (DoneListener0 d : listenersDone) {
d.onDone();
}
stoppedEvent.execute(null);
timer = new Timer();
timerTasks.clear();
for (int i = 0; i < schedules.size(); i++) {
@@ -379,9 +349,7 @@ public class Server implements DoneListener1<Integer>, MonitorThread.MonitorThre
ScheduleTranslator.translate(this, schedules.get(i)).run();
continue;
}
if (schedules.get(i).timeType != Schedule.TIME_TYPE_PER) {
continue;
}
if (schedules.get(i).timeType != Schedule.TIME_TYPE_PER) continue;
long mill = (long) Math.floor(schedules.get(i).per * 60 * 1000);
timerTasks.add(ScheduleTranslator.translate(this, schedules.get(i)));
timer.schedule(timerTasks.get(i), mill, mill);
@@ -395,11 +363,7 @@ public class Server implements DoneListener1<Integer>, MonitorThread.MonitorThre
}
if (status.length() > 20) {
if (status.substring(20).contains("[SEVERE] This crash report has been saved to: ")) {
for (int i = 0; i < schedules.size(); i++) {
if (schedules.get(i).timeType == Schedule.TIME_TYPE_SERVER_CRASHED) {
ScheduleTranslator.translate(this, schedules.get(i)).run();
}
}
for (Schedule schedule : schedules) if (schedule.timeType == Schedule.TIME_TYPE_SERVER_CRASHED) ScheduleTranslator.translate(this, schedule).run();
}
}
}
@@ -409,23 +373,15 @@ public class Server implements DoneListener1<Integer>, MonitorThread.MonitorThre
@Override
public void actionPerformed(ActionEvent e) {
c.setTime(new Date());
if (c.get(Calendar.SECOND) != 0) {
return;
}
if (c.get(Calendar.SECOND) != 0) return;
int minute = c.get(Calendar.MINUTE);
for (int i = 0; i < schedules.size(); i++) {
if (schedules.get(i).timeType != Schedule.TIME_TYPE_PAST_HOUR) {
continue;
}
if (schedules.get(i).per == minute) {
ScheduleTranslator.translate(this, schedules.get(i)).run();
}
}
for (Schedule schedule : schedules) {
if (schedule.timeType != Schedule.TIME_TYPE_PAST_HOUR) continue;
if (schedule.per == minute) ScheduleTranslator.translate(this, schedule).run();
}
}
private void sendStatus(String status) {
for (MonitorThread.MonitorThreadListener l : listeners) {
l.onStatus(status);
}
for (MonitorThread.MonitorThreadListener l : listeners) l.onStatus(status);
}
}

View File

@@ -4,10 +4,9 @@
*/
package org.jackhuang.hellominecraft.svrmgr.threads;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jackhuang.hellominecraft.DoneListener1;
import org.jackhuang.hellominecraft.utils.EventHandler;
/**
*
@@ -15,30 +14,21 @@ import org.jackhuang.hellominecraft.DoneListener1;
*/
public class WaitForThread extends Thread {
public ArrayList<DoneListener1<Integer>> al;
public final EventHandler<Integer> event = new EventHandler<>(this);
Process p;
public WaitForThread(Process p) {
this.p = p;
al = new ArrayList<DoneListener1<Integer>>();
}
public void addListener(DoneListener1<Integer> dl) {
al.add(dl);
}
@Override
public void run() {
try {
int exitCode = p.waitFor();
for(DoneListener1<Integer> dl : al)
if(dl != null)
dl.onDone(exitCode);
event.execute(exitCode);
} catch (InterruptedException ex) {
Logger.getLogger(WaitForThread.class.getName()).log(Level.SEVERE, null, ex);
for(DoneListener1<Integer> dl : al)
if(dl != null)
dl.onDone(-1);
event.execute(-1);
}
}

View File

@@ -8,9 +8,9 @@ package org.jackhuang.hellominecraft.svrmgr.utils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jackhuang.hellominecraft.DoneListener1;
import org.jackhuang.hellominecraft.HMCLog;
import org.jackhuang.hellominecraft.utils.NetUtils;
import org.jackhuang.hellominecraft.utils.functions.Consumer;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
@@ -21,7 +21,7 @@ import org.jsoup.select.Elements;
*/
public class IPGet extends Thread {
public DoneListener1<String> dl;
public Consumer<String> dl;
@Override
public void run() {
@@ -37,11 +37,11 @@ public class IPGet extends Thread {
while(m.find()) {
s += m.group() + ",";
}
dl.onDone(s.substring(0, s.length()-1));
dl.accept(s.substring(0, s.length()-1));
}
} catch (Exception ex) {
HMCLog.warn("Failed to get ip from ip138.", ex);
dl.onDone("获取失败");
dl.accept("获取失败");
}
}

View File

@@ -34,8 +34,6 @@ import javax.swing.JPopupMenu;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableModel;
import org.jackhuang.hellominecraft.C;
import org.jackhuang.hellominecraft.utils.functions.DoneListener0;
import org.jackhuang.hellominecraft.DoneListener1;
import org.jackhuang.hellominecraft.HMCLog;
import org.jackhuang.hellominecraft.tasks.Task;
import org.jackhuang.hellominecraft.tasks.TaskWindow;
@@ -48,7 +46,6 @@ import org.jackhuang.hellominecraft.utils.MessageBox;
import org.jackhuang.hellominecraft.svrmgr.utils.ModType;
import org.jackhuang.hellominecraft.svrmgr.utils.MonitorInfoBean;
import org.jackhuang.hellominecraft.svrmgr.utils.MonitorServiceImpl;
import org.jackhuang.hellominecraft.utils.Pair;
import org.jackhuang.hellominecraft.version.MinecraftRemoteVersions;
import org.jackhuang.hellominecraft.svrmgr.Main;
import org.jackhuang.hellominecraft.svrmgr.cbplugins.BukkitPlugin;
@@ -78,13 +75,14 @@ import org.jackhuang.hellominecraft.svrmgr.utils.Utilities;
import org.jackhuang.hellominecraft.utils.SwingUtils;
import org.jackhuang.hellominecraft.version.MinecraftRemoteVersion;
import org.jackhuang.hellominecraft.lookandfeel.components.ConstomButton;
import org.jackhuang.hellominecraft.utils.Event;
/**
*
* @author hyh
*/
public final class MainWindow extends javax.swing.JFrame
implements MonitorThread.MonitorThreadListener, DoneListener1<Integer> {
implements MonitorThread.MonitorThreadListener, Event<Integer> {
ImageIcon background = new ImageIcon(getClass().getResource("/background.jpg"));
JLabel backgroundLabel;
@@ -144,11 +142,10 @@ public final class MainWindow extends javax.swing.JFrame
setTitle(Main.makeTitle());
String mainjar = SettingsManager.settings.mainjar;
if (!Utilities.isEmpty(mainjar)) {
if (!Utilities.isEmpty(mainjar))
ServerProperties.init(new File(mainjar).getParent());
}
txtMainJar.setText(mainjar);
commandSet = new ArrayList<String>();
commandSet = new ArrayList<>();
btnStop.setEnabled(false);
btnShutdown.setEnabled(false);
btnCommand.setEnabled(false);
@@ -480,9 +477,8 @@ public final class MainWindow extends javax.swing.JFrame
public void actionPerformed(ActionEvent e) {
InputDialog id = new InputDialog(MainWindow.this, true, new String[]{"玩家", "物品ID", "数量"});
id.setVisible(true);
if (id.result != null) {
if (id.result != null)
Server.getInstance().sendCommand("give " + id.result[0] + " " + id.result[1] + " " + id.result[2]);
}
}
});
ppmBasically.add(itm);
@@ -2896,23 +2892,21 @@ public final class MainWindow extends javax.swing.JFrame
void loadFromServerProperties() {
ServerProperties sp = ServerProperties.getInstance();
if (sp == null) {
if (sp == null)
return;
}
txtServerPort.setValue(sp.getPropertyInt("server-port", 25565));
txtServerName.setText(sp.getProperty("server-name"));
cboGameMode.setSelectedIndex(sp.getPropertyInt("gamemode", 0));
cboDifficulty.setSelectedIndex(sp.getPropertyInt("difficulty", 1));
String wt = sp.getProperty("level-type");
if (wt.equals("LARGEBIOMES")) {
if (wt.equals("LARGEBIOMES"))
cboWorldType.setSelectedIndex(2);
} else if (wt.equals("FLAT")) {
else if (wt.equals("FLAT"))
cboWorldType.setSelectedIndex(1);
} else if (wt.equals("DEFAULT")) {
else if (wt.equals("DEFAULT"))
cboWorldType.setSelectedIndex(0);
} else {
else
cboWorldType.setSelectedIndex(0);
}
txtMaxPlayer.setValue(sp.getPropertyInt("max-players", 20));
chkAllowFlight.setSelected(sp.getPropertyBoolean("allow-flight", false));
chkAllowNether.setSelected(sp.getPropertyBoolean("allow-nether", true));
@@ -2932,82 +2926,64 @@ public final class MainWindow extends javax.swing.JFrame
void loadFromOPs() {
File mainjar = new File(SettingsManager.settings.mainjar);
if (!mainjar.exists()) {
return;
}
if (!mainjar.exists()) return;
File folder = mainjar.getParentFile();
op = new Op();
op.initByBoth(new File(folder, "ops.txt"), new File(folder, "ops.json"));
for (Op.Operator ss : op.op) {
lstOPModel.addElement(ss.name);
}
for (Op.Operator ss : op.op) lstOPModel.addElement(ss.name);
lstOP.setModel(lstOPModel);
}
void loadFromWhiteList() {
File mainjar = new File(SettingsManager.settings.mainjar);
if (!mainjar.exists()) {
return;
}
if (!mainjar.exists()) return;
File folder = mainjar.getParentFile();
whitelist = new WhiteList();
whitelist.initByBoth(new File(folder, "white-list.txt"), new File(folder, "white-list.json"));
for (WhiteList.WhiteListPlayer ss : whitelist.op) {
lstWhiteListModel.addElement(ss.name);
}
for (WhiteList.WhiteListPlayer ss : whitelist.op) lstWhiteListModel.addElement(ss.name);
lstWhiteList.setModel(lstWhiteListModel);
}
void loadFromBannedPlayers() {
File mainjar = new File(SettingsManager.settings.mainjar);
if (!mainjar.exists()) {
return;
}
if (!mainjar.exists()) return;
File folder = mainjar.getParentFile();
banned = new BannedPlayers();
banned.initByBoth(new File(folder, "banned-players.txt"), new File(folder, "banned-players.json"));
for (BannedPlayers.BannedPlayer ss : banned.op) {
for (BannedPlayers.BannedPlayer ss : banned.op)
lstBannedModel.addElement(ss.name);
}
lstBanned.setModel(lstBannedModel);
}
void loadLocalMods() {
String path = Utilities.getPath("mods");
if (path == null) {
return;
}
if (path == null) return;
ArrayList<String> sl = Utilities.findAllFile(new File(path));
DefaultTableModel model = (DefaultTableModel) lstExternalMods.getModel();
while (model.getRowCount() > 0) {
while (model.getRowCount() > 0)
model.removeRow(0);
}
for (String s : sl) {
for (String s : sl)
model.addRow(new Object[]{!SettingsManager.settings.inactiveExtMods.contains(s), s, ModType.getModTypeShowName(ModType.getModType(Utilities.addSeparator(path) + s))});
}
lstExternalMods.updateUI();
}
void loadLocalPlugins() {
String path = Utilities.getPath("plugins");
if (path == null) {
if (path == null)
return;
}
ArrayList<String> sl = Utilities.findAllFile(new File(path));
DefaultTableModel model = (DefaultTableModel) lstPlugins.getModel();
while (model.getRowCount() > 0) {
while (model.getRowCount() > 0)
model.removeRow(0);
}
for (String s : sl) {
PluginInformation p = PluginManager.getPluginYML(new File(Utilities.getGameDir() + "plugins" + File.separator + s));
if (p == null) {
if (p == null)
model.addRow(new Object[]{!SettingsManager.settings.inactivePlugins.contains(s), s,
"", "", "", ""});
} else {
else
model.addRow(new Object[]{!SettingsManager.settings.inactivePlugins.contains(s), s,
p.name, p.version, p.author, p.description});
}
}
lstPlugins.updateUI();
@@ -3015,17 +2991,14 @@ public final class MainWindow extends javax.swing.JFrame
void loadLocalCoreMods() {
String path = Utilities.getPath("coremods");
if (path == null) {
if (path == null)
return;
}
ArrayList<String> sl = Utilities.findAllFile(new File(path));
DefaultTableModel model = (DefaultTableModel) lstCoreMods.getModel();
while (model.getRowCount() > 0) {
while (model.getRowCount() > 0)
model.removeRow(0);
}
for (String s : sl) {
for (String s : sl)
model.addRow(new Object[]{!SettingsManager.settings.inactiveCoreMods.contains(s), s, ModType.getModTypeShowName(ModType.getModType(Utilities.addSeparator(path) + s))});
}
lstCoreMods.updateUI();
}
@@ -3033,14 +3006,12 @@ public final class MainWindow extends javax.swing.JFrame
void loadWorlds() {
ArrayList<String> s = BackupManager.findAllWorlds();
DefaultTableModel model = (DefaultTableModel) lstWorlds.getModel();
if (SettingsManager.settings.inactiveWorlds == null) {
SettingsManager.settings.inactiveWorlds = new ArrayList<String>();
}
for (String world : s) {
if (SettingsManager.settings.inactiveWorlds == null)
SettingsManager.settings.inactiveWorlds = new ArrayList<>();
for (String world : s)
model.addRow(new Object[]{
world, Utilities.getGameDir() + world, !SettingsManager.settings.inactiveWorlds.contains(world)
});
}
lstWorlds.updateUI();
}
@@ -3057,13 +3028,11 @@ public final class MainWindow extends javax.swing.JFrame
}
void loadSchedules() {
if (SettingsManager.settings.schedules == null) {
SettingsManager.settings.schedules = new ArrayList<Schedule>();
}
if (SettingsManager.settings.schedules == null)
SettingsManager.settings.schedules = new ArrayList<>();
DefaultTableModel model = (DefaultTableModel) lstSchedules.getModel();
for (Schedule s : SettingsManager.settings.schedules) {
for (Schedule s : SettingsManager.settings.schedules)
model.addRow(ScheduleTranslator.getRow(s));
}
lstSchedules.updateUI();
}
@@ -3073,67 +3042,46 @@ public final class MainWindow extends javax.swing.JFrame
void loadBukkits() {
int idx = cboBukkitType.getSelectedIndex();
if (idx == -1) {
return;
}
String url = null;
if (idx == -1) return;
if (idx == 1) {
BukkitFormatThread thread = new BukkitFormatThread(
"http://dl.bukkit.org/downloads/craftbukkit/list/beta/",
new DoneListener1<List<BukkitVersion>>() {
@Override
public void onDone(List<BukkitVersion> value) {
craftBukkitBeta = value;
reloadBukkitList();
}
"http://dl.bukkit.org/downloads/craftbukkit/list/beta/", value -> {
craftBukkitBeta = value;
reloadBukkitList();
});
thread.start();
} else if (idx == 0) {
BukkitFormatThread thread = new BukkitFormatThread(
"http://dl.bukkit.org/downloads/craftbukkit/list/rb/",
new DoneListener1<List<BukkitVersion>>() {
@Override
public void onDone(List<BukkitVersion> value) {
craftBukkitRecommended = value;
reloadBukkitList();
}
"http://dl.bukkit.org/downloads/craftbukkit/list/rb/", value -> {
craftBukkitRecommended = value;
reloadBukkitList();
});
thread.start();
} else if (idx == 2) {
BukkitFormatThread thread = new BukkitFormatThread(
"http://dl.bukkit.org/downloads/craftbukkit/list/dev/",
new DoneListener1<List<BukkitVersion>>() {
@Override
public void onDone(List<BukkitVersion> value) {
craftBukkitDev = value;
reloadBukkitList();
}
"http://dl.bukkit.org/downloads/craftbukkit/list/dev/", value -> {
craftBukkitDev = value;
reloadBukkitList();
});
thread.start();
}
}
void loadMCPCs() {
ForgeFormatThread thread = new ForgeFormatThread(
new DoneListener1<Map<String, List<ForgeVersion>>>() {
@Override
public void onDone(Map<String, List<ForgeVersion>> value) {
mcpcPackages = value;
reloadMCPCList();
}
});
ForgeFormatThread thread = new ForgeFormatThread(value -> {
mcpcPackages = value;
reloadMCPCList();
});
thread.start();
}
public void reloadMCPCList() {
if (mcpcPackages == null) {
if (mcpcPackages == null)
return;
}
int cnt = cboCauldronMinecraft.getItemCount();
cboCauldronMinecraft.removeAllItems();
for (String s : mcpcPackages.keySet()) {
for (String s : mcpcPackages.keySet())
cboCauldronMinecraft.addItem(s);
}
String mcver = (String) cboCauldronMinecraft.getSelectedItem();
useMCPCVersions(mcver);
@@ -3141,9 +3089,8 @@ public final class MainWindow extends javax.swing.JFrame
public void useMCPCVersions(String ver) {
DefaultTableModel model = (DefaultTableModel) lstMCPC.getModel();
while (model.getRowCount() > 0) {
while (model.getRowCount() > 0)
model.removeRow(0);
}
for (ForgeVersion v : mcpcPackages.get(ver)) {
Object[] row = new Object[]{
v.mcver, v.ver, v.releasetime
@@ -3155,26 +3102,22 @@ public final class MainWindow extends javax.swing.JFrame
public void reloadBukkitList() {
int idx = cboBukkitType.getSelectedIndex();
if (idx == -1) {
if (idx == -1)
return;
}
if (idx == 1) {
if (idx == 1)
useBukkitVersions(craftBukkitBeta);
} else if (idx == 0) {
else if (idx == 0)
useBukkitVersions(craftBukkitRecommended);
} else if (idx == 2) {
else if (idx == 2)
useBukkitVersions(craftBukkitDev);
}
}
public void useBukkitVersions(List<BukkitVersion> list) {
if (list == null) {
if (list == null)
return;
}
DefaultTableModel model = (DefaultTableModel) lstCraftbukkit.getModel();
while (model.getRowCount() > 0) {
while (model.getRowCount() > 0)
model.removeRow(0);
}
for (BukkitVersion v : list) {
Object[] row = new Object[]{
v.buildNumber, v.version
@@ -3229,54 +3172,42 @@ public final class MainWindow extends javax.swing.JFrame
void refreshInfos() {
ArrayList<String> al = Utilities.findAllFile(new File(Utilities.getGameDir() + "infos-HMCSM"));
DefaultTableModel model = (DefaultTableModel) lstInfos.getModel();
for (String s : al) {
for (String s : al)
model.addRow(new Object[]{s, Utilities.trimExtension(s)});
}
lstInfos.updateUI();
}
void refreshReports() {
ArrayList<String> al = Utilities.findAllFile(new File(Utilities.getGameDir() + "crash-reports"));
for (String s : al) {
lstCrashReportsModel.addElement(s);
}
for (String s : al) lstCrashReportsModel.addElement(s);
lstReports.setModel(lstCrashReportsModel);
}
void getIP() {
IPGet get = new IPGet();
get.dl = new DoneListener1<String>() {
@Override
public void onDone(String value) {
lblIPAddress.setText("IP: " + value);
}
};
get.dl = a -> lblIPAddress.setText("IP: " + a);;
get.start();
}
void loadBukkitPlugins() {
final DefaultTableModel model = (DefaultTableModel) lstBukkitPlugins.getModel();
while (model.getRowCount() > 0) {
while (model.getRowCount() > 0)
model.removeRow(0);
}
lstBukkitPlugins.updateUI();
Thread t = new Thread() {
@Override
public void run() {
try {
List<BukkitPlugin> l;
if (cboCategory.getSelectedIndex() == 0) {
if (cboCategory.getSelectedIndex() == 0)
l = PluginManager.getPlugins();
} else {
else
l = PluginManager.getPluginsByCategory(cboCategory.getSelectedItem().toString());
}
plugins = l;
for (BukkitPlugin p : l) {
for (BukkitPlugin p : l)
model.addRow(new Object[]{
p.plugin_name, p.description, p.getLatestVersion(), p.getLatestBukkit()
});
}
lstBukkitPlugins.updateUI();
} catch (Exception ex) {
HMCLog.warn("Failed to get plugins", ex);
@@ -3294,9 +3225,8 @@ public final class MainWindow extends javax.swing.JFrame
List<Category> l = PluginManager.getCategories();
cboCategory.removeAllItems();
cboCategory.addItem("所有");
for (Category c : l) {
for (Category c : l)
cboCategory.addItem(c.name);
}
} catch (Exception ex) {
HMCLog.warn("Failed to load bukkit categories.");
}
@@ -3320,41 +3250,36 @@ public final class MainWindow extends javax.swing.JFrame
void loadPlayers() {
Server s = Server.getInstance();
if (s != null && s.isRunning) {
s.getPlayerNumber(new DoneListener1<Pair<String, String[]>>() {
@Override
public void onDone(Pair<String, String[]> t) {
lblPlayers.setText("在线人数" + t.key);
lstPlayersModel.clear();
for (String s : t.value) {
lstPlayersModel.addElement(s);
}
lstPlayers.setModel(lstPlayersModel);
}
if (s != null && s.isRunning)
s.getPlayerNumber(t -> {
lblPlayers.setText("在线人数" + t.key);
lstPlayersModel.clear();
for (String s1 : t.value) lstPlayersModel.addElement(s1);
lstPlayers.setModel(lstPlayersModel);
});
} else {
else
MessageBox.Show("服务器未开启!");
}
}
class ServerBeginListener implements DoneListener0 {
class ServerBeginListener implements Event<Void> {
@Override
public void onDone() {
commandSet = new ArrayList<String>();
public boolean call(Object sender, Void v) {
commandSet = new ArrayList<>();
txtMain.setText("");
btnLaunch.setEnabled(false);
btnStop.setEnabled(true);
btnShutdown.setEnabled(true);
btnCommand.setEnabled(true);
return true;
}
}
class ServerDoneListener implements DoneListener0 {
class ServerDoneListener implements Event<Void> {
@Override
public void onDone() {
public boolean call(Object sender, Void v) {
getPlayerNumberTimer = new Timer();
getPlayerNumberTimer.schedule(new TimerTask() {
@@ -3363,6 +3288,7 @@ public final class MainWindow extends javax.swing.JFrame
loadPlayers();
}
}, 1000 * 60 * 10, 1000 * 60 * 10);
return true;
}
}
@@ -3372,40 +3298,35 @@ public final class MainWindow extends javax.swing.JFrame
if (!eula.exists()) {
int option = JOptionPane.showConfirmDialog(null, "您是否确认新的EULA(https://account.mojang.com/documents/minecraft_eula)如果拒绝会导致无法启动Minecraft 1.7.10或更高版本的服务端。");
try {
if (option == JOptionPane.YES_OPTION) {
if (option == JOptionPane.YES_OPTION)
FileUtils.write(eula, "eula=true");
} else if (option == JOptionPane.NO_OPTION) {
else if (option == JOptionPane.NO_OPTION)
FileUtils.write(eula, "eula=false");
}
} catch (IOException e) {
MessageBox.Show("确认rula失败");
}
}
File serverproperties = new File(new File(SettingsManager.settings.mainjar).getParentFile(), "server.properties");
if (!serverproperties.exists()) {
if (!serverproperties.exists())
try {
FileUtils.write(serverproperties, ServerProperties.getDefault());
} catch (IOException ex) {
HMCLog.warn("Failed to save server.properties", ex);
}
}
Server.init(SettingsManager.settings.mainjar, String.valueOf(SettingsManager.settings.maxMemory));
Server.getInstance()
.addListener((MonitorThread.MonitorThreadListener) this);
Server.getInstance()
.addListener((DoneListener1<Integer>) this);
.addListener((Event<Integer>) this);
Server.getInstance()
.clearSchedule();
for (Schedule s : SettingsManager.settings.schedules) {
for (Schedule s : SettingsManager.settings.schedules)
Server.getInstance().addSchedule(s);
}
Server.getInstance()
.addServerStartedListener(new ServerBeginListener());
Server.getInstance()
.addServerDoneListener(new ServerDoneListener());
Server.getInstance().startedEvent.register(new ServerBeginListener());
Server.getInstance().startedEvent.register(new ServerDoneListener());
try {
Server.getInstance().run();
} catch (IOException ex) {
@@ -3434,18 +3355,15 @@ public final class MainWindow extends javax.swing.JFrame
} else if (evt.getKeyCode() == KeyEvent.VK_DOWN) {
newCommandIndex++;
type = 1;
} else if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
} else if (evt.getKeyCode() == KeyEvent.VK_ENTER)
type = 2;
}
if (type == 1) {
if (outOfCommandSet(newCommandIndex)) {
if (outOfCommandSet(newCommandIndex))
return;
}
commandIndex = newCommandIndex;
txtCommand.setText(commandSet.get(commandIndex));
} else if (type == 2) {
} else if (type == 2)
sendCommand();
}
}//GEN-LAST:event_txtCommandKeyPressed
private void btnSendCommandActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSendCommandActionPerformed
@@ -3530,13 +3448,12 @@ public final class MainWindow extends javax.swing.JFrame
private void cboWorldTypeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboWorldTypeItemStateChanged
int OAO = cboWorldType.getSelectedIndex();
String type = "DEFAULT";
if (OAO == 0) {
if (OAO == 0)
type = "DEFAULT";
} else if (OAO == 1) {
else if (OAO == 1)
type = "FLAT";
} else if (OAO == 2) {
else if (OAO == 2)
type = "LARGEBIMOES";
}
ServerProperties.getInstance().setLevelType(type);
}//GEN-LAST:event_cboWorldTypeItemStateChanged
@@ -3560,9 +3477,9 @@ public final class MainWindow extends javax.swing.JFrame
lstOPModel.addElement(txtOPName.getText());
lstOP.updateUI();
if (Server.isInstanceRunning()) {
if (Server.isInstanceRunning())
Server.getInstance().sendCommand("op " + txtOPName.getText());
} else {
else {
Op.Operator operator = new Op.Operator(txtOPName.getText());
op.op.add(operator);
File dir = new File(SettingsManager.settings.mainjar).getParentFile();
@@ -3580,9 +3497,9 @@ public final class MainWindow extends javax.swing.JFrame
lstOPModel.removeElement(lstOP.getSelectedIndex());
lstOP.updateUI();
if (Server.isInstanceRunning()) {
if (Server.isInstanceRunning())
Server.getInstance().sendCommand("deop " + txtOPName.getText());
} else {
else {
Op.Operator operator = new Op.Operator(s);
op.op.remove(operator);
File dir = new File(SettingsManager.settings.mainjar).getParentFile();
@@ -3599,9 +3516,9 @@ public final class MainWindow extends javax.swing.JFrame
lstWhiteListModel.addElement(txtWhiteName.getText());
lstWhiteList.updateUI();
if (Server.isInstanceRunning()) {
if (Server.isInstanceRunning())
Server.getInstance().sendCommand("whitelist add " + txtWhiteName.getText());
} else {
else {
WhiteList.WhiteListPlayer player = new WhiteList.WhiteListPlayer(txtWhiteName.getText());
whitelist.op.add(player);
File dir = new File(SettingsManager.settings.mainjar).getParentFile();
@@ -3619,9 +3536,9 @@ public final class MainWindow extends javax.swing.JFrame
lstWhiteListModel.removeElement(lstWhiteList.getSelectedIndex());
lstWhiteList.updateUI();
if (Server.isInstanceRunning()) {
if (Server.isInstanceRunning())
Server.getInstance().sendCommand("whitelist remove " + txtWhiteName.getText());
} else {
else {
WhiteList.WhiteListPlayer player = new WhiteList.WhiteListPlayer(name);
whitelist.op.remove(player);
File dir = new File(SettingsManager.settings.mainjar).getParentFile();
@@ -3773,22 +3690,20 @@ public final class MainWindow extends javax.swing.JFrame
Vector strings = ((DefaultTableModel) lstExternalMods.getModel()).getDataVector();
for (Object s : strings) {
Vector v = (Vector) s;
if (!(Boolean) v.elementAt(0)) {
if (!(Boolean) v.elementAt(0))
arrayList.add((String) v.elementAt(1));
}
}
SettingsManager.settings.inactiveExtMods = arrayList;
SettingsManager.save();
}//GEN-LAST:event_btnSaveExtModActionPerformed
private void btnSavePluginsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSavePluginsActionPerformed
ArrayList<String> arrayList = new ArrayList<String>();
ArrayList<String> arrayList = new ArrayList<>();
Vector strings = ((DefaultTableModel) lstCoreMods.getModel()).getDataVector();
for (Object s : strings) {
Vector v = (Vector) s;
if (!(Boolean) v.elementAt(0)) {
if (!(Boolean) v.elementAt(0))
arrayList.add((String) v.elementAt(1));
}
}
SettingsManager.settings.inactiveCoreMods = arrayList;
SettingsManager.save();
@@ -3798,9 +3713,9 @@ public final class MainWindow extends javax.swing.JFrame
lstBannedModel.addElement(txtBanName.getText());
lstBanned.updateUI();
if (Server.isInstanceRunning()) {
if (Server.isInstanceRunning())
Server.getInstance().sendCommand("ban " + txtBanName.getText());
} else {
else {
BannedPlayers.BannedPlayer player = new BannedPlayers.BannedPlayer(txtBanName.getText());
banned.op.add(player);
File dir = new File(SettingsManager.settings.mainjar).getParentFile();
@@ -3818,9 +3733,9 @@ public final class MainWindow extends javax.swing.JFrame
lstBannedModel.removeElement(lstBanned.getSelectedIndex());
lstBanned.updateUI();
if (Server.isInstanceRunning()) {
if (Server.isInstanceRunning())
Server.getInstance().sendCommand("pardon " + txtBanName.getText());
} else {
else {
BannedPlayers.BannedPlayer player = new BannedPlayers.BannedPlayer(s);
banned.op.remove(player);
File dir = new File(SettingsManager.settings.mainjar).getParentFile();
@@ -3905,12 +3820,10 @@ public final class MainWindow extends javax.swing.JFrame
private void btnSaveWorldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSaveWorldActionPerformed
DefaultTableModel model = (DefaultTableModel) lstWorlds.getModel();
SettingsManager.settings.inactiveWorlds = new ArrayList<String>();
for (int i = 0; i < model.getRowCount(); i++) {
if ((Boolean) model.getValueAt(i, 2) == false) {
SettingsManager.settings.inactiveWorlds = new ArrayList<>();
for (int i = 0; i < model.getRowCount(); i++)
if ((Boolean) model.getValueAt(i, 2) == false)
SettingsManager.settings.inactiveWorlds.add((String) model.getValueAt(i, 0));
}
}
SettingsManager.save();
}//GEN-LAST:event_btnSaveWorldActionPerformed
@@ -3931,9 +3844,8 @@ public final class MainWindow extends javax.swing.JFrame
private void btnDeleteBackupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteBackupActionPerformed
int index = lstBackups.getSelectedRow();
if (index == -1) {
if (index == -1)
return;
}
DefaultTableModel model = (DefaultTableModel) lstBackups.getModel();
Utilities.deleteAll(new File(BackupManager.backupDir()
+ model.getValueAt(index, 0) + "+"
@@ -3944,9 +3856,8 @@ public final class MainWindow extends javax.swing.JFrame
private void btnRestoreBackupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRestoreBackupActionPerformed
int index = lstBackups.getSelectedRow();
if (index == -1) {
if (index == -1)
return;
}
DefaultTableModel model = (DefaultTableModel) lstBackups.getModel();
BackupManager.restoreBackup(BackupManager.backupDir()
+ model.getValueAt(index, 0) + "+"
@@ -3977,9 +3888,8 @@ public final class MainWindow extends javax.swing.JFrame
try {
DefaultTableModel model = (DefaultTableModel) lstInfos.getModel();
int index = lstInfos.getSelectedRow();
if (index == -1) {
if (index == -1)
return;
}
String path = Utilities.getGameDir() + "infos-HMCSM" + File.separator + model.getValueAt(index, 0);
String content = FileUtils.readFileToString(new File(path));
txtInfo.setText(content);
@@ -3990,14 +3900,13 @@ public final class MainWindow extends javax.swing.JFrame
private void btnAutoSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAutoSearchActionPerformed
ArrayList<String> al = Utilities.findAllFile(IOUtils.currentDir());
for (String s : al) {
for (String s : al)
if (ServerChecker.isServerJar(new File(s))) {
String path = IOUtils.tryGetCanonicalFilePath(new File(IOUtils.currentDir(), s));
txtMainJar.setText(path);
SettingsManager.settings.mainjar = path;
SettingsManager.save();
}
}
}//GEN-LAST:event_btnAutoSearchActionPerformed
private void cboCategoryItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboCategoryItemStateChanged
@@ -4007,9 +3916,8 @@ public final class MainWindow extends javax.swing.JFrame
private void btnShowPluginInfoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnShowPluginInfoActionPerformed
try {
int index = lstBukkitPlugins.getSelectedRow();
if (index == -1) {
if (index == -1)
return;
}
PluginInfo pi = PluginManager.getPluginInfo(plugins.get(index).slug);
PluginInfoDialog w = new PluginInfoDialog(this, true, pi);
w.setVisible(true);
@@ -4025,9 +3933,8 @@ public final class MainWindow extends javax.swing.JFrame
private void btnShowReportActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnShowReportActionPerformed
try {
int index = lstReports.getSelectedIndex();
if (index == -1) {
if (index == -1)
return;
}
String path = Utilities.getGameDir() + "crash-reports" + File.separator + lstCrashReportsModel.get(index);
String content = FileUtils.readFileToString(new File(path));
txtCrashReport.setText(content);
@@ -4083,15 +3990,13 @@ public final class MainWindow extends javax.swing.JFrame
private void btnDownloadCraftbukkitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadCraftbukkitActionPerformed
int idx = lstCraftbukkit.getSelectedRow();
if (idx == -1) {
if (idx == -1)
return;
}
String ext = "";
List<BukkitVersion> cb = null;
int idx2 = cboBukkitType.getSelectedIndex();
if (idx2 == -1) {
if (idx2 == -1)
return;
}
switch (idx2) {
case 0:
ext = "rb";
@@ -4101,6 +4006,8 @@ public final class MainWindow extends javax.swing.JFrame
ext = "beta";
cb = craftBukkitBeta;
break;
default:
return;
}
BukkitVersion v = cb.get(idx);
File file = new File(IOUtils.currentDir(), "craftbukkit-" + ext + "-" + v.version + ".jar");
@@ -4110,18 +4017,16 @@ public final class MainWindow extends javax.swing.JFrame
private void btnDownloadMCPCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadMCPCActionPerformed
int idx = lstMCPC.getSelectedRow();
if (idx == -1) {
if (idx == -1)
return;
}
ForgeVersion v = mcpcPackages.get(cboCauldronMinecraft.getSelectedItem().toString()).get(idx);
String url;
File filepath = new File(IOUtils.currentDir(), "forge-installer.jar");
url = v.installer[1];
if (!TaskWindow.getInstance().addTask(new FileDownloadTask(url, filepath).setTag("cauldron-" + v.ver)).start()) {
if (!TaskWindow.getInstance().addTask(new FileDownloadTask(url, filepath).setTag("cauldron-" + v.ver)).start())
MessageBox.Show(C.I18N.getString("install.failed_download_forge"));
} else {
else
installMCPC(filepath);
}
}//GEN-LAST:event_btnDownloadMCPCActionPerformed
private void installMCPC(final File filepath) {
@@ -4144,18 +4049,16 @@ public final class MainWindow extends javax.swing.JFrame
Vector strings = ((DefaultTableModel) lstPlugins.getModel()).getDataVector();
for (Object s : strings) {
Vector v = (Vector) s;
if (!(Boolean) v.elementAt(0)) {
if (!(Boolean) v.elementAt(0))
arrayList.add((String) v.elementAt(1));
}
}
SettingsManager.settings.inactivePlugins = arrayList;
SettingsManager.save();
}//GEN-LAST:event_btnSaveCoreModActionPerformed
private void cboCauldronMinecraftItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboCauldronMinecraftItemStateChanged
if (cboCauldronMinecraft.getItemCount() > 0 && mcpcPackages != null && mcpcPackages.containsKey(cboCauldronMinecraft.getSelectedItem().toString())) {
if (cboCauldronMinecraft.getItemCount() > 0 && mcpcPackages != null && mcpcPackages.containsKey(cboCauldronMinecraft.getSelectedItem().toString()))
useMCPCVersions(cboCauldronMinecraft.getSelectedItem().toString());
}
}//GEN-LAST:event_cboCauldronMinecraftItemStateChanged
private void btnInstallMCPCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnInstallMCPCActionPerformed
@@ -4177,9 +4080,8 @@ public final class MainWindow extends javax.swing.JFrame
}//GEN-LAST:event_jButton11ActionPerformed
private void btnCommandMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnCommandMouseClicked
if (Server.getInstance() == null || !Server.getInstance().isRunning || !btnCommand.isEnabled()) {
if (Server.getInstance() == null || !Server.getInstance().isRunning || !btnCommand.isEnabled())
return;
}
ppmBasically.show(evt.getComponent(), evt.getPoint().x, evt.getPoint().y);
}//GEN-LAST:event_btnCommandMouseClicked
@@ -4192,9 +4094,8 @@ public final class MainWindow extends javax.swing.JFrame
}//GEN-LAST:event_formWindowClosed
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
if (Server.getInstance() != null && Server.getInstance().isRunning) {
if (Server.getInstance() != null && Server.getInstance().isRunning)
Server.getInstance().stop();
}
}//GEN-LAST:event_formWindowClosing
private void txtMaxMemoryFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtMaxMemoryFocusLost
@@ -4212,7 +4113,7 @@ public final class MainWindow extends javax.swing.JFrame
}
@Override
public void onDone(Integer t) {
public boolean call(Object sender, Integer t) {
btnLaunch.setEnabled(true);
btnStop.setEnabled(false);
btnShutdown.setEnabled(false);
@@ -4229,30 +4130,28 @@ public final class MainWindow extends javax.swing.JFrame
getPlayerNumberTimer.cancel();
getPlayerNumberTimer = null;
}
return true;
}
private void sendCommand() {
String command = txtCommand.getText();
boolean append = false;
if (outOfCommandSet()) {
if (outOfCommandSet())
append = true;
} else if (!command.equals(commandSet.get(commandIndex))) {
else if (!command.equals(commandSet.get(commandIndex)))
append = true;
}
if (Server.getInstance() != null) {
if (Server.getInstance() != null)
Server.getInstance().sendCommand(command);
} else {
else
System.err.println("Server is null.");
}
System.out.println("Send command: " + command);
onStatus(">" + command);
txtCommand.setText("");
if (append) {
commandSet.add(command);
commandIndex = commandSet.size();
} else {
} else
commandIndex++;
}
}
MonitorThread mainThread;