I am having trouble with the Map API. For some reason, it will only let me draw text only on one map, one time, for each world. Main class: Code:java package com.gmail.walkercrouse.ArvinaMaps; import java.util.logging.Logger; import org.bukkit.ChatColor;import org.bukkit.event.Event.Priority;import org.bukkit.event.Event.Type;import org.bukkit.plugin.PluginManager;import org.bukkit.plugin.java.JavaPlugin; import com.gmail.walkercrouse.ArvinaMaps.listeners.ArvinaServerListener; public class ArvinaMaps extends JavaPlugin{ // declare listeners private final ArvinaServerListener serverListener = new ArvinaServerListener(this); // misc. strings public String version = "v0.1"; public String prefix = "[" + ChatColor.GOLD + "ArvinaMaps" + ChatColor.WHITE + "]"; public static final Logger log = Logger.getLogger("Minecraft"); public void onEnable(){ // register events PluginManager pm = getServer().getPluginManager(); pm.registerEvent(Type.MAP_INITIALIZE, serverListener, Priority.Normal, this); log.info("[ArvinaMaps] ArvinaMaps " + version + " enabled!"); } public void onDisable(){ log.info("[ArvinaMaps] ArvinaMaps " + version + " enabled."); }} NameRenderer class: Code:java package com.gmail.walkercrouse.ArvinaMaps; import org.bukkit.entity.Player;import org.bukkit.map.MapCanvas;import org.bukkit.map.MapRenderer;import org.bukkit.map.MapView;import org.bukkit.map.MinecraftFont; public class NameRenderer extends MapRenderer{ public static ArvinaMaps plugin; public NameRenderer(ArvinaMaps instance){ plugin = instance; } @Override public void render(MapView map, MapCanvas canvas, Player player) { canvas.drawText(10, 10, MinecraftFont.Font, "Hello world!"); } public static void drawToMap(MapView map){ for (MapRenderer renderer : map.getRenderers()) { map.removeRenderer(renderer); } map.addRenderer(new NameRenderer(plugin)); }} ServerListener class: Code:java package com.gmail.walkercrouse.ArvinaMaps.listeners; import org.bukkit.event.server.MapInitializeEvent;import org.bukkit.event.server.ServerListener;import org.bukkit.map.MapView; import com.gmail.walkercrouse.ArvinaMaps.ArvinaMaps;import com.gmail.walkercrouse.ArvinaMaps.NameRenderer; public class ArvinaServerListener extends ServerListener{ public static ArvinaMaps plugin; public ArvinaServerListener(ArvinaMaps instance){ plugin = instance; } public void onMapInitialize(MapInitializeEvent event){ MapView map = event.getMap(); System.out.println("Map initialized"); NameRenderer.drawToMap(map); }} Insight? To re-iterate, what happens: If I create a new world, and render a map it works If I try to initialize any other maps, my renderer does not work If I delete the world and make a new one I can do it again The map only renders one time, in one world only if the world hasn't had a rendered map in it before :3 I'm nearly convinced this is a Bukkit bug @EvilSeph @Dinnerbone EDIT by Moderator: merged posts, please use the edit button instead of double posting.
http://forums.bukkit.org/threads/map-api-issues.42713/ See if you can apply any of the codes from there.