Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @CommandLabel(alias = "map", minArg = 1, maxArg = 1)
- public void renderMap() {
- getPlayer().ifPresent(p -> {
- String link = getArgs()[0];
- try {
- URL url = new URL(link);
- BufferedImage source = ImageIO.read(url);
- ItemStack itemMap = new ItemStack(Material.FILLED_MAP);
- MapMeta mapMeta = (MapMeta) itemMap.getItemMeta();
- MapView mapView = Bukkit.createMap(p.getWorld());
- for(MapRenderer r : mapView.getRenderers()) {
- mapView.removeRenderer(r);
- }
- mapView.addRenderer(new MyMapRenderer(source));
- assert mapMeta != null;
- mapMeta.setMapView(mapView);
- itemMap.setItemMeta(mapMeta);
- p.getInventory().addItem(itemMap);
- } catch (IOException e) {
- e.printStackTrace();
- }
- });
- }
- private static class MyMapRenderer extends MapRenderer {
- private final BufferedImage source;
- public MyMapRenderer(BufferedImage source) {
- this.source = source;
- }
- @Override
- public void render(@NotNull MapView mapView, @NotNull MapCanvas mapCanvas, @NotNull Player player) {
- double sx = source.getWidth() / 128d;
- double sy = source.getHeight() / 128d;
- AffineTransform tr = new AffineTransform();
- tr.scale(1d / sx, 1d / sy);
- AffineTransformOp op = new AffineTransformOp(tr, AffineTransformOp.TYPE_BILINEAR);
- BufferedImage newImage = new BufferedImage(128, 128, source.getType());
- op.filter(source, newImage);
- mapCanvas.drawImage(0, 0, newImage);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement