aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/xyz/brysonsteck/ServerCraft/server/Server.kt
blob: 141b47786028e986d5e29c5fcf50ee70a750d8b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package xyz.brysonsteck.ServerCraft.server

import java.io.File
import java.io.InputStream
import java.io.FileNotFoundException
import java.util.Properties

public class Server {
  public var jar = ""
  public var dir = ""

  private val props = Properties()

  public fun loadProps() {
    props.setProperty("allow-flight", false.toString())
    props.setProperty("allow-nether", true.toString())
    props.setProperty("generate-structures", true.toString())
    props.setProperty("hardcore", false.toString())
    props.setProperty("pvp", true.toString())
    props.setProperty("white-list", false.toString())
    props.setProperty("enable-command-block", false.toString())
    props.setProperty("hide-online-players", false.toString())
    props.setProperty("max-players", 20.toString())
    props.setProperty("max-world-size", 29999984.toString())
    props.setProperty("server-port", 25565.toString())
    props.setProperty("view-distance", 10.toString())
    props.setProperty("jvm-ram", 1024.toString())
    props.setProperty("spawn-protection", 16.toString())
    props.setProperty("simulation-distance", 10.toString())
    props.setProperty("max-tick-time", 60000.toString())
    props.setProperty("difficulty", "normal")
    props.setProperty("gamemode", "survival")
    props.setProperty("level-name", "world")
    props.setProperty("level-seed", "")
    props.setProperty("level-type", "minecraft:normal")
    props.setProperty("motd", "A server for a dummy")
    writeProps()
  }

  public fun loadProps(dir: String, convert: Boolean = false) {
    var ins = File(dir + File.separator + "server.properties").inputStream()
    props.load(ins)
    try {
      ins = File(dir + File.separator + "ServerCraft" + File.separator + "ServerCraft.properties").inputStream()
      props.load(ins)
    } catch (e: FileNotFoundException) {
      if (convert) {
        // create the file in question, as this is an external server being converted into a ServerCraft managed one
        File(dir + File.separator + "ServerCraft" + File.separator + "ServerCraft.properties").createNewFile()
        // also apply app-specific properties
        props.setProperty("jvm-ram", 1024.toString())
        // then write to file
        val temp = Properties()
        val outs = File(dir + File.separator + "ServerCraft" + File.separator + "ServerCraft.properties").outputStream()
        temp.setProperty("jvm-ram", props.getProperty("jvm-ram"))
        temp.store(outs, "ServerCraft settings backup\nSometimes, Minecraft will completely overwrite the server.properties file,\ncompletely destroying these app-specific settings. This file backs up these settings\njust in case. :)\nhttps://codeberg.org/brysonsteck/ServerCraft")
      } else {
        println(e)
      }
    }
  }

  private fun writeProps() {
    var outs = File(dir + File.separator + "server.properties").outputStream()
    props.store(outs, "Minecraft server properties\nCreated with ServerCraft: https://codeberg.org/brysonsteck/ServerCraft")
    val temp = Properties()
    outs = File(dir + File.separator + "ServerCraft" + File.separator + "ServerCraft.properties").outputStream()
    temp.setProperty("jvm-ram", props.getProperty("jvm-ram"))
    temp.store(outs, "ServerCraft settings backup\nSometimes, Minecraft will completely overwrite the server.properties file,\ncompletely destroying these app-specific settings. This file backs up these settings\njust in case. :)\nhttps://codeberg.org/brysonsteck/ServerCraft")
  }

  public fun getProp(prop: String): String {
    return props.getProperty(prop)
  }

  public fun setProp(key: String, value: Any) {
    props.setProperty(key, value.toString())
    writeProps()
  }

}