This requires Java 1.6,and may require Java 1.7-it was built under JDK 1.7 targetting 1.6,so if a:
ClassNotFoundException comes along(due to java version or otherwise),then sorry-nothing I can do.
The sources are in src,and should be portable.
The map editor requires the Pbm folder,TileEditor.png,and NPChar.dat,to successfully start.
If you don't care about objects,omit NPChar-it will set up a sensible (blank) default.
There is a blank default for the tilemap.It's completely unusable(0 x 0),but it's there.
Saving map sizes other than the default is untested.So is loading map sizes other than the default.

THE INTERFACE

Basically,at the top right there is a save button(THIS SAVES BOTH OBJECTS AND TILES),
and a mode switch button.(NPChar.dat means objects,Map1.pbm means tiles)
Moving around is done with Up Down Left Right.Can you guess which does what?
Z will get the ID number of any NPC intersecting the 'mouse box'.
In V8,it cycles through them, while beforehand it would only select the first NPC.
If you're wondering why 'intersecting',it's because all the vanilla enemies seem to have screwed up positions.

Oh,and unless you like losing all unsaved work,please do not hold Z,S,and all arrow keys at the same time.
It will enter the Experiment,which you don't want.Really.It's a broken mess.

THE MODES

NPCHAR.DAT
The editor will start in 'NPChar.dat mode'.
This is where you edit objects!
To the left is a panel where you edit the EventID,collision type and see which object ID you are manipulating.
Editing the numbers now involves clicking on the number,pressing backspace to 0 it,
and then typing in a replacement in a way a bit like a calculator.
Apart from that,much like the In Game Editor.Below the 'ID' sign is an indicator to show if the object exists.
To the right is the list of object types.(this includes subtypes)
Further to the right,underneath the mode switcher and save button,is a scrollbar for the type list.
To place an object,click somewhere on the map.The object will then be placed.
To delete an object,right click somewhere on the map(clicking on an object doesn't change this.).
The object will then be deleted.
This was originally designed to be similar enough to the in-game editor for those used to it to quickly move over,
while dealing with the more complicated parts of the interface.
This has been through multiple iterations.Blame IdioticBaka1824,andwhyisit,
and probably in future anybody who posts on the topic.

MAP1.PBM
Switching mode will take you to 'Map1.pbm' mode.
Underneath the mode switcher and save button are tiny little mini-buttons.
The leftmost one is blank,and allows you to delete tiles.
The rest of them should be guessable by looking at their icons.
Either way,just click on one and on the left you'll see it's tiles.
Note that flowing water draws arrows below it so you know exactly where it goes.
The 'Solid block' icon is a bit odd,and if you can't see it,it's between water and spikes.
If you want to fix the icon bar,go look at TileEditor.png,
where all the 'new' images are stored.

Note that all NPCs are displayed in a (hopefully) correct manner.

Portability

The code in src is designed to be portable to Android tablets,applets,
maybe push your luck with JavaME devices,and pretty much anything else that can display graphics,has 5 buttons(if a two button mouse 4 will work),
and a touchscreen/mouse that images and 8 pixel text can be displayed to in whatever position I want.
Actually,the 8 pixel text stuff isn't needed for the editor...
There is also a music driver subsystem,but it's unused.

In fact,there's a ton of unused code-I'd like somebody to expand that,
it's my attempt at a NX-engine like port of Ikachan.(As you can tell,I sort of gave up on it.)
If you want to try,swap 'EditorGame' with 'MainGame' and remove the now useless GameState loader.
Oh,and don't forget to write a physics engine(hint:implement IPhysicsEngine).Or it'll fail.Horribly.

Note:

GameStateMap(the save/load part of the tile part of this editor) can save and load any map where the width is a multiple of 4.However,only the default has been tested.
All images are loaded as normal 24-bit images apart from GameStateMap
(which is a really really basic indexed BMP loader)
GameStateMap contains the header and palette from a real Map1.pbm,but not the data.This is because I am somewhat lazy.The header is the same as would be generated by writing a proper BMP writer,so it shouldn't matter.
License of all files-apart from GameStateMap.java's pbm header block,which honestly shouldn't matter:

        DO WHAT THE **** YOU WANT TO PUBLIC LICENSE 
                    Version 2, December 2004 

 Modified by gamemanj <asdd2808@gmail.com> to remove expletives
 Original copyright (C) 2004 Sam Hocevar <sam@hocevar.net> 

 Everyone is permitted to copy and distribute verbatim or modified 
 copies of this license document, and changing it is allowed as long 
 as the name is changed. 

            DO WHAT THE **** YOU WANT TO PUBLIC LICENSE 
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 

  0. You just DO WHAT THE **** YOU WANT TO.

CHANGELOG
---A long time skip to August 16th,2014---
V8:Even more internal changes,but at least I finally managed to:
   ~ Edited the GUI further-Finally unified 'horizontal lists' into one UIPanel subclass,
     using UIHorizontalList.ListEntry to handle different things,and also made them look better.
     Well,'better' here means "scanlines as opposed to checkerboards".But they do look nicer.
   ~ Furthermore,stopped using the GUI backdrop drawing method made ages ago,because now it's entirely useless.
   + Removed helpimagetext about extra blank tiles which had been solved.(removing extra blanks was a last-minute change)
   + Made it so Z will cycle between NPCs sharing the same tile.

   + Added the experiment.To use it,hold all arrow keys,Z,and S,until a screen comes up asking if you're sure.
---DAY 5.---
V7:More changes to internals:

   - Ripped out the entire GUI.I mean,the entire GUI.As in,everything except the world renderer.
   + Replaced it with a much better system that doesn't involve a billion if statements!
     Best of all,there's only minor differences visually!
     (no more having to write the bounding box in two places,updating both to avoid problems)
   + Made the swim key do something useful-in NPC mode anyway.
     In NPC mode,it grabs the NPC's ID number for easier editing.
   + The NPC scrollbar doesn't get any bigger than needed for that particular screen size.
     So if all NPC types are visible,you can't actually use the scrollbar :)
   + Added safety border so that you know where the edge of the map is.
   + Updated help files.
V6.1:AAAAAH FORGOT TO DEAL WITH THE SRC FOLDER! *panics*
     I need to make a script to automate this.
---DAY 4.---
V6:This is a REALLY BIG EDIT relative to most of this thing's history.
   Sure,there was the big NPC editor change,
   but that was just a bit of musical chairs with the textboxes.

   - Okay,fine,LIMITED THE NPC SCROLLBAR.
   ~ Finally ripped out the bitfield-based keyboard system.Just don't poll 'newly pressed' triggers more than once per frame,OR ELSE.
   ~ Made the layout code a bit saner.Just a bit though.
     Mostly correct though,and good for getting an idea of the general layout.
   - Removed a secret in the TileEditor.png image. Poor Arduino Duemilanove....
   + Made tabs readable by expanding their images to 2x the width.
   ~ Gave the tabs icons in the extra space.There's even a little spaceship for NPCs!
     (Tiles is a part of the Ikachan map-specifically where I had last saved.)
   + Remapped the keys thanks to the new keyboard system.That means better keymapping.
   + Graphics mode switcher! Default scale is 2x,so you can leave that alone unless you have a really small monitor.'Internal size' is before scaling,so 400x300 with 2x scale=800x600 result.
   + There's a background to the GUI,so you can now see what is UI and what is map.(hint:top 64 pixels)
     Sort of Andwhyisit's idea-mentioned a white border on the tileedit UI,
     not a whole background-but this makes things better anyway.
   + Implemented a better way to see which tile was selected.Andwhyisit's idea,again...
   + Made a UI spritesheet twice as big as the leading brand! *
     * may not be twice as big as the leading brand after this update.I seem to be the leading brand of Ikachan editor right now.
V5.Oh-Blast-I-Forgot-The-Invisible-Trigger edition!
   Invisible triggers added.They are right before the dead fish and the sign. Sorry I forgot!
---DAY 3.---
V4.Andwhyisit special edition!
   Also,information on where NPCs actually are.Yay! (also removed idioticbaka tribute)
   Also added EXPERIMENTAL different map size saving support-still,width should be a multiple of 4,or else padding(which I don't account for) may be added.
---DAY 2.---
Nobody annoyed me today!
---DAY 1.---
V3.IdioticBaka1824 strikes again and asks for a sensible numeric input system.I comply.
   The likelihood of this ever running under Android drops.Again.
V2.Redesigned NPC editor,see IdioticBaka1824's post
V1.Initial release
