Path: blob/main/samples/plugin/CommandSampleMap.java
8641 views
package plugin;12import java.awt.image.BufferedImage;3import java.io.File;45import javax.imageio.ImageIO;67import org.bukkit.ChatColor;8import org.bukkit.Material;9import org.bukkit.command.Command;10import org.bukkit.command.CommandExecutor;11import org.bukkit.command.CommandSender;12import org.bukkit.entity.Player;13import org.bukkit.inventory.ItemStack;1415import ayunami2000.MapPacketCodec.PixelFormat;16import ayunami2000.MapPacketCodecBukkit;1718public class CommandSampleMap implements CommandExecutor {1920public final EaglerSamplesPlugin plugin;2122public CommandSampleMap(EaglerSamplesPlugin plugin) {23this.plugin = plugin;24}2526@Override27public boolean onCommand(CommandSender arg0, Command arg01, String arg1, String[] arg2) {28if(!(arg0 instanceof Player)) {29arg0.sendMessage(ChatColor.RED + "Internal Error: " + ChatColor.WHITE + "CommmandSender must be a Player");30return false;31}32arg0.sendMessage(ChatColor.YELLOW + "Note: test packets are only sent to the player running this command");33Player p = (Player)arg0;34try {35int mapId = -1;36if(arg2.length >= 2) {37mapId = Integer.parseInt(arg2[1]);38}else {39ItemStack i = p.getInventory().getItemInHand();40if(i.getType() == Material.MAP) {41mapId = (int)i.getDurability() & 0xFFFF;42}43}44if(mapId != -1) {45if(arg2.length == 1) {46if(arg2[0].equalsIgnoreCase("get")) {47arg0.sendMessage(ChatColor.GREEN + "Current map ID: " + ChatColor.WHITE + mapId);48return true;49}else if(arg2[0].equalsIgnoreCase("disable")) {50MapPacketCodecBukkit pkt = new MapPacketCodecBukkit(mapId);51pkt.sendDisablePacketToPlayer(p);52arg0.sendMessage(ChatColor.GREEN + "Reset map: " + ChatColor.WHITE + mapId);53return true;54}else if(arg2[0].equalsIgnoreCase("set")) {55arg0.sendMessage(ChatColor.RED + "Use: " + ChatColor.WHITE + "/samplemap set <file> [compress]");56return true;57}else {58MapPacketCodecBukkit pkt = new MapPacketCodecBukkit(mapId);59BufferedImage img = ImageIO.read(new File(arg2[0]));60pkt.setPixels(img);61pkt.sendNextPacketToPlayer(p);62arg0.sendMessage(ChatColor.GREEN + "Wrote image " + ChatColor.WHITE + arg2[0] + ChatColor.GREEN + " to map " + ChatColor.WHITE + mapId);63return true;64}65}else if(arg2.length == 2) {66int j = Integer.parseInt(arg2[1]);67if(arg2[0].equalsIgnoreCase("disable")) {68MapPacketCodecBukkit pkt = new MapPacketCodecBukkit(j);69pkt.sendDisablePacketToPlayer(p);70arg0.sendMessage(ChatColor.GREEN + "Reset map: " + ChatColor.WHITE + j);71return true;72}73}else if(arg2.length >= 3) {74int j = Integer.parseInt(arg2[1]);75MapPacketCodecBukkit pkt = new MapPacketCodecBukkit(j);76BufferedImage img = ImageIO.read(new File(arg2[2]));77if(arg2.length == 4 || arg2.length == 5) {78if(arg2[3].equalsIgnoreCase("16bpp")) {79pkt.pixelFormat(PixelFormat.R5_G6_B5);80if(arg2.length == 5) {81if(arg2[4].equalsIgnoreCase("true")) {82pkt.deflate(true);83}else {84pkt.deflate(Integer.parseInt(arg2[4]));85}86}87}else if(arg2[3].equalsIgnoreCase("24bpp")) {88pkt.pixelFormat(PixelFormat.R8_G8_B8);89if(arg2.length == 5) {90if(arg2[4].equalsIgnoreCase("true")) {91pkt.deflate(true);92}else {93pkt.deflate(Integer.parseInt(arg2[4]));94}95}96}else if(arg2[3].equalsIgnoreCase("true")) {97pkt.deflate(true);98}else {99pkt.deflate(Integer.parseInt(arg2[3]));100}101}102pkt.setPixels(img);103pkt.sendNextPacketToPlayer(p);104arg0.sendMessage(ChatColor.GREEN + "Wrote image " + ChatColor.WHITE + arg2[2] + ChatColor.GREEN + " to map " + ChatColor.WHITE + mapId);105return true;106}107}108}catch(Throwable t) {109arg0.sendMessage(ChatColor.RED + "Internal Error: " + ChatColor.WHITE + t.toString());110t.printStackTrace();111}112return false;113}114115}116117118