Minecraft Server mit IP des eigenen Computers starten.

    • VB.NET

    Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

      Minecraft Server mit IP des eigenen Computers starten.

      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.

      VB.NET-Quellcode

      1. 'Der Pfad zum Ordner, in dem sich die Server-Dateien befinden.
      2. Private Const MCServerDirectoryPath As String = "Z:\Minecraft\Minecraft Server 1.4.6"
      3. 'Der Name der server.properties-Datei
      4. Private Const ServerPropertiesFileName As String = "server.properties"
      5. 'Der Name der Minecraft_Server.exe
      6. Private Const ServerExeFileName As String = "Minecraft_Server.exe"
      7. 'Der Name der in der server.properties-Datei zu suchenden Eigenschaft.
      8. Private Const ServerIPPropertyName As String = "server-ip"
      9. Private Sub StartServer()
      10. '-> IP per System.Net.Dns.GetHostAddresses auslesen.
      11. ' Danke an xtts02 für den Tipp mit System.Net.Dns.
      12. 'Die System.Net.Dns.GetHostAddresses()-Funktion gibt die IP-Adressen des eigenen Computers zurück, wenn eine leere Zeichenfolge ("") übergeben wird.
      13. '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.
      14. Dim IP = System.Net.Dns.GetHostAddresses("").Single(Function(Item) Item.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork)
      15. '-> server.properties-Datei bearbeiten.
      16. 'Datei einlesen
      17. Dim PropertiesFileContent = System.IO.File.ReadAllLines(System.IO.Path.Combine(MCServerDirectoryPath, ServerPropertiesFileName), System.Text.Encoding.Default)
      18. 'Hier werden alle Zeilen abgearbeitet, bis die Zeile gefunden wird, die mit dem in ServerIPPropertyName angegebenen String und einem Gleichheitszeichen anfängt.
      19. For i As Integer = 0 To PropertiesFileContent.Count - 1
      20. If PropertiesFileContent(i).Contains("="c) Then
      21. Dim EqIndex = PropertiesFileContent(i).IndexOf("="c)
      22. Dim PropertyName = PropertiesFileContent(i).Remove(EqIndex)
      23. If PropertyName = ServerIPPropertyName Then
      24. 'Diese Zeile wird überschrieben. Dabei wird die oben ausgelesene IP verwendet.
      25. PropertiesFileContent(i) = ServerIPPropertyName & "=" & IP
      26. Exit For
      27. End If
      28. End If
      29. Next
      30. 'Zurückschreiben in die Datei
      31. System.IO.File.WriteAllLines(System.IO.Path.Combine(MCServerDirectoryPath, ServerPropertiesFileName), PropertiesFileContent, System.Text.Encoding.Default)
      32. '-> Minecraft Server starten.
      33. Using ServerProcess As New Process
      34. ServerProcess.StartInfo.FileName = System.IO.Path.Combine(MCServerDirectoryPath, ServerExeFileName)
      35. 'Da der Server ansonsten nicht richtig gestartet wird, muss das Arbeitsverzeichnis gesetzt sein.
      36. ServerProcess.StartInfo.WorkingDirectory = MCServerDirectoryPath
      37. ServerProcess.Start()
      38. End Using
      39. End Sub
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Niko Ortner“ ()

      echt? jo, das würde sich zu üprüfen lohnen.

      @Niko Ortner:: Falls du dein Code jetzt überarbeitest, kannst du das Original trotzdem iwie erhalten?
      Weil ich find ausgezeichnet, wie hier per Standard(In/Out)Put-Umleitung mit einer Konsolen-Anwendung kommuniziert wird - das ist ja schon Remoting, odr?

      Oder magst du das bei den TippsnTricks einstellen?
      erm,

      Du brauchst diesen Code gar nicht.
      Warum möchtest du denn den Minecraft-Server auf ein bestimmtes Netzwerkinterface binden?

      Du kannst das Feld einfach freilassen oder 0.0.0.0 schreiben,
      dann wird der TCP-Server auf alle NICs gebunden.

      Also -- einfach freilassen!

      Nützlich ist dieses Argument nur, wenn man mehrere IP's getrennt nutzen möchte.
      Beispielsweise Nitrado macht das. Da laufen viele MC-Server auf einem Linux-Host, welcher viele Netzwerkkarten hat.
      Siehe dazu eins der geklauten Logs: pastebin.com/4f9pZ4p2

      Hier werden die Minecraft-Server immer nur auf eine Netzwerkkarte gebunden, um viele verschiedene IPs auf dem gleichen Port (25565) nutzen zu können =)

      so long,
      Manawyrm

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manawyrm“ ()

      @xtts02: Danke für den Hinweis. Hab's getestet und funktioniert. Ich werde das noch ändern.
      @ErfinderDesRades: OK. Ich werde dazu im Tipps und Tricks - Bereich einen Thread erstellen.
      @Manawyrm: Das hat leider immer noch den Nachteil, dass ich nachschauen muss, welche IP ich habe, denn ich muss sie den anderen mitteilen. In der Serverkonsole steht dann nur noch "Starting Minecraft server on *:3032", anstelle von "10.0.0.34:3032"
      Meine IP ist nicht immer gleich, denn die wird automatisch zugewiesen. Deshalb ist das letzte Byte manchmal 34, manchmal 36, etc...
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Ich versteh grad den Sinn nicht. Den Code schon. Wenn wir zsm Minecraft spielen, dann host ich nen Server und die joinen auf meine DNS. Wofür muss in den server.properties eine IP gesetzt werden? Den Code würde ich auch auf Parameter und Jar umstellen. Hat man mehr von als wenn man die popeligen Einstellungen der Exe nimmt.
      @Mangafreak1995:
      dann host ich nen Server und die joinen auf meine DNS.

      Kannst Du das genauer erklären?
      Mir ist nicht ganz klar, wie andere auf meinen Server kommen können (der auf meinem Computer läuft), wenn sie meine IP nicht kennen. Die muss doch hier eingegeben werden:


      Den Code würde ich auch auf Parameter und Jar umstellen. Hat man mehr von als wenn man die popeligen Einstellungen der Exe nimmt.

      Da verstehe ich jetzt nicht, was Du meinst.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Ich würde nicht die Minecraft_server.exe nehmen sondern die minecraft_server.jar und dann Parameter für den Arbeitsspeichern hinzufügen. Ich muss zugeben ich habe gedacht du bist so Java-gewandt dass du das verstanden hättest. Ich habe mir ne DNS geholt und die in meinem Router eingerichtet. Sollte die IP sich ändern führt die DNS trotzdem auf meinen Router. Ich könnte auch meine IP über whatismyip-Dienste nehmen, aber es geht ums Prinzip: Ich starte den Server und andere joinen auf die IP ... fertig ... wenn man davon ausgeht dass ein Portforwarding aktiviert ist.

      Wieso eig nicht 25565 als Port ?

      Ich kann dir auch zeigen dass es bei mir so funktioniert wie ich es gesagt habe.
      @Manawyrm: Danke für den Tipp. Ich werde mal probieren, ob das so funktioniert. Das würde das Ganze wesentlich einfacher machen. (Edit: Nö, funktioniert leider so nicht. Vielleicht gibt's da eine Einstellung beim Router.)

      @Mangafreak1995: Bei Java kenne ich mich nicht gut aus ^^
      Aber ich denke, ich weiß was Du meinst. Naja, funktioniert so auch und ich will am Server möglichst nichts ändern.
      Das Port 3032 kommt aus den früheren Zeiten, als wir mit dem Minecraft Server angefangen haben. Wir haben lange probiert, bis das funktioniert hat. Und da hat das Port 25565 nicht funktioniert. Mit 3032 hat's funktioniert. Es kann sein, dass es jetzt auch mit 25565 funktioniert.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Musst den Port auch forwarden im Router. Du willst es vielleicht nicht, aber andere und du willst doch auch das andere den Code nutzen, andernfalls hast du ihn ja nicht gepostet :P
      Das war aber euer Fehler

      Das glaube ich Dir gerne. Damals haben wir uns da einfach noch nicht richtig ausgekannt. Mit 3032 hat's funktioniert, mit 25565 nicht. Was ich genau falsch gemacht habe, weiß ich selbst nicht.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      @Mangafreak1995: Hab ich. Ich habe mich da an diese Anleitung gehalten: pcwintech.com/port-forwarding-zyxel-nbg419n-zyxel-firmware
      Dabei habe ich meine aktuelle IP-Adresse (10.0.0.34) und den Port 25565 angegeben. Und ich habe in den DHCP-Einstellungen eine Regel für meine MAC-Adresse eingerichtet, sodass ich immer 10.0.0.34 zugewiesen bekomme.
      Ich habe in der server.properties die IP frei gelassen und den Port 25565 eingestellt.
      Ich konnte meinen Server (also auf dem selben Computer) mit 10.0.0.34:25565 und mit :25565 erreichen.
      Aber von anderen Computern aus geht's nur mit 10.0.0.34:25565.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      sollte auch ohne Portangabe gehen, da 25565 der Standardport ist. Und ohne IP gehts sowieso nicht. Und tada es reicht die IP und etwas in die IP-Eigenschaft reinzuschreiben.
      @Mangafreak:
      Und ohne IP gehts sowieso nicht.
      Dann verstehe ich aber nicht ganz, was es mir bringt, das Ganze so einzurichten, wenn ich dann erst wieder eine IP angeben muss. Oder muss ich die IP des Routers angeben?
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Irgendwas müssen die anderen doch angeben sonst können die ja nie joinen. Im LAN reicht deine lokale PC-IP die du via ipconfig kriegst. Für Internet muss es deine Routerip sein.
      Im LAN reicht deine lokale PC-IP

      Dann haben wir voll an einander vorbeigeredet. Schau mal in Post #5.
      Das hat leider immer noch den Nachteil, dass ich nachschauen muss, welche IP ich habe, denn ich muss sie den anderen mitteilen. In der Serverkonsole steht dann nur noch "Starting Minecraft server on *:3032", anstelle von "10.0.0.34:3032"
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils