Created
August 2, 2011 04:39
-
-
Save SpaceManiac/1119613 to your computer and use it in GitHub Desktop.
Examples of the work-in-progress Bukkit Map API.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.platymuus.bukkit.maptest; | |
import org.bukkit.event.server.MapInitializeEvent; | |
import org.bukkit.event.server.ServerListener; | |
import org.bukkit.map.MapView; | |
/** | |
* A sample ServerListener which broadcasts a message any time a map is initialized. | |
*/ | |
public class MapListener extends ServerListener { | |
private MapTestPlugin plugin; | |
public MapListener(MapTestPlugin plugin) { | |
this.plugin = plugin; | |
} | |
@Override | |
public void onMapInitialize(MapInitializeEvent event) { | |
MapView map = event.getMap(); | |
plugin.getServer().broadcastMessage("[MapListener] Map " + map.getId() + " initialized."); | |
System.out.println("[MapListener] Map " + map.getId() + " initialized."); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.platymuus.bukkit.maptest; | |
import java.util.ArrayList; | |
import java.util.Random; | |
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; | |
/** | |
* A sample MapRenderer which remembers which players have viewed it and | |
* displays their names using the Minecraft font. | |
*/ | |
public class NameListRenderer extends MapRenderer { | |
private final ArrayList<String> names = new ArrayList<String>(); | |
private final Random random = new Random(); | |
@Override | |
public void render(MapView map, MapCanvas canvas, Player player) { | |
if (!names.contains(player.getName())) { | |
names.add(player.getName()); | |
String result = ""; | |
for (String name : names) { | |
result += "\u00A7" + (4 + random.nextInt(52)) + ";"; | |
result += name + "\n"; | |
} | |
canvas.drawText(10, 10, MinecraftFont.Font, result); | |
} | |
} | |
/** | |
* Sample method to set a NameListRenderer as the only renderer on a map. | |
* @param map The map to apply the renderer to. | |
*/ | |
public static void applyToMap(MapView map) { | |
// First, remove all current renderers | |
for (MapRenderer renderer : map.getRenderers()) { | |
map.removeRenderer(renderer); | |
} | |
// Then add a new NameListRenderer | |
map.addRenderer(new NameListRenderer()); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.platymuus.bukkit.maptest; | |
import org.bukkit.entity.Player; | |
import org.bukkit.map.MapCanvas; | |
import org.bukkit.map.MapRenderer; | |
import org.bukkit.map.MapView; | |
/** | |
* A sample MapRenderer which replaces any transparent areas of the layers below | |
* it with a rainbow pattern. Only setting pixels that are already transparent | |
* makes this renderer a background regardless of its position in the render list. | |
*/ | |
public class RainbowRenderer extends MapRenderer { | |
@Override | |
public void render(MapView map, MapCanvas canvas, Player player) { | |
for (int x = 0; x < 128; ++x) { | |
for (int y = 0; y < 128; ++y) { | |
byte color = (byte) (4 + (x+y) * 52 / 256); | |
if (canvas.getBasePixel(x, y) == 0) { | |
canvas.setPixel(x, y, color); | |
} else { | |
canvas.setPixel(x, y, (byte) -1); | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment