Advertisement
Guest User

Untitled

a guest
Oct 5th, 2018
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.76 KB | None | 0 0
  1.  
  2. import java.awt.image.BufferedImage;
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.Location;
  5. import org.bukkit.Material;
  6. import org.bukkit.block.BlockFace;
  7. import org.bukkit.entity.EntityType;
  8. import org.bukkit.entity.ItemFrame;
  9. import org.bukkit.entity.Player;
  10. import org.bukkit.inventory.ItemStack;
  11. import org.bukkit.map.MapRenderer;
  12. import org.bukkit.map.MapView;
  13.  
  14. import io.netty.handler.codec.http2.Http2FrameLogger.Direction;
  15.  
  16. public class MapWallUtil {
  17.  
  18. @SuppressWarnings("deprecation")
  19. public static ItemStack getMap(BufferedImage BUFFEREDIMAGE) {
  20.  
  21. MapView mv = Bukkit.createMap(Bukkit.getWorlds().get(0));
  22. short mapIds = mv.getId();
  23. ItemStack is = new ItemStack(Material.MAP, 1, (short) mapIds);
  24. for (MapRenderer mr : mv.getRenderers()) {
  25. mv.removeRenderer(mr);
  26. }
  27. mv.addRenderer(new CustomImageRenderer(BUFFEREDIMAGE, CustomImageRenderer.TICK_FOR_STILLS));
  28.  
  29. return is;
  30. }
  31.  
  32. /**
  33. * Remember: The image has to be a multiple of 128
  34. *
  35. * @param whole
  36. * @return
  37. */
  38. @SuppressWarnings("deprecation")
  39. public static ItemStack[][] getMaps(BufferedImage[] whole) {
  40. int frames = whole.length;
  41. int width = 0;
  42. int height = 0;
  43. for (int i = 0; i < whole.length; i++) {
  44. if (width < whole[i].getWidth())
  45. width = whole[i].getWidth();
  46. if (height < whole[i].getHeight())
  47. height = whole[i].getHeight();
  48. }
  49. int wd1 = (int) (0.999999999 + (((double) width) / 128));
  50. int hd1 = (int) (0.999999999 + (((double) height) / 128));
  51. ItemStack[][] stacks = new ItemStack[wd1][hd1];
  52. if (wd1 == 0 || hd1 == 0) {
  53. Bukkit.broadcast("Image is invalid. Width=" + wd1 + " Height=" + hd1 + ".",
  54. "pluginconstructorapi.detectImage");
  55. }
  56. for (int x = 0; x < wd1; x++) {
  57. for (int y = 0; y < hd1; y++) {
  58. MapView mv = Bukkit.createMap(Bukkit.getWorlds().get(0));
  59. short mapIds = mv.getId();
  60. ItemStack is = new ItemStack(Material.MAP, 1, (short) mapIds);
  61. stacks[x][y] = is;
  62. for (MapRenderer mr : mv.getRenderers()) {
  63. mv.removeRenderer(mr);
  64. }
  65. BufferedImage[] bip = new BufferedImage[frames];
  66. for (int frame = 0; frame < frames; frame++) {
  67. if (x * 128 >= whole[frame].getWidth()) {
  68. continue;
  69. }
  70. int cW = 127;
  71. int cH = 127;
  72. // if ((x * 128) + cW == whole[frame].getWidth())
  73. // continue;
  74. if ((x * 128) + cW > whole[frame].getWidth())
  75. cW = whole[frame].getWidth() - ((x * 128));
  76. if ((y * 128) + cH > whole[frame].getHeight())
  77. cH = whole[frame].getHeight() - ((y * 128));
  78. if (cH <= 0 || cW <= 0)
  79. continue;
  80. bip[frame] = whole[frame].getSubimage(x * 128, y * 128, cW, cH);
  81. }
  82. mv.addRenderer(new MapRenderer(bip, ((frames > 1) ? 0 : CustomImageRenderer.TICK_FOR_STILLS)));
  83.  
  84. }
  85. }
  86. return stacks;
  87. }
  88.  
  89. public static void setBlockAt(Direction dir, final Player p, int height, int width, final ItemStack is) {
  90. Location loc = new Location(p.getWorld(), p.getLocation().getBlockX(), p.getLocation().getBlockY(),
  91. p.getLocation().getBlockZ());
  92. final Location frame_loc;
  93. final BlockFace bf;
  94. final Material type = Material.GLASS;
  95. switch (dir) {
  96. default:
  97. loc.add(0, height, width);
  98. loc.getBlock().setType(type);
  99. frame_loc = loc.clone();
  100. frame_loc.setX(loc.getX() - 1);
  101. bf = BlockFace.SOUTH;
  102. break;
  103. }
  104. if (frame_loc.getBlock().getType() != Material.AIR)
  105. frame_loc.getBlock().setType(Material.AIR);
  106. if (is != null)
  107. Bukkit.getScheduler().scheduleSyncDelayedTask(Main.getInstance(), new Runnable() {
  108. public void run() {
  109. ItemFrame i = (ItemFrame) p.getWorld().spawnEntity(frame_loc, EntityType.ITEM_FRAME);// .spawn(frame_loc,
  110. // ItemFrame.class);
  111. i.setFacingDirection(bf);
  112. i.setItem(is);
  113. }
  114. }, 20);
  115. }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement