mirror of
https://github.com/NLthijs48/AreaShop.git
synced 2024-11-26 20:26:33 +01:00
Added the '/as stack' command to easily create and register regions
/as stack <amount> <gap> <name> <rent|buy> [group] <amount> Number of regions that will be created <gap> Blocks distance between the regions <name> Name of the regions (number will be behind it) <rent|buy> The type of the region [group] A group to add the created regions to The regions will be created in the direction you are facing
This commit is contained in:
parent
b1be87014f
commit
3bbca11cc9
@ -304,7 +304,7 @@ expireWarning:
|
|||||||
## The time between checking if expiration warning need to be sent
|
## The time between checking if expiration warning need to be sent
|
||||||
delay: 5
|
delay: 5
|
||||||
## Number of regions to update per tick (there are 20 ticks in a second)
|
## Number of regions to update per tick (there are 20 ticks in a second)
|
||||||
regionsPerTick: 1
|
regionsPerTick: 3
|
||||||
## Timings for updating signs and region flags ('/as reload' or after '/as groupadd' or '/as groupdel')
|
## Timings for updating signs and region flags ('/as reload' or after '/as groupadd' or '/as groupdel')
|
||||||
update:
|
update:
|
||||||
## Number of regions to update per tick (there are 20 ticks in a second)
|
## Number of regions to update per tick (there are 20 ticks in a second)
|
||||||
@ -321,12 +321,15 @@ signs:
|
|||||||
## Time between updates of all signs (seconds)
|
## Time between updates of all signs (seconds)
|
||||||
delay: 60
|
delay: 60
|
||||||
## Number of regions to update signs for per tick (there are 20 ticks in a second)
|
## Number of regions to update signs for per tick (there are 20 ticks in a second)
|
||||||
regionsPerTick: 1
|
regionsPerTick: 3
|
||||||
## Number of regions per tick to check when a player joins to see if his name changed for regions he owned (updates the regions when changed)
|
## Number of regions per tick to check when a player joins to see if his name changed for regions he owned (updates the regions when changed)
|
||||||
nameupdate:
|
nameupdate:
|
||||||
## Number of regions to update signs for per tick (there are 20 ticks in a second)
|
## Number of regions to update signs for per tick (there are 20 ticks in a second)
|
||||||
regionsPerTick: 5
|
regionsPerTick: 5
|
||||||
|
## Timings for adding regions to AreaShop ('/as stack')
|
||||||
|
adding:
|
||||||
|
## Number of regions to add per tick (there are 20 ticks in a second)
|
||||||
|
regionsPerTick: 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
12
lang/EN.yml
12
lang/EN.yml
@ -60,6 +60,7 @@ help-addFriendAll: "&6/as addfriend &7-&r Add a friend to a region."
|
|||||||
help-delFriend: "&6/as delfriend &7-&r Delete a friend from your region."
|
help-delFriend: "&6/as delfriend &7-&r Delete a friend from your region."
|
||||||
help-delFriendAll: "&6/as delfriend &7-&r Delete a friend from a region."
|
help-delFriendAll: "&6/as delfriend &7-&r Delete a friend from a region."
|
||||||
help-linksigns: "&6/as linksigns &7-&r Use bulk sign linking mode."
|
help-linksigns: "&6/as linksigns &7-&r Use bulk sign linking mode."
|
||||||
|
help-stack: "&6/as stack &7-&r Create multiple regions and add them."
|
||||||
|
|
||||||
rent-help: "/as rent [regionname], the region you stand in will be used if not specified."
|
rent-help: "/as rent [regionname], the region you stand in will be used if not specified."
|
||||||
rent-noPermission: "You don't have permission to rent a region."
|
rent-noPermission: "You don't have permission to rent a region."
|
||||||
@ -385,6 +386,17 @@ linksigns-next: "&7Leftclick to select a sign, rightclick to select a region, us
|
|||||||
linksigns-noPermission: "You don't have permission to enter bulk sign linking mode."
|
linksigns-noPermission: "You don't have permission to enter bulk sign linking mode."
|
||||||
linksigns-stopped: "Exited sign linking mode."
|
linksigns-stopped: "Exited sign linking mode."
|
||||||
|
|
||||||
|
stack-help: "/as stack <amount> <gap> <name> <rent|buy> [group].\n&7 <amount> Number of regions that will be created.\n <gap> Blocks distance between the regions.\n <name> Name of the regions (number will be behind it).\n <rent|buy> Make then rent or buy regions.\n [group] A group to add the created regions to.\n The regions will be created in the direction you are facing."
|
||||||
|
stack-accepted: "Starting to create %0% %1% regions with %2% blocks in between, names start with %3% and have a number behind them.%4%"
|
||||||
|
stack-addToGroup: " Created regions will be added to the group '%0%'."
|
||||||
|
stack-noPermission: "You don't have permission to create and add regions to AreaShop in bulk."
|
||||||
|
stack-wrongAmount: "'%0%' is not a correct amount of regions."
|
||||||
|
stack-wrongGap: "'%0%' is not a correct number for the number of blocks gap between regions."
|
||||||
|
stack-noSelection: "You don't have a selection that indicates where the first region should be created."
|
||||||
|
stack-addStart: "&7Adding %0% regions at %1% per second."
|
||||||
|
stack-addComplete: "&7Adding regions complete."
|
||||||
|
stack-unclearDirection: "Please look clearly in the north, east, south or west direction, currently detected %0%."
|
||||||
|
|
||||||
timeleft-years: "%0% years"
|
timeleft-years: "%0% years"
|
||||||
timeleft-months: "%0% months"
|
timeleft-months: "%0% months"
|
||||||
timeleft-days: "%0% days"
|
timeleft-days: "%0% days"
|
||||||
|
@ -50,6 +50,7 @@ permissions:
|
|||||||
areashop.addfriendall: true
|
areashop.addfriendall: true
|
||||||
areashop.delfriendall: true
|
areashop.delfriendall: true
|
||||||
areashop.notifyupdate: true
|
areashop.notifyupdate: true
|
||||||
|
areashop.stack: true
|
||||||
areashop.help:
|
areashop.help:
|
||||||
description: Allows you to see the help pages
|
description: Allows you to see the help pages
|
||||||
default: true
|
default: true
|
||||||
@ -203,3 +204,6 @@ permissions:
|
|||||||
areashop.linksigns:
|
areashop.linksigns:
|
||||||
description: Allows you to enter sign linking mode
|
description: Allows you to enter sign linking mode
|
||||||
default: op
|
default: op
|
||||||
|
areashop.stack:
|
||||||
|
description: Allows you to create regions and add them to AreaShop like the WorldEdit //stack command
|
||||||
|
default: op
|
@ -4,6 +4,7 @@ import java.util.Collection;
|
|||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
@ -78,6 +79,16 @@ public class Utils {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final BlockFace[] facings = { BlockFace.NORTH, BlockFace.NORTH_EAST, BlockFace.EAST, BlockFace.SOUTH_EAST, BlockFace.SOUTH, BlockFace.SOUTH_WEST, BlockFace.WEST, BlockFace.NORTH_WEST };
|
||||||
|
/**
|
||||||
|
* Get the facing direction based on the yaw
|
||||||
|
* @param yaw The horizontal angle that for example the player is looking
|
||||||
|
* @return The Block Face of the angle
|
||||||
|
*/
|
||||||
|
public static BlockFace yawToFacing(float yaw) {
|
||||||
|
return facings[Math.round(yaw / 45f) & 0x7];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,7 +47,6 @@ public class GroupaddCommand extends CommandAreaShop {
|
|||||||
if(group == null) {
|
if(group == null) {
|
||||||
group = new RegionGroup(plugin, args[1]);
|
group = new RegionGroup(plugin, args[1]);
|
||||||
plugin.getFileManager().addGroup(group);
|
plugin.getFileManager().addGroup(group);
|
||||||
group.saveRequired();
|
|
||||||
}
|
}
|
||||||
if(args.length == 2) {
|
if(args.length == 2) {
|
||||||
if(!(sender instanceof Player)) {
|
if(!(sender instanceof Player)) {
|
||||||
|
221
src/nl/evolutioncoding/areashop/commands/StackCommand.java
Normal file
221
src/nl/evolutioncoding/areashop/commands/StackCommand.java
Normal file
@ -0,0 +1,221 @@
|
|||||||
|
package nl.evolutioncoding.areashop.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import nl.evolutioncoding.areashop.AreaShop;
|
||||||
|
import nl.evolutioncoding.areashop.Utils;
|
||||||
|
import nl.evolutioncoding.areashop.regions.BuyRegion;
|
||||||
|
import nl.evolutioncoding.areashop.regions.GeneralRegion.RegionEvent;
|
||||||
|
import nl.evolutioncoding.areashop.regions.RegionGroup;
|
||||||
|
import nl.evolutioncoding.areashop.regions.RentRegion;
|
||||||
|
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
import com.sk89q.worldedit.BlockVector;
|
||||||
|
import com.sk89q.worldedit.bukkit.selections.Selection;
|
||||||
|
import com.sk89q.worldguard.protection.managers.RegionManager;
|
||||||
|
import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion;
|
||||||
|
|
||||||
|
public class StackCommand extends CommandAreaShop {
|
||||||
|
|
||||||
|
public StackCommand(AreaShop plugin) {
|
||||||
|
super(plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCommandStart() {
|
||||||
|
return "areashop stack";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getHelp(CommandSender target) {
|
||||||
|
if(target.hasPermission("areashop.stack")) {
|
||||||
|
return plugin.getLanguageManager().getLang("help-stack");
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, Command command, String[] args) {
|
||||||
|
// Check permission
|
||||||
|
if(!sender.hasPermission("areashop.stack")) {
|
||||||
|
plugin.message(sender, "stack-noPermission");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Only from ingame
|
||||||
|
if (!(sender instanceof Player)) {
|
||||||
|
plugin.message(sender, "cmd-onlyByPlayer");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
final Player player = (Player)sender;
|
||||||
|
// Specify enough arguments
|
||||||
|
if(args.length < 5) {
|
||||||
|
plugin.message(sender, "stack-help");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Check amount
|
||||||
|
int tempAmount = -1;
|
||||||
|
try {
|
||||||
|
tempAmount = Integer.parseInt(args[1]);
|
||||||
|
} catch(NumberFormatException e) {}
|
||||||
|
if(tempAmount <= 0) {
|
||||||
|
plugin.message(player, "stack-wrongAmount", args[1]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Check gap
|
||||||
|
int gap = -1;
|
||||||
|
try {
|
||||||
|
gap = Integer.parseInt(args[2]);
|
||||||
|
} catch(NumberFormatException e) {
|
||||||
|
plugin.message(player, "stack-wrongGap", args[2]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Check region type
|
||||||
|
if(!"rent".equalsIgnoreCase(args[4]) && !"buy".equalsIgnoreCase(args[4])) {
|
||||||
|
plugin.message(sender, "stack-help");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Get WorldEdit selection
|
||||||
|
final Selection selection = plugin.getWorldEdit().getSelection(player);
|
||||||
|
if(selection == null) {
|
||||||
|
plugin.message(player, "stack-noSelection");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Get or create group
|
||||||
|
RegionGroup group = null;
|
||||||
|
if(args.length > 5) {
|
||||||
|
group = plugin.getFileManager().getGroup(args[5]);
|
||||||
|
if(group == null) {
|
||||||
|
group = new RegionGroup(plugin, args[5]);
|
||||||
|
plugin.getFileManager().addGroup(group);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Get facing of the player (must be clearly one of the four directions to make sure it is no mistake)
|
||||||
|
BlockFace facing = Utils.yawToFacing(player.getLocation().getYaw());
|
||||||
|
if(!(facing == BlockFace.NORTH || facing == BlockFace.EAST || facing == BlockFace.SOUTH || facing == BlockFace.WEST)) {
|
||||||
|
plugin.message(player, "stack-unclearDirection", facing.toString().toLowerCase().replace('_', '-'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
final Location shift = new Location(selection.getWorld(), 0, 0, 0);
|
||||||
|
if(facing == BlockFace.SOUTH) {
|
||||||
|
shift.setY(-selection.getLength() - gap);
|
||||||
|
} else if(facing == BlockFace.WEST) {
|
||||||
|
shift.setX(selection.getWidth() + gap);
|
||||||
|
} else if(facing == BlockFace.NORTH) {
|
||||||
|
shift.setY(selection.getLength() + gap);
|
||||||
|
} else if(facing == BlockFace.EAST) {
|
||||||
|
shift.setX(-selection.getWidth() - gap);
|
||||||
|
}
|
||||||
|
AreaShop.debug(" calculated shift vector: " + shift + ", with facing=" + facing);
|
||||||
|
// Create regions and add them to AreaShop
|
||||||
|
final String namePrefix = args[3];
|
||||||
|
final int regionsPerTick = plugin.getConfig().getInt("adding.regionsPerTick");
|
||||||
|
final boolean rentRegions = "rent".equalsIgnoreCase(args[4]);
|
||||||
|
final int amount = tempAmount;
|
||||||
|
final RegionGroup finalGroup = group;
|
||||||
|
String type = null;
|
||||||
|
if(rentRegions) {
|
||||||
|
type = "rent";
|
||||||
|
} else {
|
||||||
|
type = "buy";
|
||||||
|
}
|
||||||
|
String groupsMessage = "";
|
||||||
|
if(group != null) {
|
||||||
|
groupsMessage = plugin.getLanguageManager().getLang("stack-addToGroup", group.getName());
|
||||||
|
}
|
||||||
|
plugin.message(player, "stack-accepted", amount, type, gap, namePrefix, groupsMessage);
|
||||||
|
plugin.message(player, "stack-addStart", amount, regionsPerTick*20);
|
||||||
|
new BukkitRunnable() {
|
||||||
|
private int current = 0;
|
||||||
|
private RegionManager manager = AreaShop.getInstance().getWorldGuard().getRegionManager(selection.getWorld());
|
||||||
|
private int counter = 1;
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
for(int i=0; i<regionsPerTick; i++) {
|
||||||
|
if(current < amount) {
|
||||||
|
// Create the region name
|
||||||
|
String regionName = namePrefix + counter;
|
||||||
|
while(manager.getRegion(regionName) != null || AreaShop.getInstance().getFileManager().getRegion(regionName) != null) {
|
||||||
|
counter++;
|
||||||
|
regionName = namePrefix + counter;
|
||||||
|
}
|
||||||
|
// Add the region to WorldGuard (at startposition shifted by the number of this region times the blocks it should shift)
|
||||||
|
ProtectedCuboidRegion region = new ProtectedCuboidRegion(regionName,
|
||||||
|
new BlockVector(
|
||||||
|
selection.getMinimumPoint().getBlockX() + shift.getBlockX()*current,
|
||||||
|
selection.getMinimumPoint().getBlockY() + shift.getBlockY()*current,
|
||||||
|
selection.getMinimumPoint().getBlockZ() + shift.getBlockZ()*current
|
||||||
|
),
|
||||||
|
new BlockVector(
|
||||||
|
selection.getMaximumPoint().getBlockX() + shift.getBlockX()*current,
|
||||||
|
selection.getMaximumPoint().getBlockY() + shift.getBlockY()*current,
|
||||||
|
selection.getMaximumPoint().getBlockZ() + shift.getBlockZ()*current
|
||||||
|
)
|
||||||
|
);
|
||||||
|
manager.addRegion(region);
|
||||||
|
// Add the region to AreaShop
|
||||||
|
if(rentRegions) {
|
||||||
|
RentRegion rent = new RentRegion(plugin, region.getId(), selection.getWorld());
|
||||||
|
if(finalGroup != null) {
|
||||||
|
finalGroup.addMember(rent);
|
||||||
|
}
|
||||||
|
rent.runEventCommands(RegionEvent.CREATED, true);
|
||||||
|
plugin.getFileManager().addRent(rent);
|
||||||
|
rent.handleSchematicEvent(RegionEvent.CREATED);
|
||||||
|
rent.updateRegionFlags();
|
||||||
|
rent.runEventCommands(RegionEvent.CREATED, false);
|
||||||
|
rent.saveRequired();
|
||||||
|
} else {
|
||||||
|
BuyRegion buy = new BuyRegion(plugin, region.getId(), selection.getWorld());
|
||||||
|
if(finalGroup != null) {
|
||||||
|
finalGroup.addMember(buy);
|
||||||
|
}
|
||||||
|
buy.runEventCommands(RegionEvent.CREATED, true);
|
||||||
|
plugin.getFileManager().addBuy(buy);
|
||||||
|
buy.handleSchematicEvent(RegionEvent.CREATED);
|
||||||
|
buy.updateRegionFlags();
|
||||||
|
buy.runEventCommands(RegionEvent.CREATED, false);
|
||||||
|
buy.saveRequired();
|
||||||
|
}
|
||||||
|
current++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(current >= amount) {
|
||||||
|
if(player.isOnline()) {
|
||||||
|
plugin.message(player, "stack-addComplete");
|
||||||
|
}
|
||||||
|
this.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskTimer(plugin, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getTabCompleteList(int toComplete, String[] start, CommandSender sender) {
|
||||||
|
List<String> result = new ArrayList<String>();
|
||||||
|
if(toComplete == 5) {
|
||||||
|
result.add("rent");
|
||||||
|
result.add("buy");
|
||||||
|
} else if(toComplete == 6) {
|
||||||
|
result.addAll(plugin.getFileManager().getGroupNames());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -21,6 +21,7 @@ import nl.evolutioncoding.areashop.commands.GroupinfoCommand;
|
|||||||
import nl.evolutioncoding.areashop.commands.GrouplistCommand;
|
import nl.evolutioncoding.areashop.commands.GrouplistCommand;
|
||||||
import nl.evolutioncoding.areashop.commands.HelpCommand;
|
import nl.evolutioncoding.areashop.commands.HelpCommand;
|
||||||
import nl.evolutioncoding.areashop.commands.InfoCommand;
|
import nl.evolutioncoding.areashop.commands.InfoCommand;
|
||||||
|
import nl.evolutioncoding.areashop.commands.LinksignsCommand;
|
||||||
import nl.evolutioncoding.areashop.commands.MeCommand;
|
import nl.evolutioncoding.areashop.commands.MeCommand;
|
||||||
import nl.evolutioncoding.areashop.commands.ReloadCommand;
|
import nl.evolutioncoding.areashop.commands.ReloadCommand;
|
||||||
import nl.evolutioncoding.areashop.commands.RentCommand;
|
import nl.evolutioncoding.areashop.commands.RentCommand;
|
||||||
@ -32,6 +33,7 @@ import nl.evolutioncoding.areashop.commands.SetownerCommand;
|
|||||||
import nl.evolutioncoding.areashop.commands.SetpriceCommand;
|
import nl.evolutioncoding.areashop.commands.SetpriceCommand;
|
||||||
import nl.evolutioncoding.areashop.commands.SetrestoreCommand;
|
import nl.evolutioncoding.areashop.commands.SetrestoreCommand;
|
||||||
import nl.evolutioncoding.areashop.commands.SetteleportCommand;
|
import nl.evolutioncoding.areashop.commands.SetteleportCommand;
|
||||||
|
import nl.evolutioncoding.areashop.commands.StackCommand;
|
||||||
import nl.evolutioncoding.areashop.commands.StopresellCommand;
|
import nl.evolutioncoding.areashop.commands.StopresellCommand;
|
||||||
import nl.evolutioncoding.areashop.commands.TeleportCommand;
|
import nl.evolutioncoding.areashop.commands.TeleportCommand;
|
||||||
import nl.evolutioncoding.areashop.commands.UnrentCommand;
|
import nl.evolutioncoding.areashop.commands.UnrentCommand;
|
||||||
@ -82,7 +84,8 @@ public class CommandManager implements CommandExecutor, TabCompleter {
|
|||||||
commands.add(new DelCommand(plugin));
|
commands.add(new DelCommand(plugin));
|
||||||
commands.add(new AddsignCommand(plugin));
|
commands.add(new AddsignCommand(plugin));
|
||||||
commands.add(new DelsignCommand(plugin));
|
commands.add(new DelsignCommand(plugin));
|
||||||
//commands.add(new LinksignsCommand(plugin));
|
commands.add(new LinksignsCommand(plugin));
|
||||||
|
commands.add(new StackCommand(plugin));
|
||||||
|
|
||||||
/* Register commands in bukkit */
|
/* Register commands in bukkit */
|
||||||
plugin.getCommand("AreaShop").setExecutor(this);
|
plugin.getCommand("AreaShop").setExecutor(this);
|
||||||
|
@ -243,7 +243,8 @@ public class FileManager {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a rent from the list
|
* Remove a rent from the list
|
||||||
* @param regionName
|
* @param rent The region to remove
|
||||||
|
* @param giveMoneyBack use true to give money back to the player if someone is currently renting this region, otherwise false
|
||||||
*/
|
*/
|
||||||
public boolean removeRent(RentRegion rent, boolean giveMoneyBack) {
|
public boolean removeRent(RentRegion rent, boolean giveMoneyBack) {
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
@ -903,6 +904,7 @@ public class FileManager {
|
|||||||
* @return true
|
* @return true
|
||||||
*/
|
*/
|
||||||
public boolean loadRegionFiles() {
|
public boolean loadRegionFiles() {
|
||||||
|
regions.clear();
|
||||||
File file = new File(regionsPath);
|
File file = new File(regionsPath);
|
||||||
if(!file.exists()) {
|
if(!file.exists()) {
|
||||||
file.mkdirs();
|
file.mkdirs();
|
||||||
|
@ -63,6 +63,10 @@ public class LanguageManager {
|
|||||||
OutputStream output = null;
|
OutputStream output = null;
|
||||||
try {
|
try {
|
||||||
input = plugin.getResource(AreaShop.languageFolder + "/" + languages[i] + ".yml");
|
input = plugin.getResource(AreaShop.languageFolder + "/" + languages[i] + ".yml");
|
||||||
|
if(input == null) {
|
||||||
|
plugin.getLogger().warning("Could not save default language to the '" + AreaShop.languageFolder + "' folder: " + languages[i] + ".yml");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
output = new FileOutputStream(langFile);
|
output = new FileOutputStream(langFile);
|
||||||
|
|
||||||
int read = 0;
|
int read = 0;
|
||||||
|
@ -156,11 +156,11 @@ public abstract class GeneralRegion {
|
|||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
|
|
||||||
if(getWorld() == null
|
if(getWorld() == null) {
|
||||||
|| plugin.getWorldGuard().getRegionManager(getWorld()) == null
|
throw new RegionCreateException("World '"+ getWorldName() +"' of region '" + getName() + "' does not exist anymore, removed region from AreaShop");
|
||||||
|
} else if(plugin.getWorldGuard().getRegionManager(getWorld()) == null
|
||||||
|| plugin.getWorldGuard().getRegionManager(getWorld()).getRegion(getName()) == null) {
|
|| plugin.getWorldGuard().getRegionManager(getWorld()).getRegion(getName()) == null) {
|
||||||
|
throw new RegionCreateException("WorldGuard region '" + getName() + "' does not exist anymore, removed region from AreaShop");
|
||||||
throw new RegionCreateException("Region of " + getName() + " does not exist anymore");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -307,11 +307,7 @@ public abstract class GeneralRegion {
|
|||||||
* @return The name of the world of the region
|
* @return The name of the world of the region
|
||||||
*/
|
*/
|
||||||
public String getWorldName() {
|
public String getWorldName() {
|
||||||
String world = getStringSetting("general.world");
|
return getStringSetting("general.world");
|
||||||
if(world == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return world;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -890,6 +886,7 @@ public abstract class GeneralRegion {
|
|||||||
}
|
}
|
||||||
// Get the origin and size of the region
|
// Get the origin and size of the region
|
||||||
Vector origin = new Vector(region.getMinimumPoint().getBlockX(), region.getMinimumPoint().getBlockY(), region.getMinimumPoint().getBlockZ());
|
Vector origin = new Vector(region.getMinimumPoint().getBlockX(), region.getMinimumPoint().getBlockY(), region.getMinimumPoint().getBlockZ());
|
||||||
|
AreaShop.debug("origin of restoreoperation: " + origin);
|
||||||
|
|
||||||
// The path to save the schematic
|
// The path to save the schematic
|
||||||
File restoreFile = new File(plugin.getFileManager().getSchematicFolder() + File.separator + fileName + AreaShop.schematicExtension);
|
File restoreFile = new File(plugin.getFileManager().getSchematicFolder() + File.separator + fileName + AreaShop.schematicExtension);
|
||||||
@ -909,6 +906,7 @@ public abstract class GeneralRegion {
|
|||||||
WorldData worldData = world.getWorldData();
|
WorldData worldData = world.getWorldData();
|
||||||
LocalSession session = new LocalSession(plugin.getWorldEdit().getLocalConfiguration());
|
LocalSession session = new LocalSession(plugin.getWorldEdit().getLocalConfiguration());
|
||||||
Clipboard clipboard = reader.read(worldData);
|
Clipboard clipboard = reader.read(worldData);
|
||||||
|
clipboard.setOrigin(clipboard.getMinimumPoint());
|
||||||
ClipboardHolder clipboardHolder = new ClipboardHolder(clipboard, worldData);
|
ClipboardHolder clipboardHolder = new ClipboardHolder(clipboard, worldData);
|
||||||
session.setBlockChangeLimit(plugin.getConfig().getInt("maximumBlocks"));
|
session.setBlockChangeLimit(plugin.getConfig().getInt("maximumBlocks"));
|
||||||
session.setClipboard(clipboardHolder);
|
session.setClipboard(clipboardHolder);
|
||||||
|
Loading…
Reference in New Issue
Block a user