Войти или зарегистрироваться

Совет [урок] Цветные картинки на картах

  • Автор темы Автор темы Ax3
  • Дата начала Дата начала

Ax3

Старожил
Пользователь
Баллы
103
Имя в Minecraft
Ax3Effect
В общем, блуждал по dev.bukkit.org и нашёл очень полезный плагин который позволяет вставлять свои картинки из интернета прямо в карту.
http://dev.bukkit.org/server-mods/imgmap/


Перевод плагина: http://www.mediafire.com/download.php?vmh1y72igdb6ac8 (спасибо ITrAnEI)
Сложность: для нубов​
Шаг 1 (если у вас уже есть ссылка на картинку, пропускайте)
Ищем любую картинку, главное не сложную и желательно квадратную, далее если у вас большая картинка, вы можете обрезать её в
Картинка должна быть 128х128! Можно меньше или больше, плагин сам ресайзит, но всё же.
Заливаем на любой файлохост с прямыми ссылками, к примеру:
Шаг 2
Качаем плагин и кидаем в папку plugins/
Запускаем сервер, берём в руки карту
o9qql2.png


Копируем нашу ссылку (главное короткую, иначе в чат не вместится ;), можно использовать сервисы bit.ly)
К примеру:
http://minecraft-delicious.com/wp-content/uploads/2011/08/minecraft-creeper.jpg

Пишем в чат:
/map http://minecraft-delicious.com/wp-content/uploads/2011/08/minecraft-creeper.jpg

И картинка начинает появляться на карте
2ci8i8y.png

sw8voj.png


Вот и всё!

ВНИМАНИЕ: Если вы хотите повесить картинку в рамку - нет проблем, но лучше использовать команду /map perm [ссылка] - тогда картинка будет сохранена в конфиге плагина и после рестарта не будет проблем с рамками.

Удачи!
Ставьте лайк, если понравился урок.
x29ml1.png


21ln21v.png
 
Спасибо за урок,мне понравилось. Буду использовать.
 
  • Нравится
Реакции: Ax3
slenky Почистите тему,но НЕ закрывайте!
 
Жди.
EDIT(лови):
package cirno;

import java.net.URL;
import java.util.ArrayList;
import net.minecraft.server.Item;
import net.minecraft.server.World;
import net.minecraft.server.WorldMap;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.map.CraftMapRenderer;
import org.bukkit.craftbukkit.map.CraftMapView;
import org.bukkit.entity.Player;
import org.*********ventory.ItemStack;
import org.bukkit.map.MapRenderer;
import org.bukkit.map.MapView;

public class CommanderCirno implements CommandExecutor {

Nineball cirno;

protected static MapRenderer normalrender;
protected DataSaver ds;

public CommanderCirno(Nineball cirno){
this.cirno = cirno;
this.ds = new DataSaver(cirno);
}

protected final String[] Formats = {"jpg","jpeg","png","gif","bmp"};

public Boolean checkForImgType(String url, CommandSender s){
if(url.contains("goo.gl") || url.contains("bit.ly") || url.contains("tinyurl.com")){
return true;
}
for(String urls : Formats){
if(url.endsWith(urls))
return true;
}
cirno.getServer().getPlayer(s.getName()).sendMessage(ChatColor.RED + "[ImgMap] Формат файла не поддерживается!");
return false;
}

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(command.getName().startsWith("map")){
if(sender.hasPermission("imgmap.render") || sender.isOp()){
if(!(args.length >= 1)){
sender.sendMessage(ChatColor.RED + "[ImgMap] Этой команде требуется аргумент-ссылка!");
return true;
}
if(!(sender instanceof Player)){
sender.sendMessage(ChatColor.RED + "[ImgMap] Ты должен быть игроком!");
return true;
}
ItemStack item = cirno.getServer().getPlayer(sender.getName()).getItemInHand();
MapView map;
ArrayList<URL> urls = new ArrayList<URL>();

if(item.getType() == Material.MAP){
map = Bukkit.getServer().getMap(item.getDurability());
map.getRenderers().clear();
} else {
cirno.getServer().getPlayer(sender.getName()).sendMessage(ChatColor.RED + "" + ChatColor.ITALIC + "[ImgMap] В твоей руке должна быть карта!");
return true;
}

if(args[0].equalsIgnoreCase("slideshow")){
for(int i=1; i < args.length - 1; i++){
if(checkForImgType(args, sender)) try {
urls.add(new URL(args));
}
catch (Exception e){}
}
map.addRenderer(new SlideshowRenderer(urls, Integer.valueOf(args[args.length - 1]), cirno));
return true;
} else {
if(args[0].equalsIgnoreCase("perm")){
if(checkForImgType(args[1], sender)){
map.addRenderer(new ImgRenderer(args[1], cirno));
ds.setMapData(item.getDurability(), args[1]);
cirno.getServer().getPlayer(sender.getName()).sendMessage(ChatColor.GREEN + "[ImgMap] Сейчас обрабатывается файл " + args[1]);
return true;
}
} else if(checkForImgType(args[0], sender)){
map.addRenderer(new ImgRenderer(args[0], cirno));
if(cirno.getConfig().getBoolean("MapsDefaultPermament")){
ds.setMapData(item.getDurability(), args[0]);
}
cirno.getServer().getPlayer(sender.getName()).sendMessage(ChatColor.GREEN + "[ImgMap] Сейчас обрабатывается файл " + args[0]);
return true;
}
}
} else {
sender.sendMessage(ChatColor.RED + "Cirno sad. Cirno want you to access command, but Cirno cannot let you. Cirno will leak tears :'(");
return true;
}
}

if(command.getName().equalsIgnoreCase("restoremap") && (sender.hasPermission("imgmap.clear") || sender.isOp())){
ItemStack item = cirno.getServer().getPlayer(sender.getName()).getItemInHand();
if(item.getType() == Material.MAP){
MapView map = Bukkit.getServer().getMap(item.getDurability());
map.getRenderers().clear();
net.minecraft.server.ItemStack item2 = new net.minecraft.server.ItemStack(Item.MAP);
item2.setData(item.getData().getData());
WorldMap worldmap = (WorldMap)((World)((CraftWorld)cirno.getServer().getPlayer(sender.getName()).getWorld()).getHandle()).a(WorldMap.class, "map_" + item2.getData());
map.addRenderer(new CraftMapRenderer((CraftMapView)map, worldmap));
ds.delMapData(map.getId());
return true;
} else {
cirno.getServer().getPlayer(sender.getName()).sendMessage(ChatColor.RED + "[ImgMap] Не удалось обработать!");
return true;
}
}
return true;
}
}[/code]
Там нет такого файла. https://github.com/CirnoTheGenius/ImgMap/tree/master/ImgMap/src/cirno вот же сорцы
 
Java:
package cirno;
 
import java.io.IOException;
 
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.*********ventory.ItemStack;
import org.bukkit.map.MapRenderer;
import org.bukkit.map.MapView;
import org.bukkit.plugin.java.JavaPlugin;
 
 
public class Nineball extends JavaPlugin {
    protected static MapRenderer normalrender;
    protected final String[] Formats = {"jpg","jpeg","png","gif","bmp"};
    protected DataSaver ds;
 
    public void onEnable(){
        try {
            ds = new DataSaver(this);
            ds.initializeFile();
            ds.setGlobalMaps();
            System.out.print("Set global maps.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    public Boolean checkForImgType(String url, CommandSender s){
        if(url.contains("goo.gl") || url.contains("bit.ly") || url.contains("tinyurl.com")){
            return true;
        }
        for(String urls : Formats){
            if(url.endsWith(urls))
                return true;
        }
        getServer().getPlayer(s.getName()).sendMessage(ChatColor.RED + "[ImgMap] Формат файла изображения не поддерживается!");
        return false;
    }
 
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if(!(sender instanceof Player)){
            sender.sendMessage(ChatColor.RED + "[ImgMap] Ты должен быть игроком, чтобы использовать этот плагин!");
        }
        if(command.getName().startsWith("map") && sender.hasPermission("imgmap.render") || sender.isOp()){
            if(!(args.length == 1)){
                sender.sendMessage(ChatColor.RED + "[ImgMap] Этой команде требуется аргумент! Пример: /map www.сайт.рф/картинка.png");
            }
            if(checkForImgType(args[0], sender)){
                ItemStack item = getServer().getPlayer(sender.getName()).getItemInHand();
                if(item.getType() == Material.MAP){
                    // Put this in an AsyncDelayedTask
                    // If you dont do this, large images (or slow download) migth crash server
 
                    // NOTE: Some variables will have to be 'final'
                    MapView map = Bukkit.getServer().getMap(item.getDurability());
                    if(normalrender != new ImgRenderer()){
                        normalrender = map.getRenderers().get(0);
                    }
                    try{ map.removeRenderer(map.getRenderers().get(0));  }catch(Exception e){}
                    map.addRenderer(new ImgRenderer(args[0]));
                    ds.setMapData(item.getDurability(), args[0]);
                    getServer().getPlayer(sender.getName()).sendMessage(ChatColor.GREEN + "[ImgMap] Сейчас обрабатывается " + args[0]);
 
                } else {
                    getServer().getPlayer(sender.getName()).sendMessage(ChatColor.RED + "" + ChatColor.ITALIC + "[ImgMap] В твоей руке должна находится карта!");
                }
                return true;
            }
        } else {
            sender.sendMessage(ChatColor.RED + "Cirno sad. Cirno want you to access command, but Cirno cannot let you. Cirno will leak tears :'(");
            return true;
        }
 
        if(command.getName().equalsIgnoreCase("restoremap") && (sender.hasPermission("imgmap.clear") || sender.isOp())){
            ItemStack item = getServer().getPlayer(sender.getName()).getItemInHand();   
            if(item.getType() == Material.MAP && normalrender != null){
                MapView map = Bukkit.getServer().getMap(item.getDurability());
                try{ map.removeRenderer(map.getRenderers().get(0));  }catch(Exception e){}
                map.addRenderer(normalrender);
                return true;
            } else {
                getServer().getPlayer(sender.getName()).sendMessage(ChatColor.RED + "[ImgMap] Не удалось обработать это изображение!");
                return true;
            }
        }
        return true;
    }
}
 
Java:
package cirno;
 
import java.io.IOException;
 
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.*********ventory.ItemStack;
import org.bukkit.map.MapRenderer;
import org.bukkit.map.MapView;
import org.bukkit.plugin.java.JavaPlugin;
 
 
public class Nineball extends JavaPlugin {
    protected static MapRenderer normalrender;
    protected final String[] Formats = {"jpg","jpeg","png","gif","bmp"};
    protected DataSaver ds;
 
