GameDoctorT
Участник
- Баллы
- 31
- Имя в Minecraft
- GameDoctor
deleted
Последнее редактирование:
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Тип это ?Здравствуйте! Видел много где новый вид оформления топа игроков. Это выглядит как несколько рамок в которых карты с картинками образуют общую картину на которой показан текстом топ игроков по определённому кол-ву статистики. Вот у меня вопрос - как сделать так же? Если такой плагин есть в интернете - пожалуйста, дайте ссылку. Если нет - помогите разработать, а именно дайте наводку вообще как это работает, желательно с примером в коде. Не нужны мне ваши ссылки на javadocs!!!
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.imageio.ImageIO;
import org.bukkit.entity.Player;
import org.bukkit.map.MapCanvas;
import org.bukkit.map.MapRenderer;
import org.bukkit.map.MapView;
import org.bukkit.map.MapView.Scale;
public class ImageRenderer extends MapRenderer {
private BufferedImage picture;
private boolean drawed = false;
public ImageRenderer(MapView view, BufferedImage picture) {
this.picture = picture;
Iterator<MapRenderer> iter = view.getRenderers().iterator();
while (iter.hasNext()) {
view.removeRenderer(iter.next());
}
}
@Override
public void render(MapView view, MapCanvas canvas, Player player) {
if (drawed) {
return;
}
view.setScale(Scale.FARTHEST);
canvas.drawImage(0, 0, picture);
drawed = true;
}
public static BufferedImage load(File file) {
try {
BufferedImage image = ImageIO.read(file);
return image;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public static List<BufferedImage> create(BufferedImage image, int countW, int countH) {
List<BufferedImage> list = new ArrayList<BufferedImage>();
int width = 128 * countW;
int height = 128 * countH;
BufferedImage resize = resize(image, width, height);
for (int y = 0; y < height; y += 128) {
for (int x = 0; x < width; x += 128) {
list.add(resize.getSubimage(x, y, 128, 128));
}
}
return list;
}
private static BufferedImage resize(BufferedImage image, int width, int height) {
Dimension size = new Dimension(width, height);
BufferedImage resized = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = resized.createGraphics();
g.drawImage(image, 0, 0, size.width, size.height, null);
g.dispose();
return resized;
}
}
public void setView(World world, ItemStack stack, BufferedImage image) {
MapView view = Bukkit.createMap(world);
view.addRenderer(new ImageRenderer(view, image));
ItemMeta meta = stack.getItemMeta();
MapMeta mapmeta = (MapMeta) meta;
mapmeta.setMapView(view);
stack.setItemMeta(meta);
}
List<BufferedImage> list = ImageRenderer.create(ImageRenderer.load(file), 4, 4);
list.forEach(image -> {
setView(world, (тут нужный стак и того 16 штук = (4*4)), image);
});