Skip to content

Instantly share code, notes, and snippets.

@SpaceManiac
Created August 2, 2011 04:39
Show Gist options
  • Save SpaceManiac/1119613 to your computer and use it in GitHub Desktop.
Save SpaceManiac/1119613 to your computer and use it in GitHub Desktop.
Examples of the work-in-progress Bukkit Map API.
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.");
}
}
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());
}
}
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