Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Dabsunter committed Mar 27, 2016
0 parents commit cc54a60
Show file tree
Hide file tree
Showing 4 changed files with 143 additions and 0 deletions.
3 changes: 3 additions & 0 deletions config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
server-folder: "server"
command: |
java -Xmx1024M -jar server.jar
8 changes: 8 additions & 0 deletions plugin.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
name: OMGRemote
main: fr.dabsunter.omgremote.Main
version: 1.0.0
description: Lanceur de serveur paralelle

commands:
send:
usage: "/<command>"
91 changes: 91 additions & 0 deletions src/fr/dabsunter/omgremote/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
package fr.dabsunter.omgremote;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {

public static Process serverProcess;

@Override
public void onEnable() {
saveDefaultConfig();

getCommand("send").setExecutor(new SendExecutor());

Runtime runtime = Runtime.getRuntime();
try {
serverProcess = runtime.exec(
getConfig().getString("command"),
null,
new File(getConfig().getString("server-folder"))
);
} catch (IOException e) {
e.printStackTrace();
System.exit(0);
}

new Thread() {
public void run() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(serverProcess.getInputStream()));
String line = "";
try {
while((line = reader.readLine()) != null) {
System.out.println("[Remote Server]" + line);
}
} finally {
reader.close();
}
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
}.start();

new Thread() {
public void run() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(serverProcess.getErrorStream()));
String line = "";
try {
while((line = reader.readLine()) != null) {
System.out.println("[Remote Server]" + line);
}
} finally {
reader.close();
}
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
}.start();
}

@Override
public void onDisable() {
try {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(serverProcess.getOutputStream()));
try {
writer.write("stop");
} finally {
writer.close();
}
} catch(IOException ioe) {
ioe.printStackTrace();
}

try {
serverProcess.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
}

}
41 changes: 41 additions & 0 deletions src/fr/dabsunter/omgremote/SendExecutor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package fr.dabsunter.omgremote;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;

public class SendExecutor implements CommandExecutor {

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
switch(args.length) {
case 0:
return false;
default:
try {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(Main.serverProcess.getOutputStream()));
try {
writer.write(join(args));
writer.newLine();
} finally {
writer.flush();
}
} catch(IOException ioe) {
ioe.printStackTrace();
}
return true;
}
}

private String join(String[] args) {
String result = "";
for(String arg : args)
result += " " + arg;
return result.substring(1);
}

}

0 comments on commit cc54a60

Please sign in to comment.