Advertisement
JolyJDIA

Untitled

Oct 22nd, 2020
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.79 KB | None | 0 0
  1. @CommandLabel(alias = "map", minArg = 1, maxArg = 1)
  2.     public void renderMap() {
  3.         getPlayer().ifPresent(p -> {
  4.  
  5.             String link = getArgs()[0];
  6.             try {
  7.                 URL url = new URL(link);
  8.                 BufferedImage source = ImageIO.read(url);
  9.  
  10.                 ItemStack itemMap = new ItemStack(Material.FILLED_MAP);
  11.                 MapMeta mapMeta = (MapMeta) itemMap.getItemMeta();
  12.  
  13.                 MapView mapView = Bukkit.createMap(p.getWorld());
  14.  
  15.                 for(MapRenderer r : mapView.getRenderers()) {
  16.                     mapView.removeRenderer(r);
  17.                 }
  18.                 mapView.addRenderer(new MyMapRenderer(source));
  19.                 assert mapMeta != null;
  20.  
  21.                 mapMeta.setMapView(mapView);
  22.                 itemMap.setItemMeta(mapMeta);
  23.                 p.getInventory().addItem(itemMap);
  24.             } catch (IOException e) {
  25.                 e.printStackTrace();
  26.             }
  27.         });
  28.     }
  29.  
  30.     private static class MyMapRenderer extends MapRenderer {
  31.         private final BufferedImage source;
  32.  
  33.         public MyMapRenderer(BufferedImage source) {
  34.             this.source = source;
  35.         }
  36.  
  37.         @Override
  38.         public void render(@NotNull MapView mapView, @NotNull MapCanvas mapCanvas, @NotNull Player player) {
  39.             double sx = source.getWidth() / 128d;
  40.             double sy = source.getHeight() / 128d;
  41.             AffineTransform tr = new AffineTransform();
  42.             tr.scale(1d / sx, 1d / sy);
  43.             AffineTransformOp op = new AffineTransformOp(tr, AffineTransformOp.TYPE_BILINEAR);
  44.             BufferedImage newImage = new BufferedImage(128, 128, source.getType());
  45.             op.filter(source, newImage);
  46.             mapCanvas.drawImage(0, 0, newImage);
  47.         }
  48.     }
  49. }
  50.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement