Das Minecraft maintenance tool

Ich betreibe einen Minecraft Server und ab und an kommt es vor das man ein paar neue Dinge zur Welt hinzufügt. Manchmal kommt es dabei zu unschönen Fehlern, welche z.B. die Bedrockschicht beschädigen. Da ich nun natürlich nicht alles von Hand nachbessern möchte habe ich ein kleines Tool geschrieben. Dieses hört dabei auf den Namen „Minecraft maintenance tool“ und ist unter http://mcmt.googlecode.com zu finden. Das Tool steht dabei unter GPLv3 Lizenz und sollte unter Linux und Windows laufen.

Mit dem Tool sind im Moment folgende Dinge möglich:

  • Entfernen von Entities
  • Ersetzen von Blöcken
  • Erzeugen einer flachen Welt
  • Neuberechnung der Beleuchtung
  • Reparieren der Bedrockschicht

Wenn jemand Ideen hat was es noch alles können soll, kann diese in den Kommentaren loswerden. Das Tool selbst setzt auf der Substrate Bibliothek (unter MIT Lizenz) auf welche unter http://substrate-minecraft.googlecode.com zu finden ist.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Minecraft
http://www.minecraftforum.net/topic/245996-sdk-substrate-map-editing-library-for-cnet-103/

Visual Studio ignoriert die Haltepunkte beim Debuggen

Manchmal kann einen die Softwareentwicklung schon in den Wahnsinn treiben, vor allem wenn es um triviale Dinge geht. So sollte es ja eigentlich selbstverständlich sein, das der Debugger an einem Haltepunkt hält. Mein erster Gedanke war, das es daran liegt das ich das Projekt im Debugmodus auf „Any CPU“ eingestellt habe. Sobald ich es auf „x86“ oder „x64“ gestellt habe, hielt der Debugger an der gewünschten Stelle. Allerdings hatte ich ein ähnliches Projekt mit fast den selben Einstellungen (auch „Any CPU“), doch dort funktionierte es mit dem Debugger. Also sollte es ein Vergleich der Projektdateien richten. Nach einiger Zeit war hier auch kein Erfolg zu melden.

Beim Starten des Projektes fiel mir allerdings auf das die Haltepunkte ausgeblendet wurden:

Im Tooltip zu den Haltepunkten stand dann:

No symbols have been loaded for this document

Dies brachte mich dazu in das „bin/Debug“ Verzeichnis zu schauen und siehe da, es gab keine pdb Dateien für das Projekt. Um die pdb Dateien für das Projekt anzulegen, geht man in die Projekteinstellungen, dort auf „Build“ und dann auf „Advanced“.

In dem sich darauf öffnenden Dialog stellt man die „Debug info“ auf „full“. Damit sollten die PDB Dateien erzeugt werden und das debuggen wieder funktionieren.

Weitere Informationen gibt es unter:
http://en.wikipedia.org/wiki/Program_database
http://msdn.microsoft.com/en-us/library/yd4f8bd1%28v=vs.71%29.aspx
http://geekswithblogs.net/dbutscher/archive/2007/06/26/113472.aspx
http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspx

MonoDevelop und GTK# und Windows 7 Probleme

Wenn man in MonoDevelop eine GTK# Anwendung schreibt und sie zwingt auf „jeder CPU“ zu laufen so wird diese Anwendung beim Start abstürzten. Meist sieht das dann so aus:

Unbehandelte Ausnahme: System.TypeInitializationException: 
Der Typeninitialisierer für "Gtk.Application" hat eine Ausnahme verursacht. 
System.BadImageFormatException: Es wurde versucht, eine Datei mit einem falschen Format zu laden.
(Ausnahme von HRESULT: 0x8007000B)

 bei GLib.Thread.glibsharp_g_thread_supported()
 bei GLib.Thread.get_Supported()
 bei Gtk.Application..cctor()
 
--- Ende der internen Ausnahmestapelüberwachung ---
 bei Gtk.Application.Init()
 bei testapp.MainClass.Main(String[] args) in d:\testapp\Main.cs:Zeile 10.

Das Problem ist wohl das es noch keine x64 GTK# Bibliothek für Windows gibt. Aus diesem Grund sollte man seine Assemblys auf x86 stellen, dann klappt es auch mit Windows 7.

Weitere Informationen gibt es unter:
http://mono.1490590.n4.nabble.com/windows-7-x64-and-gtk-app-td1516626.html

Midi Sheet Music

Auf Sourceforge gibt es das Projekt Midi Sheet Music (http://sourceforge.net/projects/midisheetmusic/, http://midisheetmusic.sourceforge.net/). Dabei handelt es sich um eine Software in welche man eine MIDI Datei einladen kann und anschließend eine Notenansicht bekommt. Beim Abspielen zeigt die Software dann an welche Tasten(kombinationen) für welche Noten gespielt werden müssen. Die Software läuft dabei auf Windows, Linux und MacOS, ist in C# geschrieben und steht unter der GPL.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/MIDI

Auf ein HashSet mittels eines Indicies zugreifen

Man nehme folgendes Stück C# Quelltext:

HashSet test=new HashSet();

Das Problem an einem solchen HashSet ist, das man nicht mittels eines Indicies auf dieses zugreifen können. Die Zeile:

string tmp=test[5];

würde also nicht funktionieren. Abhilfe schafft hier die Klasse SortedSet:

SortedSettest=new SortedSet();

Nun kann man mittels ElementAt über einen Indice selektiert werden:

string tmp=test.ElementAt(5);

Wichtig ist dabei das der Namesspace System.Linq eingebunden ist da diese Funktionalität über eine Extension implementiert wird.