Skip to content

Commit ca07afd

Browse files
authored
Fix the map changer (#1360)
* Fix the map changer to work with bigger map id's and not throw an exception when using a blank map. * formatting fix.
1 parent 1ad6ad8 commit ca07afd

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

src/main/java/com/sk89q/craftbook/mechanics/MapChanger.java

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.sk89q.craftbook.util.SignUtil;
1616
import com.sk89q.craftbook.util.events.SignClickEvent;
1717
import com.sk89q.util.yaml.YAMLProcessor;
18+
import org.bukkit.inventory.ItemStack;
1819
import org.bukkit.inventory.meta.MapMeta;
1920

2021
public class MapChanger extends AbstractCraftBookMechanic {
@@ -59,20 +60,31 @@ public void onSignClick(SignClickEvent event) {
5960
player.printError("area.use-permissions");
6061
return;
6162
}
62-
if (event.getPlayer().getInventory().getItemInMainHand() != null && event.getPlayer().getInventory().getItemInMainHand().getType() == Material.MAP) {
63-
byte id;
64-
try {
65-
id = Byte.parseByte(sign.getLine(2));
66-
} catch (Exception e) {
67-
id = -1;
68-
}
69-
if (id <= -1) {
70-
player.printError("mech.map.invalid");
71-
return;
72-
}
73-
MapMeta meta = (MapMeta) event.getPlayer().getInventory().getItemInMainHand().getItemMeta();
74-
meta.setMapId(id);
75-
event.getPlayer().getInventory().getItemInMainHand().setItemMeta(meta);
63+
64+
ItemStack item = event.getPlayer().getInventory().getItemInMainHand();
65+
if (item == null
66+
|| (item.getType() != Material.MAP && item.getType() != Material.FILLED_MAP)) {
67+
return;
68+
}
69+
70+
final int mapId;
71+
try {
72+
mapId = Integer.parseInt(sign.getLine(2).trim());
73+
} catch (Exception e) {
74+
player.printError("mech.map.invalid");
75+
return;
76+
}
77+
78+
if (item.getType() == Material.MAP) {
79+
ItemStack filled = new ItemStack(Material.FILLED_MAP, item.getAmount());
80+
MapMeta meta = (MapMeta) filled.getItemMeta();
81+
meta.setMapId(mapId);
82+
filled.setItemMeta(meta);
83+
event.getPlayer().getInventory().setItemInMainHand(filled);
84+
} else {
85+
MapMeta meta = (MapMeta) item.getItemMeta();
86+
meta.setMapId(mapId);
87+
item.setItemMeta(meta);
7688
}
7789
}
7890

0 commit comments

Comments
 (0)