Directly using VirtualBox from Java #5
2 changed files with 26 additions and 18 deletions
|
@ -3,7 +3,7 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>io.github.NorbiPeti</groupId>
|
<groupId>io.github.NorbiPeti</groupId>
|
||||||
<artifactId>VirtualComputer</artifactId>
|
<artifactId>VirtualComputer</artifactId>
|
||||||
<version>1.2-SNAPSHOT</version>
|
<version>2.0-SNAPSHOT</version>
|
||||||
<build>
|
<build>
|
||||||
<sourceDirectory>src</sourceDirectory>
|
<sourceDirectory>src</sourceDirectory>
|
||||||
<resources>
|
<resources>
|
||||||
|
|
|
@ -81,6 +81,13 @@ public class PluginMain extends JavaPlugin {
|
||||||
machine = vbox.getMachines().get(0);
|
machine = vbox.getMachines().get(0);
|
||||||
// machine.launchVMProcess(session, "headless", "").waitForCompletion(10000); - This creates a *process*, we don't want that anymore
|
// machine.launchVMProcess(session, "headless", "").waitForCompletion(10000); - This creates a *process*, we don't want that anymore
|
||||||
machine.lockMachine(session, LockType.Write); // We want the machine inside *our* process
|
machine.lockMachine(session, LockType.Write); // We want the machine inside *our* process
|
||||||
|
screenupdatetask = Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> {
|
||||||
|
if (session.getState() == SessionState.Spawning) // https://www.virtualbox.org/sdkref/_virtual_box_8idl.html#ac82c179a797c0d7c249d1b98a8e3aa8f
|
||||||
|
return; // "This state also occurs as a short transient state during an IMachine::lockMachine call."
|
||||||
|
else {
|
||||||
|
screenupdatetask.cancel();
|
||||||
|
screenupdatetask = null;
|
||||||
|
}
|
||||||
machine = session.getMachine(); // This is the Machine object we can work with
|
machine = session.getMachine(); // This is the Machine object we can work with
|
||||||
session.getConsole().powerUp().waitForCompletion(10000);
|
session.getConsole().powerUp().waitForCompletion(10000);
|
||||||
session.getConsole().getDisplay().attachFramebuffer(0L,
|
session.getConsole().getDisplay().attachFramebuffer(0L,
|
||||||
|
@ -98,6 +105,7 @@ public class PluginMain extends JavaPlugin {
|
||||||
screenupdatetask = null;
|
screenupdatetask = null;
|
||||||
}
|
}
|
||||||
}, 100, 100); // Do a full update every 5 seconds
|
}, 100, 100); // Do a full update every 5 seconds
|
||||||
|
}, 5, 5);
|
||||||
sender.sendMessage("§eComputer started.");
|
sender.sendMessage("§eComputer started.");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue