public boolean removeRenderer(MapRenderer renderer) { if (renderers.contains(renderer)) { renderers.remove(renderer); for (Map.Entry<CraftPlayer, CraftMapCanvas> entry : canvases.get(renderer).entrySet()) { for (int x = 0; x < 128; ++x) { for (int y = 0; y < 128; ++y) { entry.getValue().setPixel(x, y, (byte) -1); } } } canvases.remove(renderer); return true; } else { return false; } }
/** * Make sure all player held maps have triangle overlays. (todo: make sure all maps on item frames do as well) * There seem to be some bugs around this. It doesn't always take on the first try. */ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled=true) public void onMapHold(final PlayerItemHeldEvent event) { Player player = event.getPlayer(); ItemStack itemInHand = player.getInventory().getItem(event.getNewSlot()); if (itemInHand == null) return; if (!Material.MAP.equals(itemInHand.getType())) { return; } if (!player.getWorld().equals(getBeaconzWorld())) { return; } @SuppressWarnings("deprecation") MapView map = Bukkit.getMap(itemInHand.getDurability()); for (MapRenderer renderer : map.getRenderers()) { if (renderer instanceof TerritoryMapRenderer) { return; } } map.addRenderer(new TerritoryMapRenderer(getBeaconzPlugin())); }
@SuppressWarnings("deprecation") protected MapView getMapView() { if (!enabled) { return null; } MapView mapView = Bukkit.getMap(id); if (mapView == null) { enabled = false; controller.warning("Failed to get map id " + id + " for key " + getKey() + ", disabled, use 'mmap fix' to re-enable"); return null; } List<MapRenderer> renderers = mapView.getRenderers(); boolean needsRenderer = false; for (MapRenderer renderer : renderers) { if (!(renderer instanceof URLMap)) { mapView.removeRenderer(renderer); needsRenderer = true; } } if (needsRenderer) { mapView.addRenderer(this); } return mapView; }
/** * Delete image map * @param mapView map view to remove map */ public void deleteMap(MapView mapView) { short mapId = mapView.getId(); List<MapRenderer> renderers = mapView.getRenderers(); File fileName = new File(ConfigProvider.getImgFolder(), mapId + ".png"); if (fileName.exists()) { fileName.delete(); } for (MapRenderer r : renderers) { mapView.removeRenderer(r); } synchronized (m_mapList) { Integer key = (int) mapId; if (!m_mapList.containsKey(key)) { return; } renderers = m_mapList.get(key); for (MapRenderer mapRenderer : renderers) { mapView.addRenderer(mapRenderer); } m_mapList.remove(key); } }
/** * Store map image on disk * @param mapView map to store * @param img current map image */ public void storeMap(MapView mapView, BufferedImage img) { List<MapRenderer> renderers = mapView.getRenderers(); short mapId = mapView.getId(); for (MapRenderer r : renderers) { mapView.removeRenderer(r); } synchronized (m_mapList) { Integer key = (int) mapId; if (!m_mapList.containsKey(key)) { m_mapList.put(key, renderers); } } File fileName = new File(ConfigProvider.getImgFolder(), mapId + ".png"); try { ImageIO.write(img, "png", fileName); } catch (IOException ex) { ExceptionHelper.printException(ex, "Error storing map image."); } }
@Override public MapRenderer getDefaultRenderer(short id, World world){ if(canGenerate){ try { org.bukkit.inventory.ItemStack bukkitStack = new org.bukkit.inventory.ItemStack(Material.MAP); bukkitStack.setDurability(id); Object nmsStack = m_asNMSCopy.invoke(bukkitStack); Object nmsMap = nmsItemWorldMap.cast(m_getItem.invoke(nmsStack)); return (MapRenderer)c_craftMapRenderer.newInstance(null, m_getSavedMap.invoke(nmsMap, nmsStack, m_getHandle.invoke(world))); } catch (ReflectiveOperationException e){ canGenerate = false; return null; } } else { return null; } }
private RenderData getRenderData() { RenderData render = new RenderData(); MapRenderer mapRenderer = this.generateRenderer(); Arrays.fill(render.buffer, (byte)0); render.cursors.clear(); FakeMapCanvas canvas = new FakeMapCanvas(); canvas.setBase(render.buffer); mapRenderer.render(canvas.getMapView(), canvas, null); byte[] buf = canvas.getBuffer(); for (int i = 0; i < buf.length; i++) { byte color = buf[i]; if ((color >= 0) || (color <= -113)) render.buffer[i] = color; } return render; }
public MapRenderer generateRenderer() { BufferedImage image = Frame.this.getBufferImage(); if (image == null) { FramePicturePlugin.log.log(Level.WARNING, "The picture \"{0}\" from frame #{1} doesn't exists!", new Object[]{Frame.this.getPicture(), Frame.this.getId()}); return new TextRenderer("Can't read image!", this.getId()); } ImageRenderer renderer = new ImageRenderer(image); if (Config.CHANGE_SIZE_ENABLED && Config.SIZE_CENTER) { if (image.getWidth() < 128) renderer.imageX = (128 - image.getWidth()) / 2; if (image.getHeight() < 128) renderer.imageY = (128 - image.getHeight()) / 2; } return renderer; }
public void addRenderer(MapRenderer renderer) { if (!renderers.contains(renderer)) { renderers.add(renderer); canvases.put(renderer, new HashMap<CraftPlayer, CraftMapCanvas>()); renderer.initialize(this); } }
@EventHandler public void onMapInit(MapInitializeEvent e) { //e.getMap().setUnlimitedTracking(true); for (MapRenderer r : e.getMap().getRenderers()) { e.getMap().removeRenderer(r); } e.getMap().addRenderer(new GameManRenderer()); //e.getMap().addRenderer(new MapRendererMa); }
public static void createHandler(MapView mapView, boolean overwrite) { if (mapView != null) { if (overwrite && mapView.getRenderers() != null) { for (MapRenderer renderer : mapView.getRenderers()) { mapView.removeRenderer(renderer); } } mapView.addRenderer(new SkellettMapRenderer()); } }
public static SkellettMapRenderer getRenderer(MapView mapView) { if (mapView == null || mapView.getRenderers() == null) { return null; } for (MapRenderer renderer : mapView.getRenderers()) { if (renderer instanceof SkellettMapRenderer) { return (SkellettMapRenderer)renderer; } } return null; }
/** * Removed Beaconz renderers from maps when the plugin is disabled */ public void removeMapRenderers() { for (Short id : beaconMaps.keySet()) { MapView map = Bukkit.getMap(id); if (map != null) { for (MapRenderer renderer : map.getRenderers()) { if (renderer instanceof TerritoryMapRenderer || renderer instanceof BeaconMap) { map.removeRenderer(renderer); } } } } }