Partially impl. the frame buffer & deleted SM
This commit is contained in:
parent
9ef0b00caa
commit
02f3883c12
9 changed files with 9 additions and 810 deletions
|
@ -1,217 +0,0 @@
|
||||||
package com.mcplugindev.slipswhitley.sketchmap;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file was originally taken from https://github.com/slipswhitley/SketchMap
|
|
||||||
*/
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
|
||||||
|
|
||||||
import com.mcplugindev.slipswhitley.sketchmap.file.SketchMapFileException;
|
|
||||||
import com.mcplugindev.slipswhitley.sketchmap.map.RelativeLocation;
|
|
||||||
import com.mcplugindev.slipswhitley.sketchmap.map.SketchMap;
|
|
||||||
|
|
||||||
//import com.mcplugindev.slipswhitley.sketchmap.map.SketchMap.BaseFormat;
|
|
||||||
|
|
||||||
public class SketchMapAPI
|
|
||||||
{
|
|
||||||
|
|
||||||
public static SketchMap getMapByID(String id)
|
|
||||||
{
|
|
||||||
for (SketchMap map : SketchMap.getLoadedMaps())
|
|
||||||
{
|
|
||||||
if (map.getID().equalsIgnoreCase(id))
|
|
||||||
{
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<ItemStack> getOrderedItemSet(SketchMap map)
|
|
||||||
{
|
|
||||||
List<ItemStack> items = new ArrayList<ItemStack>();
|
|
||||||
|
|
||||||
for (int y = 0; y < map.getLengthY(); y++)
|
|
||||||
{
|
|
||||||
for (int x = 0; x < map.getLengthX(); x++)
|
|
||||||
{
|
|
||||||
for (RelativeLocation loc : map.getMapCollection().keySet())
|
|
||||||
{
|
|
||||||
if (loc.getX() != x || loc.getY() != y)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStack iStack = new ItemStack(Material.MAP, 1);
|
|
||||||
iStack.setDurability(SketchMapUtils.getMapID(map
|
|
||||||
.getMapCollection().get(loc)));
|
|
||||||
|
|
||||||
ItemMeta iMeta = iStack.getItemMeta();
|
|
||||||
iMeta.setDisplayName(ChatColor.GREEN + "SketchMap ID: "
|
|
||||||
+ ChatColor.GOLD + map.getID() + ChatColor.GREEN
|
|
||||||
+ " Pos-X: " + ChatColor.GOLD + (x + 1)
|
|
||||||
+ ChatColor.GREEN + " Pos-Y: " + ChatColor.GOLD
|
|
||||||
+ (y + 1));
|
|
||||||
|
|
||||||
iMeta.setLore(Arrays.asList(new String[] { ChatColor.GRAY
|
|
||||||
+ "SketchMap ID: " + map.getID()
|
|
||||||
|
|
||||||
}));
|
|
||||||
|
|
||||||
iStack.setItemMeta(iMeta);
|
|
||||||
items.add(iStack);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return items;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static SketchMap loadSketchMapFromFile(File file)
|
|
||||||
throws SketchMapFileException
|
|
||||||
{
|
|
||||||
|
|
||||||
YamlConfiguration config = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
config = YamlConfiguration.loadConfiguration(file);
|
|
||||||
} catch (Exception ex)
|
|
||||||
{
|
|
||||||
throw new SketchMapFileException("Invalid SketchMap File \""
|
|
||||||
+ file.getName() + "\"");
|
|
||||||
}
|
|
||||||
|
|
||||||
String[] fieldSet = { "x-panes", "y-panes", "public-protected",
|
|
||||||
"map-collection", "base-format", "map-image", };
|
|
||||||
|
|
||||||
for (String field : fieldSet)
|
|
||||||
{
|
|
||||||
if (!config.isSet(field))
|
|
||||||
{
|
|
||||||
throw new SketchMapFileException(
|
|
||||||
"Unable to load SketchMap file \"" + file.getName()
|
|
||||||
+ "\" missing field \"" + field + "\"");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Integer xPanes = config.getInt("x-panes");
|
|
||||||
if (xPanes == null || xPanes < 1)
|
|
||||||
{
|
|
||||||
throw new SketchMapFileException("Unable to load SketchMap file \""
|
|
||||||
+ file.getName() + "\" invalid field \"x-panes\"");
|
|
||||||
}
|
|
||||||
|
|
||||||
Integer yPanes = config.getInt("y-panes");
|
|
||||||
if (yPanes == null || yPanes < 1)
|
|
||||||
{
|
|
||||||
throw new SketchMapFileException("Unable to load SketchMap file \""
|
|
||||||
+ file.getName() + "\" invalid field \"y-panes\"");
|
|
||||||
}
|
|
||||||
|
|
||||||
Boolean publicProtected = config.getBoolean("public-protected");
|
|
||||||
if (publicProtected == null)
|
|
||||||
{
|
|
||||||
throw new SketchMapFileException("Unable to load SketchMap file \""
|
|
||||||
+ file.getName() + "\" invalid field \"public-protected\"");
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> mapList = config.getStringList("map-collection");
|
|
||||||
if (mapList == null)
|
|
||||||
{
|
|
||||||
throw new SketchMapFileException("Unable to load SketchMap file \""
|
|
||||||
+ file.getName() + "\" invalid field \"map-collection\"");
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<Short, RelativeLocation> mapCollection = new HashMap<Short, RelativeLocation>();
|
|
||||||
|
|
||||||
for (String map : mapList)
|
|
||||||
{
|
|
||||||
String[] split = map.split(" ");
|
|
||||||
if (split.length != 2)
|
|
||||||
{
|
|
||||||
throw new SketchMapFileException(
|
|
||||||
"Unable to load SketchMap file \"" + file.getName()
|
|
||||||
+ "\" cannot parse field in \"map-colection\"");
|
|
||||||
}
|
|
||||||
|
|
||||||
RelativeLocation loc = RelativeLocation.fromString(split[0]);
|
|
||||||
|
|
||||||
if (loc == null)
|
|
||||||
{
|
|
||||||
throw new SketchMapFileException(
|
|
||||||
"Unable to load SketchMap file \"" + file.getName()
|
|
||||||
+ "\" cannot parse field in \"map-colection\"");
|
|
||||||
}
|
|
||||||
|
|
||||||
Short id = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
id = Short.parseShort(split[1]);
|
|
||||||
} catch (Exception ex)
|
|
||||||
{
|
|
||||||
throw new SketchMapFileException(
|
|
||||||
"Unable to load SketchMap file \"" + file.getName()
|
|
||||||
+ "\" cannot parse field in \"map-colection\"");
|
|
||||||
}
|
|
||||||
|
|
||||||
mapCollection.put(id, loc);
|
|
||||||
}
|
|
||||||
|
|
||||||
//BaseFormat format = null;
|
|
||||||
/*
|
|
||||||
* try {
|
|
||||||
* format = BaseFormat.valueOf(config.getString("base-format"));
|
|
||||||
* }
|
|
||||||
* catch (Exception ex) {
|
|
||||||
* throw new SketchMapFileException("Unable to load SketchMap file \"" +
|
|
||||||
* file.getName()
|
|
||||||
* + "\" cannot parse BaseFormat from field \"base-format\"");
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
|
|
||||||
String b64Img = config.getString("map-image");
|
|
||||||
if (b64Img == null)
|
|
||||||
{
|
|
||||||
throw new SketchMapFileException("Unable to load SketchMap file \""
|
|
||||||
+ file.getName() + "\" invalid field \"map-image\"");
|
|
||||||
}
|
|
||||||
|
|
||||||
BufferedImage image = null;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
image = SketchMapUtils.base64StringToImg(b64Img);
|
|
||||||
} catch (Exception ex)
|
|
||||||
{
|
|
||||||
throw new SketchMapFileException("Unable to load SketchMap file \""
|
|
||||||
+ file.getName()
|
|
||||||
+ "\" parse image from field \"map-image\"");
|
|
||||||
}
|
|
||||||
|
|
||||||
String imageID = file.getName().substring(0,
|
|
||||||
file.getName().lastIndexOf("."));
|
|
||||||
if (getMapByID(imageID) != null)
|
|
||||||
{
|
|
||||||
throw new SketchMapFileException("Unable to load SketchMap file \""
|
|
||||||
+ file.getName()
|
|
||||||
+ "\" A SketchMap by that ID already exists.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return new SketchMap(image, imageID, yPanes, yPanes, publicProtected);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,54 +0,0 @@
|
||||||
package com.mcplugindev.slipswhitley.sketchmap;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file was originally taken from https://github.com/slipswhitley/SketchMap
|
|
||||||
*/
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
|
|
||||||
import com.mcplugindev.slipswhitley.sketchmap.listener.PlayerListener;
|
|
||||||
|
|
||||||
public class SketchMapPlugin extends JavaPlugin
|
|
||||||
{
|
|
||||||
private static SketchMapPlugin plugin;
|
|
||||||
|
|
||||||
public void onEnable()
|
|
||||||
{
|
|
||||||
plugin = this;
|
|
||||||
|
|
||||||
setupListeners();
|
|
||||||
|
|
||||||
sendEnabledMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void sendEnabledMessage()
|
|
||||||
{
|
|
||||||
SketchMapUtils.sendColoredConsoleMessage(ChatColor.GREEN
|
|
||||||
+ "| |");
|
|
||||||
|
|
||||||
SketchMapUtils.sendColoredConsoleMessage(ChatColor.GREEN + "| "
|
|
||||||
+ ChatColor.AQUA + "SketchMap "
|
|
||||||
+ this.getDescription().getVersion() + " has been Enabled!"
|
|
||||||
+ ChatColor.GREEN + " |");
|
|
||||||
|
|
||||||
SketchMapUtils.sendColoredConsoleMessage(ChatColor.GREEN + "| "
|
|
||||||
+ ChatColor.AQUA + " Authors: SlipsWhitley & Fyrinlight"
|
|
||||||
+ ChatColor.GREEN + " |");
|
|
||||||
|
|
||||||
SketchMapUtils.sendColoredConsoleMessage(ChatColor.GREEN
|
|
||||||
+ "| |");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setupListeners()
|
|
||||||
{
|
|
||||||
Bukkit.getPluginManager().registerEvents(new PlayerListener(), this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static SketchMapPlugin getPlugin()
|
|
||||||
{
|
|
||||||
return plugin;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,109 +0,0 @@
|
||||||
package com.mcplugindev.slipswhitley.sketchmap;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file was originally taken from https://github.com/slipswhitley/SketchMap
|
|
||||||
*/
|
|
||||||
|
|
||||||
import java.awt.Graphics2D;
|
|
||||||
import java.awt.Image;
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.io.ByteArrayInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.UncheckedIOException;
|
|
||||||
import java.util.Base64;
|
|
||||||
import java.util.HashSet;
|
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.block.Block;
|
|
||||||
import org.bukkit.command.ConsoleCommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.map.MapView;
|
|
||||||
|
|
||||||
public class SketchMapUtils
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Image Utils
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
public static BufferedImage resize(Image img, Integer width, Integer height)
|
|
||||||
{
|
|
||||||
|
|
||||||
img = img.getScaledInstance(width, height, Image.SCALE_SMOOTH);
|
|
||||||
|
|
||||||
if (img instanceof BufferedImage)
|
|
||||||
{
|
|
||||||
return (BufferedImage) img;
|
|
||||||
}
|
|
||||||
|
|
||||||
BufferedImage bimage = new BufferedImage(img.getWidth(null),
|
|
||||||
img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
|
|
||||||
|
|
||||||
Graphics2D bGr = bimage.createGraphics();
|
|
||||||
bGr.drawImage(img, 0, 0, null);
|
|
||||||
bGr.dispose();
|
|
||||||
|
|
||||||
return bimage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static BufferedImage base64StringToImg(final String base64String)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return ImageIO.read(new ByteArrayInputStream(Base64.getDecoder()
|
|
||||||
.decode(base64String)));
|
|
||||||
} catch (final IOException ioe)
|
|
||||||
{
|
|
||||||
throw new UncheckedIOException(ioe);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void sendColoredConsoleMessage(String msg)
|
|
||||||
{
|
|
||||||
ConsoleCommandSender sender = Bukkit.getConsoleSender();
|
|
||||||
sender.sendMessage(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Deprecated Methods Here :'c
|
|
||||||
*/
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public static short getMapID(MapView map)
|
|
||||||
{
|
|
||||||
return map.getId();
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public static MapView getMapView(short id)
|
|
||||||
{
|
|
||||||
MapView map = Bukkit.getMap(id);
|
|
||||||
if (map != null)
|
|
||||||
{
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Bukkit.createMap(getDefaultWorld());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
public static Block getTargetBlock(Player player, int i)
|
|
||||||
{
|
|
||||||
return player.getTargetBlock((HashSet<Material>) null, i);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static World getDefaultWorld()
|
|
||||||
{
|
|
||||||
return Bukkit.getWorlds().get(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
package com.mcplugindev.slipswhitley.sketchmap.file;
|
|
||||||
|
|
||||||
public class SketchMapFileException extends Exception {
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
public SketchMapFileException(String message) {
|
|
||||||
super(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,69 +0,0 @@
|
||||||
package com.mcplugindev.slipswhitley.sketchmap.listener;
|
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.GameMode;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.entity.ItemFrame;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
|
||||||
|
|
||||||
public class PlayerListener implements Listener {
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onPlayerInteract(PlayerInteractEntityEvent event) {
|
|
||||||
if(!(event.getRightClicked() instanceof ItemFrame)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemFrame iFrame = (ItemFrame) event.getRightClicked();
|
|
||||||
ItemStack iHand = event.getPlayer().getItemInHand();
|
|
||||||
|
|
||||||
if(iHand.getType() != Material.MAP) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String lore = iHand.getItemMeta().getLore().get(0);
|
|
||||||
|
|
||||||
if(!ChatColor.stripColor(lore).startsWith("SketchMap ID:")) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(iFrame.getItem().getType() != Material.AIR) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(event.isCancelled()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
event.setCancelled(true);
|
|
||||||
|
|
||||||
|
|
||||||
ItemStack frameItem = iHand.clone();
|
|
||||||
frameItem.setAmount(1);
|
|
||||||
ItemMeta frameIMeta = frameItem.getItemMeta();
|
|
||||||
|
|
||||||
frameIMeta.setDisplayName("");
|
|
||||||
frameItem.setItemMeta(frameIMeta);
|
|
||||||
|
|
||||||
iFrame.setItem(frameItem);
|
|
||||||
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
if(player.getGameMode() == GameMode.CREATIVE) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(iHand.getAmount() == 1) {
|
|
||||||
player.getInventory().setItemInHand(new ItemStack(Material.AIR));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
iHand.setAmount(iHand.getAmount() - 1);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
package com.mcplugindev.slipswhitley.sketchmap.map;
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.map.MapCanvas;
|
|
||||||
import org.bukkit.map.MapRenderer;
|
|
||||||
import org.bukkit.map.MapView;
|
|
||||||
|
|
||||||
public class ImageRenderer extends MapRenderer // Modified
|
|
||||||
{
|
|
||||||
|
|
||||||
private BufferedImage image;
|
|
||||||
|
|
||||||
public ImageRenderer(BufferedImage image) {
|
|
||||||
this.image = image;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int progress = 0;
|
|
||||||
public static int updatepixels = 15;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void render(MapView view, MapCanvas canvas, Player player) {
|
|
||||||
long time = System.nanoTime();
|
|
||||||
|
|
||||||
try {
|
|
||||||
canvas.drawImage(0, progress * updatepixels, image.getSubimage(0, progress * updatepixels, 128,
|
|
||||||
(progress * updatepixels + updatepixels >= 128 ? 128 - progress * updatepixels : updatepixels)));
|
|
||||||
if (progress < 128 / updatepixels)
|
|
||||||
progress++;
|
|
||||||
else
|
|
||||||
progress = 0;
|
|
||||||
|
|
||||||
long diff = System.nanoTime() - time;
|
|
||||||
if (TimeUnit.NANOSECONDS.toMillis(diff) > 40) {
|
|
||||||
System.out.println("Map rendering took " + TimeUnit.NANOSECONDS.toMillis(diff) + " ms");
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
System.out.println("Progess: " + progress);
|
|
||||||
System.out.println("UpdatePixels: " + updatepixels);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,53 +0,0 @@
|
||||||
package com.mcplugindev.slipswhitley.sketchmap.map;
|
|
||||||
|
|
||||||
public class RelativeLocation {
|
|
||||||
|
|
||||||
private int x;
|
|
||||||
private int y;
|
|
||||||
|
|
||||||
public RelativeLocation (int x, int y) {
|
|
||||||
this.x = x;
|
|
||||||
this.y = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public String toString() {
|
|
||||||
return x + ":" + y;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static RelativeLocation fromString(String str) {
|
|
||||||
String[] args = str.split(":");
|
|
||||||
if(args.length != 2) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
int x = 0;
|
|
||||||
int y = 0;
|
|
||||||
|
|
||||||
try {
|
|
||||||
x = Integer.parseInt(args[0]);
|
|
||||||
y = Integer.parseInt(args[1]);
|
|
||||||
}
|
|
||||||
catch (Exception ex) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new RelativeLocation (x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public int getX() {
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getY() {
|
|
||||||
return y;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,220 +0,0 @@
|
||||||
package com.mcplugindev.slipswhitley.sketchmap.map;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file was originally taken from https://github.com/slipswhitley/SketchMap
|
|
||||||
*/
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.map.MapView;
|
|
||||||
|
|
||||||
import com.mcplugindev.slipswhitley.sketchmap.SketchMapUtils;
|
|
||||||
|
|
||||||
public class SketchMap
|
|
||||||
{
|
|
||||||
|
|
||||||
public BufferedImage image;
|
|
||||||
private String mapID;
|
|
||||||
private Integer xPanes;
|
|
||||||
private Integer yPanes;
|
|
||||||
private Boolean publicProtected;
|
|
||||||
//private BaseFormat format;
|
|
||||||
|
|
||||||
private Map<RelativeLocation, MapView> mapCollection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Create SketchMap using New Maps
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
public SketchMap(BufferedImage image, String mapID, int xPanes, int yPanes,
|
|
||||||
boolean publicProtected)
|
|
||||||
{
|
|
||||||
|
|
||||||
this.image = SketchMapUtils.resize(image, xPanes * 128, yPanes * 128);
|
|
||||||
this.mapID = mapID;
|
|
||||||
this.xPanes = xPanes;
|
|
||||||
this.yPanes = yPanes;
|
|
||||||
this.publicProtected = publicProtected;
|
|
||||||
//this.format = format;
|
|
||||||
|
|
||||||
this.mapCollection = new HashMap<RelativeLocation, MapView>();
|
|
||||||
|
|
||||||
getLoadedMaps().add(this);
|
|
||||||
loadSketchMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void loadSketchMap()
|
|
||||||
{
|
|
||||||
for (int x = 0; x < xPanes; x++)
|
|
||||||
{
|
|
||||||
for (int y = 0; y < yPanes; y++)
|
|
||||||
{
|
|
||||||
initMap(x, y,
|
|
||||||
Bukkit.createMap(SketchMapUtils.getDefaultWorld()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Create SketchMap using Specified Maps
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
public SketchMap(BufferedImage image, String mapID, int xPanes, int yPanes,
|
|
||||||
boolean publicProtected, Map<Short, RelativeLocation> mapCollection)
|
|
||||||
{
|
|
||||||
|
|
||||||
this.image = SketchMapUtils.resize(image, xPanes * 128, yPanes * 128);
|
|
||||||
this.mapID = mapID;
|
|
||||||
this.xPanes = xPanes;
|
|
||||||
this.yPanes = yPanes;
|
|
||||||
this.publicProtected = publicProtected;
|
|
||||||
//this.format = format;
|
|
||||||
|
|
||||||
this.mapCollection = new HashMap<RelativeLocation, MapView>();
|
|
||||||
|
|
||||||
getLoadedMaps().add(this);
|
|
||||||
loadSketchMap(mapCollection);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void loadSketchMap(Map<Short, RelativeLocation> mapCollection)
|
|
||||||
{
|
|
||||||
for (Short mapID : mapCollection.keySet())
|
|
||||||
{
|
|
||||||
RelativeLocation loc = mapCollection.get(mapID);
|
|
||||||
|
|
||||||
initMap(loc.getX(), loc.getY(), SketchMapUtils.getMapView(mapID));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
private void initMap(int x, int y, MapView mapView)
|
|
||||||
{
|
|
||||||
BufferedImage subImage = image.getSubimage(x * 128, y * 128, 128, 128);
|
|
||||||
mapView.getRenderers().clear();
|
|
||||||
mapView.addRenderer(new ImageRenderer(subImage));
|
|
||||||
|
|
||||||
mapCollection.put(new RelativeLocation(x, y), mapView);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Get Object information
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
public String getID()
|
|
||||||
{
|
|
||||||
return mapID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BufferedImage getImage()
|
|
||||||
{
|
|
||||||
return image;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getLengthX()
|
|
||||||
{
|
|
||||||
return xPanes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getLengthY()
|
|
||||||
{
|
|
||||||
return yPanes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isPublicProtected()
|
|
||||||
{
|
|
||||||
return publicProtected;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<RelativeLocation, MapView> getMapCollection()
|
|
||||||
{
|
|
||||||
return mapCollection;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* public BaseFormat getBaseFormat() {
|
|
||||||
* return format;
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Map Functions
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
public void delete()
|
|
||||||
{
|
|
||||||
getLoadedMaps().remove(this);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
this.finalize();
|
|
||||||
} catch (Throwable e)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Static Methods
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
private static Set<SketchMap> sketchMaps;
|
|
||||||
|
|
||||||
public static Set<SketchMap> getLoadedMaps()
|
|
||||||
{
|
|
||||||
if (sketchMaps == null)
|
|
||||||
{
|
|
||||||
sketchMaps = new HashSet<SketchMap>();
|
|
||||||
}
|
|
||||||
|
|
||||||
return sketchMaps;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* public enum BaseFormat {
|
|
||||||
* PNG,
|
|
||||||
* JPEG;
|
|
||||||
*
|
|
||||||
* public String getExtension() {
|
|
||||||
* if(this == BaseFormat.PNG) {
|
|
||||||
* return "png";
|
|
||||||
* }
|
|
||||||
* if(this == BaseFormat.JPEG) {
|
|
||||||
* return "jpg";
|
|
||||||
* }
|
|
||||||
* return null;
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* public static BaseFormat fromExtension(String ext) {
|
|
||||||
* if(ext.equalsIgnoreCase("png")) {
|
|
||||||
* return BaseFormat.PNG;
|
|
||||||
*
|
|
||||||
* }
|
|
||||||
* if(ext.equalsIgnoreCase("jpg")) {
|
|
||||||
* return BaseFormat.JPEG;
|
|
||||||
* }
|
|
||||||
* return null;
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
|
|
@ -3,91 +3,76 @@ package sznp.virtualcomputer;
|
||||||
import org.mozilla.interfaces.IFramebuffer;
|
import org.mozilla.interfaces.IFramebuffer;
|
||||||
import org.mozilla.interfaces.IFramebufferOverlay;
|
import org.mozilla.interfaces.IFramebufferOverlay;
|
||||||
import org.mozilla.interfaces.nsISupports;
|
import org.mozilla.interfaces.nsISupports;
|
||||||
|
import org.virtualbox_5_1.BitmapFormat;
|
||||||
|
import org.virtualbox_5_1.FramebufferCapabilities;
|
||||||
|
|
||||||
public class MCFrameBuffer implements IFramebuffer {
|
public class MCFrameBuffer implements IFramebuffer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public nsISupports queryInterface(String arg0) {
|
public nsISupports queryInterface(String arg0) {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getBitsPerPixel() {
|
public long getBitsPerPixel() {
|
||||||
// TODO Auto-generated method stub
|
return 32;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getBytesPerLine() {
|
public long getBytesPerLine() {
|
||||||
// TODO Auto-generated method stub
|
return 640L;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long[] getCapabilities(long[] arg0) {
|
public long[] getCapabilities(long[] arg0) {
|
||||||
// TODO Auto-generated method stub
|
return new long[] { FramebufferCapabilities.UpdateImage.value() };
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getHeight() {
|
public long getHeight() {
|
||||||
// TODO Auto-generated method stub
|
return 480;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getHeightReduction() {
|
public long getHeightReduction() {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IFramebufferOverlay getOverlay() {
|
public IFramebufferOverlay getOverlay() {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getPixelFormat() {
|
public long getPixelFormat() {
|
||||||
// TODO Auto-generated method stub
|
return BitmapFormat.BGRA.value();
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getVisibleRegion(byte arg0, long arg1) {
|
public long getVisibleRegion(byte arg0, long arg1) {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getWidth() {
|
public long getWidth() {
|
||||||
// TODO Auto-generated method stub
|
return 640;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getWinId() {
|
public long getWinId() {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notify3DEvent(long arg0, byte[] arg1) {
|
public void notify3DEvent(long arg0, byte[] arg1) {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notifyChange(long arg0, long arg1, long arg2, long arg3, long arg4) {
|
public void notifyChange(long arg0, long arg1, long arg2, long arg3, long arg4) {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notifyUpdate(long arg0, long arg1, long arg2, long arg3) {
|
public void notifyUpdate(long arg0, long arg1, long arg2, long arg3) {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -97,19 +82,14 @@ public class MCFrameBuffer implements IFramebuffer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void processVHWACommand(byte arg0) {
|
public void processVHWACommand(byte arg0) {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setVisibleRegion(byte arg0, long arg1) {
|
public void setVisibleRegion(byte arg0, long arg1) {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean videoModeSupported(long arg0, long arg1, long arg2) {
|
public boolean videoModeSupported(long arg0, long arg1, long arg2) {
|
||||||
// TODO Auto-generated method stub
|
return true;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue