Wenn man auf dem eigenen Computer einen Minecraft-Server hat (z.B. wenn man wochenends mit Freunden spielt), muss man, wenn man die IP-Adresse des Netzwerkadapters automatisch bezieht, immer wieder in enem CMD-Fenster öffnen, ipconfig eingeben, die server.properties-Datei öffnen, die IP übernehmen und speichern.
Mit diesem Code wird das automatisch gemacht und anschließend der Server gestartet.
Ich habe mir gedacht, dass ander das vielleicht auch brauchen können.
Mit diesem Code wird das automatisch gemacht und anschließend der Server gestartet.
Ich habe mir gedacht, dass ander das vielleicht auch brauchen können.
VB.NET-Quellcode
- 'Der Pfad zum Ordner, in dem sich die Server-Dateien befinden.
- Private Const MCServerDirectoryPath As String = "Z:\Minecraft\Minecraft Server 1.4.6"
- 'Der Name der server.properties-Datei
- Private Const ServerPropertiesFileName As String = "server.properties"
- 'Der Name der Minecraft_Server.exe
- Private Const ServerExeFileName As String = "Minecraft_Server.exe"
- 'Der Name der in der server.properties-Datei zu suchenden Eigenschaft.
- Private Const ServerIPPropertyName As String = "server-ip"
- Private Sub StartServer()
- '-> IP per System.Net.Dns.GetHostAddresses auslesen.
- ' Danke an xtts02 für den Tipp mit System.Net.Dns.
- 'Die System.Net.Dns.GetHostAddresses()-Funktion gibt die IP-Adressen des eigenen Computers zurück, wenn eine leere Zeichenfolge ("") übergeben wird.
- 'Per .Single()-Funktion wird die erste IP-Adresse verwendet, die die passende AddressFamily aufweist. Diese Filterung muss möglicherweise angepasst werden, wenn noch andere Netzwerkadapter vorhanden sind.
- Dim IP = System.Net.Dns.GetHostAddresses("").Single(Function(Item) Item.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork)
- '-> server.properties-Datei bearbeiten.
- 'Datei einlesen
- Dim PropertiesFileContent = System.IO.File.ReadAllLines(System.IO.Path.Combine(MCServerDirectoryPath, ServerPropertiesFileName), System.Text.Encoding.Default)
- 'Hier werden alle Zeilen abgearbeitet, bis die Zeile gefunden wird, die mit dem in ServerIPPropertyName angegebenen String und einem Gleichheitszeichen anfängt.
- For i As Integer = 0 To PropertiesFileContent.Count - 1
- If PropertiesFileContent(i).Contains("="c) Then
- Dim EqIndex = PropertiesFileContent(i).IndexOf("="c)
- Dim PropertyName = PropertiesFileContent(i).Remove(EqIndex)
- If PropertyName = ServerIPPropertyName Then
- 'Diese Zeile wird überschrieben. Dabei wird die oben ausgelesene IP verwendet.
- PropertiesFileContent(i) = ServerIPPropertyName & "=" & IP
- Exit For
- End If
- End If
- Next
- 'Zurückschreiben in die Datei
- System.IO.File.WriteAllLines(System.IO.Path.Combine(MCServerDirectoryPath, ServerPropertiesFileName), PropertiesFileContent, System.Text.Encoding.Default)
- '-> Minecraft Server starten.
- Using ServerProcess As New Process
- ServerProcess.StartInfo.FileName = System.IO.Path.Combine(MCServerDirectoryPath, ServerExeFileName)
- 'Da der Server ansonsten nicht richtig gestartet wird, muss das Arbeitsverzeichnis gesetzt sein.
- ServerProcess.StartInfo.WorkingDirectory = MCServerDirectoryPath
- ServerProcess.Start()
- End Using
- End Sub
"Luckily luh... luckily it wasn't poi-"
-- Brady in Wonderland, 23. Februar 2015, 1:56
Desktop Pinner | ApplicationSettings | OnUtils
-- Brady in Wonderland, 23. Februar 2015, 1:56
Desktop Pinner | ApplicationSettings | OnUtils
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Niko Ortner“ ()