running server works, added eula dialog

This commit is contained in:
Bryson Steck 2023-05-13 14:18:45 -06:00
parent c3d1c4899b
commit cab0715248

View file

@ -9,8 +9,10 @@ import java.io.IOException
import java.io.BufferedReader import java.io.BufferedReader
import java.io.InputStreamReader import java.io.InputStreamReader
import java.awt.Checkbox import java.awt.Checkbox
import java.awt.Desktop
import java.util.Properties import java.util.Properties
import java.net.URL import java.net.URL
import java.net.URI
import javafx.beans.value.ChangeListener import javafx.beans.value.ChangeListener
import javafx.beans.value.ObservableValue import javafx.beans.value.ObservableValue
@ -28,6 +30,7 @@ import javafx.scene.control.TitledPane
import javafx.scene.control.ButtonBar import javafx.scene.control.ButtonBar
import javafx.scene.control.CheckBox import javafx.scene.control.CheckBox
import javafx.scene.control.ProgressBar import javafx.scene.control.ProgressBar
import javafx.scene.control.Hyperlink
import javafx.scene.layout.Border import javafx.scene.layout.Border
import javafx.scene.layout.BorderStroke import javafx.scene.layout.BorderStroke
import javafx.scene.layout.GridPane import javafx.scene.layout.GridPane
@ -353,6 +356,14 @@ class PrimaryController {
createDialog("warning", "You should only kill the server if\nabsolutely necessary. Data loss may occur.\nContinue anyway?", "Yes", "No", false) createDialog("warning", "You should only kill the server if\nabsolutely necessary. Data loss may occur.\nContinue anyway?", "Yes", "No", false)
return; return;
} }
if (!File(directory + "eula.txt").exists()) {
val res = eulaDialog()
if (res) {
File(directory + "eula.txt").writeText("eula=true")
} else {
return;
}
}
started = true started = true
statusBar.text = "The Minecraft Server is now running. Shutdown the server to unlock the settings." statusBar.text = "The Minecraft Server is now running. Shutdown the server to unlock the settings."
worldSettingsPane.isDisable = true worldSettingsPane.isDisable = true
@ -363,7 +374,7 @@ class PrimaryController {
startButton.text = "Kill Server" startButton.text = "Kill Server"
@Suppress("OPT_IN_USAGE") @Suppress("OPT_IN_USAGE")
GlobalScope.launch(Dispatchers.Default) { GlobalScope.launch(Dispatchers.Default) {
val builder = ProcessBuilder("java", "-jar", "${directory}server.jar") val builder = ProcessBuilder("java", "-jar", "${server.jar}")
builder.directory(File(directory)) builder.directory(File(directory))
val proc = builder.start() val proc = builder.start()
val reader = InputStreamReader(proc.inputStream) val reader = InputStreamReader(proc.inputStream)
@ -398,6 +409,64 @@ class PrimaryController {
} }
} }
private fun eulaDialog(): Boolean {
var result = false
val resources = this.javaClass.getResource("icons/warning.png")
val dialog = Stage();
dialog.initModality(Modality.APPLICATION_MODAL);
dialog.title = directory
val scenePane = Pane()
val dialogScene = Scene(scenePane, 400.0, 150.0);
val imagePane = Pane()
val icon = Image("$resources")
imagePane.layoutX = 14.0
imagePane.layoutY = 14.0
imagePane.scaleX = 0.7
imagePane.scaleY = 0.7
imagePane.children.add(ImageView(icon))
val label = Label("Do you agree to the terms of the Minecraft\nEnd User License Agreement?")
label.layoutX = 115.0
label.layoutY = 40.0
val buttonBar = ButtonBar()
buttonBar.buttonOrder = "L+R"
buttonBar.padding = Insets(10.0, 10.0, 10.0, 10.0)
buttonBar.layoutX = 0.0
buttonBar.layoutY = 107.0
buttonBar.prefWidth = 400.0
val noButton = Button("I Disagree")
noButton.onMouseClicked = EventHandler<MouseEvent>() {
result = false
dialog.hide()
}
noButton.isDefaultButton = true
val yesButton = Button("I Agree")
yesButton.onMouseClicked = EventHandler<MouseEvent>() {
result = true
dialog.hide()
}
val eula = Button("View EULA")
eula.onMouseClicked = EventHandler<MouseEvent>() {
val desktop = Desktop.getDesktop()
if (desktop.isSupported(Desktop.Action.BROWSE)) {
try {
desktop.browse(URI("https://account.mojang.com/documents/minecraft_eula"))
} catch (e: Exception) {
println(e)
}
}
}
ButtonBar.setButtonData(eula, ButtonBar.ButtonData.LEFT)
ButtonBar.setButtonData(noButton, ButtonBar.ButtonData.RIGHT)
ButtonBar.setButtonData(yesButton, ButtonBar.ButtonData.RIGHT)
buttonBar.buttons.add(eula)
buttonBar.buttons.add(noButton)
buttonBar.buttons.add(yesButton)
scenePane.children.addAll(imagePane, label, buttonBar)
dialog.setScene(dialogScene);
dialog.showAndWait();
return result
}
private fun createDialog(type: String, msg: String, yes: String, no: String, hold: Boolean): Boolean { private fun createDialog(type: String, msg: String, yes: String, no: String, hold: Boolean): Boolean {
var result = false var result = false
val resources = this.javaClass.getResource("icons/$type.png") val resources = this.javaClass.getResource("icons/$type.png")