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