mirror of
https://github.com/zDevelopers/ImageOnMap.git
synced 2024-10-03 08:47:30 +02:00
* NEW: Implemented the list, get and delete maptool commands.
This commit is contained in:
parent
244a3d7122
commit
6c95e8a95e
@ -19,6 +19,8 @@
|
|||||||
package fr.moribus.imageonmap.commands;
|
package fr.moribus.imageonmap.commands;
|
||||||
|
|
||||||
import fr.moribus.imageonmap.commands.CommandException.Reason;
|
import fr.moribus.imageonmap.commands.CommandException.Reason;
|
||||||
|
import fr.moribus.imageonmap.map.ImageMap;
|
||||||
|
import fr.moribus.imageonmap.map.MapManager;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -129,6 +131,35 @@ abstract public class Command
|
|||||||
return (Player)sender;
|
return (Player)sender;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected ImageMap getMapFromArgs() throws CommandException
|
||||||
|
{
|
||||||
|
return getMapFromArgs(playerSender(), 0, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ImageMap getMapFromArgs(Player player, int index, boolean expand) throws CommandException
|
||||||
|
{
|
||||||
|
if(args.length <= index) throwInvalidArgument("You need to give a map name.");
|
||||||
|
|
||||||
|
ImageMap map;
|
||||||
|
String mapName = args[index];
|
||||||
|
|
||||||
|
if(expand)
|
||||||
|
{
|
||||||
|
for(int i = index + 1, c = args.length; i < c; i++)
|
||||||
|
{
|
||||||
|
mapName += " " + args[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mapName = mapName.trim();
|
||||||
|
|
||||||
|
map = MapManager.getMap(player.getUniqueId(), mapName);
|
||||||
|
|
||||||
|
if(map == null) error("This map does not exist.");
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////// Methods for command execution /////////////
|
///////////// Methods for command execution /////////////
|
||||||
|
|
||||||
@ -190,21 +221,21 @@ abstract public class Command
|
|||||||
return matches;
|
return matches;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*protected List<String> getMatchingToolNames(Player player, String prefix)
|
protected List<String> getMatchingMapNames(Player player, String prefix)
|
||||||
{
|
{
|
||||||
return getMatchingToolNames(ToolManager.getToolList(player.getUniqueId()), prefix);
|
return getMatchingToolNames(MapManager.getMapList(player.getUniqueId()), prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected List<String> getMatchingToolNames(Iterable<? extends CommandTool> tools, String prefix)
|
protected List<String> getMatchingToolNames(Iterable<? extends ImageMap> maps, String prefix)
|
||||||
{
|
{
|
||||||
List<String> matches = new ArrayList<String>();
|
List<String> matches = new ArrayList<String>();
|
||||||
|
|
||||||
for(CommandTool tool : tools)
|
for(ImageMap map : maps)
|
||||||
{
|
{
|
||||||
if(tool.getId().startsWith(prefix)) matches.add(tool.getId());
|
if(map.getId().startsWith(prefix)) matches.add(map.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
return matches;
|
return matches;
|
||||||
}*/
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,12 @@ import org.bukkit.plugin.java.JavaPlugin;
|
|||||||
public enum Commands implements TabCompleter, CommandExecutor
|
public enum Commands implements TabCompleter, CommandExecutor
|
||||||
{
|
{
|
||||||
MAPTOOL(new String[]{"maptool"},
|
MAPTOOL(new String[]{"maptool"},
|
||||||
NewCommand.class),
|
NewCommand.class,
|
||||||
|
ListCommand.class,
|
||||||
|
GetCommand.class,
|
||||||
|
DeleteConfirmCommand.class,
|
||||||
|
DeleteNoConfirmCommand.class
|
||||||
|
),
|
||||||
TOMAP(MAPTOOL, NewCommand.class, "tomap");
|
TOMAP(MAPTOOL, NewCommand.class, "tomap");
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Moribus
|
||||||
|
* Copyright (C) 2015 ProkopyL <prokopylmc@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package fr.moribus.imageonmap.commands.maptool;
|
||||||
|
|
||||||
|
import fr.moribus.imageonmap.commands.*;
|
||||||
|
import fr.moribus.imageonmap.map.ImageMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@CommandInfo(name = "delete", usageParameters = "[tool name]")
|
||||||
|
public class DeleteConfirmCommand extends Command
|
||||||
|
{
|
||||||
|
|
||||||
|
public DeleteConfirmCommand(Commands commandGroup) {
|
||||||
|
super(commandGroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void run() throws CommandException
|
||||||
|
{
|
||||||
|
ImageMap map = getMapFromArgs();
|
||||||
|
tellRaw("{text:\"You are going to delete \",extra:[{text:\""+ map.getId() +"\",color:gold},{text:\". Are you sure ? \",color:white}," +
|
||||||
|
"{text:\"[Confirm]\", color:green, clickEvent:{action:run_command,value:\"/maptool delete-noconfirm "+ map.getId() +"\"}, " +
|
||||||
|
"hoverEvent:{action:show_text,value:{text:\"This map will be deleted \",extra:[{text:\"forever\",color:red,bold:true,italic:true,underlined:true}, {text:\" !\", underlined:true}],underlined:true}}}]}");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<String> complete() throws CommandException
|
||||||
|
{
|
||||||
|
if(args.length == 1)
|
||||||
|
return getMatchingMapNames(playerSender(), args[0]);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Moribus
|
||||||
|
* Copyright (C) 2015 ProkopyL <prokopylmc@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package fr.moribus.imageonmap.commands.maptool;
|
||||||
|
|
||||||
|
import fr.moribus.imageonmap.commands.*;
|
||||||
|
import fr.moribus.imageonmap.map.ImageMap;
|
||||||
|
import fr.moribus.imageonmap.map.MapManager;
|
||||||
|
import java.util.List;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
|
||||||
|
@CommandInfo(name = "delete-noconfirm", usageParameters = "[map name]")
|
||||||
|
public class DeleteNoConfirmCommand extends Command
|
||||||
|
{
|
||||||
|
|
||||||
|
public DeleteNoConfirmCommand(Commands commandGroup) {
|
||||||
|
super(commandGroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void run() throws CommandException
|
||||||
|
{
|
||||||
|
Player player = playerSender();
|
||||||
|
ImageMap map = getMapFromArgs();
|
||||||
|
MapManager.clear(player.getInventory(), map);
|
||||||
|
MapManager.deleteMap(map);
|
||||||
|
info("Map successfully deleted.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<String> complete() throws CommandException
|
||||||
|
{
|
||||||
|
if(args.length == 1)
|
||||||
|
return getMatchingMapNames(playerSender(), args[0]);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Moribus
|
||||||
|
* Copyright (C) 2015 ProkopyL <prokopylmc@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package fr.moribus.imageonmap.commands.maptool;
|
||||||
|
|
||||||
|
import fr.moribus.imageonmap.commands.*;
|
||||||
|
import java.util.List;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@CommandInfo(name = "get")
|
||||||
|
public class GetCommand extends Command
|
||||||
|
{
|
||||||
|
public GetCommand(Commands commandGroup) {
|
||||||
|
super(commandGroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void run() throws CommandException
|
||||||
|
{
|
||||||
|
Player player = playerSender();
|
||||||
|
getMapFromArgs().give(player.getInventory());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<String> complete() throws CommandException
|
||||||
|
{
|
||||||
|
if(args.length == 1)
|
||||||
|
return getMatchingMapNames(playerSender(), args[0]);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Moribus
|
||||||
|
* Copyright (C) 2015 ProkopyL <prokopylmc@gmail.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package fr.moribus.imageonmap.commands.maptool;
|
||||||
|
|
||||||
|
import fr.moribus.imageonmap.commands.*;
|
||||||
|
import fr.moribus.imageonmap.map.ImageMap;
|
||||||
|
import fr.moribus.imageonmap.map.MapManager;
|
||||||
|
import java.util.List;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@CommandInfo(name = "list")
|
||||||
|
public class ListCommand extends Command
|
||||||
|
{
|
||||||
|
public ListCommand(Commands commandGroup) {
|
||||||
|
super(commandGroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void run() throws CommandException
|
||||||
|
{
|
||||||
|
Player player = playerSender();
|
||||||
|
List<ImageMap> mapList = MapManager.getMapList(player.getUniqueId());
|
||||||
|
|
||||||
|
if(mapList.isEmpty())
|
||||||
|
{
|
||||||
|
info("No map found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
info(mapList.size() + " maps found.");
|
||||||
|
|
||||||
|
String sMapList = mapList.get(0).getId();
|
||||||
|
for(int i = 1, c = mapList.size(); i < c; i++)
|
||||||
|
{
|
||||||
|
sMapList += "§7,§r" + mapList.get(i).getId();
|
||||||
|
}
|
||||||
|
player.sendMessage(sMapList);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -19,10 +19,13 @@
|
|||||||
package fr.moribus.imageonmap.image;
|
package fr.moribus.imageonmap.image;
|
||||||
|
|
||||||
import fr.moribus.imageonmap.ImageOnMap;
|
import fr.moribus.imageonmap.ImageOnMap;
|
||||||
|
import fr.moribus.imageonmap.map.ImageMap;
|
||||||
import fr.moribus.imageonmap.worker.Worker;
|
import fr.moribus.imageonmap.worker.Worker;
|
||||||
|
import fr.moribus.imageonmap.worker.WorkerCallback;
|
||||||
import fr.moribus.imageonmap.worker.WorkerRunnable;
|
import fr.moribus.imageonmap.worker.WorkerRunnable;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.nio.file.Files;
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
|
|
||||||
public class ImageIOExecutor extends Worker
|
public class ImageIOExecutor extends Worker
|
||||||
@ -86,4 +89,27 @@ public class ImageIOExecutor extends Worker
|
|||||||
ImageIOExecutor.saveImage(ImageOnMap.getPlugin().getImageFile(mapsIDs[i]), image.getImageAt(i));
|
ImageIOExecutor.saveImage(ImageOnMap.getPlugin().getImageFile(mapsIDs[i]), image.getImageAt(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static public void deleteImage(ImageMap map)
|
||||||
|
{
|
||||||
|
short[] mapsIDs = map.getMapsIDs();
|
||||||
|
for(int i = 0, c = mapsIDs.length; i < c; i++)
|
||||||
|
{
|
||||||
|
deleteImage(ImageOnMap.getPlugin().getImageFile(mapsIDs[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static public void deleteImage(final File file)
|
||||||
|
{
|
||||||
|
instance.submitQuery(new WorkerRunnable<Void>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public Void run() throws Throwable
|
||||||
|
{
|
||||||
|
Files.delete(file.toPath());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,21 +36,43 @@ public abstract class ImageMap implements ConfigurationSerializable
|
|||||||
|
|
||||||
static public final int WIDTH = 128;
|
static public final int WIDTH = 128;
|
||||||
static public final int HEIGHT = 128;
|
static public final int HEIGHT = 128;
|
||||||
|
static public final String DEFAULT_NAME = "Map";
|
||||||
|
|
||||||
|
private String id;
|
||||||
private final UUID userUUID;
|
private final UUID userUUID;
|
||||||
private final Type mapType;
|
private final Type mapType;
|
||||||
private String imageName;
|
private String name;
|
||||||
|
|
||||||
protected ImageMap(UUID userUUID, Type mapType)
|
protected ImageMap(UUID userUUID, Type mapType)
|
||||||
|
{
|
||||||
|
this(userUUID, mapType, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ImageMap(UUID userUUID, Type mapType, String id, String name)
|
||||||
{
|
{
|
||||||
this.userUUID = userUUID;
|
this.userUUID = userUUID;
|
||||||
this.mapType = mapType;
|
this.mapType = mapType;
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
|
||||||
|
if(this.id == null)
|
||||||
|
{
|
||||||
|
if(this.name == null) this.name = DEFAULT_NAME;
|
||||||
|
this.id = MapManager.getNextAvailableMapID(name, userUUID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public abstract short[] getMapsIDs();
|
public abstract short[] getMapsIDs();
|
||||||
public abstract boolean managesMap(short mapID);
|
public abstract boolean managesMap(short mapID);
|
||||||
|
|
||||||
|
public boolean managesMap(ItemStack item)
|
||||||
|
{
|
||||||
|
if(item == null) return false;
|
||||||
|
if(item.getType() != Material.MAP) return false;
|
||||||
|
return managesMap(item.getDurability());
|
||||||
|
}
|
||||||
|
|
||||||
public void give(Inventory inventory)
|
public void give(Inventory inventory)
|
||||||
{
|
{
|
||||||
short[] mapsIDs = getMapsIDs();
|
short[] mapsIDs = getMapsIDs();
|
||||||
@ -85,8 +107,10 @@ public abstract class ImageMap implements ConfigurationSerializable
|
|||||||
|
|
||||||
protected ImageMap(Map<String, Object> map, UUID userUUID, Type mapType) throws InvalidConfigurationException
|
protected ImageMap(Map<String, Object> map, UUID userUUID, Type mapType) throws InvalidConfigurationException
|
||||||
{
|
{
|
||||||
this(userUUID, mapType);
|
this(userUUID, mapType,
|
||||||
this.imageName = getNullableFieldValue(map, "name");
|
(String) getNullableFieldValue(map, "id"),
|
||||||
|
(String) getNullableFieldValue(map, "name"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void postSerialize(Map<String, Object> map);
|
protected abstract void postSerialize(Map<String, Object> map);
|
||||||
@ -95,8 +119,9 @@ public abstract class ImageMap implements ConfigurationSerializable
|
|||||||
public Map<String, Object> serialize()
|
public Map<String, Object> serialize()
|
||||||
{
|
{
|
||||||
Map<String, Object> map = new HashMap<String, Object>();
|
Map<String, Object> map = new HashMap<String, Object>();
|
||||||
|
map.put("id", id);
|
||||||
map.put("type", mapType.toString());
|
map.put("type", mapType.toString());
|
||||||
map.put("name", imageName);
|
map.put("name", name);
|
||||||
this.postSerialize(map);
|
this.postSerialize(map);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
@ -128,13 +153,26 @@ public abstract class ImageMap implements ConfigurationSerializable
|
|||||||
return userUUID;
|
return userUUID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getImageName()
|
public String getName()
|
||||||
{
|
{
|
||||||
return imageName;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setImageName(String imageName)
|
public String getId()
|
||||||
{
|
{
|
||||||
this.imageName = imageName;
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void rename(String id, String name)
|
||||||
|
{
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void rename(String name)
|
||||||
|
{
|
||||||
|
if(this.name.equals(name)) return;
|
||||||
|
this.id = MapManager.getNextAvailableMapID(name, userUUID);
|
||||||
|
this.name = name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,10 +19,15 @@
|
|||||||
package fr.moribus.imageonmap.map;
|
package fr.moribus.imageonmap.map;
|
||||||
|
|
||||||
import fr.moribus.imageonmap.ImageOnMap;
|
import fr.moribus.imageonmap.ImageOnMap;
|
||||||
|
import fr.moribus.imageonmap.image.ImageIOExecutor;
|
||||||
import fr.moribus.imageonmap.image.PosterImage;
|
import fr.moribus.imageonmap.image.PosterImage;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
abstract public class MapManager
|
abstract public class MapManager
|
||||||
@ -55,10 +60,22 @@ abstract public class MapManager
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static public boolean managesMap(ItemStack item)
|
||||||
|
{
|
||||||
|
synchronized(playerMaps)
|
||||||
|
{
|
||||||
|
for(PlayerMapStore mapStore : playerMaps)
|
||||||
|
{
|
||||||
|
if(mapStore.managesMap(item)) return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static public ImageMap createMap(UUID playerUUID, short mapID)
|
static public ImageMap createMap(UUID playerUUID, short mapID)
|
||||||
{
|
{
|
||||||
ImageMap newMap = new SingleMap(playerUUID, mapID);
|
ImageMap newMap = new SingleMap(playerUUID, mapID);
|
||||||
addMap(newMap, playerUUID);
|
addMap(newMap);
|
||||||
return newMap;
|
return newMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,7 +90,7 @@ abstract public class MapManager
|
|||||||
{
|
{
|
||||||
newMap = new PosterMap(playerUUID, mapsIDs, image.getColumns(), image.getLines());
|
newMap = new PosterMap(playerUUID, mapsIDs, image.getColumns(), image.getLines());
|
||||||
}
|
}
|
||||||
addMap(newMap, playerUUID);
|
addMap(newMap);
|
||||||
return newMap;
|
return newMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,9 +104,15 @@ abstract public class MapManager
|
|||||||
return mapsIds;
|
return mapsIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
static public void addMap(ImageMap map, UUID playerUUID)
|
static public void addMap(ImageMap map)
|
||||||
{
|
{
|
||||||
getPlayerMapStore(playerUUID).addMap(map);
|
getPlayerMapStore(map.getUserUUID()).addMap(map);
|
||||||
|
}
|
||||||
|
|
||||||
|
static public void deleteMap(ImageMap map)
|
||||||
|
{
|
||||||
|
ImageIOExecutor.deleteImage(map);
|
||||||
|
getPlayerMapStore(map.getUserUUID()).deleteMap(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
static public void notifyModification(UUID playerUUID)
|
static public void notifyModification(UUID playerUUID)
|
||||||
@ -99,13 +122,50 @@ abstract public class MapManager
|
|||||||
Bukkit.getScheduler().runTaskLater(ImageOnMap.getPlugin(), new AutosaveRunnable(), SAVE_DELAY);
|
Bukkit.getScheduler().runTaskLater(ImageOnMap.getPlugin(), new AutosaveRunnable(), SAVE_DELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static public String getNextAvailableMapID(String mapId, UUID playerUUID)
|
||||||
|
{
|
||||||
|
return getPlayerMapStore(playerUUID).getNextAvailableMapID(mapId);
|
||||||
|
}
|
||||||
|
|
||||||
|
static public List<ImageMap> getMapList(UUID playerUUID)
|
||||||
|
{
|
||||||
|
return getPlayerMapStore(playerUUID).getMapList();
|
||||||
|
}
|
||||||
|
|
||||||
|
static public ImageMap getMap(UUID playerUUID, String mapId)
|
||||||
|
{
|
||||||
|
return getPlayerMapStore(playerUUID).getMap(mapId);
|
||||||
|
}
|
||||||
|
|
||||||
|
static public void clear(Inventory inventory)
|
||||||
|
{
|
||||||
|
for(int i = 0, c = inventory.getSize(); i < c; i++)
|
||||||
|
{
|
||||||
|
if(managesMap(inventory.getItem(i)))
|
||||||
|
{
|
||||||
|
inventory.setItem(i, new ItemStack(Material.AIR));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static public void clear(Inventory inventory, ImageMap map)
|
||||||
|
{
|
||||||
|
for(int i = 0, c = inventory.getSize(); i < c; i++)
|
||||||
|
{
|
||||||
|
if(map.managesMap(inventory.getItem(i)))
|
||||||
|
{
|
||||||
|
inventory.setItem(i, new ItemStack(Material.AIR));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static public void save()
|
static public void save()
|
||||||
{
|
{
|
||||||
synchronized(playerMaps)
|
synchronized(playerMaps)
|
||||||
{
|
{
|
||||||
for(PlayerMapStore tStore : playerMaps)
|
for(PlayerMapStore tStore : playerMaps)
|
||||||
{
|
{
|
||||||
tStore.saveMapsFile();
|
tStore.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -117,6 +177,7 @@ abstract public class MapManager
|
|||||||
{
|
{
|
||||||
store = new PlayerMapStore(playerUUID);
|
store = new PlayerMapStore(playerUUID);
|
||||||
synchronized(playerMaps){playerMaps.add(store);}
|
synchronized(playerMaps){playerMaps.add(store);}
|
||||||
|
store.load();
|
||||||
}
|
}
|
||||||
return store;
|
return store;
|
||||||
}
|
}
|
||||||
@ -142,7 +203,7 @@ abstract public class MapManager
|
|||||||
{
|
{
|
||||||
for(PlayerMapStore toolStore : playerMaps)
|
for(PlayerMapStore toolStore : playerMaps)
|
||||||
{
|
{
|
||||||
if(toolStore.isModified()) toolStore.saveMapsFile();
|
if(toolStore.isModified()) toolStore.save();
|
||||||
}
|
}
|
||||||
autosaveTask = null;
|
autosaveTask = null;
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ import org.bukkit.configuration.InvalidConfigurationException;
|
|||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
public class PlayerMapStore implements ConfigurationSerializable
|
public class PlayerMapStore implements ConfigurationSerializable
|
||||||
{
|
{
|
||||||
@ -42,7 +43,6 @@ public class PlayerMapStore implements ConfigurationSerializable
|
|||||||
public PlayerMapStore(UUID playerUUID)
|
public PlayerMapStore(UUID playerUUID)
|
||||||
{
|
{
|
||||||
this.playerUUID = playerUUID;
|
this.playerUUID = playerUUID;
|
||||||
loadMapsFile();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean managesMap(short mapID)
|
public boolean managesMap(short mapID)
|
||||||
@ -54,12 +54,65 @@ public class PlayerMapStore implements ConfigurationSerializable
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean managesMap(ItemStack item)
|
||||||
|
{
|
||||||
|
for(ImageMap map : mapList)
|
||||||
|
{
|
||||||
|
if(map.managesMap(item)) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public void addMap(ImageMap map)
|
public void addMap(ImageMap map)
|
||||||
{
|
{
|
||||||
mapList.add(map);
|
mapList.add(map);
|
||||||
notifyModification();
|
notifyModification();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteMap(ImageMap map)
|
||||||
|
{
|
||||||
|
mapList.remove(map);
|
||||||
|
notifyModification();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean mapExists(String id)
|
||||||
|
{
|
||||||
|
for(ImageMap map : mapList)
|
||||||
|
{
|
||||||
|
if(map.getId().equals(id)) return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNextAvailableMapID(String mapId)
|
||||||
|
{
|
||||||
|
if(!mapExists(mapId)) return mapId;
|
||||||
|
int id = 0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
id++;
|
||||||
|
}while(mapExists(mapId + "-" + id));
|
||||||
|
|
||||||
|
return mapId + "-" + id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ImageMap> getMapList()
|
||||||
|
{
|
||||||
|
return new ArrayList(mapList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ImageMap getMap(String mapId)
|
||||||
|
{
|
||||||
|
for(ImageMap map : mapList)
|
||||||
|
{
|
||||||
|
if(map.getId().equals(mapId)) return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/* ===== Getters & Setters ===== */
|
/* ===== Getters & Setters ===== */
|
||||||
|
|
||||||
public UUID getUUID()
|
public UUID getUUID()
|
||||||
@ -123,23 +176,23 @@ public class PlayerMapStore implements ConfigurationSerializable
|
|||||||
|
|
||||||
private FileConfiguration getToolConfig()
|
private FileConfiguration getToolConfig()
|
||||||
{
|
{
|
||||||
if(mapConfig == null) loadMapsFile();
|
if(mapConfig == null) load();
|
||||||
|
|
||||||
return mapConfig;
|
return mapConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadMapsFile()
|
public void load()
|
||||||
{
|
{
|
||||||
if(mapsFile == null)
|
if(mapsFile == null)
|
||||||
{
|
{
|
||||||
mapsFile = new File(ImageOnMap.getPlugin().getMapsDirectory(), playerUUID.toString() + ".yml");
|
mapsFile = new File(ImageOnMap.getPlugin().getMapsDirectory(), playerUUID.toString() + ".yml");
|
||||||
if(!mapsFile.exists()) saveMapsFile();
|
if(!mapsFile.exists()) save();
|
||||||
}
|
}
|
||||||
mapConfig = YamlConfiguration.loadConfiguration(mapsFile);
|
mapConfig = YamlConfiguration.loadConfiguration(mapsFile);
|
||||||
loadFromConfig(getToolConfig().getConfigurationSection("PlayerMapStore"));
|
loadFromConfig(getToolConfig().getConfigurationSection("PlayerMapStore"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveMapsFile()
|
public void save()
|
||||||
{
|
{
|
||||||
if(mapsFile == null || mapConfig == null) return;
|
if(mapsFile == null || mapConfig == null) return;
|
||||||
getToolConfig().set("PlayerMapStore", this.serialize());
|
getToolConfig().set("PlayerMapStore", this.serialize());
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
package fr.moribus.imageonmap.map;
|
package fr.moribus.imageonmap.map;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import org.bukkit.configuration.InvalidConfigurationException;
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
@ -61,7 +62,13 @@ public class PosterMap extends ImageMap
|
|||||||
|
|
||||||
columnCount = getFieldValue(map, "columns");
|
columnCount = getFieldValue(map, "columns");
|
||||||
rowCount = getFieldValue(map, "rows");
|
rowCount = getFieldValue(map, "rows");
|
||||||
mapsIDs = getFieldValue(map, "mapsIDs");
|
|
||||||
|
List<Integer> idList = getFieldValue(map, "mapsIDs");
|
||||||
|
mapsIDs = new short[idList.size()];
|
||||||
|
for(int i = 0, c = idList.size(); i < c; i++)
|
||||||
|
{
|
||||||
|
mapsIDs[i] = (short) ((int) idList.get(i));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,2 +1,7 @@
|
|||||||
This command manages and creates ImagesOnMaps.
|
This command manages and creates ImagesOnMaps.
|
||||||
new: Creates a new ImageOnMap.
|
new: Creates a new ImageOnMap
|
||||||
|
delete: Deletes a map.
|
||||||
|
delete-noconfirm: Deletes a map. Deletion is permanent and made without confirmation
|
||||||
|
get: Gives you a map.
|
||||||
|
list: Lists all the map you currently have.
|
||||||
|
help : Use help for more information about a command.
|
4
src/main/resources/help/maptool/delete-noconfirm.txt
Normal file
4
src/main/resources/help/maptool/delete-noconfirm.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Deletes a map, and removes all parts and copies from your inventory.
|
||||||
|
§cWARNING: §r THERE WILL BE NO CONFIRMATION. MAP DELETION IS §lPERMANENT§r.
|
||||||
|
|
||||||
|
[map name] : The name of the map you want to delete.
|
5
src/main/resources/help/maptool/delete.txt
Normal file
5
src/main/resources/help/maptool/delete.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Deletes a map, and removes all parts and copies from your inventory.
|
||||||
|
As deletion is permanent, a confirmation message will be shown
|
||||||
|
to the sending player.
|
||||||
|
|
||||||
|
[map name] : The name of the map you want to delete.
|
3
src/main/resources/help/maptool/get.txt
Normal file
3
src/main/resources/help/maptool/get.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Gives you a map, by putting it directly in your inventory.
|
||||||
|
|
||||||
|
<map name> : The name of the map you want to get.
|
1
src/main/resources/help/maptool/list.txt
Normal file
1
src/main/resources/help/maptool/list.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
Gives you a list of all the maps you currently have.
|
Loading…
Reference in New Issue
Block a user