diff options
Diffstat (limited to 'src/main/resources/xyz')
-rw-r--r-- | src/main/resources/xyz/brysonsteck/ServerCraft/app.png | bin | 0 -> 75026 bytes | |||
-rw-r--r-- | src/main/resources/xyz/brysonsteck/ServerCraft/css/info-tabs.css | 5 | ||||
-rw-r--r-- | src/main/resources/xyz/brysonsteck/ServerCraft/icons/info.png | bin | 0 -> 5289 bytes | |||
-rw-r--r-- | src/main/resources/xyz/brysonsteck/ServerCraft/icons/warning.png | bin | 0 -> 5131 bytes | |||
-rw-r--r-- | src/main/resources/xyz/brysonsteck/ServerCraft/info.fxml | 108 | ||||
-rw-r--r-- | src/main/resources/xyz/brysonsteck/ServerCraft/primary.fxml | 362 |
6 files changed, 475 insertions, 0 deletions
diff --git a/src/main/resources/xyz/brysonsteck/ServerCraft/app.png b/src/main/resources/xyz/brysonsteck/ServerCraft/app.png Binary files differnew file mode 100644 index 0000000..ceb633a --- /dev/null +++ b/src/main/resources/xyz/brysonsteck/ServerCraft/app.png diff --git a/src/main/resources/xyz/brysonsteck/ServerCraft/css/info-tabs.css b/src/main/resources/xyz/brysonsteck/ServerCraft/css/info-tabs.css new file mode 100644 index 0000000..023b0c1 --- /dev/null +++ b/src/main/resources/xyz/brysonsteck/ServerCraft/css/info-tabs.css @@ -0,0 +1,5 @@ +.tab-pane>*.tab-header-area>*.tab-header-background { + -fx-background-color: "#F4F4F4"; + -fx-border-color: "#DCDCDC"; + -fx-border-width: 0 0 1 0 +}
\ No newline at end of file diff --git a/src/main/resources/xyz/brysonsteck/ServerCraft/icons/info.png b/src/main/resources/xyz/brysonsteck/ServerCraft/icons/info.png Binary files differnew file mode 100644 index 0000000..c1951a7 --- /dev/null +++ b/src/main/resources/xyz/brysonsteck/ServerCraft/icons/info.png diff --git a/src/main/resources/xyz/brysonsteck/ServerCraft/icons/warning.png b/src/main/resources/xyz/brysonsteck/ServerCraft/icons/warning.png Binary files differnew file mode 100644 index 0000000..4d66729 --- /dev/null +++ b/src/main/resources/xyz/brysonsteck/ServerCraft/icons/warning.png diff --git a/src/main/resources/xyz/brysonsteck/ServerCraft/info.fxml b/src/main/resources/xyz/brysonsteck/ServerCraft/info.fxml new file mode 100644 index 0000000..f0b73f3 --- /dev/null +++ b/src/main/resources/xyz/brysonsteck/ServerCraft/info.fxml @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.geometry.Insets?> +<?import javafx.scene.control.Button?> +<?import javafx.scene.control.ButtonBar?> +<?import javafx.scene.control.Hyperlink?> +<?import javafx.scene.control.Label?> +<?import javafx.scene.control.Separator?> +<?import javafx.scene.control.Tab?> +<?import javafx.scene.control.TabPane?> +<?import javafx.scene.image.Image?> +<?import javafx.scene.image.ImageView?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.Pane?> +<?import javafx.scene.layout.VBox?> +<?import javafx.scene.text.Font?> + +<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="358.0" prefWidth="398.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="xyz.brysonsteck.ServerCraft.controllers.InfoController"> + <children> + <ImageView fitHeight="115.0" fitWidth="92.0" layoutX="30.0" layoutY="30.0" pickOnBounds="true" preserveRatio="true"> + <image> + <Image url="@app.png" /> + </image> + </ImageView> + <Label layoutX="146.0" layoutY="42.0" text="ServerCraft"> + <font> + <Font name="System Bold" size="28.0" /> + </font> + </Label> + <Label layoutX="146.0" layoutY="82.0" text="Version 1.0" /> + <ButtonBar layoutY="318.0" prefHeight="40.0" prefWidth="398.0"> + <buttons> + <Button mnemonicParsing="false" onAction="#closeInfo" text="Close" /> + </buttons> + <padding> + <Insets bottom="8.0" left="8.0" right="8.0" top="8.0" /> + </padding> + </ButtonBar> + <Label layoutX="52.0" layoutY="135.0" text="A graphical interface for creating Minecraft servers" textAlignment="CENTER" /> + <TabPane layoutY="158.0" prefHeight="161.0" prefWidth="398.0" stylesheets="@css/info-tabs.css" tabClosingPolicy="UNAVAILABLE"> + <tabs> + <Tab text="About"> + <content> + <Pane prefHeight="200.0" prefWidth="200.0"> + <children> + <Label alignment="TOP_LEFT" prefWidth="398.0" text="This program is for simple Minecraft servers, and expects that the user knows how to port forward. ServerCraft is free and open source under the GNU General Public License Version 3.0" wrapText="true"> + <padding> + <Insets bottom="13.0" left="13.0" right="13.0" top="13.0" /> + </padding> + </Label> + <Hyperlink fx:id="license" layoutX="127.0" layoutY="110.0" onAction="#openHyperlink" text="License" /> + <Hyperlink fx:id="source" layoutX="189.0" layoutY="110.0" onAction="#openHyperlink" text="Source Code" /> + </children> + <padding> + <Insets bottom="13.0" left="13.0" right="13.0" top="13.0" /> + </padding> + </Pane> + </content> + </Tab> + <Tab text="Authors"> + <content> + <Pane prefHeight="200.0" prefWidth="200.0"> + <children> + <Label layoutX="78.0" layoutY="109.0" text="Want to join the list? Contribute with a PR!" textAlignment="CENTER" /> + <VBox> + <children> + <Label text="Bryson Steck" VBox.vgrow="ALWAYS"> + <font> + <Font name="System Bold" size="16.0" /> + </font> + </Label> + <Label text="Creator / Maintainer"> + <padding> + <Insets top="4.0" /> + </padding> + </Label> + <HBox> + <children> + <Hyperlink fx:id="bryson_website" onAction="#openHyperlink" text="Website"> + <HBox.margin> + <Insets left="-3.0" top="2.0" /> + </HBox.margin> + </Hyperlink> + <Separator orientation="VERTICAL"> + <padding> + <Insets bottom="2.0" top="2.0" /> + </padding> + </Separator> + <Hyperlink fx:id="bryson_email" onAction="#openHyperlink" text="Email"> + <HBox.margin> + <Insets top="2.0" /> + </HBox.margin> + </Hyperlink> + </children> + </HBox> + </children> + <padding> + <Insets bottom="13.0" left="13.0" right="13.0" top="13.0" /> + </padding> + </VBox> + </children> + </Pane> + </content> + </Tab> + </tabs> + </TabPane> + </children> +</Pane> diff --git a/src/main/resources/xyz/brysonsteck/ServerCraft/primary.fxml b/src/main/resources/xyz/brysonsteck/ServerCraft/primary.fxml new file mode 100644 index 0000000..6b34102 --- /dev/null +++ b/src/main/resources/xyz/brysonsteck/ServerCraft/primary.fxml @@ -0,0 +1,362 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.geometry.Insets?> +<?import javafx.scene.control.Button?> +<?import javafx.scene.control.ButtonBar?> +<?import javafx.scene.control.CheckBox?> +<?import javafx.scene.control.ChoiceBox?> +<?import javafx.scene.control.ContextMenu?> +<?import javafx.scene.control.Label?> +<?import javafx.scene.control.MenuItem?> +<?import javafx.scene.control.ProgressBar?> +<?import javafx.scene.control.Separator?> +<?import javafx.scene.control.Spinner?> +<?import javafx.scene.control.SpinnerValueFactory.IntegerSpinnerValueFactory?> +<?import javafx.scene.control.TextField?> +<?import javafx.scene.control.TitledPane?> +<?import javafx.scene.control.Tooltip?> +<?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.Pane?> +<?import javafx.scene.text.Font?> + +<Pane fx:id="primary" maxHeight="713.0" maxWidth="963.0" minHeight="713.0" minWidth="963.0" prefHeight="713.0" prefWidth="963.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="xyz.brysonsteck.ServerCraft.controllers.PrimaryController"> + <children> + <HBox fx:id="directoryPane" prefHeight="39.0" prefWidth="963.0"> + <children> + <Button id="openFile" fx:id="chooseDirectoryButton" lineSpacing="10.0" mnemonicParsing="false" onMouseClicked="#onDirectoryButtonClick" text="Choose Directory..."> + <opaqueInsets> + <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> + </opaqueInsets> + <HBox.margin> + <Insets /> + </HBox.margin> + </Button> + <Separator orientation="VERTICAL" prefHeight="200.0"> + <HBox.margin> + <Insets left="5.0" /> + </HBox.margin> + </Separator> + <Label text="Server Directory:"> + <HBox.margin> + <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> + </HBox.margin> + <font> + <Font name="System Bold" size="13.0" /> + </font> + </Label> + <Label id="currentFilename" fx:id="currentDirectoryLabel" text="<NONE>"> + <HBox.margin> + <Insets bottom="5.0" right="5.0" top="5.0" /> + </HBox.margin> + </Label> + </children> + <padding> + <Insets bottom="7.0" left="7.0" right="7.0" top="7.0" /> + </padding> + </HBox> + <HBox fx:id="worldSettingsPane" disable="true" layoutY="39.0" prefHeight="41.0" prefWidth="963.0"> + <padding> + <Insets bottom="7.0" left="7.0" right="7.0" top="7.0" /> + </padding> + <children> + <Label text="World Name:" HBox.hgrow="ALWAYS"> + <font> + <Font name="System Bold" size="13.0" /> + </font> + <HBox.margin> + <Insets bottom="5.0" left="5.0" right="5.0" top="6.0" /> + </HBox.margin> + </Label> + <TextField fx:id="worldNameField" onInputMethodTextChanged="#onWorldNameChange" text="world"> + <HBox.margin> + <Insets top="2.0" /> + </HBox.margin> + </TextField> + <Separator orientation="VERTICAL" prefHeight="200.0"> + <HBox.margin> + <Insets left="5.0" /> + </HBox.margin> + </Separator> + <Label text="Seed:"> + <font> + <Font name="System Bold" size="13.0" /> + </font> + <HBox.margin> + <Insets bottom="5.0" left="5.0" right="5.0" top="6.0" /> + </HBox.margin> + </Label> + <TextField fx:id="seedField" onInputMethodTextChanged="#onSeedChange" promptText="Leave empty for random seed" HBox.hgrow="ALWAYS"> + <HBox.margin> + <Insets top="2.0" /> + </HBox.margin> + </TextField> + <Separator orientation="VERTICAL" prefHeight="200.0"> + <HBox.margin> + <Insets left="5.0" /> + </HBox.margin> + </Separator> + <Label text="Server Port:" HBox.hgrow="ALWAYS"> + <font> + <Font name="System Bold" size="13.0" /> + </font> + <HBox.margin> + <Insets bottom="5.0" left="5.0" right="5.0" top="6.0" /> + </HBox.margin> + </Label> + <Spinner fx:id="portSpinner" editable="true" onInputMethodTextChanged="#onPortChange" prefWidth="95.0"> + <HBox.margin> + <Insets top="2.0" /> + </HBox.margin> + <valueFactory> + <SpinnerValueFactory.IntegerSpinnerValueFactory amountToStepBy="1" initialValue="25565" max="60000" min="20000" /> + </valueFactory> + </Spinner> + </children> + <opaqueInsets> + <Insets bottom="3.0" /> + </opaqueInsets> + </HBox> + <Pane fx:id="parentPane" disable="true" layoutY="78.0" prefHeight="555.0" prefWidth="970.0"> + <children> + <TitledPane fx:id="settingsPane" animated="false" collapsible="false" layoutX="10.0" layoutY="7.0" prefHeight="273.0" prefWidth="627.0" text="Server Settings"> + <content> + <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="311.0" prefWidth="625.0"> + <children> + <CheckBox fx:id="flightCheckbox" layoutX="14.0" layoutY="14.0" mnemonicParsing="false" onMouseClicked="#onCheckboxClick" text="Allow Flight" /> + <CheckBox fx:id="netherCheckbox" layoutX="14.0" layoutY="42.0" mnemonicParsing="false" onMouseClicked="#onCheckboxClick" selected="true" text="Allow The Nether" /> + <CheckBox fx:id="structuresCheckbox" alignment="TOP_LEFT" layoutX="14.0" layoutY="70.0" mnemonicParsing="false" onMouseClicked="#onCheckboxClick" selected="true" text="Generate Structures (such as villages and strongholds)" /> + <CheckBox fx:id="pvpCheckbox" layoutX="14.0" layoutY="109.0" mnemonicParsing="false" onMouseClicked="#onCheckboxClick" selected="true" text="Allow PvP" /> + <CheckBox fx:id="whitelistCheckbox" alignment="TOP_LEFT" layoutX="14.0" layoutY="138.0" mnemonicParsing="false" onMouseClicked="#onCheckboxClick" text="Enable Whitelist (Only users you specify can join)" /> + <HBox layoutX="6.0" layoutY="174.0"> + <children> + <Label text="Maximum Players:" HBox.hgrow="ALWAYS"> + <padding> + <Insets bottom="8.0" left="8.0" right="8.0" top="8.0" /> + </padding> + </Label> + <Spinner fx:id="maxPlayerSpinner" editable="true" prefHeight="23.0" prefWidth="99.0"> + <valueFactory> + <SpinnerValueFactory.IntegerSpinnerValueFactory amountToStepBy="1" initialValue="20" max="1000" min="0" /> + </valueFactory> + <HBox.margin> + <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> + </HBox.margin> + </Spinner> + </children> + </HBox> + <HBox layoutX="6.0" layoutY="207.0"> + <children> + <Label text="Maximum World Size (in blocks):" HBox.hgrow="ALWAYS"> + <HBox.margin> + <Insets /> + </HBox.margin> + <padding> + <Insets bottom="8.0" left="8.0" right="8.0" top="8.0" /> + </padding> + </Label> + <Spinner fx:id="maxSizeSpinner" editable="true" prefHeight="23.0" prefWidth="155.0"> + <valueFactory> + <SpinnerValueFactory.IntegerSpinnerValueFactory amountToStepBy="1" initialValue="29999984" max="29999984" min="1" /> + </valueFactory> + <HBox.margin> + <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> + </HBox.margin> + </Spinner> + </children> + </HBox> + </children> + </AnchorPane> + </content> + </TitledPane> + <TitledPane fx:id="advancedPane" expanded="false" layoutX="10.0" layoutY="289.0" prefHeight="259.0" prefWidth="627.0" text="Advanced Server Settings"> + <content> + <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="269.0" prefWidth="625.0"> + <children> + <CheckBox fx:id="cmdBlocksCheckbox" layoutX="14.0" layoutY="14.0" mnemonicParsing="false" onMouseClicked="#onCheckboxClick" text="Enable Command Blocks" /> + <CheckBox fx:id="playerCountCheckbox" layoutX="14.0" layoutY="41.0" mnemonicParsing="false" onMouseClicked="#onCheckboxClick" text="Hide Online Player Count" /> + <HBox layoutX="7.0" layoutY="65.0"> + <children> + <Label ellipsisString="" text="Server Memory in MB:" textOverrun="CLIP" HBox.hgrow="ALWAYS"> + <tooltip> + <Tooltip text="This is the amount of RAM that will get passed to Minecraft/the JVM. For simple servers, 1024 MB will be plenty. If you typically have more than 5 concurrent players, consider allocating more." /> + </tooltip> + <padding> + <Insets bottom="8.0" left="8.0" right="8.0" top="8.0" /> + </padding> + </Label> + <Spinner fx:id="memorySpinner" editable="true" prefHeight="23.0" prefWidth="99.0"> + <valueFactory> + <SpinnerValueFactory.IntegerSpinnerValueFactory amountToStepBy="1" initialValue="1024" max="65536" min="512" /> + </valueFactory> + <HBox.margin> + <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> + </HBox.margin> + </Spinner> + </children> + </HBox> + <HBox layoutX="7.0" layoutY="96.0"> + <children> + <Label text="Spawn Protection Radius:" HBox.hgrow="ALWAYS"> + <tooltip> + <Tooltip text="All blocks in a radius from 0,~,0 will be unbreakable. If you want to break blocks within spawn, change this value." /> + </tooltip> + <HBox.margin> + <Insets /> + </HBox.margin> + <padding> + <Insets bottom="8.0" left="8.0" right="8.0" top="8.0" /> + </padding> + </Label> + <Spinner fx:id="spawnSpinner" editable="true" prefHeight="23.0" prefWidth="99.0"> + <valueFactory> + <SpinnerValueFactory.IntegerSpinnerValueFactory amountToStepBy="1" initialValue="16" max="29999984" min="0" /> + </valueFactory> + <HBox.margin> + <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> + </HBox.margin> + </Spinner> + </children> + </HBox> + <HBox layoutX="7.0" layoutY="127.0"> + <children> + <Label text="Simulation Distance:" HBox.hgrow="ALWAYS"> + <tooltip> + <Tooltip text="The radius of chunks for each player where ticks will be updated. In other words, anything outside these circles, such as furnaces, mobs, etc, will not be updated or simulated." /> + </tooltip> + <HBox.margin> + <Insets /> + </HBox.margin> + <padding> + <Insets bottom="8.0" left="8.0" right="8.0" top="8.0" /> + </padding> + </Label> + <Spinner fx:id="simulationSpinner" editable="true" prefWidth="80.0"> + <valueFactory> + <SpinnerValueFactory.IntegerSpinnerValueFactory amountToStepBy="1" initialValue="10" max="40" min="0" /> + </valueFactory> + <HBox.margin> + <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> + </HBox.margin> + </Spinner> + </children> + </HBox> + <HBox layoutX="7.0" layoutY="160.0"> + <children> + <Label text="Render Distance:" HBox.hgrow="ALWAYS"> + <tooltip> + <Tooltip text="The radius of chunks where the server will render the view distance. Any value higher on a client than what is set will be ignored. Higher values will be more demanding on the server." /> + </tooltip> + <HBox.margin> + <Insets /> + </HBox.margin> + <padding> + <Insets bottom="8.0" left="8.0" right="8.0" top="8.0" /> + </padding> + </Label> + <Spinner fx:id="renderSpinner" editable="true" prefWidth="80.0"> + <valueFactory> + <SpinnerValueFactory.IntegerSpinnerValueFactory amountToStepBy="1" initialValue="10" max="40" min="2" /> + </valueFactory> + <HBox.margin> + <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> + </HBox.margin> + </Spinner> + </children> + </HBox> + <HBox layoutX="7.0" layoutY="192.0"> + <children> + <Label text="Maximum Tick Time (in milliseconds):" HBox.hgrow="ALWAYS"> + <tooltip> + <Tooltip text="If the server cannot update ticks (i.e. "lags") for longer than this amount of time, the server will shutdown. 60000 ms (60 seconds) is the default." /> + </tooltip> + <padding> + <Insets bottom="8.0" left="8.0" right="8.0" top="8.0" /> + </padding> + </Label> + <Spinner fx:id="maxTickSpinner" editable="true"> + <valueFactory> + <SpinnerValueFactory.IntegerSpinnerValueFactory amountToStepBy="1" initialValue="60000" max="180000" min="10000" /> + </valueFactory> + <HBox.margin> + <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> + </HBox.margin> + </Spinner> + </children> + </HBox> + </children> + </AnchorPane> + </content> + </TitledPane> + <TitledPane fx:id="difficultyPane" animated="false" collapsible="false" layoutX="649.0" layoutY="7.0" prefHeight="77.0" prefWidth="305.0" text="Difficulty"> + <content> + <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="94.0" prefWidth="303.0"> + <children> + <ChoiceBox fx:id="difficultyBox" layoutX="14.0" layoutY="14.0" prefHeight="23.0" prefWidth="276.0"> + <contextMenu> + <ContextMenu> + <items> + <MenuItem mnemonicParsing="false" /> + </items> + </ContextMenu> + </contextMenu> + </ChoiceBox> + </children> + </AnchorPane> + </content> + </TitledPane> + <TitledPane fx:id="gamemodePane" animated="false" collapsible="false" layoutX="649.0" layoutY="92.0" prefHeight="77.0" prefWidth="305.0" text="Gamemode"> + <content> + <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="94.0" prefWidth="303.0"> + <children> + <ChoiceBox fx:id="gamemodeBox" layoutX="14.0" layoutY="14.0" prefHeight="23.0" prefWidth="276.0" /> + </children> + </AnchorPane> + </content> + </TitledPane> + <TitledPane fx:id="worldTypePane" animated="false" collapsible="false" layoutX="649.0" layoutY="178.0" prefHeight="77.0" prefWidth="305.0" text="World Type"> + <content> + <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="94.0" prefWidth="303.0"> + <children> + <ChoiceBox fx:id="worldTypeBox" layoutX="14.0" layoutY="14.0" prefHeight="23.0" prefWidth="276.0" /> + </children> + </AnchorPane> + </content> + </TitledPane> + </children> + </Pane> + <ButtonBar fx:id="buttonBar" buttonOrder="L+R" layoutY="635.0" prefHeight="40.0" prefWidth="963.0"> + <buttons> + <Button fx:id="infoButton" mnemonicParsing="false" onMouseClicked="#onInfo" text="About ServerCraft" ButtonBar.buttonData="LEFT" /> + <Button fx:id="defaultsButton" disable="true" mnemonicParsing="false" onMouseClicked="#onBuild" text="Reset to Defaults" ButtonBar.buttonData="LEFT" /> + <Button fx:id="buildButton" disable="true" mnemonicParsing="false" onMouseClicked="#onBuild" text="Build Server" ButtonBar.buttonData="RIGHT" /> + <Button fx:id="startButton" defaultButton="true" disable="true" mnemonicParsing="false" onMouseClicked="#onStart" prefWidth="120.0" text="Start Server" ButtonBar.buttonData="RIGHT" /> + </buttons> + <padding> + <Insets bottom="8.0" left="8.0" right="8.0" top="8.0" /> + </padding> + </ButtonBar> + <HBox layoutY="680.0" prefHeight="33.0" prefWidth="963.0" style="-fx-background-color: ddd;"> + <children> + <Label text="Status:"> + <font> + <Font name="System Bold" size="13.0" /> + </font> + </Label> + <Label fx:id="statusBar" text="Ready."> + <HBox.margin> + <Insets left="5.0" /> + </HBox.margin> + </Label> + <ProgressBar fx:id="progressBar" prefWidth="400.0" visible="false"> + <HBox.margin> + <Insets left="10.0" /> + </HBox.margin> + </ProgressBar> + </children> + <padding> + <Insets bottom="9.0" left="9.0" right="9.0" top="9.0" /> + </padding> + </HBox> + </children> +</Pane> |