    public void onEnable(){
        try {
            ds = new DataSaver(this);
            ds.initializeFile();
            ds.setGlobalMaps();
            System.out.print("Set global maps.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    public Boolean checkForImgType(String url, CommandSender s){
        if(url.contains("goo.gl") || url.contains("bit.ly") || url.contains("tinyurl.com")){
            return true;
        }
        for(String urls : Formats){
            if(url.endsWith(urls))
                return true;
        }
        getServer().getPlayer(s.getName()).sendMessage(ChatColor.RED + "[ImgMap] Формат файла изображения не поддерживается!");
        return false;
    }
 
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if(!(sender instanceof Player)){
            sender.sendMessage(ChatColor.RED + "[ImgMap] Ты должен быть игроком, чтобы использовать этот плагин!");
        }
        if(command.getName().startsWith("map") && sender.hasPermission("imgmap.render") || sender.isOp()){
            if(!(args.length == 1)){
                sender.sendMessage(ChatColor.RED + "[ImgMap] Этой команде требуется аргумент! Пример: /map www.сайт.рф/картинка.png");
            }
            if(checkForImgType(args[0], sender)){
                ItemStack item = getServer().getPlayer(sender.getName()).getItemInHand();
                if(item.getType() == Material.MAP){
                    // Put this in an AsyncDelayedTask
                    // If you dont do this, large images (or slow download) migth crash server
 
                    // NOTE: Some variables will have to be 'final'
                    MapView map = Bukkit.getServer().getMap(item.getDurability());
                    if(normalrender != new ImgRenderer()){
                        normalrender = map.getRenderers().get(0);
                    }
                    try{ map.removeRenderer(map.getRenderers().get(0));  }catch(Exception e){}
                    map.addRenderer(new ImgRenderer(args[0]));
                    ds.setMapData(item.getDurability(), args[0]);
                    getServer().getPlayer(sender.getName()).sendMessage(ChatColor.GREEN + "[ImgMap] Сейчас обрабатывается " + args[0]);
 
                } else {
                    getServer().getPlayer(sender.getName()).sendMessage(ChatColor.RED + "" + ChatColor.ITALIC + "[ImgMap] В твоей руке должна находится карта!");
                }
                return true;
            }
        } else {
            sender.sendMessage(ChatColor.RED + "Cirno sad. Cirno want you to access command, but Cirno cannot let you. Cirno will leak tears :'(");
            return true;
        }
 
        if(command.getName().equalsIgnoreCase("restoremap") && (sender.hasPermission("imgmap.clear") || sender.isOp())){
            ItemStack item = getServer().getPlayer(sender.getName()).getItemInHand(); 
            if(item.getType() == Material.MAP && normalrender != null){
                MapView map = Bukkit.getServer().getMap(item.getDurability());
                try{ map.removeRenderer(map.getRenderers().get(0));  }catch(Exception e){}
                map.addRenderer(normalrender);
                return true;
            } else {
                getServer().getPlayer(sender.getName()).sendMessage(ChatColor.RED + "[ImgMap] Не удалось обработать это изображение!");
                return true;
            }
        }
        return true;
    }
}
ЛАЙК ЛАЙК ЛАЙК ЛАЙК ЛАЙК ЛАЙК
 
Зачем переводить, если для админов?
 
Назад
Верх