Помогите Фотография на карте

  • Автор темы Автор темы LetsDank
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

LetsDank

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
LetsDank
Не могу найти конкретно необходимый код для решения проблемы. Короче, мне надо превратить фото в карту, чтобы можно было задавать свой номер.
 
Код:
Player p = Bukkit.getPlayer("justInitialization");
           
MapView map = Bukkit.createMap(p.getWorld());
//clear map
Iterator<MapRenderer> iter = map.getRenderers().iterator();
while(iter.hasNext()){
    map.removeRenderer(iter.next());
}
           
//draw
map.addRenderer(new PictureDrawer(new File(getDataFolder()+"/img/"+args[0]),Scale.NORMAL,0,0));
           
p.getInventory().addItem(new ItemStack(Material.MAP,1,map.getId()));
Код:
package main;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

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 PictureDrawer extends MapRenderer {
   
    File picture;
    Scale scale;
    boolean drawed = false;
    int x;
    int y;
   
    public PictureDrawer(File picture,Scale scale,int x,int y) {
        this.picture = picture;
        this.scale = scale;
        this.x = x;
        this.y = y;
    }

    @Override
    public void render(MapView map, MapCanvas canvas, Player p) {
        if (drawed) return;
        BufferedImage img = null;
        try {
            img = ImageIO.read(picture);
        } catch (IOException e) {e.printStackTrace();}
        map.setScale(scale);
        canvas.drawImage(x,y, img);
        drawed = true;
    }
 
}
 
Код:
Player p = Bukkit.getPlayer("justInitialization");
         
MapView map = Bukkit.createMap(p.getWorld());
//clear map
Iterator<MapRenderer> iter = map.getRenderers().iterator();
while(iter.hasNext()){
    map.removeRenderer(iter.next());
}
         
//draw
map.addRenderer(new PictureDrawer(new File(getDataFolder()+"/img/"+args[0]),Scale.NORMAL,0,0));
         
p.getInventory().addItem(new ItemStack(Material.MAP,1,map.getId()));
Код:
package main;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

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 PictureDrawer extends MapRenderer {
 
    File picture;
    Scale scale;
    boolean drawed = false;
    int x;
    int y;
 
    public PictureDrawer(File picture,Scale scale,int x,int y) {
        this.picture = picture;
        this.scale = scale;
        this.x = x;
        this.y = y;
    }

    @Override
    public void render(MapView map, MapCanvas canvas, Player p) {
        if (drawed) return;
        BufferedImage img = null;
        try {
            img = ImageIO.read(picture);
        } catch (IOException e) {e.printStackTrace();}
        map.setScale(scale);
        canvas.drawImage(x,y, img);
        drawed = true;
    }
 
}
Извините, что с задержкой, но можете объяснить, как выполняется
данный процесс?
 
Создание карты:
MapView map = Bukkit.createMap(p.getWorld());
Очистка всего, что нарисовало ведро(указатель игрока и т.д.)
Iterator<MapRenderer> iter = map.getRenderers().iterator(); while(iter.hasNext()){ map.removeRenderer(iter.next()); }
Установка и создание своего MapRenderer'а, тоесть отрисовщика.
map.addRenderer(new PictureDrawer(new File(getDataFolder()+"/img/"+args[0]),Scale.NORMAL,0,0));
Установка 'приближения' карты и отрисовка картинки.
map.setScale(scale); canvas.drawImage(x,y, img);
 
Создание карты:

Очистка всего, что нарисовало ведро(указатель игрока и т.д.)

Установка и создание своего MapRenderer'а, тоесть отрисовщика.

Установка 'приближения' карты и отрисовка картинки.
А можно при запуске плагина без участия игрока все выполнялось?
 
Да, игрок в данном случаи только для выдачи предмета, зная id карты, можно её выдать.
 
Bukkit.getMap(short id);
 
Мда. После вставки этого кода, у меня вылезла ошибка.
Код:
[18:01:12] [Server thread/ERROR]: Error occurred while enabling Computer v0.3.1 (Is it up to date?)
java.lang.NullPointerException: null
    at net.letsdank.computer.Drawing.setPictureToMap(Drawing.java:33) ~[?:?]
    at net.letsdank.computer.ComputerPlugin.onEnable(ComputerPlugin.java:85) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:402) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:374) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:323) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:745) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.Bukkit.reload(Bukkit.java:525) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:641) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:627) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:443) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
[18:01:12] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
[18:01:12] [Server thread/INFO]: CONSOLE: [0;32;1mReload complete.[m
Код:
    @SuppressWarnings("deprecation")
    public static void setPictureToMap(String path, int id) {
        // render image maps
        MapView map = Bukkit.getMap((short)id);
        if (ComputerPlugin.isBeta)
            System.out.println("Creating map, id: " + id);
        // clear map
        Iterator<MapRenderer> iter = map.getRenderers().iterator(); // <-- Здесь ошибка
        while (iter.hasNext()) {
            map.removeRenderer(iter.next());
        }
        
        // draw picture
        map.addRenderer(new PictureRenderer(new File(path), Scale.NORMAL, 0, 0));
        if (ComputerPlugin.isBeta)
            System.out.println("Drawing picture: " + path + " with id: " + id);
    }
 
Мда. После вставки этого кода, у меня вылезла ошибка.
Код:
[18:01:12] [Server thread/ERROR]: Error occurred while enabling Computer v0.3.1 (Is it up to date?)
java.lang.NullPointerException: null
    at net.letsdank.computer.Drawing.setPictureToMap(Drawing.java:33) ~[?:?]
    at net.letsdank.computer.ComputerPlugin.onEnable(ComputerPlugin.java:85) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:402) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:374) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:323) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:745) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.Bukkit.reload(Bukkit.java:525) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:641) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:627) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:443) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot.jar:git-Spigot-596221b-9a1fc1e]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
[18:01:12] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
[18:01:12] [Server thread/INFO]: CONSOLE: [0;32;1mReload complete.[m
Код:
    @SuppressWarnings("deprecation")
    public static void setPictureToMap(String path, int id) {
        // render image maps
        MapView map = Bukkit.getMap((short)id);
        if (ComputerPlugin.isBeta)
            System.out.println("Creating map, id: " + id);
        // clear map
        Iterator<MapRenderer> iter = map.getRenderers().iterator(); // <-- Здесь ошибка
        while (iter.hasNext()) {
            map.removeRenderer(iter.next());
        }
       
        // draw picture
        map.addRenderer(new PictureRenderer(new File(path), Scale.NORMAL, 0, 0));
        if (ComputerPlugin.isBeta)
            System.out.println("Drawing picture: " + path + " with id: " + id);
    }
Карту не нашел.
 
Но самое главное, что при инициализации переменой не выдает NullPointerException. Тогда попытаюсь что-то сделать, а если получится, то напишу тут результат.
 
Можно заранее сделать файлы с содержанием картины и с подписанным id. Пример: map_10.dat
Закрыто.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх