mirror of
https://github.com/md5sha256/AreaShop.git
synced 2026-11-06 17:32:43 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
271b17b6be | ||
|
|
1dfedea50c | ||
|
|
d9abe2e347 | ||
|
|
1ba2e21ae9 | ||
|
|
fcdfdc6094 | ||
|
|
8a7e2ba5c2 | ||
|
|
0950452692 | ||
|
|
293978f068 | ||
|
|
5efe14b8e9 | ||
|
|
839d510151 | ||
|
|
9180d9b8ee | ||
|
|
7aa786f4ce | ||
|
|
10ea8540e7 | ||
|
|
dba00769f6 | ||
|
|
44c70c6a33 | ||
|
|
570f7b4055 | ||
|
|
feafa012dd | ||
|
|
82b340ce1a | ||
|
|
93809f27fc | ||
|
|
f8ed3654fd | ||
|
|
58a1afccf3 | ||
|
|
d9c3573225 | ||
|
|
1577443203 | ||
|
|
ab7a92c57d | ||
|
|
2e09b0f60f | ||
|
|
6e5c35f95b | ||
|
|
066ceedafd | ||
|
|
c8ebe24bd3 | ||
|
|
ad7db5ee23 | ||
|
|
f80a8178ff | ||
|
|
05c8e1a7e4 | ||
|
|
9904805310 | ||
|
|
0df2f429c0 | ||
|
|
b3408a2648 | ||
|
|
e1f89e7904 |
No files matched your search
+2
-2
@@ -4,7 +4,7 @@
|
||||
<artifactId>areashop</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>AreaShop</name>
|
||||
<version>2.3.2</version> <!-- Main plugin version -->
|
||||
<version>2.4.0</version> <!-- Main plugin version -->
|
||||
|
||||
<parent>
|
||||
<groupId>me.wiefferink</groupId>
|
||||
@@ -16,7 +16,7 @@
|
||||
<dependency>
|
||||
<groupId>org.bukkit</groupId>
|
||||
<artifactId>bukkit</artifactId>
|
||||
<version>1.7.9-R0.2</version>
|
||||
<version>1.8-R0.1-SNAPSHOT</version>
|
||||
<type>jar</type>
|
||||
<scope>provided</scope>
|
||||
<optional>true</optional>
|
||||
|
||||
@@ -31,7 +31,6 @@ import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.permissions.Permission;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||
@@ -86,55 +85,55 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
public static final int versionFilesCurrent = 3;
|
||||
|
||||
// Keys for replacing parts of flags, commands, strings
|
||||
public static final String tagPlayerName = "%player%";
|
||||
public static final String tagPlayerUUID = "%uuid%";
|
||||
public static final String tagWorldName = "%world%";
|
||||
public static final String tagRegionName = "%region%";
|
||||
public static final String tagRegionType = "%type%";
|
||||
public static final String tagPrice = "%price%";
|
||||
public static final String tagRawPrice = "%rawprice%";
|
||||
public static final String tagDuration = "%duration%";
|
||||
public static final String tagRentedUntil = "%until%";
|
||||
public static final String tagRentedUntilShort = "%untilshort%";
|
||||
public static final String tagWidth = "%width%"; // x-axis
|
||||
public static final String tagHeight = "%height%"; // y-axis
|
||||
public static final String tagDepth = "%depth%"; // z-axis
|
||||
public static final String tagTimeLeft = "%timeleft%";
|
||||
public static final String tagClicker = "%clicker%";
|
||||
public static final String tagResellPrice = "%resellprice%";
|
||||
public static final String tagRawResellPrice = "%rawresellprice%";
|
||||
public static final String tagFriends = "%friends%";
|
||||
public static final String tagFriendsUUID = "%friendsuuid%";
|
||||
public static final String tagMoneyBackPercentage = "%moneybackpercent%";
|
||||
public static final String tagMoneyBackAmount = "%moneyback%";
|
||||
public static final String tagRawMoneyBackAmount = "%rawmoneyback%";
|
||||
public static final String tagMaxExtends = "%maxextends%";
|
||||
public static final String tagExtendsLeft = "%extendsleft%";
|
||||
public static final String tagMaxRentTime = "%maxrenttime%";
|
||||
public static final String tagMaxInactiveTime = "%inactivetime%";
|
||||
public static final String tagLandlord = "%landlord%";
|
||||
public static final String tagLandlordUUID = "%landlorduuid%";
|
||||
public static final String tagDateTime = "%datetime%";
|
||||
public static final String tagDateTimeShort = "%datetimeshort%";
|
||||
public static final String tagYear = "%year%";
|
||||
public static final String tagMonth = "%month%";
|
||||
public static final String tagDay = "%day%";
|
||||
public static final String tagHour = "%hour%";
|
||||
public static final String tagMinute = "%minute%";
|
||||
public static final String tagSecond = "%second%";
|
||||
public static final String tagMillisecond = "%millisecond%";
|
||||
public static final String tagEpoch = "%epoch%";
|
||||
public static final String tagTeleportX = "%tpx%";
|
||||
public static final String tagTeleportY = "%tpy%";
|
||||
public static final String tagTeleportZ = "%tpz%";
|
||||
public static final String tagTeleportBlockX = "%tpblockx%";
|
||||
public static final String tagTeleportBlockY = "%tpblocky%";
|
||||
public static final String tagTeleportBlockZ = "%tpblockz%";
|
||||
public static final String tagTeleportPitch = "%tppitch%";
|
||||
public static final String tagTeleportYaw = "%tpyaw%";
|
||||
public static final String tagTeleportPitchRound = "%tppitchround%";
|
||||
public static final String tagTeleportYawRound = "%tpyawround%";
|
||||
public static final String tagTeleportWorld = "%tpworld%";
|
||||
public static final String tagPlayerName = "player";
|
||||
public static final String tagPlayerUUID = "uuid";
|
||||
public static final String tagWorldName = "world";
|
||||
public static final String tagRegionName = "region";
|
||||
public static final String tagRegionType = "type";
|
||||
public static final String tagPrice = "price";
|
||||
public static final String tagRawPrice = "rawprice";
|
||||
public static final String tagDuration = "duration";
|
||||
public static final String tagRentedUntil = "until";
|
||||
public static final String tagRentedUntilShort = "untilshort";
|
||||
public static final String tagWidth = "width"; // x-axis
|
||||
public static final String tagHeight = "height"; // y-axis
|
||||
public static final String tagDepth = "depth"; // z-axis
|
||||
public static final String tagTimeLeft = "timeleft";
|
||||
public static final String tagClicker = "clicker";
|
||||
public static final String tagResellPrice = "resellprice";
|
||||
public static final String tagRawResellPrice = "rawresellprice";
|
||||
public static final String tagFriends = "friends";
|
||||
public static final String tagFriendsUUID = "friendsuuid";
|
||||
public static final String tagMoneyBackPercentage = "moneybackpercent";
|
||||
public static final String tagMoneyBackAmount = "moneyback";
|
||||
public static final String tagRawMoneyBackAmount = "rawmoneyback";
|
||||
public static final String tagMaxExtends = "maxextends";
|
||||
public static final String tagExtendsLeft = "extendsleft";
|
||||
public static final String tagMaxRentTime = "maxrenttime";
|
||||
public static final String tagMaxInactiveTime = "inactivetime";
|
||||
public static final String tagLandlord = "landlord";
|
||||
public static final String tagLandlordUUID = "landlorduuid";
|
||||
public static final String tagDateTime = "datetime";
|
||||
public static final String tagDateTimeShort = "datetimeshort";
|
||||
public static final String tagYear = "year";
|
||||
public static final String tagMonth = "month";
|
||||
public static final String tagDay = "day";
|
||||
public static final String tagHour = "hour";
|
||||
public static final String tagMinute = "minute";
|
||||
public static final String tagSecond = "second";
|
||||
public static final String tagMillisecond = "millisecond";
|
||||
public static final String tagEpoch = "epoch";
|
||||
public static final String tagTeleportX = "tpx";
|
||||
public static final String tagTeleportY = "tpy";
|
||||
public static final String tagTeleportZ = "tpz";
|
||||
public static final String tagTeleportBlockX = "tpblockx";
|
||||
public static final String tagTeleportBlockY = "tpblocky";
|
||||
public static final String tagTeleportBlockZ = "tpblockz";
|
||||
public static final String tagTeleportPitch = "tppitch";
|
||||
public static final String tagTeleportYaw = "tpyaw";
|
||||
public static final String tagTeleportPitchRound = "tppitchround";
|
||||
public static final String tagTeleportYawRound = "tpyawround";
|
||||
public static final String tagTeleportWorld = "tpworld";
|
||||
|
||||
public static AreaShop getInstance() {
|
||||
return AreaShop.instance;
|
||||
@@ -154,61 +153,64 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
Integer build = null;
|
||||
Plugin plugin = getServer().getPluginManager().getPlugin("WorldGuard");
|
||||
if (plugin == null || !(plugin instanceof WorldGuardPlugin)) {
|
||||
getLogger().severe("WorldGuard plugin is not present or has not loaded correctly");
|
||||
error("WorldGuard plugin is not present or has not loaded correctly");
|
||||
error = true;
|
||||
} else {
|
||||
worldGuard = (WorldGuardPlugin)plugin;
|
||||
// Get correct WorldGuardInterface (handles things that changed version to version)
|
||||
rawVersion = worldGuard.getDescription().getVersion();
|
||||
if(rawVersion.contains("-SNAPSHOT;")) {
|
||||
String buildNumber = rawVersion.substring(rawVersion.indexOf("-SNAPSHOT;")+10, rawVersion.length());
|
||||
if(rawVersion.contains("-")) {
|
||||
buildNumber = buildNumber.substring(0, buildNumber.indexOf("-"));
|
||||
}
|
||||
try {
|
||||
build = Integer.parseInt(buildNumber);
|
||||
} catch(NumberFormatException e) {
|
||||
getLogger().warning("Could not correctly parse the build of WorldGuard, raw version: "+rawVersion+", buildNumber: "+buildNumber);
|
||||
}
|
||||
}
|
||||
// Clear stuff from the version string that is not a number
|
||||
String[] versionParts = rawVersion.split("\\.");
|
||||
for(int i = 0; i < versionParts.length; i++) {
|
||||
Pattern pattern = Pattern.compile("^\\d+");
|
||||
Matcher matcher = pattern.matcher(versionParts[i]);
|
||||
if(matcher.find()) {
|
||||
versionParts[i] = matcher.group();
|
||||
}
|
||||
}
|
||||
// Find major, minor and fix numbers
|
||||
try {
|
||||
if(versionParts.length > 0) {
|
||||
major = Integer.parseInt(versionParts[0]);
|
||||
rawVersion = worldGuard.getDescription().getVersion();
|
||||
if(rawVersion.contains("-SNAPSHOT;")) {
|
||||
String buildNumber = rawVersion.substring(rawVersion.indexOf("-SNAPSHOT;")+10, rawVersion.length());
|
||||
if(buildNumber.contains("-")) {
|
||||
buildNumber = buildNumber.substring(0, buildNumber.indexOf("-"));
|
||||
try {
|
||||
build = Integer.parseInt(buildNumber);
|
||||
} catch(NumberFormatException e) {
|
||||
warn("Could not correctly parse the build of WorldGuard, raw version: "+rawVersion+", buildNumber: "+buildNumber);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(versionParts.length > 1) {
|
||||
minor = Integer.parseInt(versionParts[1]);
|
||||
// Clear stuff from the version string that is not a number
|
||||
String[] versionParts = rawVersion.split("\\.");
|
||||
for(int i = 0; i < versionParts.length; i++) {
|
||||
Pattern pattern = Pattern.compile("^\\d+");
|
||||
Matcher matcher = pattern.matcher(versionParts[i]);
|
||||
if(matcher.find()) {
|
||||
versionParts[i] = matcher.group();
|
||||
}
|
||||
}
|
||||
if(versionParts.length > 2) {
|
||||
fixes = Integer.parseInt(versionParts[2]);
|
||||
// Find major, minor and fix numbers
|
||||
try {
|
||||
if(versionParts.length > 0) {
|
||||
major = Integer.parseInt(versionParts[0]);
|
||||
}
|
||||
if(versionParts.length > 1) {
|
||||
minor = Integer.parseInt(versionParts[1]);
|
||||
}
|
||||
if(versionParts.length > 2) {
|
||||
fixes = Integer.parseInt(versionParts[2]);
|
||||
}
|
||||
} catch(NumberFormatException e) {
|
||||
warn("Something went wrong while parsing WorldGuard version number: "+rawVersion);
|
||||
}
|
||||
} catch(NumberFormatException e) {
|
||||
getLogger().warning("Something went wrong while parsing WorldGuard version number: "+rawVersion);
|
||||
}
|
||||
// Determine correct implementation to use
|
||||
if(major >= 6 && minor >= 1 && fixes > 3) {
|
||||
wgVersion = "6_1_3";
|
||||
} else if(build != null && build >= 1672) {
|
||||
if(build > 1672) {
|
||||
wgVersion = "6_1_3"; // Flag name to flag object method changed
|
||||
// Determine correct implementation to use
|
||||
if(worldGuard.getDescription().getVersion().startsWith("5.")) {
|
||||
wgVersion = "5";
|
||||
} else if(major == 6 && minor == 1 && fixes < 3) {
|
||||
wgVersion = "6";
|
||||
} else {
|
||||
// Build 1672 is broken, flags changed but no FlagContext added yet
|
||||
error = true;
|
||||
getLogger().severe("Build 1672 of WorldGuard is broken, update to a later build or a stable version!");
|
||||
if(build != null && build == 1672) {
|
||||
error = true;
|
||||
error("Build 1672 of WorldGuard is broken, update to a later build or a stable version!");
|
||||
} else if(build != null && build < 1672) {
|
||||
wgVersion = "6";
|
||||
} else {
|
||||
wgVersion = "6_1_3";
|
||||
}
|
||||
}
|
||||
} else if(worldGuard.getDescription().getVersion().startsWith("5.")) {
|
||||
wgVersion = "5";
|
||||
} else {
|
||||
wgVersion = "6"; // Schematic methods changed
|
||||
} catch(Exception e) { // If version detection fails, at least try to load the latest version
|
||||
wgVersion = "6_1_3";
|
||||
}
|
||||
// Load chosen implementation
|
||||
try {
|
||||
@@ -218,7 +220,7 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
worldGuardInterface = (WorldGuardInterface)clazz.getConstructor(AreaShopInterface.class).newInstance(this); // Set our handler
|
||||
}
|
||||
} catch (final Exception e) {
|
||||
getLogger().severe("Could not load the handler for WorldGuard (tried to load "+wgVersion+"), report this problem to the author:"+ExceptionUtils.getStackTrace(e));
|
||||
error("Could not load the handler for WorldGuard (tried to load "+wgVersion+"), report this problem to the author:"+ExceptionUtils.getStackTrace(e));
|
||||
error = true;
|
||||
wgVersion = null;
|
||||
}
|
||||
@@ -228,7 +230,7 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
String weVersion = null;
|
||||
plugin = getServer().getPluginManager().getPlugin("WorldEdit");
|
||||
if (plugin == null || !(plugin instanceof WorldEditPlugin)) {
|
||||
getLogger().severe("WorldEdit plugin is not present or has not loaded correctly");
|
||||
error("WorldEdit plugin is not present or has not loaded correctly");
|
||||
error = true;
|
||||
} else {
|
||||
worldEdit = (WorldEditPlugin)plugin;
|
||||
@@ -245,7 +247,7 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
worldEditInterface = (WorldEditInterface)clazz.getConstructor(AreaShopInterface.class).newInstance(this); // Set our handler
|
||||
}
|
||||
} catch (final Exception e) {
|
||||
getLogger().severe("Could not load the handler for WorldEdit (tried to load "+weVersion+"), report this problem to the author: "+ExceptionUtils.getStackTrace(e));
|
||||
error("Could not load the handler for WorldEdit (tried to load "+weVersion+"), report this problem to the author: "+ExceptionUtils.getStackTrace(e));
|
||||
error = true;
|
||||
weVersion = null;
|
||||
}
|
||||
@@ -253,7 +255,7 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
|
||||
// Check if Vault is present
|
||||
if(getServer().getPluginManager().getPlugin("Vault") == null) {
|
||||
getLogger().severe("Vault plugin is not present or has not loaded correctly");
|
||||
error("Vault plugin is not present or has not loaded correctly");
|
||||
error = true;
|
||||
}
|
||||
|
||||
@@ -273,7 +275,7 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
languageManager = new LanguageManager(this);
|
||||
|
||||
if(error) {
|
||||
getLogger().severe("The plugin has not started, fix the errors listed above");
|
||||
error("The plugin has not started, fix the errors listed above");
|
||||
} else {
|
||||
// Register the event listeners
|
||||
getServer().getPluginManager().registerEvents(new SignChangeListener(this), this);
|
||||
@@ -308,7 +310,7 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
AreaShop.debug("Result=" + updater.getResult().toString() + ", Latest=" + updater.getLatestName() + ", Type=" + updater.getLatestType());
|
||||
updateAvailable = updater.getResult() == UpdateResult.UPDATE_AVAILABLE;
|
||||
if(updateAvailable) {
|
||||
AreaShop.getInstance().getLogger().info("Update from AreaShop V" + AreaShop.getInstance().getDescription().getVersion() + " to " + updater.getLatestName() + " available, get the latest version at http://dev.bukkit.org/bukkit-plugins/regionbuyandrent/");
|
||||
AreaShop.info("Update from AreaShop V"+AreaShop.getInstance().getDescription().getVersion()+" to "+updater.getLatestName()+" available, get the latest version at http://dev.bukkit.org/bukkit-plugins/regionbuyandrent/");
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -342,7 +344,7 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
region.updateLastActiveTime();
|
||||
}
|
||||
}
|
||||
fileManager.saveRequiredFilesAtOnce();
|
||||
fileManager.saveRequiredFilesAtOnce();
|
||||
Bukkit.getServer().getScheduler().cancelTasks(this);
|
||||
|
||||
worldGuard = null;
|
||||
@@ -368,9 +370,7 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
|
||||
// Register as listener when necessary
|
||||
for(Feature feature : features) {
|
||||
if(feature instanceof Listener) {
|
||||
getServer().getPluginManager().registerEvents((Listener)feature, this);
|
||||
}
|
||||
feature.listen();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -465,7 +465,7 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
public Economy getEconomy() {
|
||||
RegisteredServiceProvider<Economy> economy = getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
|
||||
if (economy == null || economy.getProvider() == null) {
|
||||
getLogger().severe("There is no economy provider to support Vault, make sure you installed an economy plugin");
|
||||
error("There is no economy provider to support Vault, make sure you installed an economy plugin");
|
||||
return null;
|
||||
}
|
||||
return economy.getProvider();
|
||||
@@ -518,7 +518,7 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
try {
|
||||
Bukkit.getPluginManager().addPermission(perm);
|
||||
} catch(IllegalArgumentException e) {
|
||||
getLogger().warning("Could not add the following permission to be used as limit: "+perm.getName());
|
||||
warn("Could not add the following permission to be used as limit: "+perm.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -617,10 +617,22 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a message to a target without a prefix
|
||||
* @param target The target to send the message to
|
||||
* @param key The key of the language string
|
||||
* @param replacements The replacements to insert in the message
|
||||
*/
|
||||
public void messageNoPrefix(Object target, String key, Object... replacements) {
|
||||
Message.fromKey(key).replacements(replacements).send(target);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a message to a target, prefixed by the default chat prefix
|
||||
* @param target The target to send the message to
|
||||
* @param key The key of the language string
|
||||
* @param replacements The replacements to insert in the message
|
||||
*/
|
||||
public void message(Object target, String key, Object... replacements) {
|
||||
Message.fromKey(key).prefix().replacements(replacements).send(target);
|
||||
}
|
||||
@@ -653,39 +665,47 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
*/
|
||||
public static void debug(Object... message) {
|
||||
if(AreaShop.getInstance().debug) {
|
||||
AreaShop.getInstance().getLogger().info("Debug: "+StringUtils.join(message, " "));
|
||||
info("Debug: "+StringUtils.join(message, " "));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Non-static debug to use as implementation of the interface
|
||||
*/
|
||||
public void debugI(String message) {
|
||||
AreaShop.debug(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Print a warning to the console
|
||||
* @param message The message to print
|
||||
*/
|
||||
public static void warn(String... message) {
|
||||
AreaShop.getInstance().getLogger().warning(StringUtils.join(message, " "));
|
||||
public void debugI(Object... message) {
|
||||
AreaShop.debug(StringUtils.join(message, " "));
|
||||
}
|
||||
|
||||
/**
|
||||
* Print an information message to the console
|
||||
* @param message The message to print
|
||||
*/
|
||||
public static void info(String... message) {
|
||||
public static void info(Object... message) {
|
||||
AreaShop.getInstance().getLogger().info(StringUtils.join(message, " "));
|
||||
}
|
||||
|
||||
/**
|
||||
* Print a warning to the console
|
||||
* @param message The message to print
|
||||
*/
|
||||
public static void warn(Object... message) {
|
||||
AreaShop.getInstance().getLogger().warning(StringUtils.join(message, " "));
|
||||
}
|
||||
|
||||
/**
|
||||
* Print an error to the console
|
||||
* @param message The messagfe to print
|
||||
*/
|
||||
public static void error(Object... message) {
|
||||
AreaShop.getInstance().getLogger().severe(StringUtils.join(message, " "));
|
||||
}
|
||||
|
||||
/**
|
||||
* Print debug message for periodic task
|
||||
* @param message The message to print
|
||||
*/
|
||||
public static void debugTask(String message) {
|
||||
public static void debugTask(Object... message) {
|
||||
if(AreaShop.getInstance().getConfig().getBoolean("debugTask")) {
|
||||
AreaShop.debug(message);
|
||||
AreaShop.debug(StringUtils.join(message, " "));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -698,7 +718,7 @@ public final class AreaShop extends JavaPlugin implements AreaShopInterface {
|
||||
setReady(false);
|
||||
fileManager.saveRequiredFilesAtOnce();
|
||||
fileManager.loadFiles();
|
||||
languageManager.startup();
|
||||
languageManager = new LanguageManager(this);
|
||||
message(confirmationReceiver, "reload-reloading");
|
||||
fileManager.checkRents();
|
||||
fileManager.updateAllRegions(confirmationReceiver);
|
||||
|
||||
@@ -75,7 +75,7 @@ public class Utils {
|
||||
* @return A Message object containing the parts combined into one message
|
||||
*/
|
||||
public static Message combinedMessage(Collection<?> replacements, String messagePart, String combiner) {
|
||||
Message result = Message.none();
|
||||
Message result = Message.empty();
|
||||
boolean first = true;
|
||||
for(Object part : replacements) {
|
||||
if(first) {
|
||||
|
||||
@@ -101,7 +101,7 @@ public class AddCommand extends CommandAreaShop {
|
||||
}
|
||||
ProtectedRegion region = plugin.getWorldGuard().getRegionManager(world).getRegion(args[2]);
|
||||
if(region == null) {
|
||||
plugin.message(sender, "add-noRegion", args[2]);
|
||||
plugin.message(sender, "cmd-noRegion", args[2]);
|
||||
return;
|
||||
}
|
||||
regions.add(region);
|
||||
|
||||
@@ -77,7 +77,7 @@ public class AddfriendCommand extends CommandAreaShop {
|
||||
return;
|
||||
}
|
||||
OfflinePlayer friend = Bukkit.getOfflinePlayer(args[1]);
|
||||
if(friend.getLastPlayed() == 0 && !plugin.getConfig().getBoolean("addFriendNotExistingPlayers")) {
|
||||
if(friend.getLastPlayed() == 0 && !friend.isOnline() && !plugin.getConfig().getBoolean("addFriendNotExistingPlayers")) {
|
||||
plugin.message(sender, "addfriend-notVisited", args[1], region);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ public class FindCommand extends CommandAreaShop {
|
||||
if(!results.isEmpty()) {
|
||||
// Draw a random one
|
||||
BuyRegion region = results.get(new Random().nextInt(results.size()));
|
||||
Message onlyInGroup = Message.none();
|
||||
Message onlyInGroup = Message.empty();
|
||||
if(group != null) {
|
||||
onlyInGroup = Message.fromKey("find-onlyInGroup").replacements(args[3]);
|
||||
}
|
||||
@@ -96,7 +96,7 @@ public class FindCommand extends CommandAreaShop {
|
||||
}
|
||||
region.teleportPlayer(player, region.getBooleanSetting("general.findTeleportToSign"), false);
|
||||
} else {
|
||||
Message onlyInGroup = Message.none();
|
||||
Message onlyInGroup = Message.empty();
|
||||
if(group != null) {
|
||||
onlyInGroup = Message.fromKey("find-onlyInGroup").replacements(args[3]);
|
||||
}
|
||||
@@ -119,7 +119,7 @@ public class FindCommand extends CommandAreaShop {
|
||||
if(!results.isEmpty()) {
|
||||
// Draw a random one
|
||||
RentRegion region = results.get(new Random().nextInt(results.size()));
|
||||
Message onlyInGroup = Message.none();
|
||||
Message onlyInGroup = Message.empty();
|
||||
if(group != null) {
|
||||
onlyInGroup = Message.fromKey("find-onlyInGroup").replacements(args[3]);
|
||||
}
|
||||
@@ -130,7 +130,7 @@ public class FindCommand extends CommandAreaShop {
|
||||
}
|
||||
region.teleportPlayer(player, region.getBooleanSetting("general.findTeleportToSign"), false);
|
||||
} else {
|
||||
Message onlyInGroup = Message.none();
|
||||
Message onlyInGroup = Message.empty();
|
||||
if(group != null) {
|
||||
onlyInGroup = Message.fromKey("find-onlyInGroup").replacements(args[3]);
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ public class InfoCommand extends CommandAreaShop {
|
||||
}
|
||||
});
|
||||
// Header
|
||||
Message limitedToGroup = Message.none();
|
||||
Message limitedToGroup = Message.empty();
|
||||
if(filterGroup != null) {
|
||||
limitedToGroup = Message.fromKey("info-limitedToGroup").replacements(filterGroup.getName());
|
||||
}
|
||||
@@ -111,7 +111,7 @@ public class InfoCommand extends CommandAreaShop {
|
||||
plugin.messageNoPrefix(sender, "info-entry"+state, region);
|
||||
linesPrinted++;
|
||||
}
|
||||
Message footer = Message.none();
|
||||
Message footer = Message.empty();
|
||||
// Previous button
|
||||
if(page > 1) {
|
||||
footer.append(Message.fromKey("info-pagePrevious").replacements(baseCommand+" "+(page-1)));
|
||||
@@ -365,11 +365,7 @@ public class InfoCommand extends CommandAreaShop {
|
||||
}
|
||||
// Restoring
|
||||
if(rent.isRestoreEnabled()) {
|
||||
if(sender.hasPermission("areashop.setrestore")) {
|
||||
plugin.messageNoPrefix(sender, "info-regionRestoringRent", rent, Message.fromKey("info-regionRestoringProfile").replacements(rent.getRestoreProfile()));
|
||||
} else {
|
||||
plugin.messageNoPrefix(sender, "info-regionRestoringRent", rent, "");
|
||||
}
|
||||
plugin.messageNoPrefix(sender, "info-regionRestoringRent", rent);
|
||||
}
|
||||
// Restrictions
|
||||
if(!rent.isRented()) {
|
||||
@@ -444,11 +440,7 @@ public class InfoCommand extends CommandAreaShop {
|
||||
}
|
||||
// Restoring
|
||||
if(buy.isRestoreEnabled()) {
|
||||
if(sender.hasPermission("areashop.setrestore")) {
|
||||
plugin.messageNoPrefix(sender, "info-regionRestoringBuy", buy, Message.fromKey("info-regionRestoringProfile").replacements(buy.getRestoreProfile()));
|
||||
} else {
|
||||
plugin.messageNoPrefix(sender, "info-regionRestoringBuy", buy, "");
|
||||
}
|
||||
plugin.messageNoPrefix(sender, "info-regionRestoringBuy", buy);
|
||||
}
|
||||
// Restrictions
|
||||
if(!buy.isSold()) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package me.wiefferink.areashop.commands;
|
||||
|
||||
import me.wiefferink.areashop.AreaShop;
|
||||
import me.wiefferink.areashop.Utils;
|
||||
import me.wiefferink.areashop.regions.BuyRegion;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion;
|
||||
import me.wiefferink.areashop.regions.RentRegion;
|
||||
@@ -9,7 +10,9 @@ import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class MeCommand extends CommandAreaShop {
|
||||
@@ -106,8 +109,15 @@ public class MeCommand extends CommandAreaShop {
|
||||
}
|
||||
}
|
||||
|
||||
public static void show() {
|
||||
|
||||
@Override
|
||||
public List<String> getTabCompleteList(int toComplete, String[] start, CommandSender sender) {
|
||||
ArrayList<String> result = new ArrayList<>();
|
||||
if(toComplete == 2) {
|
||||
for(Player player : Utils.getOnlinePlayers()) {
|
||||
result.add(player.getName());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -98,28 +98,21 @@ public class SetownerCommand extends CommandAreaShop {
|
||||
calendar.setTimeInMillis(rent.getRentedUntil() + rent.getDuration());
|
||||
rent.setRentedUntil(calendar.getTimeInMillis());
|
||||
rent.setRenter(uuid);
|
||||
rent.update();
|
||||
plugin.message(sender, "setowner-succesRentExtend", region);
|
||||
} else {
|
||||
// change
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
long current = calendar.getTimeInMillis();
|
||||
if(rent.isRented()) {
|
||||
current = rent.getRentedUntil();
|
||||
}
|
||||
calendar.setTimeInMillis(current + rent.getDuration());
|
||||
rent.setRentedUntil(calendar.getTimeInMillis());
|
||||
rent.setRenter(uuid);
|
||||
rent.update();
|
||||
plugin.message(sender, "setowner-succesRent", region);
|
||||
}
|
||||
}
|
||||
if(region.isBuyRegion()) {
|
||||
BuyRegion buy = (BuyRegion)region;
|
||||
buy.setBuyer(uuid);
|
||||
buy.update();
|
||||
plugin.message(sender, "setowner-succesBuy", region);
|
||||
}
|
||||
region.getFriendsFeature().deleteFriend(region.getOwner(), null);
|
||||
region.update();
|
||||
region.saveRequired();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package me.wiefferink.areashop.commands;
|
||||
|
||||
import com.sk89q.worldedit.BlockVector;
|
||||
import com.sk89q.worldedit.Vector;
|
||||
import com.sk89q.worldedit.bukkit.selections.Selection;
|
||||
import com.sk89q.worldguard.protection.managers.RegionManager;
|
||||
import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion;
|
||||
@@ -11,7 +12,6 @@ import me.wiefferink.areashop.regions.BuyRegion;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion;
|
||||
import me.wiefferink.areashop.regions.RegionGroup;
|
||||
import me.wiefferink.areashop.regions.RentRegion;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -98,19 +98,28 @@ public class StackCommand extends CommandAreaShop {
|
||||
}
|
||||
// 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('_', '-'));
|
||||
if (player.getLocation().getPitch() > 45) {
|
||||
facing = BlockFace.DOWN;
|
||||
} else if (player.getLocation().getPitch() < -45) {
|
||||
facing = BlockFace.UP;
|
||||
}
|
||||
if (!(facing == BlockFace.NORTH || facing == BlockFace.EAST || facing == BlockFace.SOUTH || facing == BlockFace.WEST || facing == BlockFace.UP || facing == BlockFace.DOWN)) {
|
||||
plugin.message(player, "stack-unclearDirection", facing.toString().toLowerCase().replace('_', '-'));
|
||||
return;
|
||||
}
|
||||
final Location shift = new Location(selection.getWorld(), 0, 0, 0);
|
||||
Vector shift = new BlockVector(0, 0, 0);
|
||||
if(facing == BlockFace.SOUTH) {
|
||||
shift.setZ(-selection.getLength() - gap);
|
||||
shift = shift.setZ(-selection.getLength()-gap);
|
||||
} else if(facing == BlockFace.WEST) {
|
||||
shift.setX(selection.getWidth() + gap);
|
||||
shift = shift.setX(selection.getWidth()+gap);
|
||||
} else if(facing == BlockFace.NORTH) {
|
||||
shift.setZ(selection.getLength() + gap);
|
||||
shift = shift.setZ(selection.getLength()+gap);
|
||||
} else if(facing == BlockFace.EAST) {
|
||||
shift.setX(-selection.getWidth() - gap);
|
||||
shift = shift.setX(-selection.getWidth()-gap);
|
||||
} else if (facing == BlockFace.DOWN) {
|
||||
shift = shift.setY(-selection.getHeight()-gap);
|
||||
} else if (facing == BlockFace.UP) {
|
||||
shift = shift.setY(selection.getHeight()+gap);
|
||||
}
|
||||
AreaShop.debug(" calculated shift vector: " + shift + ", with facing=" + facing);
|
||||
// Create regions and add them to AreaShop
|
||||
@@ -119,26 +128,31 @@ public class StackCommand extends CommandAreaShop {
|
||||
final boolean rentRegions = "rent".equalsIgnoreCase(args[4]);
|
||||
final int amount = tempAmount;
|
||||
final RegionGroup finalGroup = group;
|
||||
final Vector finalShift = shift;
|
||||
String type;
|
||||
if(rentRegions) {
|
||||
type = "rent";
|
||||
} else {
|
||||
type = "buy";
|
||||
}
|
||||
Message groupsMessage = Message.none();
|
||||
Message groupsMessage = Message.empty();
|
||||
if(group != null) {
|
||||
groupsMessage = Message.fromKey("stack-addToGroup").replacements(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 current = -1;
|
||||
private RegionManager manager = AreaShop.getInstance().getWorldGuard().getRegionManager(selection.getWorld());
|
||||
private int counter = 1;
|
||||
@Override
|
||||
private int tooLow = 0;
|
||||
private int tooHigh = 0;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
for(int i=0; i<regionsPerTick; i++) {
|
||||
if(current < amount) {
|
||||
current++;
|
||||
if(current < amount) {
|
||||
// Create the region name
|
||||
String counterName = counter+"";
|
||||
int minimumLength = plugin.getConfig().getInt("stackRegionNumberLength");
|
||||
@@ -156,19 +170,18 @@ public class StackCommand extends CommandAreaShop {
|
||||
regionName = namePrefix + counterName;
|
||||
}
|
||||
// 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);
|
||||
BlockVector minimum = new BlockVector(selection.getNativeMinimumPoint().add(finalShift.multiply(current)));
|
||||
BlockVector maximum = new BlockVector(selection.getNativeMaximumPoint().add(finalShift.multiply(current)));
|
||||
// Check for out of bounds
|
||||
if (minimum.getBlockY() < 0) {
|
||||
tooLow++;
|
||||
continue;
|
||||
} else if (maximum.getBlockY() > 256) {
|
||||
tooHigh++;
|
||||
continue;
|
||||
}
|
||||
ProtectedCuboidRegion region = new ProtectedCuboidRegion(regionName, minimum, maximum);
|
||||
manager.addRegion(region);
|
||||
// Add the region to AreaShop
|
||||
if(rentRegions) {
|
||||
RentRegion rent = new RentRegion(plugin, region.getId(), selection.getWorld());
|
||||
@@ -191,13 +204,20 @@ public class StackCommand extends CommandAreaShop {
|
||||
buy.runEventCommands(GeneralRegion.RegionEvent.CREATED, false);
|
||||
buy.update();
|
||||
}
|
||||
current++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(current >= amount) {
|
||||
if(player.isOnline()) {
|
||||
plugin.message(player, "stack-addComplete");
|
||||
}
|
||||
int added = amount - tooLow - tooHigh;
|
||||
Message wrong = Message.empty();
|
||||
if(tooHigh > 0) {
|
||||
wrong.append(Message.fromKey("stack-tooHigh").replacements(tooHigh));
|
||||
}
|
||||
if (tooLow > 0) {
|
||||
wrong.append(Message.fromKey("stack-tooLow").replacements(tooLow));
|
||||
}
|
||||
plugin.message(player, "stack-addComplete", added, wrong);
|
||||
}
|
||||
this.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,12 +40,13 @@ public class TeleportCommand extends CommandAreaShop {
|
||||
Player player = (Player)person;
|
||||
return player.hasPermission("areashop.teleportall")
|
||||
|| region.isOwner(player) && player.hasPermission("areashop.teleport")
|
||||
|| region.isAvailable() && player.hasPermission("areashop.teleportavailable")
|
||||
|| region.getFriendsFeature().getFriends().contains(player.getUniqueId()) && player.hasPermission("areashop.teleportfriend");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
if(!sender.hasPermission("areashop.teleport") && !sender.hasPermission("areashop.teleportall") && !sender.hasPermission("areashop.teleportsign") && !sender.hasPermission("areashop.teleportsignall") && !sender.hasPermission("areashop.teleportfriend") && !sender.hasPermission("teleportfriendsign")) {
|
||||
if(!sender.hasPermission("areashop.teleport") && !sender.hasPermission("areashop.teleportall") && !sender.hasPermission("areashop.teleportavailable") && !sender.hasPermission("areashop.teleportavailablesign") && !sender.hasPermission("areashop.teleportsign") && !sender.hasPermission("areashop.teleportsignall") && !sender.hasPermission("areashop.teleportfriend") && !sender.hasPermission("teleportfriendsign")) {
|
||||
plugin.message(sender, "teleport-noPermission");
|
||||
return;
|
||||
}
|
||||
|
||||
+4
-12
@@ -1,21 +1,12 @@
|
||||
package me.wiefferink.areashop.events;
|
||||
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
public class CancellableRegionEvent<T> extends RegionEvent<T> {
|
||||
|
||||
public class CancellableAreaShopEvent extends Event {
|
||||
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private boolean cancelled;
|
||||
private String reason;
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
public CancellableRegionEvent(T region) {
|
||||
super(region);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -50,4 +41,5 @@ public class CancellableAreaShopEvent extends Event {
|
||||
public String getReason() {
|
||||
return reason;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package me.wiefferink.areashop.events;
|
||||
|
||||
public class NotifyRegionEvent<T> extends RegionEvent<T> {
|
||||
public NotifyRegionEvent(T region) {
|
||||
super(region);
|
||||
}
|
||||
}
|
||||
+14
-2
@@ -3,10 +3,14 @@ package me.wiefferink.areashop.events;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
public class NotifyAreaShopEvent extends Event {
|
||||
|
||||
public class RegionEvent<T> extends Event {
|
||||
protected T region;
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
|
||||
public RegionEvent(T region) {
|
||||
this.region = region;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return handlers;
|
||||
@@ -15,4 +19,12 @@ public class NotifyAreaShopEvent extends Event {
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region of this event
|
||||
* @return The region the event is about
|
||||
*/
|
||||
public T getRegion() {
|
||||
return region;
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,14 @@
|
||||
package me.wiefferink.areashop.events.ask;
|
||||
|
||||
import me.wiefferink.areashop.events.CancellableAreaShopEvent;
|
||||
import me.wiefferink.areashop.events.CancellableRegionEvent;
|
||||
import me.wiefferink.areashop.regions.BuyRegion;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* Broadcasted when a player tries to buy a region.
|
||||
*/
|
||||
public class BuyingRegionEvent extends CancellableAreaShopEvent {
|
||||
public class BuyingRegionEvent extends CancellableRegionEvent<BuyRegion> {
|
||||
|
||||
private BuyRegion region;
|
||||
private Player player;
|
||||
|
||||
/**
|
||||
@@ -18,18 +17,10 @@ public class BuyingRegionEvent extends CancellableAreaShopEvent {
|
||||
* @param player The player that tries to buy the region
|
||||
*/
|
||||
public BuyingRegionEvent(BuyRegion region, Player player) {
|
||||
this.region = region;
|
||||
super(region);
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region that is about to be bought
|
||||
* @return the region that is about to be bought
|
||||
*/
|
||||
public BuyRegion getRegion() {
|
||||
return region;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the player that is trying to buy the region
|
||||
* @return The player that is trying to buy the region
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
package me.wiefferink.areashop.events.ask;
|
||||
|
||||
import me.wiefferink.areashop.events.CancellableAreaShopEvent;
|
||||
import me.wiefferink.areashop.events.CancellableRegionEvent;
|
||||
import me.wiefferink.areashop.regions.RentRegion;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* Broadcasted when a player tries to rent a region
|
||||
*/
|
||||
public class RentingRegionEvent extends CancellableAreaShopEvent {
|
||||
public class RentingRegionEvent extends CancellableRegionEvent<RentRegion> {
|
||||
|
||||
private RentRegion region;
|
||||
private Player player;
|
||||
private boolean extending;
|
||||
|
||||
@@ -20,19 +19,11 @@ public class RentingRegionEvent extends CancellableAreaShopEvent {
|
||||
* @param extending true if the player is extending the rental of the region, otherwise false
|
||||
*/
|
||||
public RentingRegionEvent(RentRegion region, Player player, boolean extending) {
|
||||
this.region = region;
|
||||
super(region);
|
||||
this.player = player;
|
||||
this.extending = extending;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region that is about to be rented
|
||||
* @return the region that is about to be rented
|
||||
*/
|
||||
public RentRegion getRegion() {
|
||||
return region;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the player that is trying to rent the region
|
||||
* @return The player that is trying to rent the region
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
package me.wiefferink.areashop.events.ask;
|
||||
|
||||
import me.wiefferink.areashop.events.CancellableAreaShopEvent;
|
||||
import me.wiefferink.areashop.events.CancellableRegionEvent;
|
||||
import me.wiefferink.areashop.regions.BuyRegion;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* Broadcasted when a player tries to resell a region
|
||||
*/
|
||||
public class ResellingRegionEvent extends CancellableAreaShopEvent {
|
||||
public class ResellingRegionEvent extends CancellableRegionEvent<BuyRegion> {
|
||||
|
||||
private BuyRegion region;
|
||||
private Player player;
|
||||
|
||||
/**
|
||||
@@ -18,18 +17,10 @@ public class ResellingRegionEvent extends CancellableAreaShopEvent {
|
||||
* @param player The player that is trying to buy this region from the current owner
|
||||
*/
|
||||
public ResellingRegionEvent(BuyRegion region, Player player) {
|
||||
this.region = region;
|
||||
super(region);
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region that is about to be bought
|
||||
* @return the region that is about to be bought
|
||||
*/
|
||||
public BuyRegion getRegion() {
|
||||
return region;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the player that is trying to buy the region
|
||||
* @return The player that is trying to buy the region
|
||||
|
||||
@@ -1,28 +1,18 @@
|
||||
package me.wiefferink.areashop.events.ask;
|
||||
|
||||
import me.wiefferink.areashop.events.CancellableAreaShopEvent;
|
||||
import me.wiefferink.areashop.events.CancellableRegionEvent;
|
||||
import me.wiefferink.areashop.regions.BuyRegion;
|
||||
|
||||
/**
|
||||
* Broadcasted when a region is about to get sold
|
||||
*/
|
||||
public class SellingRegionEvent extends CancellableAreaShopEvent {
|
||||
|
||||
private BuyRegion region;
|
||||
public class SellingRegionEvent extends CancellableRegionEvent<BuyRegion> {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param region The region that is about to get sold
|
||||
*/
|
||||
public SellingRegionEvent(BuyRegion region) {
|
||||
this.region = region;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region that is about to be sold
|
||||
* @return the region that is about to be sold
|
||||
*/
|
||||
public BuyRegion getRegion() {
|
||||
return region;
|
||||
super(region);
|
||||
}
|
||||
}
|
||||
@@ -1,28 +1,18 @@
|
||||
package me.wiefferink.areashop.events.ask;
|
||||
|
||||
import me.wiefferink.areashop.events.CancellableAreaShopEvent;
|
||||
import me.wiefferink.areashop.events.CancellableRegionEvent;
|
||||
import me.wiefferink.areashop.regions.RentRegion;
|
||||
|
||||
/**
|
||||
* Broadcasted when a region is about to be unrented
|
||||
*/
|
||||
public class UnrentingRegionEvent extends CancellableAreaShopEvent {
|
||||
|
||||
private RentRegion region;
|
||||
public class UnrentingRegionEvent extends CancellableRegionEvent<RentRegion> {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param region The region that is about to be unrented
|
||||
*/
|
||||
public UnrentingRegionEvent(RentRegion region) {
|
||||
this.region = region;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region that is about to be rented
|
||||
* @return the region that is about to be rented
|
||||
*/
|
||||
public RentRegion getRegion() {
|
||||
return region;
|
||||
super(region);
|
||||
}
|
||||
}
|
||||
+4
-13
@@ -1,6 +1,6 @@
|
||||
package me.wiefferink.areashop.events.askandnotify;
|
||||
|
||||
import me.wiefferink.areashop.events.CancellableAreaShopEvent;
|
||||
import me.wiefferink.areashop.events.CancellableRegionEvent;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@@ -8,9 +8,8 @@ import org.bukkit.command.CommandSender;
|
||||
/**
|
||||
* Broadcasted when a friend is being added to a region
|
||||
*/
|
||||
public class AddFriendEvent extends CancellableAreaShopEvent {
|
||||
public class AddedFriendEvent extends CancellableRegionEvent<GeneralRegion> {
|
||||
|
||||
private GeneralRegion region;
|
||||
private OfflinePlayer friend;
|
||||
private CommandSender by;
|
||||
|
||||
@@ -20,20 +19,12 @@ public class AddFriendEvent extends CancellableAreaShopEvent {
|
||||
* @param friend The friend that is about to be added
|
||||
* @param by The CommandSender that is adding the friend, or null if none
|
||||
*/
|
||||
public AddFriendEvent(GeneralRegion region, OfflinePlayer friend, CommandSender by) {
|
||||
this.region = region;
|
||||
public AddedFriendEvent(GeneralRegion region, OfflinePlayer friend, CommandSender by) {
|
||||
super(region);
|
||||
this.friend = friend;
|
||||
this.by = by;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region where the friend is getting added to
|
||||
* @return the region
|
||||
*/
|
||||
public GeneralRegion getRegion() {
|
||||
return region;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the OfflinePlayer that is getting added as friend
|
||||
* @return The friend that is getting added
|
||||
+4
-13
@@ -1,6 +1,6 @@
|
||||
package me.wiefferink.areashop.events.askandnotify;
|
||||
|
||||
import me.wiefferink.areashop.events.CancellableAreaShopEvent;
|
||||
import me.wiefferink.areashop.events.CancellableRegionEvent;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@@ -8,9 +8,8 @@ import org.bukkit.command.CommandSender;
|
||||
/**
|
||||
* Broadcasted when a friend is being added to a region
|
||||
*/
|
||||
public class DeleteFriendEvent extends CancellableAreaShopEvent {
|
||||
public class DeletedFriendEvent extends CancellableRegionEvent<GeneralRegion> {
|
||||
|
||||
private GeneralRegion region;
|
||||
private OfflinePlayer friend;
|
||||
private CommandSender by;
|
||||
|
||||
@@ -20,20 +19,12 @@ public class DeleteFriendEvent extends CancellableAreaShopEvent {
|
||||
* @param friend The friend that is about to be added
|
||||
* @param by The CommandSender that is adding the friend, or null if none
|
||||
*/
|
||||
public DeleteFriendEvent(GeneralRegion region, OfflinePlayer friend, CommandSender by) {
|
||||
this.region = region;
|
||||
public DeletedFriendEvent(GeneralRegion region, OfflinePlayer friend, CommandSender by) {
|
||||
super(region);
|
||||
this.friend = friend;
|
||||
this.by = by;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region where the friend is getting added to
|
||||
* @return the region
|
||||
*/
|
||||
public GeneralRegion getRegion() {
|
||||
return region;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the OfflinePlayer that is getting added as friend
|
||||
* @return The friend that is getting added
|
||||
@@ -1,28 +1,19 @@
|
||||
package me.wiefferink.areashop.events.notify;
|
||||
|
||||
import me.wiefferink.areashop.events.NotifyAreaShopEvent;
|
||||
import me.wiefferink.areashop.events.NotifyRegionEvent;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion;
|
||||
|
||||
/**
|
||||
* Broadcasted when a region has been added to AreaShop
|
||||
*/
|
||||
public class AddedRegionEvent extends NotifyAreaShopEvent {
|
||||
|
||||
private GeneralRegion region;
|
||||
public class AddedRegionEvent extends NotifyRegionEvent<GeneralRegion> {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param region The region that has been added
|
||||
*/
|
||||
public AddedRegionEvent(GeneralRegion region) {
|
||||
this.region = region;
|
||||
super(region);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region that has been added
|
||||
* @return the region that has been added
|
||||
*/
|
||||
public GeneralRegion getRegion() {
|
||||
return region;
|
||||
}
|
||||
}
|
||||
@@ -1,28 +1,19 @@
|
||||
package me.wiefferink.areashop.events.notify;
|
||||
|
||||
import me.wiefferink.areashop.events.NotifyAreaShopEvent;
|
||||
import me.wiefferink.areashop.events.NotifyRegionEvent;
|
||||
import me.wiefferink.areashop.regions.BuyRegion;
|
||||
|
||||
/**
|
||||
* Broadcasted when a region has been bought
|
||||
*/
|
||||
public class BoughtRegionEvent extends NotifyAreaShopEvent {
|
||||
|
||||
private BuyRegion region;
|
||||
public class BoughtRegionEvent extends NotifyRegionEvent<BuyRegion> {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param region The region that has been bought
|
||||
*/
|
||||
public BoughtRegionEvent(BuyRegion region) {
|
||||
this.region = region;
|
||||
super(region);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region that has been bought
|
||||
* @return the region that has been bought
|
||||
*/
|
||||
public BuyRegion getRegion() {
|
||||
return region;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package me.wiefferink.areashop.events.notify;
|
||||
|
||||
import me.wiefferink.areashop.events.NotifyRegionEvent;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion;
|
||||
|
||||
/**
|
||||
* Broadcasted when a region has been removed from AreaShop
|
||||
*/
|
||||
public class DeletedRegionEvent extends NotifyRegionEvent<GeneralRegion> {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param region The region that has been removed
|
||||
*/
|
||||
public DeletedRegionEvent(GeneralRegion region) {
|
||||
super(region);
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
package me.wiefferink.areashop.events.notify;
|
||||
|
||||
import me.wiefferink.areashop.events.NotifyAreaShopEvent;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion;
|
||||
|
||||
/**
|
||||
* Broadcasted when the data of a region changes.
|
||||
* Should be used for updating displays that use region data.
|
||||
*/
|
||||
public class RegionUpdateEvent extends NotifyAreaShopEvent {
|
||||
|
||||
private GeneralRegion region;
|
||||
|
||||
/**
|
||||
* Contructor
|
||||
* @param region The region that has been updated
|
||||
*/
|
||||
public RegionUpdateEvent(GeneralRegion region) {
|
||||
this.region = region;
|
||||
}
|
||||
|
||||
/**
|
||||
* The region that has been updated
|
||||
* @return The GeneralRegion that has been updated
|
||||
*/
|
||||
public GeneralRegion getRegion() {
|
||||
return region;
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
package me.wiefferink.areashop.events.notify;
|
||||
|
||||
import me.wiefferink.areashop.events.NotifyAreaShopEvent;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion;
|
||||
|
||||
/**
|
||||
* Broadcasted when a region has been removed from AreaShop
|
||||
*/
|
||||
public class RemovedRegionEvent extends NotifyAreaShopEvent {
|
||||
|
||||
private GeneralRegion region;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param region The region that has been removed
|
||||
*/
|
||||
public RemovedRegionEvent(GeneralRegion region) {
|
||||
this.region = region;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region that has been removed
|
||||
* @return the region that has been removed
|
||||
*/
|
||||
public GeneralRegion getRegion() {
|
||||
return region;
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,13 @@
|
||||
package me.wiefferink.areashop.events.notify;
|
||||
|
||||
import me.wiefferink.areashop.events.NotifyAreaShopEvent;
|
||||
import me.wiefferink.areashop.events.NotifyRegionEvent;
|
||||
import me.wiefferink.areashop.regions.RentRegion;
|
||||
|
||||
/**
|
||||
* Broadcasted when a region has been rented
|
||||
*/
|
||||
public class RentedRegionEvent extends NotifyAreaShopEvent {
|
||||
public class RentedRegionEvent extends NotifyRegionEvent<RentRegion> {
|
||||
|
||||
private RentRegion region;
|
||||
private boolean extended;
|
||||
|
||||
/**
|
||||
@@ -17,18 +16,11 @@ public class RentedRegionEvent extends NotifyAreaShopEvent {
|
||||
* @param extended true if the region has been extended, false if this is the first time buying the region
|
||||
*/
|
||||
public RentedRegionEvent(RentRegion region, boolean extended) {
|
||||
super(region);
|
||||
this.region = region;
|
||||
this.extended = extended;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region that has been rented
|
||||
* @return the region that has been rented
|
||||
*/
|
||||
public RentRegion getRegion() {
|
||||
return region;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the region was extended or rented for the first time
|
||||
* @return true if the region was extended, false when rented for the first time
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package me.wiefferink.areashop.events.notify;
|
||||
|
||||
import me.wiefferink.areashop.events.NotifyAreaShopEvent;
|
||||
import me.wiefferink.areashop.events.NotifyRegionEvent;
|
||||
import me.wiefferink.areashop.regions.BuyRegion;
|
||||
|
||||
import java.util.UUID;
|
||||
@@ -8,9 +8,8 @@ import java.util.UUID;
|
||||
/**
|
||||
* Broadcasted when a region has been resold
|
||||
*/
|
||||
public class ResoldRegionEvent extends NotifyAreaShopEvent {
|
||||
public class ResoldRegionEvent extends NotifyRegionEvent<BuyRegion> {
|
||||
|
||||
private BuyRegion region;
|
||||
private UUID from;
|
||||
|
||||
/**
|
||||
@@ -19,18 +18,10 @@ public class ResoldRegionEvent extends NotifyAreaShopEvent {
|
||||
* @param from The player from who the region has been resold to the current owner
|
||||
*/
|
||||
public ResoldRegionEvent(BuyRegion region, UUID from) {
|
||||
this.region = region;
|
||||
super(region);
|
||||
this.from = from;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region that has been bought
|
||||
* @return the region that has been bought
|
||||
*/
|
||||
public BuyRegion getRegion() {
|
||||
return region;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the player that the region has been bought from
|
||||
* @return The UUID of the player that the region has been bought from
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package me.wiefferink.areashop.events.notify;
|
||||
|
||||
import me.wiefferink.areashop.events.NotifyAreaShopEvent;
|
||||
import me.wiefferink.areashop.events.NotifyRegionEvent;
|
||||
import me.wiefferink.areashop.regions.BuyRegion;
|
||||
|
||||
import java.util.UUID;
|
||||
@@ -8,9 +8,8 @@ import java.util.UUID;
|
||||
/**
|
||||
* Broadcasted when a region is sold
|
||||
*/
|
||||
public class SoldRegionEvent extends NotifyAreaShopEvent {
|
||||
public class SoldRegionEvent extends NotifyRegionEvent<BuyRegion> {
|
||||
|
||||
private BuyRegion region;
|
||||
private UUID oldBuyer;
|
||||
private double refundedMoney;
|
||||
|
||||
@@ -21,19 +20,11 @@ public class SoldRegionEvent extends NotifyAreaShopEvent {
|
||||
* @param refundedMoney The amount of money that has been refunded
|
||||
*/
|
||||
public SoldRegionEvent(BuyRegion region, UUID oldBuyer, double refundedMoney) {
|
||||
this.region = region;
|
||||
super(region);
|
||||
this.oldBuyer = oldBuyer;
|
||||
this.refundedMoney = refundedMoney;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region that has been sold
|
||||
* @return the region that has been sold
|
||||
*/
|
||||
public BuyRegion getRegion() {
|
||||
return region;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the player that the region is sold for
|
||||
* @return The UUID of the player that the region is sold for
|
||||
|
||||
+3
-11
@@ -1,6 +1,6 @@
|
||||
package me.wiefferink.areashop.events.notify;
|
||||
|
||||
import me.wiefferink.areashop.events.NotifyAreaShopEvent;
|
||||
import me.wiefferink.areashop.events.NotifyRegionEvent;
|
||||
import me.wiefferink.areashop.regions.RentRegion;
|
||||
|
||||
import java.util.UUID;
|
||||
@@ -8,7 +8,7 @@ import java.util.UUID;
|
||||
/**
|
||||
* Broadcasted when a region has been unrented
|
||||
*/
|
||||
public class UnrentedRegionEvent extends NotifyAreaShopEvent {
|
||||
public class UnrentedRegionEvent extends NotifyRegionEvent<RentRegion> {
|
||||
|
||||
private RentRegion region;
|
||||
private UUID oldRenter;
|
||||
@@ -21,19 +21,11 @@ public class UnrentedRegionEvent extends NotifyAreaShopEvent {
|
||||
* @param refundedMoney The amount of money that has been refunded
|
||||
*/
|
||||
public UnrentedRegionEvent(RentRegion region, UUID oldRenter, double refundedMoney) {
|
||||
this.region = region;
|
||||
super(region);
|
||||
this.oldRenter = oldRenter;
|
||||
this.refundedMoney = refundedMoney;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region that has been unrented
|
||||
* @return the region that has been unrented
|
||||
*/
|
||||
public RentRegion getRegion() {
|
||||
return region;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the player that the region was unrented for
|
||||
* @return The UUID of the player that the region was unrented for
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package me.wiefferink.areashop.events.notify;
|
||||
|
||||
import me.wiefferink.areashop.events.NotifyRegionEvent;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion;
|
||||
|
||||
/**
|
||||
* Broadcasted when the data of a region changes.
|
||||
* Should be used for updating displays that use region data.
|
||||
*/
|
||||
public class UpdateRegionEvent extends NotifyRegionEvent<GeneralRegion> {
|
||||
|
||||
/**
|
||||
* Contructor
|
||||
* @param region The region that has been updated
|
||||
*/
|
||||
public UpdateRegionEvent(GeneralRegion region) {
|
||||
super(region);
|
||||
}
|
||||
}
|
||||
@@ -3,13 +3,12 @@ package me.wiefferink.areashop.features;
|
||||
import me.wiefferink.areashop.AreaShop;
|
||||
import me.wiefferink.areashop.Utils;
|
||||
import me.wiefferink.areashop.events.ask.*;
|
||||
import me.wiefferink.areashop.events.askandnotify.AddFriendEvent;
|
||||
import me.wiefferink.areashop.events.askandnotify.DeleteFriendEvent;
|
||||
import me.wiefferink.areashop.events.askandnotify.AddedFriendEvent;
|
||||
import me.wiefferink.areashop.events.askandnotify.DeletedFriendEvent;
|
||||
import me.wiefferink.areashop.events.notify.*;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
public class DebugFeature extends Feature implements Listener {
|
||||
public class DebugFeature extends Feature {
|
||||
|
||||
@EventHandler
|
||||
public void buyingRegion(BuyingRegionEvent event) {
|
||||
@@ -62,8 +61,8 @@ public class DebugFeature extends Feature implements Listener {
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void regionUpdate(RegionUpdateEvent event) {
|
||||
//AreaShop.debug("RegionUpdateEvent: " + event.getRegion().getName() + " updated");
|
||||
public void regionUpdate(UpdateRegionEvent event) {
|
||||
//AreaShop.debug("UpdateRegionEvent: " + event.getRegion().getName() + " updated");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@@ -72,17 +71,17 @@ public class DebugFeature extends Feature implements Listener {
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void removedRegion(RemovedRegionEvent event) {
|
||||
AreaShop.debug("RemovedRegionEvent: "+event.getRegion().getName());
|
||||
public void removedRegion(DeletedRegionEvent event) {
|
||||
AreaShop.debug("DeletedRegionEvent: "+event.getRegion().getName());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void addedFriend(AddFriendEvent event) {
|
||||
AreaShop.debug("AddFriendEvent: region "+event.getRegion().getName()+", "+event.getFriend().getName()+" by "+(event.getBy() == null ? "<nobody>" : event.getBy().getName()));
|
||||
public void addedFriend(AddedFriendEvent event) {
|
||||
AreaShop.debug("AddedFriendEvent: region "+event.getRegion().getName()+", "+event.getFriend().getName()+" by "+(event.getBy() == null ? "<nobody>" : event.getBy().getName()));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void deleteFriend(DeleteFriendEvent event) {
|
||||
AreaShop.debug("DeleteFriendEvent: region "+event.getRegion().getName()+", "+event.getFriend().getName()+" by "+(event.getBy() == null ? "<nobody>" : event.getBy().getName()));
|
||||
public void deleteFriend(DeletedFriendEvent event) {
|
||||
AreaShop.debug("DeletedFriendEvent: region "+event.getRegion().getName()+", "+event.getFriend().getName()+" by "+(event.getBy() == null ? "<nobody>" : event.getBy().getName()));
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,26 @@
|
||||
package me.wiefferink.areashop.features;
|
||||
|
||||
import me.wiefferink.areashop.AreaShop;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
public class Feature implements Listener {
|
||||
public AreaShop plugin = AreaShop.getInstance();
|
||||
public YamlConfiguration config = plugin.getConfig();
|
||||
|
||||
/**
|
||||
* Start listening to events
|
||||
*/
|
||||
public void listen() {
|
||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop listening to events
|
||||
*/
|
||||
public void stopListen() {
|
||||
HandlerList.unregisterAll(this);
|
||||
}
|
||||
|
||||
public class Feature {
|
||||
AreaShop plugin = AreaShop.getInstance();
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package me.wiefferink.areashop.features;
|
||||
|
||||
import me.wiefferink.areashop.events.askandnotify.AddFriendEvent;
|
||||
import me.wiefferink.areashop.events.askandnotify.DeleteFriendEvent;
|
||||
import me.wiefferink.areashop.events.askandnotify.AddedFriendEvent;
|
||||
import me.wiefferink.areashop.events.askandnotify.DeletedFriendEvent;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
@@ -25,7 +25,7 @@ public class FriendsFeature extends Feature {
|
||||
*/
|
||||
public boolean addFriend(UUID player, CommandSender by) {
|
||||
// Fire and check event
|
||||
AddFriendEvent event = new AddFriendEvent(region, Bukkit.getOfflinePlayer(player), by);
|
||||
AddedFriendEvent event = new AddedFriendEvent(region, Bukkit.getOfflinePlayer(player), by);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if(event.isCancelled()) {
|
||||
plugin.message(by, "general-cancelled", event.getReason(), this);
|
||||
@@ -47,7 +47,7 @@ public class FriendsFeature extends Feature {
|
||||
*/
|
||||
public boolean deleteFriend(UUID player, CommandSender by) {
|
||||
// Fire and check event
|
||||
DeleteFriendEvent event = new DeleteFriendEvent(region, Bukkit.getOfflinePlayer(player), by);
|
||||
DeletedFriendEvent event = new DeletedFriendEvent(region, Bukkit.getOfflinePlayer(player), by);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if(event.isCancelled()) {
|
||||
plugin.message(by, "general-cancelled", event.getReason(), this);
|
||||
|
||||
@@ -2,7 +2,8 @@ package me.wiefferink.areashop.features;
|
||||
|
||||
import me.wiefferink.areashop.AreaShop;
|
||||
import me.wiefferink.areashop.Utils;
|
||||
import me.wiefferink.areashop.events.notify.RegionUpdateEvent;
|
||||
import me.wiefferink.areashop.events.notify.UpdateRegionEvent;
|
||||
import me.wiefferink.areashop.messages.Message;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
@@ -14,11 +15,10 @@ import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class SignsFeature extends Feature implements Listener {
|
||||
public class SignsFeature extends Feature {
|
||||
|
||||
private static Map<String, RegionSign> allSigns = new HashMap<>();
|
||||
|
||||
@@ -67,7 +67,7 @@ public class SignsFeature extends Feature implements Listener {
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void regionUpdate(RegionUpdateEvent event) {
|
||||
public void regionUpdate(UpdateRegionEvent event) {
|
||||
event.getRegion().getSignsFeature().update();
|
||||
}
|
||||
|
||||
@@ -206,12 +206,12 @@ public class SignsFeature extends Feature implements Listener {
|
||||
region.setSetting("general.signs."+key, null);
|
||||
}
|
||||
|
||||
public String getProfile() {
|
||||
String profile = region.getConfig().getString("general.signs."+key+".profile");
|
||||
if(profile == null || profile.length() == 0) {
|
||||
profile = region.getStringSetting("general.signProfile");
|
||||
}
|
||||
return profile;
|
||||
/**
|
||||
* Get the ConfigurationSection defining the sign layout
|
||||
* @return The sign layout config
|
||||
*/
|
||||
public ConfigurationSection getProfile() {
|
||||
return region.getConfigurationSectionSetting("general.signProfile", "signProfiles", region.getConfig().get("general.signs."+key+".profile"));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -222,72 +222,80 @@ public class SignsFeature extends Feature implements Listener {
|
||||
if(region.isDeleted()) {
|
||||
return false;
|
||||
}
|
||||
YamlConfiguration config = region.getConfig();
|
||||
// Get the prefix
|
||||
String prefix = "signProfiles."+getProfile()+"."+region.getState().getValue().toLowerCase()+".";
|
||||
|
||||
YamlConfiguration regionConfig = region.getConfig();
|
||||
ConfigurationSection signConfig = getProfile();
|
||||
Block block = getLocation().getBlock();
|
||||
if(signConfig == null || !signConfig.isSet(region.getState().getValue())) {
|
||||
block.setType(Material.AIR);
|
||||
return true;
|
||||
}
|
||||
|
||||
ConfigurationSection stateConfig = signConfig.getConfigurationSection(region.getState().getValue());
|
||||
|
||||
// Get the lines
|
||||
String[] signLines = new String[4];
|
||||
signLines[0] = plugin.getConfig().getString(prefix+"line1");
|
||||
signLines[1] = plugin.getConfig().getString(prefix+"line2");
|
||||
signLines[2] = plugin.getConfig().getString(prefix+"line3");
|
||||
signLines[3] = plugin.getConfig().getString(prefix+"line4");
|
||||
// Check if the sign should be present
|
||||
Block block = getLocation().getBlock();
|
||||
if(!plugin.getConfig().isSet(prefix)
|
||||
|| ((signLines[0] == null || signLines[0].length() == 0)
|
||||
&& (signLines[1] == null || signLines[1].length() == 0)
|
||||
&& (signLines[2] == null || signLines[2].length() == 0)
|
||||
&& (signLines[3] == null || signLines[3].length() == 0))) {
|
||||
block.setType(Material.AIR);
|
||||
} else {
|
||||
Sign signState = null;
|
||||
if(block.getType() != Material.WALL_SIGN && block.getType() != Material.SIGN_POST) {
|
||||
Material signType;
|
||||
try {
|
||||
signType = Material.valueOf(config.getString("general.signs."+key+".signType"));
|
||||
} catch(NullPointerException|IllegalArgumentException e) {
|
||||
signType = null;
|
||||
}
|
||||
if(signType != Material.WALL_SIGN && signType != Material.SIGN_POST) {
|
||||
AreaShop.debug(" setting sign failed");
|
||||
return false;
|
||||
}
|
||||
block.setType(signType);
|
||||
signState = (Sign)block.getState();
|
||||
org.bukkit.material.Sign signData = (org.bukkit.material.Sign)signState.getData();
|
||||
BlockFace signFace;
|
||||
try {
|
||||
signFace = BlockFace.valueOf(config.getString("general.signs."+key+".facing"));
|
||||
} catch(NullPointerException|IllegalArgumentException e) {
|
||||
signFace = null;
|
||||
}
|
||||
if(signFace != null) {
|
||||
signData.setFacingDirection(signFace);
|
||||
signState.setData(signData);
|
||||
}
|
||||
}
|
||||
if(signState == null) {
|
||||
signState = (Sign)block.getState();
|
||||
}
|
||||
org.bukkit.material.Sign signData = (org.bukkit.material.Sign)signState.getData();
|
||||
if(!config.isString("general.signs."+key+".signType")) {
|
||||
region.setSetting("general.signs."+key+".signType", signState.getType().toString());
|
||||
}
|
||||
if(!config.isString("general.signs."+key+".facing")) {
|
||||
region.setSetting("general.signs."+key+".facing", signData.getFacing().toString());
|
||||
}
|
||||
// Apply replacements and color and then set it on the sign
|
||||
for(int i = 0; i < signLines.length; i++) {
|
||||
if(signLines[i] == null) {
|
||||
signState.setLine(i, "");
|
||||
continue;
|
||||
}
|
||||
signLines[i] = region.applyAllReplacements(signLines[i]);
|
||||
signLines[i] = Utils.applyColors(signLines[i]);
|
||||
signState.setLine(i, signLines[i]);
|
||||
}
|
||||
signState.update();
|
||||
boolean signEmpty = true;
|
||||
for(int i = 0; i < 4; i++) {
|
||||
signLines[i] = stateConfig.getString("line"+(i+1));
|
||||
signEmpty &= (signLines[i] == null || signLines[i].isEmpty());
|
||||
}
|
||||
if(signEmpty) {
|
||||
block.setType(Material.AIR);
|
||||
return true;
|
||||
}
|
||||
|
||||
Sign signState = null;
|
||||
// Place the sign back (with proper rotation and type) after it has been hidden or (indirectly) destroyed
|
||||
if(block.getType() != Material.WALL_SIGN && block.getType() != Material.SIGN_POST) {
|
||||
Material signType;
|
||||
try {
|
||||
signType = Material.valueOf(regionConfig.getString("general.signs."+key+".signType"));
|
||||
} catch(NullPointerException|IllegalArgumentException e) {
|
||||
signType = null;
|
||||
}
|
||||
if(signType != Material.WALL_SIGN && signType != Material.SIGN_POST) {
|
||||
AreaShop.debug("Setting sign", key, "of region", region.getName(), "failed, could not set sign block back");
|
||||
return false;
|
||||
}
|
||||
block.setType(signType);
|
||||
signState = (Sign)block.getState();
|
||||
org.bukkit.material.Sign signData = (org.bukkit.material.Sign)signState.getData();
|
||||
BlockFace signFace;
|
||||
try {
|
||||
signFace = BlockFace.valueOf(regionConfig.getString("general.signs."+key+".facing"));
|
||||
} catch(NullPointerException|IllegalArgumentException e) {
|
||||
signFace = null;
|
||||
}
|
||||
if(signFace != null) {
|
||||
signData.setFacingDirection(signFace);
|
||||
signState.setData(signData);
|
||||
}
|
||||
}
|
||||
if(signState == null) {
|
||||
signState = (Sign)block.getState();
|
||||
}
|
||||
|
||||
// Save current rotation and type
|
||||
org.bukkit.material.Sign signData = (org.bukkit.material.Sign)signState.getData();
|
||||
if(!regionConfig.isString("general.signs."+key+".signType")) {
|
||||
region.setSetting("general.signs."+key+".signType", signState.getType().toString());
|
||||
}
|
||||
if(!regionConfig.isString("general.signs."+key+".facing")) {
|
||||
region.setSetting("general.signs."+key+".facing", signData.getFacing().toString());
|
||||
}
|
||||
|
||||
// Apply replacements and color and then set it on the sign
|
||||
for(int i = 0; i < signLines.length; i++) {
|
||||
if(signLines[i] == null) {
|
||||
signState.setLine(i, "");
|
||||
continue;
|
||||
}
|
||||
signLines[i] = Message.fromString(signLines[i]).replacements(region).getSingle();
|
||||
signLines[i] = Utils.applyColors(signLines[i]);
|
||||
signState.setLine(i, signLines[i]);
|
||||
}
|
||||
signState.update();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -296,13 +304,15 @@ public class SignsFeature extends Feature implements Listener {
|
||||
* @return true if it needs periodic updates, otherwise false
|
||||
*/
|
||||
public boolean needsPeriodicUpdate() {
|
||||
// Get the prefix
|
||||
String prefix = "signProfiles."+getProfile()+"."+region.getState().getValue().toLowerCase()+".line";
|
||||
String line;
|
||||
// Get the lines
|
||||
for(int i = 1; i < 5; i++) {
|
||||
line = plugin.getConfig().getString(prefix+i);
|
||||
if(line != null && line.length() != 0 && line.contains(AreaShop.tagTimeLeft)) {
|
||||
ConfigurationSection signConfig = getProfile();
|
||||
if(signConfig == null || !signConfig.isSet(region.getState().getValue().toLowerCase())) {
|
||||
return false;
|
||||
}
|
||||
ConfigurationSection stateConfig = signConfig.getConfigurationSection(region.getState().getValue().toLowerCase());
|
||||
// Check the lines for the timeleft tag
|
||||
for(int i = 1; i <= 4; i++) {
|
||||
String line = stateConfig.getString("line"+i);
|
||||
if(line != null && !line.isEmpty() && line.contains(Message.VARIABLESTART+AreaShop.tagTimeLeft+Message.VARIABLEEND)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -316,27 +326,23 @@ public class SignsFeature extends Feature implements Listener {
|
||||
* @return true if the commands ran successfully, false if any of them failed
|
||||
*/
|
||||
public boolean runSignCommands(Player clicker, GeneralRegion.ClickType clickType) {
|
||||
// Get the profile set in the config
|
||||
String profile = region.getConfig().getString("general.signs."+key+".profile");
|
||||
if(profile == null || profile.length() == 0) {
|
||||
profile = region.getStringSetting("general.signProfile");
|
||||
ConfigurationSection signConfig = getProfile();
|
||||
if(signConfig == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Get paths (state may change after running them)
|
||||
String playerPath = "signProfiles."+profile+"."+region.getState().getValue().toLowerCase()+"."+clickType.getValue()+"Player";
|
||||
String consolePath = "signProfiles."+profile+"."+region.getState().getValue().toLowerCase()+"."+clickType.getValue()+"Console";
|
||||
ConfigurationSection stateConfig = signConfig.getConfigurationSection(region.getState().getValue().toLowerCase());
|
||||
|
||||
// Run player commands if specified
|
||||
List<String> playerCommands = new ArrayList<>();
|
||||
for(String command : plugin.getConfig().getStringList(playerPath)) {
|
||||
playerCommands.add(command.replace(AreaShop.tagClicker, clicker.getName()));
|
||||
for(String command : stateConfig.getStringList(clickType.getValue()+"Player")) {
|
||||
playerCommands.add(command.replace(Message.VARIABLESTART+AreaShop.tagClicker+Message.VARIABLEEND, clicker.getName()));
|
||||
}
|
||||
region.runCommands(clicker, playerCommands);
|
||||
|
||||
// Run console commands if specified
|
||||
List<String> consoleCommands = new ArrayList<>();
|
||||
for(String command : plugin.getConfig().getStringList(consolePath)) {
|
||||
consoleCommands.add(command.replace(AreaShop.tagClicker, clicker.getName()));
|
||||
for(String command : stateConfig.getStringList(clickType.getValue()+"Console")) {
|
||||
consoleCommands.add(command.replace(Message.VARIABLESTART+AreaShop.tagClicker+Message.VARIABLEEND, clicker.getName()));
|
||||
}
|
||||
region.runCommands(Bukkit.getConsoleSender(), consoleCommands);
|
||||
|
||||
|
||||
+20
-14
@@ -6,20 +6,19 @@ import com.sk89q.worldguard.protection.flags.InvalidFlagFormat;
|
||||
import com.sk89q.worldguard.protection.flags.RegionGroupFlag;
|
||||
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
|
||||
import me.wiefferink.areashop.AreaShop;
|
||||
import me.wiefferink.areashop.events.notify.RegionUpdateEvent;
|
||||
import me.wiefferink.areashop.events.notify.UpdateRegionEvent;
|
||||
import me.wiefferink.areashop.messages.Message;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class WorldGuardRegionFlagsFeature extends Feature implements Listener {
|
||||
public class WorldGuardRegionFlagsFeature extends Feature {
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void regionUpdate(RegionUpdateEvent event) {
|
||||
public void regionUpdate(UpdateRegionEvent event) {
|
||||
updateRegionFlags(event.getRegion());
|
||||
}
|
||||
|
||||
@@ -31,19 +30,26 @@ public class WorldGuardRegionFlagsFeature extends Feature implements Listener {
|
||||
protected boolean updateRegionFlags(GeneralRegion region) {
|
||||
boolean result = true;
|
||||
|
||||
// General region flags
|
||||
String allPath = "flagProfiles."+region.getStringSetting("general.flagProfile")+".ALL";
|
||||
ConfigurationSection generalFlags = plugin.getConfig().getConfigurationSection(allPath);
|
||||
if(plugin.getConfig().isSet(allPath) && generalFlags != null) { // Explicitely check if it is set, so don't apply if only in the default config
|
||||
result = updateRegionFlags(region, generalFlags);
|
||||
// Get section defining the region flag profile
|
||||
ConfigurationSection flagProfileSection = region.getConfigurationSectionSetting("general.flagProfile", "flagProfiles");
|
||||
if(flagProfileSection == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Specific region flags
|
||||
String specificPath = "flagProfiles."+region.getStringSetting("general.flagProfile")+"."+region.getState().getValue();
|
||||
if(plugin.getConfig().isSet(specificPath)) { // Do no apply default flags if they are removed from the active config
|
||||
ConfigurationSection specificFlags = plugin.getConfig().getConfigurationSection(specificPath);
|
||||
result = result && specificFlags != null && updateRegionFlags(region, specificFlags);
|
||||
// Region flags for all states
|
||||
String allPath = "flagProfiles."+region.getStringSetting("general.flagProfile")+".ALL";
|
||||
ConfigurationSection allFlags = flagProfileSection.getConfigurationSection("ALL");
|
||||
if(allFlags != null) {
|
||||
result = result && updateRegionFlags(region, allFlags);
|
||||
}
|
||||
|
||||
// Region flags for the current state
|
||||
String specificPath = "flagProfiles."+region.getStringSetting("general.flagProfile")+"."+region.getState().getValue();
|
||||
ConfigurationSection stateFlags = flagProfileSection.getConfigurationSection(region.getState().getValue());
|
||||
if(stateFlags != null) {
|
||||
result = result && updateRegionFlags(region, stateFlags);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
|
||||
@@ -105,7 +105,7 @@ public final class SignChangeListener implements Listener {
|
||||
}
|
||||
ProtectedRegion region = regionManager.getRegion(secondLine);
|
||||
if(region == null) {
|
||||
plugin.message(player, "cmd-notRegistered", secondLine);
|
||||
plugin.message(player, "cmd-noRegion", secondLine);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -219,7 +219,7 @@ public final class SignChangeListener implements Listener {
|
||||
}
|
||||
ProtectedRegion region = regionManager.getRegion(secondLine);
|
||||
if(region == null) {
|
||||
plugin.message(player, "add-noRegion", secondLine);
|
||||
plugin.message(player, "cmd-noRegion", secondLine);
|
||||
return;
|
||||
}
|
||||
FileManager.AddResult addResult = plugin.getFileManager().checkRegionAdd(player, region, GeneralRegion.RegionType.BUY);
|
||||
@@ -290,7 +290,7 @@ public final class SignChangeListener implements Listener {
|
||||
// Get region by secondLine of the sign
|
||||
region = plugin.getFileManager().getRegion(secondLine);
|
||||
if(region == null) {
|
||||
plugin.message(player, "add-noRegion", secondLine);
|
||||
plugin.message(player, "cmd-noRegion", secondLine);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.sk89q.worldguard.protection.regions.ProtectedRegion;
|
||||
import me.wiefferink.areashop.AreaShop;
|
||||
import me.wiefferink.areashop.Utils;
|
||||
import me.wiefferink.areashop.events.notify.AddedRegionEvent;
|
||||
import me.wiefferink.areashop.events.notify.RemovedRegionEvent;
|
||||
import me.wiefferink.areashop.events.notify.DeletedRegionEvent;
|
||||
import me.wiefferink.areashop.regions.BuyRegion;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion.RegionEvent;
|
||||
@@ -335,7 +335,7 @@ public class FileManager {
|
||||
result = true;
|
||||
|
||||
// Broadcast event
|
||||
Bukkit.getPluginManager().callEvent(new RemovedRegionEvent(rent));
|
||||
Bukkit.getPluginManager().callEvent(new DeletedRegionEvent(rent));
|
||||
|
||||
// Run commands
|
||||
rent.runEventCommands(RegionEvent.DELETED, false);
|
||||
@@ -391,7 +391,7 @@ public class FileManager {
|
||||
result = true;
|
||||
|
||||
// Broadcast event
|
||||
Bukkit.getPluginManager().callEvent(new RemovedRegionEvent(buy));
|
||||
Bukkit.getPluginManager().callEvent(new DeletedRegionEvent(buy));
|
||||
|
||||
// Run commands
|
||||
buy.runEventCommands(RegionEvent.DELETED, false);
|
||||
|
||||
@@ -20,7 +20,7 @@ public class FancyMessageFormat {
|
||||
/**
|
||||
* The special character that prefixes all basic chat formatting codes.
|
||||
*/
|
||||
private static final char SIMPLE_FORMAT_PREFIX_CHAR = '\u00A7';
|
||||
private static final char SIMPLE_FORMAT_PREFIX_CHAR = '§';
|
||||
|
||||
/**
|
||||
* Resets all previous chat colors or formats.
|
||||
@@ -71,9 +71,9 @@ public class FancyMessageFormat {
|
||||
* Parses the given FancyMessageFormat message to a JSON array that can be
|
||||
* used with the tellraw command and the like.
|
||||
* @param message The mesage to convert to JSON
|
||||
* @return JSON string that can be send to a player
|
||||
* @return JSON strings that can be send to a player (multiple means line breaks have been used)
|
||||
*/
|
||||
public static String convertToJSON(final String message) {
|
||||
public static List<String> convertToJSON(final String message) {
|
||||
return convertToJSON(Collections.singleton(message));
|
||||
}
|
||||
|
||||
@@ -81,27 +81,41 @@ public class FancyMessageFormat {
|
||||
* Parses the given FancyMessageFormat message to a JSON array that can be
|
||||
* used with the tellraw command and the like.
|
||||
* @param inputLines Input message split at line breaks.
|
||||
* @return JSON string that can be send to a player
|
||||
* @return JSON string that can be send to a player (multiple means line breaks have been used)
|
||||
*/
|
||||
public static String convertToJSON(final Iterable<String> inputLines) {
|
||||
public static List<String> convertToJSON(final Iterable<String> inputLines) {
|
||||
ArrayList<String> lines = cleanInputString(inputLines);
|
||||
|
||||
LinkedList<InteractiveMessagePart> message = parse(lines);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("[");
|
||||
if(message.size() == 1) {
|
||||
sb.append(message.getFirst().toJSON());
|
||||
} else if(message.size() > 0) {
|
||||
sb.append("{\"text\":\"\",\"extra\":[");
|
||||
for(InteractiveMessagePart messagePart : message) {
|
||||
sb.append(messagePart.toJSON());
|
||||
sb.append(',');
|
||||
|
||||
List<String> result = new ArrayList<>();
|
||||
List<InteractiveMessagePart> combine = new ArrayList<>(); // Part that are combined to a line
|
||||
while(!message.isEmpty()) {
|
||||
InteractiveMessagePart part = message.removeFirst();
|
||||
combine.add(part);
|
||||
if(part.newline || message.isEmpty()) {
|
||||
if(combine.size() == 1) {
|
||||
StringBuilder nextLine = new StringBuilder("[");
|
||||
combine.get(0).toJSON(nextLine);
|
||||
nextLine.append("]");
|
||||
result.add(nextLine.toString());
|
||||
} else if(combine.size() > 1) {
|
||||
StringBuilder nextLine = new StringBuilder("[{\"text\":\"\",\"extra\":[");
|
||||
for(int i = 0; i < combine.size(); i++) {
|
||||
// Skip possibly last empty InteractiveMessagePart which has newline set
|
||||
if(!combine.get(i).content.isEmpty()) {
|
||||
if(i != 0) {
|
||||
nextLine.append(",");
|
||||
}
|
||||
combine.get(i).toJSON(nextLine);
|
||||
}
|
||||
}
|
||||
nextLine.append("]}]");
|
||||
result.add(nextLine.toString());
|
||||
}
|
||||
combine.clear();
|
||||
}
|
||||
sb.deleteCharAt(sb.length()-1);
|
||||
sb.append("]}");
|
||||
}
|
||||
sb.append("]");
|
||||
return sb.toString();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -136,7 +150,7 @@ public class FancyMessageFormat {
|
||||
LinkedList<InteractiveMessagePart> parts = parse(inputLines, false);
|
||||
StringBuilder result = new StringBuilder();
|
||||
for(InteractiveMessagePart part : parts) {
|
||||
result.append(part.toSimpleString());
|
||||
part.toSimpleString(result);
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
@@ -156,6 +170,7 @@ public class FancyMessageFormat {
|
||||
}
|
||||
String lineContent = message.remove(line);
|
||||
if(start > lineContent.length() || end > lineContent.length()) {
|
||||
message.add(line, lineContent); // Repair damage
|
||||
return;
|
||||
}
|
||||
if(isTaggedInteractive(lineContent)) {
|
||||
@@ -263,7 +278,6 @@ public class FancyMessageFormat {
|
||||
|
||||
if(isTextLine || isHoverLine) {
|
||||
// Parse inline tags
|
||||
|
||||
Color currentLineColor = currentColor;
|
||||
Set<FormatType> currentLineFormatting = currentFormatting;
|
||||
LinkedList<TextMessagePart> targetList = messagePart.content;
|
||||
@@ -296,7 +310,7 @@ public class FancyMessageFormat {
|
||||
}
|
||||
|
||||
// Add a text part with the correct formatting
|
||||
if((tagged && nextTag.tag == ControlTag.BREAK) || !textToAdd.isEmpty()) {
|
||||
if(!textToAdd.isEmpty()) {
|
||||
TextMessagePart part = new TextMessagePart();
|
||||
part.text = textToAdd;
|
||||
part.formatTypes = new HashSet<>(currentLineFormatting);
|
||||
@@ -315,9 +329,8 @@ public class FancyMessageFormat {
|
||||
} else if(tag instanceof FormatCloseTag) {
|
||||
currentLineFormatting.remove(((FormatCloseTag)tag).closes);
|
||||
} else if(tag == ControlTag.BREAK) {
|
||||
if(!targetList.isEmpty()) {
|
||||
targetList.getLast().text += '\n';
|
||||
}
|
||||
messagePart.newline = true;
|
||||
currentLineFormatting.clear();
|
||||
continue lineLoop;
|
||||
} else if(tag == ControlTag.RESET) {
|
||||
currentLineFormatting.clear();
|
||||
@@ -329,12 +342,18 @@ public class FancyMessageFormat {
|
||||
if(!isHoverLine) {
|
||||
// Adapt global attributes
|
||||
currentColor = currentLineColor;
|
||||
if(messagePart.content.size() == 0) { // Prevent interactive parts without content
|
||||
message.removeLast();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Cleanup empty parts (some parts only affected the formatting of next parts, but do not have actual content)
|
||||
Iterator<InteractiveMessagePart> it = message.iterator();
|
||||
while(it.hasNext()) {
|
||||
InteractiveMessagePart check = it.next();
|
||||
if(check.content.size() == 0 && !check.newline) {
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
return message;
|
||||
}
|
||||
|
||||
@@ -345,12 +364,12 @@ public class FancyMessageFormat {
|
||||
* Null if nothing is found.
|
||||
*/
|
||||
private static TaggedContent getNextTag(String line, boolean parseBreak) {
|
||||
Pattern pattern = Pattern.compile("\\[[/a-zA-Z1-9]+\\]|&[1-9abcdeflonskr]");
|
||||
Pattern pattern = Pattern.compile("\\[[/a-zA-Z1-9]+\\]|[&"+SIMPLE_FORMAT_PREFIX_CHAR+"][1-9abcdeflonskr]");
|
||||
Matcher matcher = pattern.matcher(line);
|
||||
// TODO Fix for escape things, and something with parseBreak?
|
||||
while(matcher.find()) {
|
||||
Tag tag = null;
|
||||
if(matcher.group().startsWith("&")) {
|
||||
if(matcher.group().startsWith("&") || matcher.group().startsWith(SIMPLE_FORMAT_PREFIX_CHAR+"")) {
|
||||
for(Color color : Color.class.getEnumConstants()) {
|
||||
if(color.getNativeFormattingCode() == matcher.group().charAt(1)) {
|
||||
tag = color;
|
||||
@@ -450,21 +469,21 @@ public class FancyMessageFormat {
|
||||
* Produce a string in double quotes with backslash sequences in all the
|
||||
* right places.
|
||||
* @param string A String
|
||||
* @param sb The StringBuilder to add the quoted string to
|
||||
* @return A String correctly formatted for insertion in a JSON text.
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2002 JSON.org
|
||||
* Licensed under the Apache License, Version 2.0
|
||||
*/
|
||||
private static String quoteStringJson(String string) {
|
||||
private static StringBuilder quoteStringJson(String string, StringBuilder sb) {
|
||||
if(string == null || string.length() == 0) {
|
||||
return "\"\"";
|
||||
return new StringBuilder("\"\"");
|
||||
}
|
||||
|
||||
char c;
|
||||
int i;
|
||||
int len = string.length();
|
||||
StringBuilder sb = new StringBuilder(len+4);
|
||||
String t;
|
||||
|
||||
sb.append('"');
|
||||
@@ -506,7 +525,7 @@ public class FancyMessageFormat {
|
||||
}
|
||||
}
|
||||
sb.append('"');
|
||||
return sb.toString();
|
||||
return sb;
|
||||
}
|
||||
|
||||
|
||||
@@ -538,10 +557,10 @@ public class FancyMessageFormat {
|
||||
|
||||
/**
|
||||
* Get a simple colored/formatted string
|
||||
* @return String with formatting
|
||||
* @param sb The StringBuilder to append the result to
|
||||
* @return StringBuilder with the message appended
|
||||
*/
|
||||
String toSimpleString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
StringBuilder toSimpleString(StringBuilder sb) {
|
||||
// Color
|
||||
if(color != null) {
|
||||
sb.append(SIMPLE_FORMAT_PREFIX_CHAR);
|
||||
@@ -554,17 +573,18 @@ public class FancyMessageFormat {
|
||||
}
|
||||
// Text
|
||||
sb.append(text);
|
||||
return sb.toString();
|
||||
return sb;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a JSON component for this message part
|
||||
* @param sb The StringBuilder to append the result to
|
||||
* @return This part formatted in JSON
|
||||
*/
|
||||
String toJSON() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
StringBuilder toJSON(StringBuilder sb) {
|
||||
sb.append('{');
|
||||
sb.append("\"text\":").append(quoteStringJson(text));
|
||||
sb.append("\"text\":");
|
||||
quoteStringJson(text, sb);
|
||||
if(color != null && color != Color.WHITE) {
|
||||
sb.append(",\"color\":\"").append(color.jsonValue).append("\"");
|
||||
}
|
||||
@@ -574,7 +594,7 @@ public class FancyMessageFormat {
|
||||
sb.append("true");
|
||||
}
|
||||
sb.append('}');
|
||||
return sb.toString();
|
||||
return sb;
|
||||
}
|
||||
|
||||
boolean hasFormatting() {
|
||||
@@ -594,6 +614,7 @@ public class FancyMessageFormat {
|
||||
private static class InteractiveMessagePart {
|
||||
|
||||
LinkedList<TextMessagePart> content = new LinkedList<>();
|
||||
boolean newline = false;
|
||||
|
||||
// Click
|
||||
ClickType clickType = null;
|
||||
@@ -604,32 +625,37 @@ public class FancyMessageFormat {
|
||||
LinkedList<TextMessagePart> hoverContent = null;
|
||||
|
||||
/**
|
||||
* Get a simple colored/formatted string
|
||||
* @return String with formatting
|
||||
* Append the message content to the StringBuilder
|
||||
* @param sb The StringBuilder to append the message to
|
||||
*/
|
||||
String toSimpleString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
StringBuilder toSimpleString(StringBuilder sb) {
|
||||
for(TextMessagePart part : content) {
|
||||
sb.append(part.toSimpleString());
|
||||
part.toSimpleString(sb);
|
||||
}
|
||||
return sb.toString();
|
||||
return sb;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a JSON component for this message part
|
||||
* @param sb The StringBuilder to append the result to
|
||||
* @return This part formatted in JSON
|
||||
*/
|
||||
String toJSON() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
StringBuilder toJSON(StringBuilder sb) {
|
||||
// Error case, should never happen, print something as safeguard
|
||||
if(content.size() == 0) {
|
||||
sb.append("{\"text\":\"\"}");
|
||||
return sb;
|
||||
}
|
||||
|
||||
if(content.size() == 1) {
|
||||
// Add attributes to TextMessagePart object
|
||||
sb.append(content.getFirst().toJSON());
|
||||
content.getFirst().toJSON(sb);
|
||||
sb.deleteCharAt(sb.length()-1);
|
||||
} else {
|
||||
sb.append('{');
|
||||
sb.append("\"text\":\"\",\"extra\":[");
|
||||
for(TextMessagePart textPart : content) {
|
||||
sb.append(textPart.toJSON());
|
||||
textPart.toJSON(sb);
|
||||
sb.append(',');
|
||||
}
|
||||
sb.deleteCharAt(sb.length()-1);
|
||||
@@ -639,7 +665,8 @@ public class FancyMessageFormat {
|
||||
sb.append(',');
|
||||
sb.append("\"clickEvent\":{");
|
||||
sb.append("\"action\":\"").append(clickType.getJsonKey()).append("\",");
|
||||
sb.append("\"value\":").append(quoteStringJson(clickContent));
|
||||
sb.append("\"value\":");
|
||||
quoteStringJson(clickContent, sb);
|
||||
sb.append('}');
|
||||
}
|
||||
if(hoverType != null) {
|
||||
@@ -650,14 +677,14 @@ public class FancyMessageFormat {
|
||||
if(hoverContent.size() == 1) {
|
||||
TextMessagePart hoverPart = hoverContent.getFirst();
|
||||
if(hoverPart.hasFormatting()) {
|
||||
sb.append(hoverPart.toJSON());
|
||||
hoverPart.toJSON(sb);
|
||||
} else {
|
||||
sb.append(quoteStringJson(hoverPart.text));
|
||||
quoteStringJson(hoverPart.text, sb);
|
||||
}
|
||||
} else {
|
||||
sb.append('[');
|
||||
for(TextMessagePart hoverPart : hoverContent) {
|
||||
sb.append(hoverPart.toJSON());
|
||||
hoverPart.toJSON(sb);
|
||||
sb.append(',');
|
||||
}
|
||||
sb.deleteCharAt(sb.length()-1);
|
||||
@@ -666,12 +693,12 @@ public class FancyMessageFormat {
|
||||
sb.append('}');
|
||||
}
|
||||
sb.append('}');
|
||||
return sb.toString();
|
||||
return sb;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "InteractiveMessagePart(textMessageParts:"+content+", clickType:"+clickType+", clickContent:"+clickContent+", hoverType:"+hoverType+", hoverContent:"+hoverContent+")";
|
||||
return "InteractiveMessagePart(textMessageParts:"+content+", clickType:"+clickType+", clickContent:"+clickContent+", hoverType:"+hoverType+", hoverContent:"+hoverContent+", newline:"+newline+")";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import java.util.*;
|
||||
|
||||
public class LanguageManager {
|
||||
private AreaShop plugin = null;
|
||||
private String languages[] = {"EN", "NL", "FR", "DE", "NO", "RU"};
|
||||
private String languages[] = {"EN", "NL", "FR", "DE", "RU", "SV", "NO"};
|
||||
private Map<String, List<String>> currentLanguage, defaultLanguage;
|
||||
|
||||
/**
|
||||
@@ -19,14 +19,6 @@ public class LanguageManager {
|
||||
*/
|
||||
public LanguageManager(AreaShop plugin) {
|
||||
this.plugin = plugin;
|
||||
startup();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the default language files and open the current and backup language file
|
||||
*/
|
||||
public void startup() {
|
||||
this.saveDefaults();
|
||||
currentLanguage = loadLanguage(plugin.getConfig().getString("language"));
|
||||
defaultLanguage = loadLanguage(languages[0]);
|
||||
|
||||
@@ -2,7 +2,7 @@ package me.wiefferink.areashop.messages;
|
||||
|
||||
import me.wiefferink.areashop.AreaShop;
|
||||
import me.wiefferink.areashop.Utils;
|
||||
import me.wiefferink.areashop.regions.GeneralRegion;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.lang.exception.ExceptionUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@@ -28,6 +28,7 @@ public class Message {
|
||||
private List<String> message;
|
||||
private Object[] replacements;
|
||||
private String key = null;
|
||||
private boolean doLanguageReplacements = true;
|
||||
|
||||
/**
|
||||
* Internal use only
|
||||
@@ -40,7 +41,7 @@ public class Message {
|
||||
* Empty message object
|
||||
* @return this
|
||||
*/
|
||||
public static Message none() {
|
||||
public static Message empty() {
|
||||
return new Message();
|
||||
}
|
||||
|
||||
@@ -76,7 +77,7 @@ public class Message {
|
||||
* @return Message as a list
|
||||
*/
|
||||
public List<String> get() {
|
||||
executeReplacements();
|
||||
doReplacements();
|
||||
return message;
|
||||
}
|
||||
|
||||
@@ -89,10 +90,19 @@ public class Message {
|
||||
if(limit.reached()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
executeReplacements(limit);
|
||||
doReplacements(limit);
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the message with all replacements done
|
||||
* @return Message as a string
|
||||
*/
|
||||
public String getSingle() {
|
||||
doReplacements();
|
||||
return StringUtils.join(message, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the raw message without replacing anything
|
||||
* @return The message
|
||||
@@ -101,12 +111,20 @@ public class Message {
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get raw message as string
|
||||
* @return The raw message
|
||||
*/
|
||||
public String getSingleRaw() {
|
||||
return StringUtils.join(message, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a plain string for the message (for example for using in the console)
|
||||
* @return The message as simple string
|
||||
*/
|
||||
public String getPlain() {
|
||||
executeReplacements();
|
||||
doReplacements();
|
||||
return FancyMessageFormat.convertToConsole(message);
|
||||
}
|
||||
|
||||
@@ -168,6 +186,15 @@ public class Message {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turn off language replacements for this message
|
||||
* @return this
|
||||
*/
|
||||
public Message noLanguageReplacements() {
|
||||
doLanguageReplacements = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send the message to a target
|
||||
* @param target The target to send the message to (Player, CommandSender, Logger)
|
||||
@@ -177,22 +204,25 @@ public class Message {
|
||||
if(message == null || message.size() == 0 || (message.size() == 1 && message.get(0).length() == 0) || target == null) {
|
||||
return this;
|
||||
}
|
||||
executeReplacements();
|
||||
doReplacements();
|
||||
if(target instanceof Player) {
|
||||
boolean sendPlain = true;
|
||||
if(AreaShop.getInstance().getConfig().getBoolean("useFancyMessages") && fancyWorks) {
|
||||
try {
|
||||
String jsonString = FancyMessageFormat.convertToJSON(message);
|
||||
if(jsonString.length() > MAXIMUMJSONLENGTH) {
|
||||
AreaShop.getInstance().getLogger().severe("Message with key "+key+" could not be send, results in a JSON string that is too big to send to the client, start of the message: "+Utils.getMessageStart(this, 100));
|
||||
return this;
|
||||
boolean result = true;
|
||||
List<String> jsonMessages = FancyMessageFormat.convertToJSON(message);
|
||||
for(String jsonMessage : jsonMessages) {
|
||||
if(jsonMessage.length() > MAXIMUMJSONLENGTH) {
|
||||
AreaShop.error("Message with key", key, "could not be send, results in a JSON string that is too big to send to the client, start of the message:", Utils.getMessageStart(this, 100));
|
||||
return this;
|
||||
}
|
||||
result &= Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tellraw "+((Player)target).getName()+" "+jsonMessage);
|
||||
}
|
||||
boolean result = Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tellraw "+((Player)target).getName()+" "+jsonString);
|
||||
sendPlain = !result;
|
||||
fancyWorks = result;
|
||||
} catch(Exception e) {
|
||||
fancyWorks = false;
|
||||
AreaShop.getInstance().getLogger().warning("Sending fancy message did not work, falling back to plain messages. Message key: "+key);
|
||||
AreaShop.error("Sending fancy message did not work, falling back to plain messages. Message key:", key);
|
||||
AreaShop.debug(ExceptionUtils.getStackTrace(e));
|
||||
}
|
||||
}
|
||||
@@ -209,7 +239,7 @@ public class Message {
|
||||
} else if(target instanceof Logger) {
|
||||
((Logger)target).info(plainMessage);
|
||||
} else {
|
||||
AreaShop.getInstance().getLogger().warning("Could not send message, target is wrong: "+plainMessage);
|
||||
AreaShop.warn("Could not send message, target is wrong: "+plainMessage);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
@@ -254,12 +284,13 @@ public class Message {
|
||||
|
||||
/**
|
||||
* Apply all replacements to the message
|
||||
* @return this
|
||||
*/
|
||||
private void executeReplacements() {
|
||||
executeReplacements(new Limit(REPLACEMENTLIMIT, this));
|
||||
public Message doReplacements() {
|
||||
return doReplacements(new Limit(REPLACEMENTLIMIT, this));
|
||||
}
|
||||
|
||||
private void executeReplacements(Limit limit) {
|
||||
private Message doReplacements(Limit limit) {
|
||||
// Replace variables until they are all gone, or when the limit is reached
|
||||
Pattern variable = Pattern.compile(Pattern.quote(VARIABLESTART)+"[a-zA-Z]+"+Pattern.quote(VARIABLEEND));
|
||||
|
||||
@@ -272,20 +303,23 @@ public class Message {
|
||||
if(limit.reached()) {
|
||||
if(!limit.notified) {
|
||||
limit.notified = true;
|
||||
AreaShop.getInstance().getLogger().severe("Reached replacement limit, probably has replacements loops, problematic message key: "+limit.message.key+", first characters of the message: "+Utils.getMessageStart(limit.message, 100));
|
||||
AreaShop.error("Reached replacement limit, probably has replacements loops, problematic message key: "+limit.message.key+", first characters of the message: "+Utils.getMessageStart(limit.message, 100));
|
||||
}
|
||||
break;
|
||||
}
|
||||
replaceArgumentVariables(limit);
|
||||
replaceLanguageVariables(limit);
|
||||
if(doLanguageReplacements) {
|
||||
replaceLanguageVariables(limit);
|
||||
}
|
||||
|
||||
shouldReplace = !message.equals(original);
|
||||
}
|
||||
} catch(StackOverflowError e) {
|
||||
limit.left = 0;
|
||||
limit.notified = true;
|
||||
AreaShop.getInstance().getLogger().severe("Too many recursive replacements for message with key: "+limit.message.key+" (probably includes itself as replacement), start of the message: "+Utils.getMessageStart(limit.message, 100));
|
||||
AreaShop.error("Too many recursive replacements for message with key: "+limit.message.key+" (probably includes itself as replacement), start of the message: "+Utils.getMessageStart(limit.message, 100));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -298,23 +332,38 @@ public class Message {
|
||||
if(message == null || message.size() == 0 || replacements == null || limit.reached()) {
|
||||
return;
|
||||
}
|
||||
boolean result = false;
|
||||
Pattern variablePattern = Pattern.compile(Pattern.quote(VARIABLESTART)+"[a-zA-Z]+"+Pattern.quote(VARIABLEEND));
|
||||
for(int i = 0; i < message.size(); i++) {
|
||||
int number = 0;
|
||||
for(Object param : replacements) {
|
||||
String line = message.get(i);
|
||||
if(param != null) {
|
||||
if(param instanceof GeneralRegion) {
|
||||
message.set(i, ((GeneralRegion)param).applyAllReplacements(message.get(i)));
|
||||
if(param instanceof ReplacementProvider) {
|
||||
Matcher matcher = variablePattern.matcher(line);
|
||||
if(matcher.find()) {
|
||||
Object replacement = ((ReplacementProvider)param).provideReplacement(matcher.group().substring(1, matcher.group().length()-1));
|
||||
if(replacement != null) {
|
||||
String result = "";
|
||||
if(matcher.start() > 0) {
|
||||
result += line.substring(0, matcher.start());
|
||||
}
|
||||
result += replacement.toString();
|
||||
if(matcher.end() < line.length()) {
|
||||
result += line.substring(matcher.end());
|
||||
}
|
||||
message.set(i, result);
|
||||
}
|
||||
}
|
||||
} else if(param instanceof Message) {
|
||||
Pattern variables = Pattern.compile(Pattern.quote(VARIABLESTART)+number+Pattern.quote(VARIABLEEND));
|
||||
Matcher matches = variables.matcher(message.get(i));
|
||||
if(matches.find()) { // Only replaces one occurance of the variable, others will be done next round
|
||||
Pattern indexPattern = Pattern.compile(Pattern.quote(VARIABLESTART)+number+Pattern.quote(VARIABLEEND));
|
||||
Matcher matcher = indexPattern.matcher(line);
|
||||
if(matcher.find()) { // Only replaces one occurance of the variable, others will be done next round
|
||||
int startDiff = message.size()-i;
|
||||
List<String> insertMessage = ((Message)param).get(limit);
|
||||
if(limit.reached()) {
|
||||
return;
|
||||
}
|
||||
FancyMessageFormat.insertMessage(message, insertMessage, i, matches.start(), matches.end());
|
||||
FancyMessageFormat.insertMessage(message, insertMessage, i, matcher.start(), matcher.end());
|
||||
// Skip to end of insert
|
||||
i = message.size()-startDiff;
|
||||
}
|
||||
@@ -350,10 +399,10 @@ public class Message {
|
||||
String key;
|
||||
Object[] arguments = null;
|
||||
if(variable.contains("|")) {
|
||||
key = variable.substring(6, variable.indexOf("|"));
|
||||
arguments = variable.substring(variable.indexOf("|")+1, variable.length()-1).split("\\|");
|
||||
key = variable.substring(VARIABLESTART.length()+LANGUAGEVARIABLE.length(), variable.indexOf("|"));
|
||||
arguments = variable.substring(variable.indexOf("|")+1, variable.length()-VARIABLEEND.length()).split("\\|");
|
||||
} else {
|
||||
key = variable.substring(6, variable.length()-1);
|
||||
key = variable.substring(VARIABLESTART.length()+LANGUAGEVARIABLE.length(), variable.length()-VARIABLEEND.length());
|
||||
}
|
||||
Message insert = Message.fromKey(key);
|
||||
if(arguments != null) {
|
||||
@@ -404,4 +453,16 @@ public class Message {
|
||||
return left <= 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Provide custom replacement for variables
|
||||
*/
|
||||
public interface ReplacementProvider {
|
||||
/**
|
||||
* Get the replacement for a variable
|
||||
* @param variable The variable to replace
|
||||
* @return The replacement for the variable, or null if empty
|
||||
*/
|
||||
Object provideReplacement(String variable);
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,6 @@ import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
|
||||
public class BuyRegion extends GeneralRegion {
|
||||
@@ -46,6 +45,11 @@ public class BuyRegion extends GeneralRegion {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable() {
|
||||
return !isSold();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the UUID of the owner of this region
|
||||
* @return The UUID of the owner of this region
|
||||
@@ -207,27 +211,34 @@ public class BuyRegion extends GeneralRegion {
|
||||
public String getFormattedMoneyBackAmount() {
|
||||
return Utils.formatCurrency(getMoneyBackAmount());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public HashMap<String, Object> getSpecificReplacements() {
|
||||
// Fill the replacements map with things specific to a BuyRegion
|
||||
HashMap<String, Object> result = new HashMap<>();
|
||||
result.put(AreaShop.tagPrice, getFormattedPrice());
|
||||
result.put(AreaShop.tagRawPrice, getPrice());
|
||||
result.put(AreaShop.tagPlayerName, getPlayerName());
|
||||
result.put(AreaShop.tagPlayerUUID, getBuyer());
|
||||
result.put(AreaShop.tagResellPrice, getFormattedResellPrice());
|
||||
result.put(AreaShop.tagRawResellPrice, getResellPrice());
|
||||
result.put(AreaShop.tagMoneyBackAmount, getFormattedMoneyBackAmount());
|
||||
result.put(AreaShop.tagRawMoneyBackAmount, getMoneyBackAmount());
|
||||
double moneyBackPercent = getMoneyBackPercentage();
|
||||
if((moneyBackPercent%1.0) == 0.0) {
|
||||
result.put(AreaShop.tagMoneyBackPercentage, (int)moneyBackPercent);
|
||||
} else {
|
||||
result.put(AreaShop.tagMoneyBackPercentage, moneyBackPercent);
|
||||
public Object provideReplacement(String variable) {
|
||||
switch(variable) {
|
||||
case AreaShop.tagPrice:
|
||||
return getFormattedPrice();
|
||||
case AreaShop.tagRawPrice:
|
||||
return getPrice();
|
||||
case AreaShop.tagPlayerName:
|
||||
return getPlayerName();
|
||||
case AreaShop.tagPlayerUUID:
|
||||
return getBuyer();
|
||||
case AreaShop.tagResellPrice:
|
||||
return getFormattedResellPrice();
|
||||
case AreaShop.tagRawResellPrice:
|
||||
return getResellPrice();
|
||||
case AreaShop.tagMoneyBackAmount:
|
||||
return getFormattedMoneyBackAmount();
|
||||
case AreaShop.tagRawMoneyBackAmount:
|
||||
return getMoneyBackAmount();
|
||||
case AreaShop.tagMoneyBackPercentage:
|
||||
return getMoneyBackPercentage()%1.0 == 0.0 ? (int)getMoneyBackPercentage() : getMoneyBackPercentage();
|
||||
case AreaShop.tagMaxInactiveTime:
|
||||
return this.getFormattedInactiveTimeUntilSell();
|
||||
|
||||
default:
|
||||
return super.provideReplacement(variable);
|
||||
}
|
||||
result.put(AreaShop.tagMaxInactiveTime, this.getFormattedInactiveTimeUntilSell());
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -5,8 +5,8 @@ import com.sk89q.worldguard.protection.flags.DefaultFlag;
|
||||
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
|
||||
import me.wiefferink.areashop.AreaShop;
|
||||
import me.wiefferink.areashop.Utils;
|
||||
import me.wiefferink.areashop.events.NotifyAreaShopEvent;
|
||||
import me.wiefferink.areashop.events.notify.RegionUpdateEvent;
|
||||
import me.wiefferink.areashop.events.NotifyRegionEvent;
|
||||
import me.wiefferink.areashop.events.notify.UpdateRegionEvent;
|
||||
import me.wiefferink.areashop.features.FriendsFeature;
|
||||
import me.wiefferink.areashop.features.SignsFeature;
|
||||
import me.wiefferink.areashop.interfaces.GeneralRegionInterface;
|
||||
@@ -18,8 +18,10 @@ import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.io.File;
|
||||
@@ -27,7 +29,7 @@ import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
public abstract class GeneralRegion implements GeneralRegionInterface, Comparable<GeneralRegion> {
|
||||
public abstract class GeneralRegion implements GeneralRegionInterface, Comparable<GeneralRegion>, Message.ReplacementProvider {
|
||||
YamlConfiguration config;
|
||||
private static ArrayList<Material> canSpawnIn = new ArrayList<>(Arrays.asList(Material.WOOD_DOOR, Material.WOODEN_DOOR, Material.SIGN_POST, Material.WALL_SIGN, Material.STONE_PLATE, Material.IRON_DOOR_BLOCK, Material.WOOD_PLATE, Material.TRAP_DOOR, Material.REDSTONE_LAMP_OFF, Material.REDSTONE_LAMP_ON, Material.DRAGON_EGG, Material.GOLD_PLATE, Material.IRON_PLATE));
|
||||
private static ArrayList<Material> cannotSpawnOn = new ArrayList<>(Arrays.asList(Material.PISTON_EXTENSION, Material.PISTON_MOVING_PIECE, Material.SIGN_POST, Material.WALL_SIGN, Material.STONE_PLATE, Material.IRON_DOOR_BLOCK, Material.WOOD_PLATE, Material.TRAP_DOOR, Material.REDSTONE_LAMP_OFF, Material.REDSTONE_LAMP_ON, Material.CACTUS, Material.IRON_FENCE, Material.FENCE_GATE, Material.THIN_GLASS, Material.NETHER_FENCE, Material.DRAGON_EGG, Material.GOLD_PLATE, Material.IRON_PLATE, Material.STAINED_GLASS_PANE));
|
||||
@@ -36,9 +38,6 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
private boolean saveRequired = false;
|
||||
private boolean deleted = false;
|
||||
|
||||
private HashMap<String, Object> replacementsCache = null;
|
||||
private long replacementsCacheTime = 0;
|
||||
|
||||
// Features
|
||||
private FriendsFeature friendsFeature;
|
||||
private SignsFeature signsFeature;
|
||||
@@ -176,6 +175,12 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
*/
|
||||
public abstract RegionType getType();
|
||||
|
||||
/**
|
||||
* Get the region availability
|
||||
* @return true/false if region cant be rented or sell
|
||||
*/
|
||||
public abstract boolean isAvailable();
|
||||
|
||||
// Sorting by name
|
||||
|
||||
/**
|
||||
@@ -211,24 +216,18 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
* This will update region flags, signs, etc.
|
||||
*/
|
||||
public void update() {
|
||||
Bukkit.getServer().getPluginManager().callEvent(new RegionUpdateEvent(this));
|
||||
Bukkit.getServer().getPluginManager().callEvent(new UpdateRegionEvent(this));
|
||||
}
|
||||
|
||||
/**
|
||||
* Broadcast the given event and update the region status
|
||||
* @param event The update event that should be broadcasted
|
||||
*/
|
||||
public void notifyAndUpdate(NotifyAreaShopEvent event) {
|
||||
public void notifyAndUpdate(NotifyRegionEvent event) {
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
update();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the tag replacements, used in commands or signs
|
||||
* @return A map with strings like '%region%' linking to the value to replace it with
|
||||
*/
|
||||
public abstract HashMap<String, Object> getSpecificReplacements();
|
||||
|
||||
|
||||
/**
|
||||
* Get the state of a region
|
||||
* @return The RegionState of the region
|
||||
@@ -283,14 +282,7 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
public boolean isRestoreEnabled() {
|
||||
return getBooleanSetting("general.enableRestore");
|
||||
}
|
||||
/**
|
||||
* Get the restoreprofile as defined in config.yml
|
||||
* @return The restoreprofile
|
||||
*/
|
||||
public String getRestoreProfile() {
|
||||
return getStringSetting("general.schematicProfile");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the time that the player was last active
|
||||
* @return Current time if he is online, last online time if offline, -1 if the region has no owner
|
||||
@@ -508,85 +500,88 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all the replacements for this region
|
||||
* @return Map with the keys that need to be replaced with the value of the object
|
||||
*/
|
||||
public HashMap<String, Object> getAllReplacements() {
|
||||
// Reply with cache if we have one
|
||||
if(replacementsCache != null && (Calendar.getInstance().getTimeInMillis() - replacementsCacheTime) < 1000) {
|
||||
return replacementsCache;
|
||||
}
|
||||
|
||||
HashMap<String, Object> result = getSpecificReplacements();
|
||||
|
||||
result.put(AreaShop.tagRegionName, getName());
|
||||
result.put(AreaShop.tagRegionType, getType().getValue().toLowerCase());
|
||||
result.put(AreaShop.tagWorldName, getWorldName());
|
||||
result.put(AreaShop.tagWidth, getWidth());
|
||||
result.put(AreaShop.tagDepth, getDepth());
|
||||
result.put(AreaShop.tagHeight, getHeight());
|
||||
result.put(AreaShop.tagFriends, Utils.createCommaSeparatedList(getFriendsFeature().getFriendNames()));
|
||||
result.put(AreaShop.tagFriendsUUID, Utils.createCommaSeparatedList(getFriendsFeature().getFriends()));
|
||||
result.put(AreaShop.tagLandlord, getLandlordName());
|
||||
result.put(AreaShop.tagLandlordUUID, getLandlord());
|
||||
// Date/time stuff
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
result.put(AreaShop.tagEpoch, calendar.getTimeInMillis());
|
||||
result.put(AreaShop.tagMillisecond, calendar.get(Calendar.MILLISECOND));
|
||||
result.put(AreaShop.tagSecond, calendar.get(Calendar.SECOND));
|
||||
result.put(AreaShop.tagMinute, calendar.get(Calendar.MINUTE));
|
||||
result.put(AreaShop.tagHour, calendar.get(Calendar.HOUR_OF_DAY));
|
||||
result.put(AreaShop.tagDay, calendar.get(Calendar.DAY_OF_MONTH));
|
||||
result.put(AreaShop.tagMonth, calendar.get(Calendar.MONTH));
|
||||
result.put(AreaShop.tagYear, calendar.get(Calendar.YEAR));
|
||||
// In specified format
|
||||
SimpleDateFormat date = new SimpleDateFormat(plugin.getConfig().getString("timeFormatChat"));
|
||||
String dateString = date.format(Calendar.getInstance().getTime());
|
||||
result.put(AreaShop.tagDateTime, dateString);
|
||||
date = new SimpleDateFormat(plugin.getConfig().getString("timeFormatSign"));
|
||||
dateString = date.format(Calendar.getInstance().getTime());
|
||||
result.put(AreaShop.tagDateTimeShort, dateString);
|
||||
// Teleport location
|
||||
Location tp = getTeleportLocation();
|
||||
if(tp != null) {
|
||||
result.put(AreaShop.tagTeleportBlockX, tp.getBlockX());
|
||||
result.put(AreaShop.tagTeleportBlockY, tp.getBlockY());
|
||||
result.put(AreaShop.tagTeleportBlockZ, tp.getBlockZ());
|
||||
result.put(AreaShop.tagTeleportX, tp.getX());
|
||||
result.put(AreaShop.tagTeleportY, tp.getY());
|
||||
result.put(AreaShop.tagTeleportZ, tp.getZ());
|
||||
result.put(AreaShop.tagTeleportPitch, tp.getPitch());
|
||||
result.put(AreaShop.tagTeleportYaw, tp.getYaw());
|
||||
result.put(AreaShop.tagTeleportPitchRound, Math.round(tp.getPitch()));
|
||||
result.put(AreaShop.tagTeleportYawRound, Math.round(tp.getYaw()));
|
||||
result.put(AreaShop.tagTeleportWorld, tp.getWorld().getName());
|
||||
}
|
||||
|
||||
replacementsCache = result;
|
||||
replacementsCacheTime = Calendar.getInstance().getTimeInMillis();
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies all replacements to the given string
|
||||
* @param source The source string to replace things in
|
||||
* @return The result string with all the replacements applied
|
||||
*/
|
||||
public String applyAllReplacements(String source) {
|
||||
if(source == null || source.length() == 0) {
|
||||
return "";
|
||||
@Override
|
||||
public Object provideReplacement(String variable) {
|
||||
switch(variable) {
|
||||
|
||||
// Basics
|
||||
case AreaShop.tagRegionName:
|
||||
return getName();
|
||||
case AreaShop.tagRegionType:
|
||||
return getType().getValue().toLowerCase();
|
||||
case AreaShop.tagWorldName:
|
||||
return getWorldName();
|
||||
case AreaShop.tagWidth:
|
||||
return getWidth();
|
||||
case AreaShop.tagDepth:
|
||||
return getDepth();
|
||||
case AreaShop.tagHeight:
|
||||
return getHeight();
|
||||
case AreaShop.tagFriends:
|
||||
return Utils.createCommaSeparatedList(getFriendsFeature().getFriendNames());
|
||||
case AreaShop.tagFriendsUUID:
|
||||
return Utils.createCommaSeparatedList(getFriendsFeature().getFriends());
|
||||
case AreaShop.tagLandlord:
|
||||
return getLandlordName();
|
||||
case AreaShop.tagLandlordUUID:
|
||||
return getLandlord();
|
||||
|
||||
// Date/time
|
||||
case AreaShop.tagEpoch:
|
||||
return Calendar.getInstance().getTimeInMillis();
|
||||
case AreaShop.tagMillisecond:
|
||||
return Calendar.getInstance().get(Calendar.MILLISECOND);
|
||||
case AreaShop.tagSecond:
|
||||
return Calendar.getInstance().get(Calendar.SECOND);
|
||||
case AreaShop.tagMinute:
|
||||
return Calendar.getInstance().get(Calendar.MINUTE);
|
||||
case AreaShop.tagHour:
|
||||
return Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
|
||||
case AreaShop.tagDay:
|
||||
return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
|
||||
case AreaShop.tagMonth:
|
||||
return Calendar.getInstance().get(Calendar.MONTH);
|
||||
case AreaShop.tagYear:
|
||||
return Calendar.getInstance().get(Calendar.YEAR);
|
||||
case AreaShop.tagDateTime:
|
||||
return new SimpleDateFormat(plugin.getConfig().getString("timeFormatChat")).format(Calendar.getInstance().getTime());
|
||||
case AreaShop.tagDateTimeShort:
|
||||
return new SimpleDateFormat(plugin.getConfig().getString("timeFormatSign")).format(Calendar.getInstance().getTime());
|
||||
|
||||
// Teleport locations
|
||||
default:
|
||||
Location tp = getTeleportLocation();
|
||||
if(tp == null) {
|
||||
return null;
|
||||
}
|
||||
switch(variable) {
|
||||
case AreaShop.tagTeleportBlockX:
|
||||
return tp.getBlockX();
|
||||
case AreaShop.tagTeleportBlockY:
|
||||
return tp.getBlockY();
|
||||
case AreaShop.tagTeleportBlockZ:
|
||||
return tp.getBlockZ();
|
||||
case AreaShop.tagTeleportX:
|
||||
return tp.getX();
|
||||
case AreaShop.tagTeleportY:
|
||||
return tp.getY();
|
||||
case AreaShop.tagTeleportZ:
|
||||
return tp.getZ();
|
||||
case AreaShop.tagTeleportPitch:
|
||||
return tp.getPitch();
|
||||
case AreaShop.tagTeleportYaw:
|
||||
return tp.getYaw();
|
||||
case AreaShop.tagTeleportPitchRound:
|
||||
return Math.round(tp.getPitch());
|
||||
case AreaShop.tagTeleportYawRound:
|
||||
return Math.round(tp.getYaw());
|
||||
case AreaShop.tagTeleportWorld:
|
||||
return tp.getWorld().getName();
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
// Apply static replacements
|
||||
HashMap<String, Object> replacements = getAllReplacements();
|
||||
for(String tag : replacements.keySet()) {
|
||||
Object replacement = replacements.get(tag);
|
||||
if(replacement != null) {
|
||||
source = source.replace(tag, replacement.toString());
|
||||
}
|
||||
}
|
||||
return source;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -700,7 +695,7 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
File parent = saveFile.getParentFile();
|
||||
if (parent != null && !parent.exists()) {
|
||||
if (!parent.mkdirs()) {
|
||||
AreaShop.warn("Did not save region "+getName()+", schematic directory could not be created: "+saveFile);
|
||||
AreaShop.warn("Did not save region "+getName()+", schematic directory could not be created: "+saveFile.getAbsolutePath());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -724,12 +719,20 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
// The path to save the schematic
|
||||
File restoreFile = new File(plugin.getFileManager().getSchematicFolder() + File.separator + fileName + AreaShop.schematicExtension);
|
||||
if(!restoreFile.exists() || !restoreFile.isFile()) {
|
||||
AreaShop.info("Did not restore region "+getName()+", schematic file does not exist: "+restoreFile);
|
||||
AreaShop.info("Did not restore region "+getName()+", schematic file does not exist: "+restoreFile.getAbsolutePath());
|
||||
return false;
|
||||
}
|
||||
boolean result = plugin.getWorldEditHandler().restoreRegionBlocks(restoreFile, this);
|
||||
if(result) {
|
||||
AreaShop.debug("Restored schematic for region " + getName());
|
||||
|
||||
// Workaround for signs inside the region in combination with async restore of plugins like AsyncWorldEdit and FastAsyncWorldEdit
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getSignsFeature().update();
|
||||
}
|
||||
}.runTaskLater(plugin, 10L);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -749,7 +752,6 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
* Indicate this region needs to be saved, saving will happen by a repeating task
|
||||
*/
|
||||
public void saveRequired() {
|
||||
replacementsCache = null; // Remove cache
|
||||
saveRequired = true;
|
||||
}
|
||||
|
||||
@@ -804,6 +806,7 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
int checked = 1;
|
||||
boolean owner;
|
||||
boolean friend = getFriendsFeature().getFriends().contains(player.getUniqueId());
|
||||
boolean available = isAvailable();
|
||||
Location startLocation = null;
|
||||
ProtectedRegion region = getRegion();
|
||||
if(getWorld() == null) {
|
||||
@@ -820,33 +823,41 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
owner = player.getUniqueId().equals(((BuyRegion)this).getBuyer());
|
||||
}
|
||||
|
||||
|
||||
if(checkPermissions) {
|
||||
// Teleport to sign instead if they dont have permission for teleporting to region
|
||||
if( (!toSign && owner && !player.hasPermission("areashop.teleport") && player.hasPermission("areashop.teleportsign")
|
||||
|| !toSign && !owner && !friend && !player.hasPermission("areashop.teleportall") && player.hasPermission("areashop.teleportsignall")
|
||||
|| !toSign && !owner && friend && !player.hasPermission("areashop.teleportfriend") && player.hasPermission("areashop.teleportfriendsign"))) {
|
||||
|| !toSign && !owner && friend && !player.hasPermission("areashop.teleportfriend") && player.hasPermission("areashop.teleportfriendsign")
|
||||
|| !toSign && !owner && !friend && available && !player.hasPermission("areashop.teleportavailable") && player.hasPermission("areashop.teleportavailablesign"))) {
|
||||
message(player, "teleport-changedToSign");
|
||||
toSign = true;
|
||||
}
|
||||
// Check permissions
|
||||
if(owner && !player.hasPermission("areashop.teleport") && !toSign) {
|
||||
if(owner && !available && !player.hasPermission("areashop.teleport") && !toSign) {
|
||||
message(player, "teleport-noPermission");
|
||||
return false;
|
||||
} else if(!owner && !player.hasPermission("areashop.teleportall") && !toSign && !friend) {
|
||||
} else if(!owner && !available && !player.hasPermission("areashop.teleportall") && !toSign && !friend) {
|
||||
message(player, "teleport-noPermissionOther");
|
||||
return false;
|
||||
} else if(!owner && !player.hasPermission("areashop.teleportfriend") && !toSign && friend) {
|
||||
} else if(!owner && !available && !player.hasPermission("areashop.teleportfriend") && !toSign && friend) {
|
||||
message(player, "teleport-noPermissionFriend");
|
||||
return false;
|
||||
} else if(owner && !player.hasPermission("areashop.teleportsign") && toSign) {
|
||||
} else if(available && !player.hasPermission("areashop.teleportavailable") && !toSign) {
|
||||
message(player, "teleport-noPermissionAvailable");
|
||||
return false;
|
||||
} else if(owner && !available && !player.hasPermission("areashop.teleportsign") && toSign) {
|
||||
message(player, "teleport-noPermissionSign");
|
||||
return false;
|
||||
} else if(!owner && !player.hasPermission("areashop.teleportsignall") && toSign && !friend) {
|
||||
} else if(!owner && !available && !player.hasPermission("areashop.teleportsignall") && toSign && !friend) {
|
||||
message(player, "teleport-noPermissionOtherSign");
|
||||
return false;
|
||||
} else if(!owner && !player.hasPermission("areashop.teleportfriendsign") && toSign && friend) {
|
||||
} else if(!owner && !available && !player.hasPermission("areashop.teleportfriendsign") && toSign && friend) {
|
||||
message(player, "teleport-noPermissionFriendSign");
|
||||
return false;
|
||||
} else if(available && !player.hasPermission("areashop.teleportavailablesign") && toSign) {
|
||||
message(player, "teleport-noPermissionAvailableSign");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1388,6 +1399,89 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
return this.getFileManager().getDefaultSettings().getStringList(path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a configuration section setting for this region, defined as follows
|
||||
* - If the region has the setting in its own file (/regions/regionName.yml), use that
|
||||
* - If the region has groups, use the setting defined by the most important group, if any
|
||||
* - Otherwise fallback to the default.yml file setting
|
||||
* @param path The path to get the setting of
|
||||
* @return The value of the setting
|
||||
*/
|
||||
public ConfigurationSection getConfigurationSectionSetting(String path) {
|
||||
if(config.isSet(path)) {
|
||||
return config.getConfigurationSection(path);
|
||||
}
|
||||
ConfigurationSection result = null;
|
||||
int priority = Integer.MIN_VALUE;
|
||||
boolean found = false;
|
||||
for(RegionGroup group : plugin.getFileManager().getGroups()) {
|
||||
if(group.isMember(this) && group.getSettings().isSet(path) && group.getPriority() > priority) {
|
||||
result = group.getSettings().getConfigurationSection(path);
|
||||
priority = group.getPriority();
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
if(found) {
|
||||
return result;
|
||||
}
|
||||
return this.getFileManager().getDefaultSettings().getConfigurationSection(path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a configuration section setting for this region, defined as follows
|
||||
* - If the region has the setting in its own file (/regions/regionName.yml), use that
|
||||
* - If the region has groups, use the setting defined by the most important group, if any
|
||||
* - Otherwise fallback to the default.yml file setting
|
||||
* @param path The path to get the setting of
|
||||
* @param translateProfileName The name of the profile section in the plugin config file to translate result strings into sections
|
||||
* @return The value of the setting
|
||||
*/
|
||||
public ConfigurationSection getConfigurationSectionSetting(String path, String translateProfileName) {
|
||||
return getConfigurationSectionSetting(path, translateProfileName, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a configuration section setting for this region, defined as follows
|
||||
* - If earlyResult is non-null, use that
|
||||
* - Else if the region has the setting in its own file (/regions/regionName.yml), use that
|
||||
* - Else if the region has groups, use the setting defined by the most important group, if any
|
||||
* - Otherwise fallback to the default.yml file setting
|
||||
* @param path The path to get the setting of
|
||||
* @param translateProfileName The name of the profile section in the plugin config file to translate result strings into sections
|
||||
* @param earlyResult Result that should have priority over the rest
|
||||
* @return The value of the setting
|
||||
*/
|
||||
public ConfigurationSection getConfigurationSectionSetting(String path, String translateProfileName, Object earlyResult) {
|
||||
Object result = null;
|
||||
if(earlyResult != null) {
|
||||
result = earlyResult;
|
||||
} else if(config.isSet(path)) {
|
||||
result = config.get(path);
|
||||
} else {
|
||||
boolean found = false;
|
||||
int priority = Integer.MIN_VALUE;
|
||||
for(RegionGroup group : plugin.getFileManager().getGroups()) {
|
||||
if(group.isMember(this) && group.getSettings().isSet(path) && group.getPriority() > priority) {
|
||||
result = group.getSettings().get(path);
|
||||
priority = group.getPriority();
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
if(!found) {
|
||||
result = this.getFileManager().getDefaultSettings().get(path);
|
||||
}
|
||||
}
|
||||
|
||||
// Either result is a ConfigurationSection or is used as key in the plugin config to get a ConfigurationSection
|
||||
if(result == null) {
|
||||
return null;
|
||||
} else if(result instanceof ConfigurationSection) {
|
||||
return (ConfigurationSection)result;
|
||||
} else {
|
||||
return plugin.getConfig().getConfigurationSection(translateProfileName+"."+result.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a setting in the file of the region itself
|
||||
* @param path The path to set
|
||||
@@ -1630,9 +1724,7 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Checks an event and handles saving to and restoring from schematic for it
|
||||
* @param type The type of event
|
||||
@@ -1640,25 +1732,27 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
public void handleSchematicEvent(RegionEvent type) {
|
||||
// Check the individual>group>default setting
|
||||
if(!isRestoreEnabled()) {
|
||||
AreaShop.debug("Schematic operations for " + getName() + " not enabled, skipped");
|
||||
AreaShop.debug("Schematic operations for "+getName()+" not enabled, skipped");
|
||||
return;
|
||||
}
|
||||
// Get the safe and restore names
|
||||
String save = plugin.getConfig().getString("schematicProfiles." + getRestoreProfile() + "." + type.getValue() + ".save");
|
||||
String restore = plugin.getConfig().getString("schematicProfiles." + getRestoreProfile() + "." + type.getValue() + ".restore");
|
||||
// Get the safe and restore names
|
||||
ConfigurationSection profileSection = getConfigurationSectionSetting("general.schematicProfile", "schematicProfiles");
|
||||
String save = profileSection.getString(type.getValue()+".save");
|
||||
String restore = profileSection.getString(type.getValue()+".restore");
|
||||
// Save the region if needed
|
||||
if(save != null && save.length() != 0) {
|
||||
save = applyAllReplacements(save);
|
||||
this.saveRegionBlocks(save);
|
||||
save = Message.fromString(save).replacements(this).getSingle();
|
||||
saveRegionBlocks(save);
|
||||
}
|
||||
// Restore the region if needed
|
||||
if(restore != null && restore.length() != 0) {
|
||||
restore = applyAllReplacements(restore);
|
||||
this.restoreRegionBlocks(restore);
|
||||
restore = Message.fromString(restore).replacements(this).getSingle();
|
||||
restoreRegionBlocks(restore);
|
||||
}
|
||||
}
|
||||
|
||||
// COMMAND EXECUTING
|
||||
// COMMAND EXECUTING
|
||||
|
||||
/**
|
||||
* Run commands as the CommandsSender, replacing all tags with the relevant values
|
||||
* @param sender The sender that should perform the command
|
||||
@@ -1672,8 +1766,10 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
for(String command : commands) {
|
||||
if(command == null || command.length() == 0) {
|
||||
continue;
|
||||
}
|
||||
command = applyAllReplacements(command);
|
||||
}
|
||||
// It is not ideal we have to disable language replacements here, but otherwise giving language variables
|
||||
// to '/areashop message' by a command in the config gets replaced and messes up the fancy formatting.
|
||||
command = Message.fromString(command).replacements(this).noLanguageReplacements().getSingle();
|
||||
|
||||
boolean result;
|
||||
String error = null;
|
||||
@@ -1714,21 +1810,14 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
|
||||
* @param before The 'before' or 'after' commands
|
||||
*/
|
||||
public void runEventCommands(RegionEvent event, boolean before) {
|
||||
String profile = getStringSetting("general.eventCommandProfile");
|
||||
if(profile == null || profile.length() == 0) {
|
||||
ConfigurationSection eventCommandProfileSection = getConfigurationSectionSetting("general.eventCommandProfile", "eventCommandProfiles");
|
||||
if(eventCommandProfileSection == null) {
|
||||
return;
|
||||
}
|
||||
String path = "eventCommandProfiles." + profile + "." + event.getValue().toLowerCase();
|
||||
if(before) {
|
||||
path += ".before";
|
||||
} else {
|
||||
path += ".after";
|
||||
}
|
||||
List<String> commands = plugin.getConfig().getStringList(path);
|
||||
// Don't waste time if there are no commands to be run
|
||||
List<String> commands = eventCommandProfileSection.getStringList(event.getValue()+"."+(before ? "before" : "after"));
|
||||
if(commands == null || commands.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
runCommands(Bukkit.getConsoleSender(), commands);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ import org.bukkit.entity.Player;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static me.wiefferink.areashop.Utils.millisToHumanFormat;
|
||||
@@ -59,6 +59,11 @@ public class RentRegion extends GeneralRegion {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable() {
|
||||
return !isRented();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the UUID of the player renting the region
|
||||
* @return The UUID of the renter
|
||||
@@ -129,36 +134,44 @@ public class RentRegion extends GeneralRegion {
|
||||
setSetting("rent.timesExtended", times);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public HashMap<String, Object> getSpecificReplacements() {
|
||||
// Fill the replacements map with things specific to a RentRegion
|
||||
HashMap<String, Object> result = new HashMap<>();
|
||||
result.put(AreaShop.tagPrice, getFormattedPrice());
|
||||
result.put(AreaShop.tagRawPrice, getPrice());
|
||||
result.put(AreaShop.tagDuration, getDurationString());
|
||||
result.put(AreaShop.tagPlayerName, getPlayerName());
|
||||
result.put(AreaShop.tagPlayerUUID, getRenter());
|
||||
SimpleDateFormat date = new SimpleDateFormat(plugin.getConfig().getString("timeFormatChat"));
|
||||
String dateString = date.format(new Date(getRentedUntil()));
|
||||
result.put(AreaShop.tagRentedUntil, dateString);
|
||||
date = new SimpleDateFormat(plugin.getConfig().getString("timeFormatSign"));
|
||||
dateString = date.format(new Date(getRentedUntil()));
|
||||
result.put(AreaShop.tagRentedUntilShort, dateString);
|
||||
result.put(AreaShop.tagTimeLeft, getTimeLeftString());
|
||||
result.put(AreaShop.tagMoneyBackAmount, getFormattedMoneyBackAmount());
|
||||
result.put(AreaShop.tagRawMoneyBackAmount, getMoneyBackAmount());
|
||||
double moneyBackPercent = getMoneyBackPercentage();
|
||||
if((moneyBackPercent%1.0) == 0.0) {
|
||||
result.put(AreaShop.tagMoneyBackPercentage, (int)moneyBackPercent);
|
||||
} else {
|
||||
result.put(AreaShop.tagMoneyBackPercentage, moneyBackPercent);
|
||||
public Object provideReplacement(String variable) {
|
||||
switch(variable) {
|
||||
case AreaShop.tagPrice:
|
||||
return getFormattedPrice();
|
||||
case AreaShop.tagRawPrice:
|
||||
return getPrice();
|
||||
case AreaShop.tagDuration:
|
||||
return getDurationString();
|
||||
case AreaShop.tagPlayerName:
|
||||
return getPlayerName();
|
||||
case AreaShop.tagPlayerUUID:
|
||||
return getRenter();
|
||||
case AreaShop.tagRentedUntil:
|
||||
return new SimpleDateFormat(plugin.getConfig().getString("timeFormatChat")).format(new Date(getRentedUntil()));
|
||||
case AreaShop.tagRentedUntilShort:
|
||||
return new SimpleDateFormat(plugin.getConfig().getString("timeFormatSign")).format(new Date(getRentedUntil()));
|
||||
case AreaShop.tagTimeLeft:
|
||||
return getTimeLeftString();
|
||||
case AreaShop.tagMoneyBackAmount:
|
||||
return getFormattedMoneyBackAmount();
|
||||
case AreaShop.tagRawMoneyBackAmount:
|
||||
return getMoneyBackAmount();
|
||||
case AreaShop.tagMoneyBackPercentage:
|
||||
return getMoneyBackPercentage()%1.0 == 0.0 ? (int)getMoneyBackPercentage() : getMoneyBackPercentage();
|
||||
case AreaShop.tagMaxExtends:
|
||||
return this.getMaxExtends();
|
||||
case AreaShop.tagExtendsLeft:
|
||||
return getMaxExtends()-getTimesExtended();
|
||||
case AreaShop.tagMaxRentTime:
|
||||
return millisToHumanFormat(getMaxRentTime());
|
||||
case AreaShop.tagMaxInactiveTime:
|
||||
return this.getFormattedInactiveTimeUntilUnrent();
|
||||
|
||||
default:
|
||||
return super.provideReplacement(variable);
|
||||
}
|
||||
result.put(AreaShop.tagMaxExtends, this.getMaxExtends());
|
||||
result.put(AreaShop.tagExtendsLeft, getMaxExtends() - getTimesExtended());
|
||||
result.put(AreaShop.tagMaxRentTime, millisToHumanFormat(getMaxRentTime()));
|
||||
result.put(AreaShop.tagMaxInactiveTime, this.getFormattedInactiveTimeUntilUnrent());
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -313,7 +326,7 @@ public class RentRegion extends GeneralRegion {
|
||||
double percentage = (getMoneyBackPercentage()) / 100.0;
|
||||
Double timePeriod = (double) (getDuration());
|
||||
double periods = timeLeft / timePeriod;
|
||||
return periods * getPrice() * percentage;
|
||||
return Math.max(0, periods*getPrice()*percentage);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -341,7 +354,7 @@ public class RentRegion extends GeneralRegion {
|
||||
if(!isDeleted() && isRented() && now > getRentedUntil()) {
|
||||
// Send message to the player if online
|
||||
Player player = Bukkit.getPlayer(getRenter());
|
||||
if(unRent(false, player)) {
|
||||
if(unRent(false, null)) {
|
||||
if(player != null) {
|
||||
message(player, "unrent-expired");
|
||||
}
|
||||
@@ -356,19 +369,19 @@ public class RentRegion extends GeneralRegion {
|
||||
* Sends all warnings since previous call until (now + normal delay), delay can be found in the config as well
|
||||
*/
|
||||
public void sendExpirationWarnings() {
|
||||
// send from warningsDoneUntil to current+delay
|
||||
// Send from warningsDoneUntil to current+delay
|
||||
if(isDeleted() || !isRented()) {
|
||||
return;
|
||||
}
|
||||
Player player = Bukkit.getPlayer(getRenter());
|
||||
long sendUntil = Calendar.getInstance().getTimeInMillis()+(plugin.getConfig().getInt("expireWarning.delay")*60*1000);
|
||||
// loop through warning defined in the config for the profile that is set for this region
|
||||
String configPath = "expirationWarningProfiles."+getStringSetting("rent.expirationWarningProfile");
|
||||
ConfigurationSection section = plugin.getConfig().getConfigurationSection(configPath);
|
||||
if(section == null) {
|
||||
ConfigurationSection profileSection = getConfigurationSectionSetting("rent.expirationWarningProfile", "expirationWarningProfiles");
|
||||
if(profileSection == null) {
|
||||
return;
|
||||
}
|
||||
for(String timeBefore : section.getKeys(false)) {
|
||||
|
||||
// Check if a warning needs to be send for each defined point in time
|
||||
Player player = Bukkit.getPlayer(getRenter());
|
||||
long sendUntil = Calendar.getInstance().getTimeInMillis()+(plugin.getConfig().getInt("expireWarning.delay")*60*1000);
|
||||
for(String timeBefore : profileSection.getKeys(false)) {
|
||||
long timeBeforeParsed = Utils.durationStringToLong(timeBefore);
|
||||
if(timeBeforeParsed <= 0) {
|
||||
return;
|
||||
@@ -376,10 +389,22 @@ public class RentRegion extends GeneralRegion {
|
||||
long checkTime = getRentedUntil()-timeBeforeParsed;
|
||||
|
||||
if(checkTime > warningsDoneUntil && checkTime <= sendUntil) {
|
||||
if(plugin.getConfig().getBoolean(configPath+"."+timeBefore+".warnPlayer") && player != null) {
|
||||
message(player, "rent-expireWarning");
|
||||
List<String> commands;
|
||||
if(profileSection.isConfigurationSection(timeBefore)) {
|
||||
/* Legacy config layout:
|
||||
* "1 minute":
|
||||
* warnPlayer: true
|
||||
* commands: ["say hi"]
|
||||
*/
|
||||
commands = profileSection.getStringList(timeBefore+".commands");
|
||||
// Warn player
|
||||
if(profileSection.getBoolean(timeBefore+".warnPlayer") && player != null) {
|
||||
message(player, "rent-expireWarning", this);
|
||||
}
|
||||
} else {
|
||||
commands = profileSection.getStringList(timeBefore);
|
||||
}
|
||||
this.runCommands(Bukkit.getConsoleSender(), plugin.getConfig().getStringList(configPath+"."+timeBefore+".commands"));
|
||||
this.runCommands(Bukkit.getConsoleSender(), commands);
|
||||
}
|
||||
}
|
||||
warningsDoneUntil = sendUntil;
|
||||
|
||||
@@ -6,53 +6,54 @@
|
||||
# ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
# │ GENERAL: Options that influence the global state of the plugin │
|
||||
# └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
## Chatprefix used for all messages in the chat, also changes the greeting messages.
|
||||
# Chat prefix used for all messages in the chat, also changes the greeting messages.
|
||||
chatPrefix:
|
||||
- '[darkgreen][AreaShop][reset]'
|
||||
- ' hover: AreaShop region management plugin'
|
||||
- ' hover: %lang:action|Click to check the available commands|%'
|
||||
- ' command: /areashop help'
|
||||
- ' '
|
||||
## The language file that should be used, check the 'lang' folder for build-in languages (use the filename without .yml here).
|
||||
## More information can be found here: https://github.com/NLthijs48/AreaShop/wiki/Language-support.
|
||||
# The language file that should be used, check the 'lang' folder for build-in languages (use the filename without .yml here).
|
||||
# More information can be found here: https://github.com/NLthijs48/AreaShop/wiki/Language-support.
|
||||
language: EN
|
||||
## The tags that need to be written on the first line of a sign to use it with AreaShop.
|
||||
# The tags that need to be written on the first line of a sign to add it to AreaShop.
|
||||
signTags:
|
||||
## Add a rental region.
|
||||
# Add a rental region.
|
||||
rent: '[asrent]'
|
||||
## Add a buy region.
|
||||
# Add a buy region.
|
||||
buy: '[asbuy]'
|
||||
## Add a sign to an existing region.
|
||||
# Add a sign to an existing region.
|
||||
add: '[as]'
|
||||
|
||||
|
||||
# ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
# │ NUMBERS: Options to change the display of prices. │
|
||||
# │ ECONOMY: Options to change the display of prices. │
|
||||
# └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
## The characters displayed before a price.
|
||||
# The characters displayed before a price.
|
||||
moneyCharacter: '$'
|
||||
## The characters displayed after a price.
|
||||
# The characters displayed after a price.
|
||||
moneyCharacterAfter: ''
|
||||
## How many numbers behind the dot should be shown (2 will make numbers like '8.55', '9.01', '5.20').
|
||||
# How many numbers behind the dot should be shown (2 will make numbers like '8.55', '9.01', '5.20').
|
||||
fractionalNumbers: 2
|
||||
## Set this to true if you want to hide '.0' for a number like '15.0' ('4.50' will still stay '4.50').
|
||||
# Set this to true if you want to hide '.0' for a number like '15.0' ('4.50' will still stay '4.50').
|
||||
hideEmptyFractionalPart: true
|
||||
## Use metric suffixes if the price is above this number (use 1.00M instead of 1000000.00 etc.), use -1 to disable.
|
||||
## Indications are used as defined on: http://en.wikipedia.org/wiki/Metric_prefix, implemented from 'k' to 'Y'.
|
||||
# Use metric suffixes if the price is above this number (use 1.00M instead of 1000000.00 etc.), use -1 to disable.
|
||||
# Indications are used as defined on: http://en.wikipedia.org/wiki/Metric_prefix, implemented from 'k' to 'Y'.
|
||||
metricSuffixesAbove: 1000000.0
|
||||
## The character(s) to use as decimal mark.
|
||||
# The character(s) to use as decimal mark.
|
||||
decimalMark: '.'
|
||||
|
||||
|
||||
# ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
# │ RENTING: Options that apply to all rent regions. │
|
||||
# └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
## Timeformat to use on the signs, default is like '30-06 14:52', US format: 'MM-dd KK:mm a'.
|
||||
## Search for 'java SimpleDateFormat' for more options and documentation.
|
||||
# Timeformat to use on the signs, default is like '30-06 14:52', US format: 'MM-dd KK:mm a'.
|
||||
# Search for 'java SimpleDateFormat' for more options and documentation.
|
||||
timeFormatSign: 'dd-MM HH:mm'
|
||||
## Timeformat used in the chat, default is like '30 june 2014 14:52', US format: 'MMMMMMMMMMMMMMMMM dd yyyy KK:mm a'.
|
||||
## Search for 'java SimpleDateFormat' for more options and documentation.
|
||||
# Timeformat used in the chat, default is like '30 june 2014 14:52', US format: 'MMMMMMMMMMMMMMMMM dd yyyy KK:mm a'.
|
||||
# Search for 'java SimpleDateFormat' for more options and documentation.
|
||||
timeFormatChat: 'dd MMMMMMMMMMMMMMMMM yyyy HH:mm'
|
||||
## Time indicators, used for specifing time periods (for example rent duration).
|
||||
# Time indicators, used for specifing time periods (for example rent duration).
|
||||
seconds: [s, sec, secs, second, seconds]
|
||||
minutes: [m, min, mins, minute, minutes]
|
||||
hours: [h, hour, hours]
|
||||
@@ -65,12 +66,12 @@ years: [y, year, years]
|
||||
# ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
# │ PERMISSION GROUPS: Assigned by giving players certain permissions. │
|
||||
# └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
## Configure the max total regions, max rent regions and max buy regions with different groups (-1 is unlimited).
|
||||
## Assign a group to players by giving them the permission 'areashop.limits.<group>'.
|
||||
## Every player already has the group 'default', OPs bypass the limits because of the 'areashop.limitbypass' permission.
|
||||
## All the groups applied to the player will be checked and only if they all allow an extra region it will be allowed.
|
||||
## More information like limits for regions of a certain group or in a certain word can be found here:
|
||||
## https://github.com/NLthijs48/AreaShop/wiki/Limitgroups-information-and-examples.
|
||||
# Configure the max total regions, max rent regions and max buy regions with different groups (-1 is unlimited).
|
||||
# Assign a group to players by giving them the permission 'areashop.limits.<group>'.
|
||||
# Every player already has the group 'default', OPs bypass the limits because of the 'areashop.limitbypass' permission.
|
||||
# All the groups applied to the player will be checked and only if they all allow an extra region it will be allowed.
|
||||
# More information like limits for regions of a certain group or in a certain word can be found here:
|
||||
# https://github.com/NLthijs48/AreaShop/wiki/Limitgroups-information-and-examples.
|
||||
limitGroups:
|
||||
default:
|
||||
total: 1
|
||||
@@ -78,269 +79,92 @@ limitGroups:
|
||||
buys: 1
|
||||
|
||||
|
||||
# ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
# │ PROFILES: Assigned in general (default.yml), for a group (groups.yml) or individually (<region>.yml) │
|
||||
# └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
## The idea of profiles is that you can make different variations of them, and then assign the different variations to
|
||||
## subsets of regions (by assigning a profile to a region group, or an individual region).
|
||||
|
||||
## Determines the layout and functions of the signs linked to regions.
|
||||
## Set 'general.signProfile' in default.yml, groups or individual regions to set the profile.
|
||||
## The following sections can be added for performing certain commands when the sign is clicked:
|
||||
## rightClickPlayer, rightClickConsole, shiftRightClickPlayer, shiftRightClickConsole,
|
||||
## leftClickPlayer, leftClickConsole, shiftLeftClickPlayer, shiftLeftClickConsole.
|
||||
## Sections with 'Player' at the end will be run by the player that clicks the sign and 'Console' ones from the console.
|
||||
signProfiles:
|
||||
default:
|
||||
forrent:
|
||||
line1: '&2&l[For Rent]'
|
||||
line2: '%region%'
|
||||
line3: '%duration%'
|
||||
line4: '%price%'
|
||||
rightClickPlayer:
|
||||
- 'areashop rent %region%'
|
||||
#- 'areashop message %clicker% %lang:confirm-rent|%region%|%' # Alternative to first ask for confirmation
|
||||
leftClickPlayer:
|
||||
- 'areashop info region %region%'
|
||||
rented:
|
||||
line1: '&4&l[Rented]'
|
||||
line2: '%region%'
|
||||
line3: '%player%'
|
||||
line4: '%untilshort%'
|
||||
rightClickPlayer:
|
||||
- 'areashop rent %region%'
|
||||
#- 'areashop message %clicker% %lang:confirm-extend|%region%|%' # Alternative to first ask for confirmation
|
||||
leftClickPlayer:
|
||||
- 'areashop info region %region%'
|
||||
shiftRightClickPlayer:
|
||||
- 'areashop message %clicker% %lang:confirm-unrent|%region%|%'
|
||||
forsale:
|
||||
line1: '&2&l[For Sale]'
|
||||
line2: '%region%'
|
||||
line3: '%price%'
|
||||
line4:
|
||||
rightClickPlayer:
|
||||
- 'areashop buy %region%'
|
||||
#- 'areashop message %clicker% %lang:confirm-buy|%region%|%' # Alternative to first ask for confirmation
|
||||
leftClickPlayer:
|
||||
- 'areashop info region %region%'
|
||||
resell:
|
||||
line1: '&9&l[Resale]'
|
||||
line2: '%region%'
|
||||
line3: '%resellprice%'
|
||||
line4: '&8%player%'
|
||||
rightClickPlayer:
|
||||
- 'areashop buy %region%'
|
||||
#- 'areashop message %clicker% %lang:confirm-buy|%region%|%' # Alternative to first ask for confirmation
|
||||
leftClickPlayer:
|
||||
- 'areashop info region %region%'
|
||||
shiftRightClickPlayer:
|
||||
- 'areashop stopresell %region%'
|
||||
sold:
|
||||
line1: '&4&l[Sold]'
|
||||
line2: '%region%'
|
||||
line3: '%player%'
|
||||
line4:
|
||||
rightClickPlayer:
|
||||
- 'areashop buy %region%'
|
||||
leftClickPlayer:
|
||||
- 'areashop info region %region%'
|
||||
shiftRightClickPlayer:
|
||||
- 'areashop message %clicker% %lang:confirm-sell|%region%|%'
|
||||
|
||||
## Flag profiles specify which flags to set on the WorldGuard regions depending on their state.
|
||||
## All normal region flags as present in WorldGuard can be used, and also members, owners, priority and parent.
|
||||
## The members and owners flag normally take a list of UUID's separated by a comma, adding by name is possible with 'n:<name>'.
|
||||
## You can add groups by using 'g:<groupname>', so an example woul be: '%uuid%, %friendsuuid%, g:vip, n:coolGuy'.
|
||||
## For allow/deny flags like 'entry' and 'exit' you can set the group setting by using 'g:<scope>', <scope> is one of the following:
|
||||
## members, non_members, owners, non_owners, all. Example, only members can enter the region:
|
||||
## entry: 'deny g:non_members'
|
||||
## '' will remove the flag from the region.
|
||||
flagProfiles:
|
||||
default:
|
||||
ALL: # Flags to apply for all states
|
||||
priority: 10
|
||||
members: ''
|
||||
interact: 'deny g:non_members' # Only allow region members/owners to use things in the region (chests, furnace, animals, etc.)
|
||||
forrent:
|
||||
greeting: '%lang:prefix%%lang:greeting-forrent%'
|
||||
rented:
|
||||
members: '%uuid%, %friendsuuid%'
|
||||
greeting: '%lang:prefix%%lang:greeting-rented%'
|
||||
forsale:
|
||||
greeting: '%lang:prefix%%lang:greeting-forsale%'
|
||||
sold:
|
||||
members: '%uuid%, %friendsuuid%'
|
||||
greeting: '%lang:prefix%%lang:greeting-bought%'
|
||||
resale:
|
||||
members: '%uuid%, %friendsuuid%'
|
||||
greeting: '%lang:prefix%%lang:greeting-resale%'
|
||||
|
||||
## Run commands when an event happens.
|
||||
## Commands at a 'before' section will execute before the region details are changed in the AreaShop system
|
||||
## and before any other actions occurred (setting the owner, saving/loading schematics, etc.),
|
||||
## the 'after' commands will be run when all changes are done.
|
||||
## You can add a list of commands to 'before' and 'after'.
|
||||
eventCommandProfiles:
|
||||
default:
|
||||
created:
|
||||
before:
|
||||
after:
|
||||
## - "say An AreaShop region has been created: %region%"
|
||||
deleted:
|
||||
before:
|
||||
after:
|
||||
rented:
|
||||
before:
|
||||
after:
|
||||
extended:
|
||||
before:
|
||||
after:
|
||||
unrented:
|
||||
before:
|
||||
after:
|
||||
bought:
|
||||
before:
|
||||
after:
|
||||
sold:
|
||||
before:
|
||||
after:
|
||||
resell:
|
||||
before:
|
||||
after:
|
||||
|
||||
## For the following events you can specify if you want to restore or save the region to a schematic.
|
||||
## After 'save:' or 'restore:' you enter the name of the file to restore from/to.
|
||||
## The limit 'maximumBlocks' applies to restoring/saving schematics, be sure your region size is below the limit.
|
||||
## More information can be found here: https://github.com/NLthijs48/AreaShop/wiki/Region-blocks-save-restore.
|
||||
schematicProfiles:
|
||||
default:
|
||||
created:
|
||||
save: '%type%-%region%'
|
||||
restore: ''
|
||||
deleted:
|
||||
save: ''
|
||||
restore: '%type%-%region%'
|
||||
rented:
|
||||
save: ''
|
||||
restore: ''
|
||||
unrented:
|
||||
save: ''
|
||||
restore: '%type%-%region%'
|
||||
bought:
|
||||
save: ''
|
||||
restore: ''
|
||||
sold:
|
||||
save: ''
|
||||
restore: '%type%-%region%'
|
||||
resell:
|
||||
save: ''
|
||||
restore: ''
|
||||
|
||||
## Profiles that specify what happens when their rental region almost runs out.
|
||||
## Time identifiers specify how much time before the rent is actually over the player should be notified.
|
||||
## When warnPlayer is set to true a message will be send that is specified in the language file.
|
||||
## All commands in the list below 'commands:' will execute together with the warning, all normal variables can be used.
|
||||
expirationWarningProfiles:
|
||||
default:
|
||||
"1 day":
|
||||
warnPlayer: true
|
||||
commands:
|
||||
## - "say %region% is about to expire for %player%: %timeleft% left"
|
||||
"1 hour":
|
||||
warnPlayer: true
|
||||
commands:
|
||||
"5 minutes":
|
||||
warnPlayer: true
|
||||
commands:
|
||||
|
||||
|
||||
# ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
# │ ADVANCED AND DEBUG: Specific options to tweak the plugin precisely and check if it functions correctly. │
|
||||
# └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
## Blacklist of region names that cannot be added to AreaShop for renting or buying. Regular expressions can be used, search
|
||||
## for 'java regex pattern' to find documentation about how to use it.
|
||||
## Example: Blocking all regions that have a name like 'house_1', 'house_2', etc. would be done with 'house_\d+'.
|
||||
## The '\d' represents the numerical digits 0-9, the + symbol represents 1 or more times repeated.
|
||||
## This means it would also block 'house_123' and 'house_000456'. It will not block 'ahouse_1' or 'house_'.
|
||||
# Blacklist of region names that cannot be added to AreaShop for renting or buying. Regular expressions can be used, search
|
||||
# for 'java regex pattern' to find documentation about how to use it.
|
||||
# Example: Blocking all regions that have a name like 'house_1', 'house_2', etc. would be done with 'house_\d+'.
|
||||
# The '\d' represents the numerical digits 0-9, the + symbol represents 1 or more times repeated.
|
||||
# This means it would also block 'house_123' and 'house_000456'. It will not block 'ahouse_1' or 'house_'.
|
||||
blacklist:
|
||||
- '__global__'
|
||||
## Minimum length of the numbers that are suffixed for region names generated by the '/as stack' command.
|
||||
## When having this at 3 it will generate names like this: 'region-001', 'region-014', 'region-4567'.
|
||||
# Minimum length of the numbers that are suffixed for region names generated by the '/as stack' command.
|
||||
# When having this at 3 it will generate names like this: 'region-001', 'region-014', 'region-4567'.
|
||||
stackRegionNumberLength: 3
|
||||
# Allow/disallow adding players that did not visit the server yet as friend of a region.
|
||||
addFriendNotExistingPlayers: false
|
||||
## Enable sending stats to http://mcstats.org/ (Metrics plugin).
|
||||
## This information will give me an indication about how much the plugin is used and encourages me to continue development.
|
||||
# Enable sending stats to http://mcstats.org/ (Metrics plugin).
|
||||
# This information will give me an indication about how much the plugin is used and encourages me to continue development.
|
||||
sendStats: true
|
||||
## If enabled it will check for updates when loading the plugin, it will never download files, it will only notify about it
|
||||
## A message will be printed in the console when an update is available and OPs will be notified when joining the server.
|
||||
# If enabled it will check for updates when loading the plugin, it will never download files, it will only notify about it.
|
||||
checkForUpdates: true
|
||||
## Use colors when sending messages to console and log files.
|
||||
# Use colors when sending messages to console and log files.
|
||||
useColorsInConsole: false
|
||||
## Use tellraw style messages
|
||||
# Use tellraw style messages, which can be interacted with by players
|
||||
useFancyMessages: true
|
||||
## Update all region flags and signs after starting the plugin (uses the 'regionsPerTick' setting from the 'update' section).
|
||||
## This ensures that changes to the config are directly visible after restarting the server.
|
||||
# Update all region flags and signs after starting the plugin.
|
||||
# This ensures that changes to the config are directly visible after restarting the server.
|
||||
updateRegionsOnStartup: true
|
||||
## Enables / disables debug messages in the console, could be useful to figure out where errors come from.
|
||||
# Enables / disables debug messages in the console, could be useful to figure out where errors come from.
|
||||
debug: false
|
||||
## Version of the config, do not change!
|
||||
# Version of the config, do not change!
|
||||
version: ${project.version}
|
||||
## Maximum number of blocks to save to or restore from a .schemetic file.
|
||||
# Maximum number of blocks to save to or restore from a .schemetic file.
|
||||
maximumBlocks: 1000000
|
||||
## Maximum number of locations the teleport function should check to find a safe spot.
|
||||
# Maximum number of locations the teleport function should check to find a safe spot.
|
||||
maximumTries: 50000
|
||||
|
||||
|
||||
# ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
# │ VARIABLES: Variables that can be used in messages and settings where a region is available. │
|
||||
# └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
## If a tag has no value (for example %player% when the region is not rented/bought) then the tag will not get replaced.
|
||||
## %region% The region name (with correct capitalization).
|
||||
## %player% The name of the player that rents/buys the region (with correct capitalization).
|
||||
## %uuid% The UUID of the player that rents/buys the region.
|
||||
## %friends% The names of friends added to this region separated by ', '.
|
||||
## %friendsuuid% The UUID's of friends added to this region separated by ', '.
|
||||
## $landlord$ The name of the landlord.
|
||||
## %landlorduuid% The UUID of the landlord.
|
||||
## %price% The price of the region formatted with the configured characters before and after the number.
|
||||
## %rawprice% The price without formatting, like '10.0' or '7.77'.
|
||||
## %duration% The duration of a rent region, for example '1 d', '4 minutes' or '2 years'.
|
||||
## %world% The name of the world that the region is in.
|
||||
## %type% The type of the region, 'rent' or 'buy'.
|
||||
## %until% The end time of a rent formatted as configured with 'timeFormatChat'.
|
||||
## %untilshort% The end time of a rent formatted as configured with 'timeFormatSign'.
|
||||
## %width% The width of the region (number of blocks on the x-axis).
|
||||
## %depth% The depth of the region (number of blocks on the z-axis).
|
||||
## %height% The height of the region (number of blocks on the y-axis).
|
||||
## %timeleft% The time left on the rent (uses the unit of time that fits best, minutes used from 121 seconds till 120 minutes).
|
||||
## %clicker% The name of the player that clicked the sign (only to be used in the signProfiles section).
|
||||
## %resellprice% The price of a region when it is in resell mode.
|
||||
## %rawresellprice% The resellprice without formatting.
|
||||
## %moneyback% The amount of money the player will get back when unrenting/selling the region (formatted with currency layout).
|
||||
## %rawmoneyback% The moneyback without formatting.
|
||||
## %moneybackpercent% The percentage of the price the player will get back when unrenting the region.
|
||||
## %maxextends% The maximum number of extends a player can do on the region.
|
||||
## %extendsleft% The number of extends that are left (maxextends - timesextended).
|
||||
## %maxrenttime% The maximum time you can rent a region in advance (human readable).
|
||||
## %inactivetime% The maximum time a player may be inactive before unrent/sell (human readable).
|
||||
## %year% The current year.
|
||||
## %month% The current month in the year.
|
||||
## %day% The current day in the month.
|
||||
## %hour% The current hour in the day (0-23).
|
||||
## %minute% The current minute of the hour.
|
||||
## %second% The current second of the minute.
|
||||
## %millisecond% The current millisecond of the second.
|
||||
## %epoch% The number of milliseconds since January 1, 1970 (Unix Epoch).
|
||||
## %tpx% The exact x coordinate of the location that the teleport is set to
|
||||
## %tpy% The exact y coordinate of the location that the teleport is set to
|
||||
## %tpz% The exact z coordinate of the location that the teleport is set to
|
||||
## %tpblockx% The rounded x coordinate of the location that the teleport is set to
|
||||
## %tpblocky% The rounded y coordinate of the location that the teleport is set to
|
||||
## %tpblockz% The rounded z coordinate of the location that the teleport is set to
|
||||
## %tppitch% The exact pitch of the teleport location
|
||||
## %tppitchround% The rounded pitch of the teleport location
|
||||
## %tpyaw% The exact yaw of the teleport location
|
||||
## %tpyawround% The rounded yaw of the teleport location
|
||||
## %tpworld% The world name of the teleport location
|
||||
# If a tag has no value (for example %player% when the region is not rented/bought) then the tag will not get replaced.
|
||||
# %region% The region name (with correct capitalization).
|
||||
# %player% The name of the player that rents/buys the region (with correct capitalization).
|
||||
# %uuid% The UUID of the player that rents/buys the region.
|
||||
# %friends% The names of friends added to this region separated by ', '.
|
||||
# %friendsuuid% The UUID's of friends added to this region separated by ', '.
|
||||
# $landlord$ The name of the landlord.
|
||||
# %landlorduuid% The UUID of the landlord.
|
||||
# %price% The price of the region formatted with the configured characters before and after the number.
|
||||
# %rawprice% The price without formatting, like '10.0' or '7.77'.
|
||||
# %duration% The duration of a rent region, for example '1 d', '4 minutes' or '2 years'.
|
||||
# %world% The name of the world that the region is in.
|
||||
# %type% The type of the region, 'rent' or 'buy'.
|
||||
# %until% The end time of a rent formatted as configured with 'timeFormatChat'.
|
||||
# %untilshort% The end time of a rent formatted as configured with 'timeFormatSign'.
|
||||
# %width% The width of the region (number of blocks on the x-axis).
|
||||
# %depth% The depth of the region (number of blocks on the z-axis).
|
||||
# %height% The height of the region (number of blocks on the y-axis).
|
||||
# %timeleft% The time left on the rent (uses the unit of time that fits best, minutes used from 121 seconds till 120 minutes).
|
||||
# %clicker% The name of the player that clicked the sign (only to be used in the signProfiles section).
|
||||
# %resellprice% The price of a region when it is in resell mode.
|
||||
# %rawresellprice% The resellprice without formatting.
|
||||
# %moneyback% The amount of money the player will get back when unrenting/selling the region (formatted with currency layout).
|
||||
# %rawmoneyback% The moneyback without formatting.
|
||||
# %moneybackpercent% The percentage of the price the player will get back when unrenting the region.
|
||||
# %maxextends% The maximum number of extends a player can do on the region.
|
||||
# %extendsleft% The number of extends that are left (maxextends - timesextended).
|
||||
# %maxrenttime% The maximum time you can rent a region in advance (human readable).
|
||||
# %inactivetime% The maximum time a player may be inactive before unrent/sell (human readable).
|
||||
# %year% The current year.
|
||||
# %month% The current month in the year.
|
||||
# %day% The current day in the month.
|
||||
# %hour% The current hour in the day (0-23).
|
||||
# %minute% The current minute of the hour.
|
||||
# %second% The current second of the minute.
|
||||
# %millisecond% The current millisecond of the second.
|
||||
# %epoch% The number of milliseconds since January 1, 1970 (Unix Epoch).
|
||||
# %tpx% The exact x coordinate of the location that the teleport is set to
|
||||
# %tpy% The exact y coordinate of the location that the teleport is set to
|
||||
# %tpz% The exact z coordinate of the location that the teleport is set to
|
||||
# %tpblockx% The rounded x coordinate of the location that the teleport is set to
|
||||
# %tpblocky% The rounded y coordinate of the location that the teleport is set to
|
||||
# %tpblockz% The rounded z coordinate of the location that the teleport is set to
|
||||
# %tppitch% The exact pitch of the teleport location
|
||||
# %tppitchround% The rounded pitch of the teleport location
|
||||
# %tpyaw% The exact yaw of the teleport location
|
||||
# %tpyawround% The rounded yaw of the teleport location
|
||||
# %tpworld% The world name of the teleport location
|
||||
# %lang:<languageKey>|Optional arguments|% Insert a message from EN.yml, for example: '%lang:timeleft-ended%' or '%lang:timeleft-years|15|%'
|
||||
@@ -4,75 +4,227 @@
|
||||
# ║ More information and tutorials can be found on the wiki: https://github.com/NLthijs48/AreaShop/wiki ║
|
||||
# ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
|
||||
# ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
# │ GENERAL: Options for all regions. │
|
||||
# │ GENERAL: Settings that apply to all regions. │
|
||||
# └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
general:
|
||||
## Set to true to enable saving/restoring for regions as specified in the profile below, which is specified in the config.
|
||||
enableRestore: false
|
||||
## The schematic profile from the 'schematicProfiles' section in the config.
|
||||
schematicProfile: 'default'
|
||||
## The event commands profile from the 'eventCommandProfiles' section in the config.
|
||||
eventCommandProfile: 'default'
|
||||
## The profile for the format of the sign from the 'signProfiles' section in the config.
|
||||
signProfile: 'default'
|
||||
## The profile for the WorldGuard flags from the 'flagProfiles' section in the config.
|
||||
flagProfile: 'default'
|
||||
## The y location within the region to start searching for safe teleport spots (x and z will be in the middle of the region).
|
||||
## Possible values: bottom, middle, top, integer.
|
||||
# The y location within the region to start searching for safe teleport locations (x and z are in the middle of the region).
|
||||
# Possible values: 'bottom', 'middle', 'top' or a number indicating an exact y coordinate.
|
||||
teleportLocationY: bottom
|
||||
## If true the teleportation algorithm only allows telportation to inside the region, otherwise it will expand
|
||||
## a cube from the starting point to check for safe spots (then it could end outside of the region).
|
||||
# If true the teleportation algorithm only allows telportation to inside the region, otherwise it will expand
|
||||
# a cube from the starting point to check for safe spots (then it could end outside of the region).
|
||||
teleportIntoRegion: true
|
||||
## Same as above, but then for when you teleport to the sign of a region instead of the region itself.
|
||||
# Same as above, but then for when you teleport to the sign of a region instead of the region itself.
|
||||
teleportToSignIntoRegion: false
|
||||
## Set where the '/as find' command should teleport the player to, set to true for the first sign of the region and set to
|
||||
## false to teleport to the location set by '/as settp' or the default location (if not set).
|
||||
# Set where the '/as find' command should teleport the player to, set to true for the first sign of the region and set to
|
||||
# false to teleport to the location set by '/as settp' or the default location (if not set).
|
||||
findTeleportToSign: true
|
||||
## Restricts the '/as buy' and '/as rent' commands to the world of the region.
|
||||
# Restricts buying and renting of regions to the world of the region.
|
||||
restrictedToWorld: false
|
||||
## Restricts the '/as buy' and '/as rent' commands to the region itself (player needs to be inside).
|
||||
# Restricts buying and renting of regions to the region itself (player needs to be inside the region).
|
||||
restrictedToRegion: false
|
||||
## The UUID of the landlord, this player will receive all money from rents/buys (but not reselling with '/as resell').
|
||||
# The UUID of the landlord, this player will receive all money from rents/buys (but not reselling with '/as resell').
|
||||
landlord: ''
|
||||
## Name of the landlord, if the landlord UUID setting is not provided then the name will be used instead
|
||||
# Name of the landlord, if the landlord UUID setting is not provided then the name will be used instead
|
||||
landlordName: ''
|
||||
|
||||
##### Set the layout and functions of the signs.
|
||||
# The following sections can be added for performing certain commands when the sign is clicked:
|
||||
# rightClickPlayer, rightClickConsole, shiftRightClickPlayer, shiftRightClickConsole,
|
||||
# leftClickPlayer, leftClickConsole, shiftLeftClickPlayer, shiftLeftClickConsole.
|
||||
# Sections with 'Player' at the end will be run by the player that clicks the sign and 'Console' ones from the console.
|
||||
signProfile:
|
||||
forrent:
|
||||
line1: '&2&l[For Rent]'
|
||||
line2: '%region%'
|
||||
line3: '%duration%'
|
||||
line4: '%price%'
|
||||
rightClickPlayer:
|
||||
- 'areashop rent %region%'
|
||||
rightClickConsole:
|
||||
# - 'areashop message %clicker% %lang:confirm-rent|%region%|%' # Alternative to first ask for confirmation (remove rightClickPlayer section)
|
||||
leftClickPlayer:
|
||||
- 'areashop info region %region%'
|
||||
rented:
|
||||
line1: '&4&l[Rented]'
|
||||
line2: '%region%'
|
||||
line3: '%player%'
|
||||
line4: '%untilshort%'
|
||||
rightClickPlayer:
|
||||
- 'areashop rent %region%'
|
||||
rightClickConsole:
|
||||
# - 'areashop message %clicker% %lang:confirm-extend|%region%|%' # Alternative to first ask for confirmation (remove rightClickPlayer section)
|
||||
leftClickPlayer:
|
||||
- 'areashop info region %region%'
|
||||
shiftRightClickConsole:
|
||||
- 'areashop message %clicker% %lang:confirm-unrent|%region%|%'
|
||||
forsale:
|
||||
line1: '&2&l[For Sale]'
|
||||
line2: '%region%'
|
||||
line3: '%price%'
|
||||
line4:
|
||||
rightClickPlayer:
|
||||
- 'areashop buy %region%'
|
||||
rightClickConsole:
|
||||
# - 'areashop message %clicker% %lang:confirm-buy|%region%|%' # Alternative to first ask for confirmation (remove rightClickPlayer section)
|
||||
leftClickPlayer:
|
||||
- 'areashop info region %region%'
|
||||
resell:
|
||||
line1: '&9&l[Resale]'
|
||||
line2: '%region%'
|
||||
line3: '%resellprice%'
|
||||
line4: '&8%player%'
|
||||
rightClickPlayer:
|
||||
- 'areashop buy %region%'
|
||||
rightClickConsole:
|
||||
# - 'areashop message %clicker% %lang:confirm-buy|%region%|%' # Alternative to first ask for confirmation (remove rightClickPlayer section)
|
||||
leftClickPlayer:
|
||||
- 'areashop info region %region%'
|
||||
shiftRightClickPlayer:
|
||||
- 'areashop stopresell %region%'
|
||||
sold:
|
||||
line1: '&4&l[Sold]'
|
||||
line2: '%region%'
|
||||
line3: '%player%'
|
||||
line4:
|
||||
rightClickPlayer:
|
||||
- 'areashop buy %region%'
|
||||
leftClickPlayer:
|
||||
- 'areashop info region %region%'
|
||||
shiftRightClickConsole:
|
||||
- 'areashop message %clicker% %lang:confirm-sell|%region%|%'
|
||||
|
||||
##### Set WorldGuard regions flags depending on the region state.
|
||||
# All normal region flags as present in WorldGuard can be used, in addition to 'members', 'owners', 'priority' and 'parent'.
|
||||
# The members and owners flag normally take a list of UUID's separated by a comma, adding by name is possible with 'n:<name>'.
|
||||
# You can add groups by using 'g:<groupname>', so an example woul be: '%uuid%, %friendsuuid%, g:vip, n:coolGuy'.
|
||||
# For allow/deny flags like 'entry' and 'exit' you can set the group setting by using 'g:<scope>', <scope> is one of the following:
|
||||
# members, non_members, owners, non_owners, all. Example, only members can enter the region:
|
||||
# entry: 'deny g:non_members'
|
||||
# '' will remove the flag from the region.
|
||||
flagProfile:
|
||||
ALL: # Flags that should always be applied
|
||||
priority: 10
|
||||
members: ''
|
||||
interact: 'deny g:non_members' # Only allow region members/owners to use things in the region (chests, furnace, animals, etc.)
|
||||
build: 'deny g:non_members'
|
||||
forrent:
|
||||
greeting: '%lang:prefix%%lang:greeting-forrent%'
|
||||
rented:
|
||||
members: '%uuid%, %friendsuuid%'
|
||||
greeting: '%lang:prefix%%lang:greeting-rented%'
|
||||
forsale:
|
||||
greeting: '%lang:prefix%%lang:greeting-forsale%'
|
||||
sold:
|
||||
members: '%uuid%, %friendsuuid%'
|
||||
greeting: '%lang:prefix%%lang:greeting-bought%'
|
||||
resale:
|
||||
members: '%uuid%, %friendsuuid%'
|
||||
greeting: '%lang:prefix%%lang:greeting-resale%'
|
||||
|
||||
##### Save and restore schematics to clean up regions.
|
||||
# After 'save:' or 'restore:' you enter the name of the file to restore from/to (.schematic is added automatically).
|
||||
# Set to true to enable saving/restoring for regions as specified in the profile below, which is specified in the config.
|
||||
enableRestore: false
|
||||
schematicProfile:
|
||||
created:
|
||||
save: '%type%-%region%'
|
||||
restore: ''
|
||||
deleted:
|
||||
save: ''
|
||||
restore: '%type%-%region%'
|
||||
rented:
|
||||
save: '%type%-%region%'
|
||||
restore: ''
|
||||
unrented:
|
||||
save: ''
|
||||
restore: '%type%-%region%'
|
||||
bought:
|
||||
save: '%type%-%region%'
|
||||
restore: ''
|
||||
sold:
|
||||
save: ''
|
||||
restore: '%type%-%region%'
|
||||
resell:
|
||||
save: ''
|
||||
restore: ''
|
||||
|
||||
##### Run commands when an event happens.
|
||||
# Commands at a 'before' section will execute before the region details are changed in the AreaShop system
|
||||
# and before any other actions occurred (setting the owner, saving/loading schematics, etc.),
|
||||
# the 'after' commands will be run when all changes are done.
|
||||
# You can add a list of commands to 'before' and 'after'.
|
||||
eventCommandProfile:
|
||||
created:
|
||||
before:
|
||||
after:
|
||||
# - "say An AreaShop region has been created: %region%"
|
||||
deleted:
|
||||
before:
|
||||
after:
|
||||
rented:
|
||||
before:
|
||||
after:
|
||||
extended:
|
||||
before:
|
||||
after:
|
||||
unrented:
|
||||
before:
|
||||
after:
|
||||
bought:
|
||||
before:
|
||||
after:
|
||||
sold:
|
||||
before:
|
||||
after:
|
||||
resell:
|
||||
before:
|
||||
after:
|
||||
|
||||
|
||||
# ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
# │ RENT: Options for rent regions. │
|
||||
# │ RENT: Settings that apply to rent regions. │
|
||||
# └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
rent:
|
||||
## The default price of a rental region.
|
||||
# The default price of a rental region.
|
||||
price: 1000
|
||||
## The default duration of a rental region, you can find all time indicators in config.yml below the RENTING header.
|
||||
# The default duration of a rental region, you can find all time indicators in config.yml below the RENTING header.
|
||||
duration: '1 day'
|
||||
## The percentage of the rent price you get back if you unrent the region (price of time left will be multiplied by this/100).
|
||||
# The percentage of the rent price you get back if you unrent the region (price of time left will be multiplied by this/100).
|
||||
moneyBack: 100
|
||||
## Maximum number of extends a player can do (-1 for infinite, 0 for no extending), if they are at this number then
|
||||
## they are force to let their rent run out (and can rent it again at that point).
|
||||
# Maximum number of extends a player can do (-1 for infinite, 0 for no extending), if they are at this number then
|
||||
# they are force to let their rent run out (and can rent it again at that point).
|
||||
maxExtends: -1
|
||||
## The Maximum time they can have the region rented in advance (use times like '1 day' etc, or 'unlimited' for no limit).
|
||||
## This can prevent players from renting their region for a year, and to ensure they periodically have to extend their rent.
|
||||
# The Maximum time they can have the region rented in advance (use times like '1 day' etc, or 'unlimited' for no limit).
|
||||
# This can prevent players from renting their region for a year, and to ensure they periodically have to extend their rent.
|
||||
maxRentTime: 'unlimited'
|
||||
## Automatically unrent the region after the specified time between the last login time of the renter and the current time.
|
||||
## Use times like '1 day' etc, or 'disabled' for never.
|
||||
# Automatically unrent the region after the specified time between the last login time of the renter and the current time.
|
||||
# Use times like '1 day' etc, or 'disabled' for never.
|
||||
inactiveTimeUntilUnrent: 'disabled'
|
||||
## If a region of a player has less then this time left when he joins the server he will get a notice about his region.
|
||||
## Use '' to disable.
|
||||
# If a region of a player has less then this time left when he joins the server he will get a notice about his region.
|
||||
# Use '' to disable.
|
||||
warningOnLoginTime: '1 day'
|
||||
## The profile for the expiration warnings from the 'expirationWarningProfiles' section in the config.
|
||||
expirationWarningProfile: 'default'
|
||||
## If renting the region would go above 'maxRentTIme', then extend to the maximum instead of cancelling the rent.
|
||||
# If renting the region would go above 'maxRentTIme', then extend to the maximum instead of cancelling the rent.
|
||||
extendToFullWhenAboveMaxRentTime: true
|
||||
##### Run commands a certain time before expiration of a region.
|
||||
# Time identifiers specify how much time before the rent is over the commands should be executed.
|
||||
# These commands are executed in a 'best effort' manner, if your server is offline when it should trigger then it won't run.
|
||||
expirationWarningProfile:
|
||||
'1 day':
|
||||
- "areashop message %player% %lang:prefix%%lang:rent-expiringSoon|%region%|%timeleft%|%"
|
||||
'1 hour':
|
||||
- "areashop message %player% %lang:prefix%%lang:rent-expiringSoon|%region%|%timeleft%|%"
|
||||
'5 minutes':
|
||||
- "areashop message %player% %lang:prefix%%lang:rent-expiringSoon|%region%|%timeleft%|%"
|
||||
|
||||
|
||||
# ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
# │ BUY: Options for buy regions. │
|
||||
# │ BUY: Settings that apply to buy regions. │
|
||||
# └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
buy:
|
||||
## The default price of a buy region.
|
||||
# The default price of a buy region.
|
||||
price: 1000
|
||||
## The percentage of the price you get back if you sell the region.
|
||||
# The percentage of the price you get back if you sell the region.
|
||||
moneyBack: 100
|
||||
## Automatically sell the region after the specified number of minutes between the last login time of the buyer and the current time
|
||||
## Use times like '1 day' etc, or 'disabled' for never.
|
||||
# Automatically sell the region after the specified number of minutes between the last login time of the buyer and the current time
|
||||
# Use times like '1 day' etc, or 'disabled' for never.
|
||||
inactiveTimeUntilSell: 'disabled'
|
||||
@@ -6,38 +6,38 @@
|
||||
# ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
# │ TIMERS: Settings to define how often scheduled tasks run. │
|
||||
# └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
## Setting the 'delay' setting to 0 or lower will prevent the taks from runnning.
|
||||
## The 'delay' settings are specified using a number followed by one of the identifiers as defined in config.yml.
|
||||
## The 'regionsPerTick' settings are to configure how fast something goes, lower value is less lag, but slower updates.
|
||||
## There are 20 ticks in 1 second, so if you set 'regionPerTick' to 5, then 5*20=100 regions per second will be updated.
|
||||
# Setting the 'delay' setting to 0 or lower will prevent the taks from runnning.
|
||||
# The 'delay' settings are specified using a number followed by one of the identifiers as defined in config.yml.
|
||||
# The 'regionsPerTick' settings are to configure how fast something goes, lower value is less lag, but slower updates.
|
||||
# There are 20 ticks in 1 second, so if you set 'regionPerTick' to 5, then 5*20=100 regions per second will be updated.
|
||||
|
||||
## Timings for saving files that need saving.
|
||||
# Timings for saving files that need saving.
|
||||
saving:
|
||||
delay: '10 minutes'
|
||||
delay: '11 minutes'
|
||||
regionsPerTick: 1
|
||||
## Timings for rent expiration checking.
|
||||
# Timings for rent expiration checking.
|
||||
expiration:
|
||||
delay: '59 seconds'
|
||||
delay: '29 seconds'
|
||||
regionsPerTick: 5
|
||||
## Timings for expiration warning to online players.
|
||||
# Timings for expiration warning to online players.
|
||||
expireWarning:
|
||||
delay: '5 minutes'
|
||||
delay: '61 seconds'
|
||||
regionsPerTick: 5
|
||||
## 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:
|
||||
regionsPerTick: 5
|
||||
## Time between checking if any regions need to be unrented because the player was not online for the specified time period.
|
||||
# Time between checking if any regions need to be unrented because the player was not online for the specified time period.
|
||||
inactive:
|
||||
delay: '15 minutes'
|
||||
delay: '17 minutes'
|
||||
regionsPerTick: 5
|
||||
## Timings for the periodic updating of signs (for timeleft tags etc).
|
||||
# Timings for the periodic updating of signs (for timeleft tags etc).
|
||||
signs:
|
||||
delay: '60 seconds'
|
||||
delay: '1 minute'
|
||||
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:
|
||||
regionsPerTick: 10
|
||||
## Timings for adding regions to AreaShop ('/as stack').
|
||||
# Timings for adding regions to AreaShop ('/as stack').
|
||||
adding:
|
||||
regionsPerTick: 2
|
||||
|
||||
@@ -45,6 +45,14 @@ adding:
|
||||
# ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
# │ OTHER: All other settings. │
|
||||
# └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
## Allow or disallow extending a rental region when the player is above his limits enforced by the 'limitGroups' section below.
|
||||
## false will ensure a player will eventually lose his region when he has no access anymore.
|
||||
allowRegionExtendsWhenAboveLimits: false
|
||||
# Allow or disallow extending a rental region when the player is above his limits enforced by the 'limitGroups' section below.
|
||||
# false will ensure a player will eventually lose his region when he has no access anymore.
|
||||
allowRegionExtendsWhenAboveLimits: false
|
||||
# Flag profiles that can be used by the 'general.flagProfile' setting in default.yml
|
||||
flagProfiles:
|
||||
# Event command profiles that can be used by the 'general.eventCommandProfile' setting in default.yml
|
||||
eventCommandProfiles:
|
||||
# Sign profiles that can be used by the 'general.signProfile' setting in default.yml
|
||||
signProfiles:
|
||||
# Schematic profiles that can be used by the 'general.schematicProfile' setting in default.yml
|
||||
schematicProfiles:
|
||||
@@ -1,6 +1,6 @@
|
||||
# ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
|
||||
# ║ Language file of the AreaShop plugin created by NLThijs48, Github can be found at https://github.com/NLthijs48/AreaShop ║
|
||||
# ║ Language: German, Version: V2.3.2, Percentage translated: 96% ║
|
||||
# ║ Language: German, Version: V2.4.0, Percentage translated: 97% ║
|
||||
# ║ This file will be overwritten at each startup/reload of the plugin, if you want to change anything then do the following: ║
|
||||
# ║ 1: Make a copy of this file ║
|
||||
# ║ 2: Rename it to <servername>.yml (don't use a language code as filename, could otherwise be overwritten in future updates) ║
|
||||
@@ -8,6 +8,8 @@
|
||||
# ║ 4: Change the strings in the new file to your liking and save the file ║
|
||||
# ║ 5: Use '/as reload' or reload/restart your server to see the changes ║
|
||||
# ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
|
||||
action: "[gold][bold]<%0%>[/bold]"
|
||||
|
||||
button: "[bold]<%0%>[/bold]"
|
||||
|
||||
command:
|
||||
@@ -33,7 +35,7 @@ player: "%lang:tPlayer|%player%|%"
|
||||
tPlayer:
|
||||
- "[bold]%0%[/bold]"
|
||||
- " hover: Spieler %0%"
|
||||
- " hover: %lang:action|Regionen von%0%|%"
|
||||
- " hover: %lang:action|Regionen von %0%|%"
|
||||
- " command: /areashop info player %0%"
|
||||
|
||||
landlord:
|
||||
@@ -56,7 +58,6 @@ cmd-weOnlyByPlayer: "Eine WorldEdit-Selektion kann nur von einem Spieler gewähl
|
||||
cmd-noSelection: "Du hast mit WorldEdit nichts markiert."
|
||||
cmd-noRegionsFound: "In deiner Selektion wurden keine in AreaShop registrierten Regionen gefunden."
|
||||
cmd-noWERegionsFound: "Es wurden keine WorldEdit-Regionen gefunden, die sich mit deiner Selektion überschneiden."
|
||||
cmd-notRegistered: "Die angegebene Region ist in AreaShop nicht verfügbar: %0%."
|
||||
cmd-noRegionsAtLocation: "Keine Regionen an deiner Position gefunden, gib die Region als Argument an."
|
||||
cmd-moreRegionsAtLocation: "Mehr als eine Region wurde an deiner Position gefunden, gib die Region als Argument an."
|
||||
cmd-automaticRegionOnlyByPlayer: "Die Automatische Auswahl einer Region ist nur für Spieler möglich, gib die Region als Argument an."
|
||||
@@ -64,7 +65,7 @@ cmd-automaticRegionOnlyByPlayer: "Die Automatische Auswahl einer Region ist nur
|
||||
help-header: "Hilfeseite mit Befehlen, die du ausführen kannst."
|
||||
help-noPermission: "Du hast keine Permissions, um diese Hilfeseite anzuzeigen."
|
||||
help-alias: "Befehlsaliase: /areashop, /as."
|
||||
help-help: "%lang:helpCommand|/as help|% Zeigt diese HilfeSeite.."
|
||||
help-help: "%lang:helpCommand|/as help|% Zeigt diese Hilfeseite."
|
||||
help-info: "%lang:helpCommand|/as info|% Zeigt Infos über aktuelle Regionen."
|
||||
help-rent: "%lang:helpCommand|/as rent|% Miete eine Region oder verlängere deine derzeitige Miete."
|
||||
help-buy: "%lang:helpCommand|/as buy|% Kaufe eine Region."
|
||||
@@ -72,9 +73,9 @@ help-unrent: "%lang:helpCommand|/as unrent|% Breche eine Miete für eine Region
|
||||
help-sell: "%lang:helpCommand|/as sell|% Verkaufe eine Region."
|
||||
help-reload: "%lang:helpCommand|/as reload|% Lade alle Dateien sowie Regionen neu."
|
||||
help-setrestore: "%lang:helpCommand|/as setrestore|% Aktiviere das Zurücksetzen und wähle ein Profil."
|
||||
help-setprice: "%lang:helpCommand|/as setprice|% Ändere die Preis einer Region."
|
||||
help-setprice: "%lang:helpCommand|/as setprice|% Ändere den Preis einer Region."
|
||||
help-setduration: "%lang:helpCommand|/as setduration|% Ändere die Dauer einer gemieteten Region."
|
||||
help-teleport: "%lang:helpCommand|/as tp|% Teleportiere zu einer kauf- oder mietbaren Region."
|
||||
help-teleport: "%lang:helpCommand|/as tp|% Teleportiere dich zu einer kauf- oder mietbaren Region."
|
||||
help-setteleport: "%lang:helpCommand|/as settp|% Setze die Teleport Position von einer Region."
|
||||
help-find: "%lang:helpCommand|/as find|% Finde eine kauf- oder mietbare Region."
|
||||
help-groupadd: "%lang:helpCommand|/as groupadd|% Füge eine Region zu einer Gruppe hinzu."
|
||||
@@ -88,7 +89,7 @@ help-addsign: "%lang:helpCommand|/as addsign|% Füge ein Schild zu einer existie
|
||||
help-delsign: "%lang:helpCommand|/as delsign|% Lösche das Schild auf das du Schaust."
|
||||
help-me: "%lang:helpCommand|/as me|% Liste alle Regionen, welche zu besitzt auf, sowie deren Ablaufdatum."
|
||||
help-setowner: "%lang:helpCommand|/as setowner|% Setze den Besitzer einer Region oder verlängere die Miete."
|
||||
help-resell: "%lang:helpCommand|/as resell|% Setzt eine Tegion in den resell Modus."
|
||||
help-resell: "%lang:helpCommand|/as resell|% Setzt eine Region in den Wiederverkaufs-Modus."
|
||||
help-stopResell: "%lang:helpCommand|/as stopresell|% Setzt eine Region zurück in den Verkauft Modus."
|
||||
help-addFriend: "%lang:helpCommand|/as addfriend|% Fügt einen Freund zu einer Region hinzu."
|
||||
help-delFriend: "%lang:helpCommand|/as delfriend|% Löscht einen Freund von einer Region."
|
||||
@@ -96,12 +97,12 @@ help-linksigns: "%lang:helpCommand|/as linksigns|% Benutze Massenschild Verlinku
|
||||
help-stack: "%lang:helpCommand|/as stack|% Erstelle mehrere Regionen und füge sie hinzu."
|
||||
help-setlandlord: "%lang:helpCommand|/as setlandlord|% Setzt den Vermieter einer Region."
|
||||
|
||||
rent-help: "/as rent [Region], Wenn kein Regionsname angegeben wird, wird die Region genutzt, in der du dich gerade befindest."
|
||||
rent-help: "/as rent [Region], Die Region in der du stehst wird Gemietet, wenn du keine Region angegeben hast."
|
||||
rent-noPermission: "Du bist nicht berechtigt, diese Region zu mieten."
|
||||
rent-maximum: "Du kannst nicht mehr als %0% Region(en) mieten (Du hast bereits %1% in Gruppe '%2%')."
|
||||
rent-maximumExtend: "Du kannst diese Miete nicht verlängern weil du mehr als %0% Region(en) hast. (Du hast bereits %1% in Gruppe '%2%')."
|
||||
rent-payError: "Die Bezahlung hat nicht funktioniert. Bitte versuche es später noch einmal."
|
||||
rent-rented: "Du hast die Region %lang:region% gemietet bis zum %until%. Du kannst deine Mieter verlängern, in dem du auf das Schild klickst, oder du /as rent eingibts."
|
||||
rent-rented: "Du hast die Region %lang:region% bis zum %until% gemietet. Du kannst deine Miete verlängern, in dem du erneut auf das Schild klickst, oder /as rent eingibst."
|
||||
rent-extended: "Du hast Deine Miete von %lang:region% bis zum %until% verlängert."
|
||||
rent-extendedToMax: "Du hast Deine Miete von %lang:region% bis zum %until% verlängert. (Das ist die maximal zulässige Mietdauer von %maxrenttime%)."
|
||||
rent-lowMoneyExtend: "Du hast nicht genug Geld um die Miete zu verlängern. (Du hast %0% und benötigst %price%)."
|
||||
@@ -109,13 +110,13 @@ rent-lowMoneyRent: "Du hast nicht genug Geld um die Region %lang:region% zu miet
|
||||
rent-someoneElse: "Die Region %lang:region% ist bereits vermietet."
|
||||
rent-notRentable: "Diese Region ist nicht mietbar."
|
||||
rent-maxExtends: "Du kannst diese Miete nicht weiter verlängern. (Zulässig sind %maxextends% Verlängerungen). Nachdem die Miete abgelaufen ist, kannst du die Region %lang:region% erneut mieten."
|
||||
rent-maxRentTime: "Du kannst die Region%lang:region% nicht noch mehr im Voraus mieten. Die maximale Zeit beträgt %maxrenttime% und du hast diese Region im Moment für %timeleft% gemietet."
|
||||
rent-maxRentTime: "Du kannst die Region%lang:region% nicht noch mehr im Voraus mieten. Die maximale Zeit beträgt %maxrenttime% und du hast diese Region für %timeleft% gemietet."
|
||||
rent-restrictedToWorld: "Du musst dich in der Welt '%world%' befinden, um die Region %lang:region% mieten zu können (Du befindest Dich in der Welt '%0%')."
|
||||
rent-restrictedToRegion: "Du musst innerhalb der Region %lang:region% sein, um diese mieten zu können."
|
||||
rent-expireWarning: "Deine Region %lang:region% hat %timeleft% übrig. Beachte, dass du sie rechtzeitig verlängerst, wenn du sie behalten willst."
|
||||
rent-alreadyAtFull: "Die Region %lang:region% ist bereits auf oder über der maximalen Mietzeit, Du kannst diese noch nicht verlängern."
|
||||
|
||||
buy-help: "/as buy [Regionname], Wenn kein Regionsname angegeben wird, wird die Region genutzt, in der du dich gerade befindest."
|
||||
buy-help: "/as buy [Regionname], Die Region in der du stehst wird gekauft wenn keine Region angegeben wurde."
|
||||
buy-noPermission: "Du bist nicht berechtigt, eine Region zu kaufen."
|
||||
buy-noPermissionResell: "Du hast keine Berechtigung eine Region im Weiterverkaufs-Modus zu kaufen."
|
||||
buy-noPermissionNoResell: "Du hast keine Berechtigung um eine Region zu kaufen, die nicht im Weiterverkaufs-Modus ist."
|
||||
@@ -132,7 +133,7 @@ buy-someoneElse: "Jemand anderes hat die Region %lang:region% bereits gekauft."
|
||||
buy-restrictedToWorld: "Du musst Dich in der Welt '%world%' befinden, um die Region %lang:region% kaufen zu können. (Du befindest Dich in der Welt '%0%')."
|
||||
buy-restrictedToRegion: "Du musst innerhalb der Region %lang:region% sein, um diese kaufen zu können."
|
||||
|
||||
unrent-help: "/as unrent [Region], Wenn kein Regionsname angegeben wird, wird die Region genutzt, in der Du Dich gerade befindest."
|
||||
unrent-help: "/as unrent [Region], Die Region in der du stehst wird entmietet, wenn keine Region angegeben wird."
|
||||
unrent-noPermission: "Du bist nicht berechtigt, den Mietvertrag zu kündigen."
|
||||
unrent-noPermissionOther: "Du bist nicht berechtigt, den Mietvertrag einer anderen Region zu kündigen."
|
||||
unrent-notRegistered: "Die Region kann nicht entmietet werden, weil sie nicht für Vermietungen registriert ist."
|
||||
@@ -140,7 +141,7 @@ unrent-notRented: "Die Region kann nicht entmietet werden, weil sie nicht gemiet
|
||||
unrent-unrented: "Die Region %lang:region% ist nun nicht mehr an %lang:player% vermietet."
|
||||
unrent-expired: "Deine Miete von %lang:region% ist abgelaufen."
|
||||
|
||||
sell-help: "/as sell [Region], Wenn kein Regionsname angegeben wird, wird die Region genutzt, in der Du dich gerade befindest."
|
||||
sell-help: "/as sell [Region], Die Region in der du stehst wird verkauft wenn keine Region angegeben wurde."
|
||||
sell-notRegistered: "Die Region kann nicht verkauft werden, da sie nicht für den Verkauf registriert ist."
|
||||
sell-notBought: "Die Region kann nicht verkauft werden, da sie keinen Eigentümer hat."
|
||||
sell-sold: "Die Region %lang:region% von %lang:player% wurde verkauft."
|
||||
@@ -153,16 +154,6 @@ reload-updateComplete: "[gray]Regionen erfolgreich aktualisiert."
|
||||
reload-noPermission: "Du hast keine Berechtigungen um die Konfigurationsdateien neu zu laden."
|
||||
reload-updateCommandChanged: "'/as updaterents' und '/as updatebuys' wurden entfernt, bitte benutze '/as reload' um die Regionen neu zu laden."
|
||||
|
||||
info-help:
|
||||
- "/as info[break]"
|
||||
- "%lang:command|all|/as info all|%"
|
||||
- "%lang:command|rented|/as info rented|% [Gruppe] [Seite]"
|
||||
- "%lang:command|forrent|/as info forrent|% [Gruppe] [Seite]"
|
||||
- "%lang:command|sold|/as info sold|% [Gruppe] [Seite]"
|
||||
- "%lang:command|forsale|/as info forsale|% [Gruppe] [Seite]"
|
||||
- "%lang:command|reselling|/as info reselling|% [Gruppe] [Seite]"
|
||||
- "%lang:command|nogroup|/as info nogroup|% [Seite]"
|
||||
- "%lang:command|region|/as info region|% [Region]"
|
||||
info-noPermission: "Du hast keine Berechtigung, Informationen über Regionen zu erhalten."
|
||||
info-allHeader: "Alle Regionen%0%:"
|
||||
info-rentedHeader: "Gemietete Regionen%0%:"
|
||||
@@ -176,9 +167,23 @@ info-nogroupNone: "Es gibt keine Regionen ohne Gruppe."
|
||||
info-noFiltergroup: "Gruppe '%0%' existiert nicht und kann deshalb nicht genutzt werden um die Ergebnisse zu limitieren."
|
||||
info-noRegions: "Es wurden keine Regionen gefunden."
|
||||
info-wrongPage: "%0% ist keine korrekte Seitenzahl."
|
||||
info-entryForrent: "[darkgreen][bold]►[reset] %lang:region%: [gray]Zur Vermietung für %price% je %duration%."
|
||||
info-entryRented: "[darkgreen][bold]►[reset] %lang:region%: [gray]Vermietet an %lang:player%."
|
||||
info-entryForsale: "[darkgreen][bold]►[reset] %lang:region%: [gray]Zum Verkauf für %price%."
|
||||
info-entrySold: "[darkgreen][bold]►[reset] %lang:region%: [gray]Verkauft an %lang:player%."
|
||||
info-entryReselling: "[darkgreen][bold]►[reset] %lang:region%: [gray]Verkauft an %lang:player% (Weiterverkauf)."
|
||||
info-pageStatus: "[gold]Seite %0%/%1%"
|
||||
info-pagePrevious:
|
||||
- " [gold][bold]◄Vorherige[/bold] "
|
||||
- " hover: %lang:action|Zeige vorherige Seite|%"
|
||||
- " command: %0%"
|
||||
info-pageNoPrevious:
|
||||
- " [darkgray][bold]◄Vorherige[/bold] "
|
||||
- " hover: Das ist bereits die erste Seite."
|
||||
info-pageNext:
|
||||
- " [gold][bold]Nächste►[/bold]"
|
||||
- " hover: %lang:action|Zeige nächste Seite|%"
|
||||
- " command: %0%"
|
||||
info-pageNoNext:
|
||||
- " [darkgray][bold]Nächste►[/bold]"
|
||||
- " hover: Das ist bereits die letzte Seite."
|
||||
@@ -236,23 +241,23 @@ info-regionMoneyBackRent: "[darkgreen][bold]►[reset] Rückzahlung bei Mietkün
|
||||
info-regionMoneyBackRentClick:
|
||||
- "[darkgreen][bold]►[reset] "
|
||||
- "[bold]Mietrückzahlung[/bold]"
|
||||
- " hover: Mietabbruch %region% und bekomme %moneyback% zurück"
|
||||
- " hover: %lang:action|Mietabbruch %region%|%"
|
||||
- " hover: Entmiete %region% und bekomme %moneyback% zurück"
|
||||
- " hover: %lang:action|Unrent %region%|%"
|
||||
- " command: /areashop unrent %region%"
|
||||
- ": [gray]%moneyback% (%moneybackpercent%% der verbleibenden Zeit)."
|
||||
info-regionMaxExtends: "[darkgreen][bold]►[reset] Maximale Anzahl an Mietverlängerungen: [gray]%maxextends% mal."
|
||||
info-regionMaxExtends: "[darkgreen][bold]►[reset] Maximale Anzahl an Verlängerungen: [gray]%maxextends% ."
|
||||
info-regionNoExtending: "[darkgreen][bold]►[reset] Miete kann nicht verlängert werden."
|
||||
info-regionExtendsLeft: "[darkgreen][bold]►[reset] Verbleibende Mietverlängerungen: [gray]%extendsleft% von %maxextends% mal."
|
||||
info-regionExtendsLeft: "[darkgreen][bold]►[reset] Verbleibende Mietverlängerungen: [gray]%extendsleft% von %maxextends% ."
|
||||
info-regionMaxRentTime: "[darkgreen][bold]►[reset] Miete im Voraus: [gray]Maximal %maxrenttime%."
|
||||
info-prefix: "[darkgreen][bold]►[reset] "
|
||||
info-regionTeleport:
|
||||
- "[bold]Gehe zu der Region[/bold]"
|
||||
- " hover: %lang:action|Teleportiere zu %region%|%"
|
||||
- " hover: %lang:action|Teleport to %region%|%"
|
||||
- " command: /areashop tp %region%"
|
||||
info-setRegionTeleport:
|
||||
- "[bold]Setze den Teleport Punkt[/bold]"
|
||||
- " hover: %region%"
|
||||
- " hover: %lang:action|Setze den Teleport Punkt|%"
|
||||
- " hover: %lang:action|Set teleport location|%"
|
||||
- " command: /areashop settp %region%"
|
||||
info-regionSigns: "[darkgreen][bold]►[reset] Verbundene Schilder: [gray]%0%."
|
||||
info-regionSignLocation: "[gray](%0%, %1%, %2%, %3%)[reset]"
|
||||
@@ -263,21 +268,18 @@ info-regionRestrictedRegionRent: "[darkgreen][bold]►[reset] Du musst dich in d
|
||||
info-regionRestrictedWorldRent: "[darkgreen][bold]►[reset] Du musst in der Welt '%world%' sein, um die Region %lang:region% mieten zu können."
|
||||
info-regionRestrictedRegionBuy: "[darkgreen][bold]►[reset] Du musst dich in der Region %lang:region% befinden, um sie kaufen zu können."
|
||||
info-regionRestrictedWorldBuy: "[darkgreen][bold]►[reset] Du musst in der Welt '%world%' sein, um die Region %lang:region% kaufen zu können."
|
||||
info-regionRestoringRent: "[darkgreen][bold]►[reset] Die Wiederherstellung ist aktiviert [gray](Region wird bei Mietkündigung zurückgesetzt)%0%."
|
||||
info-regionRestoringBuy: "[darkgreen][bold]►[reset] Die Wiederherstellung ist aktiviert. [gray](Region wird beim Verkauf zurückgesetzt)%0%."
|
||||
info-regionRestoringProfile: " (profile: %0%)"
|
||||
info-regionLandlord: "[darkgreen][bold]►[reset] Vermieter: [gray]%lang:landlord% (Erhält das Geld)."
|
||||
info-regionNotExisting: "Die angegebene Region ist nicht registriert: %0%."
|
||||
|
||||
setrestore-help: "/as setrestore <Region> <true|false|general> [Profil]."
|
||||
setrestore-noPermission: "Du bist nicht berechtigt, die Wiederherstellungs-Einstellungen zu verändern."
|
||||
setrestore-notRegistered: "Die angegebene Region ist nicht registriert: %0%."
|
||||
setrestore-invalidSetting: "'%0%' ist kein gültiger Status, kann true sein, false oder general."
|
||||
setrestore-invalidSetting: "'%0%' ist keine gültige Angabe, benutze true, false oder general."
|
||||
setrestore-success: "Wiederherstellungs-Einstellungen von %lang:region% erfolgreich zu '%0%' geändert."
|
||||
setrestore-successProfile: "Wiederherstellungs-Einstellungen von %lang:region% erfolgreich zu '%0%' geändert und das Profil zu '%1%' geändert."
|
||||
setrestore-successProfile: "Wiederherstellungs-Einstellungen von %lang:region% erfolgreich zu '%0%' geändert und das Profil zu '%1%'."
|
||||
|
||||
setprice-noPermission: "Du bist nicht berechtigt, den Preis einer Region zu ändern."
|
||||
setprice-help: "/as setprice <Preis> [Region], Wenn kein Regionsname angegeben wird, wird die Region genutzt, in der du dich gerade befindest."
|
||||
setprice-help: "/as setprice <Preis> [Region], Andert den Preis der Region in der du stehst wenn keine Region angegeben wird."
|
||||
setprice-notRegistered: "Die angegebene Region ist nicht registriert: %0%."
|
||||
setprice-wrongPrice: "'%0%' ist kein gültiger Preis."
|
||||
setprice-successRent: "Der Preis der Region %lang:region% änderte sich zu %price% per %duration%."
|
||||
@@ -286,7 +288,7 @@ setprice-successRemoved: "Der Preis der Region %lang:region% wurde entfernt, ab
|
||||
setprice-noLandlord: "Du hast keine Rechte um den Preis zu ändern, da du nicht der Vermieter der Region %lang:region% bist."
|
||||
|
||||
setduration-noPermission: "Du hast keine Berechtigung, die Mietdauer zu verändern."
|
||||
setduration-help: "/as setduration <Anzahl> <Zeiteinheit> [Region], wählt automatisch die Region, in der du dich gerade befindest, wenn nichts angegeben wird."
|
||||
setduration-help: "/as setduration <Anzahl> <Zeiteinheit> [Region], ändert die Zeit der Region in der du dich befindest wenn keine Region angegeben wurde."
|
||||
setduration-notRegistered: "%0% ist nicht als mietbar registriert."
|
||||
setduration-wrongAmount: "'%0%' ist keine gültige Anzahl, gib eine ganze Zahl an."
|
||||
setduration-wrongFormat: "'%0%' ist kein gültiges Zeitformat, schau in der Doku auf Bukkit nach."
|
||||
@@ -303,14 +305,14 @@ setup-noPrice: "Du hast in der vierten Zeile noch keinen Preis angegeben."
|
||||
setup-wrongPrice: "Du hast den Preis nicht korrekt angegeben, bitte nutze dafür ausschließlich Zahlen."
|
||||
setup-rentSuccess: "Die Vermietung der Region %lang:region% ist erfolgreich erstellt worden."
|
||||
setup-buySuccess: "Das Kaufen der Region %lang:region% ist erfolgreich erstellt worden."
|
||||
setup-noPermissionRent: "Du hast keine Berechtigungen um mietbare Regionen aufzusetzen."
|
||||
setup-noPermissionBuy: "Du hast keine Berechtigungen um kaufbare Regionen aufzusetzen."
|
||||
setup-noPermissionRent: "Du hast keine Berechtigungen um mietbare Regionen zu erstellen."
|
||||
setup-noPermissionBuy: "Du hast keine Berechtigungen um kaufbare Regionen zu erstellen."
|
||||
setup-couldNotDetect: "Mehrere Regionen mit der selben Priorität und/oder Eltern/Kind-Verhältnis gefunden, bitte gib die gewünschte Region in der zweiten Zeile an (zwei der gefundenen Regionen: %lang:tRegion|%0%|% und %lang:tRegion|%1%|%)."
|
||||
setup-blacklisted: "%0% ist auf der Blacklist und kann nicht in AreaShop eingefügt werden."
|
||||
setup-noPermission: "Du kannst die Region '%0%' nicht hinzufügen, da du weder Besitzer noch Mitglied der Region bist oder keine Rechte dazu hast."
|
||||
|
||||
destroy-noPermissionRent: "Du hast keine Berechtigungen um eine mietbare Region zu deregistrieren. "
|
||||
destroy-noPermissionBuy: "Du hast keine Berechtigungen um eine kaufbare Region zu deregistrieren. "
|
||||
destroy-noPermissionRent: "Du hast keine Berechtigungen um eine mietbare Region abzumelden. "
|
||||
destroy-noPermissionBuy: "Du hast keine Berechtigungen um eine kaufbare Region abzumelden. "
|
||||
destroy-successRent: "%lang:region% erfolgreich als mietbare Region abgemeldet."
|
||||
destroy-successBuy: "%lang:region% erfolgreich als kaufbare Region abgemeldet."
|
||||
|
||||
@@ -319,9 +321,9 @@ teleport-noRentOrBuy: "Die angegebene Region ist nicht registriert: %0%."
|
||||
teleport-noPermission: "Du hast keine Rechte um dich zu dieser Region zu teleportieren."
|
||||
teleport-noPermissionOther: "Du bist nicht berechtigt, dich zu einer Region zu teleportieren, welche du nicht besitzt."
|
||||
teleport-noPermissionSign: "Du hast keine Rechte um dich zu diesem Schild in deiner Region zu teleportieren."
|
||||
teleport-noPermissionOtherSign: "Du fehlt die Berechtigung, dich zu Schildern von Regionen, die du nicht besitzt, zu teleportieren."
|
||||
teleport-noPermissionFriend: "Du hast keine Berechtigungen zu Regionen zu teleporten, in denen du als Freund hinzugefügt worden bist."
|
||||
teleport-noPermissionFriendSign: "Du hast keine Berechtigungen um zu dem Schild einer Region zu teleporten, in denen du als Freund hinzugefügt worden bist."
|
||||
teleport-noPermissionOtherSign: "Du hast keine Berechtigung, dich zu Schildern von Regionen, die du nicht besitzt, zu teleportieren."
|
||||
teleport-noPermissionFriend: "Du hast keine Berechtigungen, dich zu Regionen zu teleporten, in denen du als Freund hinzugefügt worden bist."
|
||||
teleport-noPermissionFriendSign: "Du hast keine Berechtigungen, dich zu dem Schild einer Region zu teleportieren, in denen du als Freund hinzugefügt worden bist."
|
||||
teleport-success: "Du wurdest zu %lang:region% teleportiert."
|
||||
teleport-successSign: "Du wurdest zum Schild von %lang:region% teleportiert."
|
||||
teleport-noSafe: "Keine sichere Position in %lang:region% gefunden, kein Boden vorhanden oder maximale Anzahl an Versuchen erreicht (%0%/%1%)."
|
||||
@@ -383,7 +385,6 @@ add-failed: "Bereits eingetragen: [gray]%0%."
|
||||
add-blacklisted: "Auf der Blacklist: [gray]%0%."
|
||||
add-specifyWorld: "Bei Verwendung der Konsole bitte Welt der Region eintragen."
|
||||
add-incorrectWorld: "Welt '%0%' nicht gefunden, versuche es bitte noch einmal (Groß- und Kleinschreibung beachten)."
|
||||
add-noRegion: "WorldGuard Region '%0%' existiert nicht in dieser Welt."
|
||||
add-noPermissionRegions: "Keine Rechte zum hinzufügen: [gray]%0%."
|
||||
add-noPermissionOwnerMember: "[gray]Entweder bist du weder Mitglied noch Besitzer der Region oder hast keine Rechte um deine Regionen hinzuzufügen."
|
||||
|
||||
@@ -400,7 +401,7 @@ addsign-wrongProfile: "Das eingetragene Profil existiert nicht. Bitte benutze ei
|
||||
addsign-profile:
|
||||
- "[bold]%0%[/bold]"
|
||||
- " hover: Schildprofil %0%"
|
||||
- " hover: %lang:action|Nutze dieses Profil|%"
|
||||
- " hover: %lang:action|Use this profile|%"
|
||||
- " command: /areashop linksigns %0%"
|
||||
addsign-success: "Das Schild wurde hinzugefügt zu %lang:region%."
|
||||
addsign-successProfile: "Das Schild wurde zu %lang:region% mit dem Profil %0% hinzugefügt."
|
||||
@@ -415,9 +416,20 @@ delsign-success: "Das Schild wurde von der Region %lang:region% entfernt."
|
||||
me-noPermission: "Dir fehlt die Berechtigung einzusehen, welche Regionen du besitzt."
|
||||
me-header: "Regionen von %lang:tPlayer|%0%|%:"
|
||||
me-notAPlayer: "Du bist kein Spieler, darum können dir keine Regionen gehören."
|
||||
me-rentLine:
|
||||
- "[darkgreen][bold]►[reset] %lang:region% [gray]("
|
||||
- "%timeleft% übrig"
|
||||
- " hover: bis %until%"
|
||||
- ")."
|
||||
me-buyLine: "[darkgreen][bold]►[reset] %lang:region%."
|
||||
me-friendLine:
|
||||
- "[darkgreen][bold]►[reset] %lang:region% [gray]("
|
||||
- "Im Besitz von %lang:player%"
|
||||
- " hover: Du wurdest als Freund hinzugefügt"
|
||||
- ")."
|
||||
me-nothing: "%lang:tPlayer|%0%|% hat keine gemieteten oder gekaufen Regionen und wurde nicht als Freund zu einem hinzugefügt."
|
||||
me-noPlayer: "%0% konnte nicht gefunden werden, möglicherweise war er nie auf diesem Server."
|
||||
me-clickHint: "[gray][italic]Klicke auf eine Region, um weitere Details zu erhalten."
|
||||
|
||||
setowner-help: "/as setowner <Spieler> [Region], wenn kein Regionsname angegeben wird, wird die Region genutzt, in der du dich gerade befindest."
|
||||
setowner-noPermission: "Dir fehlt die Berechtigung den Besitzer einer Region festzulegen."
|
||||
@@ -445,8 +457,8 @@ stopresell-noPermission: "Du hast keine Berechtigung, den Weiterverkauf deiner R
|
||||
stopresell-noPermissionOther: "Du hast keine Berechtigung, den Weiterverkauf einer Region zu stoppen."
|
||||
|
||||
addfriend-help: "/as addfriend <Spieler> [Region], wählt automatisch die Region, in der du dich befindest, wenn nicht angegeben."
|
||||
addfriend-noPermissionOther: "Du hast keine Berechtigung, Freunde zu deiner Region hinzuzufügen."
|
||||
addfriend-noPermission: "Du hast keine Berechtigung, Spieler zu einer Region hinzuzufügen."
|
||||
addfriend-noPermissionOther: "Du hast keine Berechtigung, Freunde zu einer Region hinzufügen, welche dir nicht gehört."
|
||||
addfriend-noPermission: "Du hast keine Berechtigung, Spieler zu deiner Region hinzuzufügen."
|
||||
addfriend-successOther: "%lang:tPlayer|%0%|% wurde als Freund zur Region %lang:region% hinzugefügt."
|
||||
addfriend-success: "%lang:tPlayer|%0%|% wurde als Freund zu deiner Region %lang:region% hinzugefügt."
|
||||
addfriend-alreadyAdded: "%lang:tPlayer|%0%|% wurde bereits als Freund zu der Region %lang:region% hinzugefügt."
|
||||
@@ -459,12 +471,13 @@ delfriend-noPermissionOther: "Du hast keine Berechtigung, Freunde von Regionen z
|
||||
delfriend-noPermission: "Du hast keine Berechtigung, Freunde von deinen Regionen zu entfernen."
|
||||
delfriend-successOther: "%lang:tPlayer|%0%|% wurde als Freund der Region %lang:region% entfernt."
|
||||
delfriend-success: "%lang:tPlayer|%0%|% wurde als Freund Deiner Region %lang:region% entfernt."
|
||||
delfriend-notAdded: "%lang:tPlayer|%0%|% wurde nicht als Freund zur Region %lang:region% hinzugefügt."
|
||||
delfriend-noOwner: "Du kannst keine Freunde von einer Region ohne Besitzer entfernen."
|
||||
|
||||
linksigns-multipleRegions: "Mehrere Regionen gefunden: [gray]%0%."
|
||||
linksigns-multipleRegionsAdvice: "Bitte klicke nochmal oder benutze '/as linksigns' um aufzuhören."
|
||||
linksigns-multipleRegionsAdvice: "Bitte klicke nochmal oder benutze '/as linksigns', um aufzuhören."
|
||||
linksigns-noRegions: "Keine AreaShop Regionen in Cursorrichtung gefunden, bitte stell sicher, dass die Region in AreaShop registriert ist. [gray](Maximale Reichweite 100 Blöcke)"
|
||||
linksigns-regionFound: "Region %lang:region% wurde gefunden, mach einen Linksklick auf ein Schild um die Region mit dem Schild zu verbinden."
|
||||
linksigns-regionFound: "Region %lang:region% wurde gefunden, verbinde sie jetzt mit einem Linksklick auf ein Schild."
|
||||
linksigns-signFound: "Schild gefunden bei (%0%, %1%, %2%), mach einen Rechtsklick auf eine Region um das Schild zu verbinden."
|
||||
linksigns-noSign: "Kein Schild in Cursorrichtung gefunden, bitte stell sicher, dass du eine direkte Sicht auf ein Schild hast und klicke erneut [gray](Maximale Reichweite 100 Blöcke)."
|
||||
linksigns-alreadyRegistered: "Dieses Schild ist bereits auf die Region %lang:region% registriert, klicke erneut um ein anderes Schild zu wählen."
|
||||
@@ -488,8 +501,6 @@ stack-wrongAmount: "'%0%' ist keine korrekte Anzahl von Regionen."
|
||||
stack-wrongGap: "'%0%' ist keine korrekte Nummer von Blöcken für den Abstand, der zwischen den Regionen sein soll."
|
||||
stack-noSelection: "Du hast keine Auswahl, die angibt, wo die erste Region erstellt werden soll."
|
||||
stack-addStart: "[gray]Füge %0% Regionen mit %1% Regionen pro Sekunde hinzu."
|
||||
stack-addComplete: "[gray]Regionen erfolgreich hinzugefügt."
|
||||
stack-unclearDirection: "Bitte gucke nur nach Norden, Osten, Süden oder Westen. Du guckst im Moment nach %0%."
|
||||
|
||||
setlandlord-help: "/as setlandlord <Spieler> [Region], die Region in der du stehst wird verwendet, wenn keine angegeben wird."
|
||||
setlandlord-noPermission: "Du hast keine Rechte um den Vermieter einer Region zu setzen."
|
||||
@@ -501,29 +512,29 @@ message-notOnline: "%0% ist nicht online."
|
||||
|
||||
confirm-rent:
|
||||
- "%lang:prefix%Bist du sicher, dass du %lang:tRegion|%0%|% mieten willst?"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Klick zum mieten %0%|%"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Klick zum Mieten %0%|%"
|
||||
- "hover: %lang:action|Rent %0%|%"
|
||||
- "command: /areashop rent %0%"
|
||||
confirm-extend:
|
||||
- "%lang:prefix%Bist du sicher, dass du %lang:tRegion|%0%|% verlängern willst?"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Click to extend %0%|%"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Klick zum Verlängern %0%|%"
|
||||
- "hover: %lang:action|Verlängern %0%|%"
|
||||
- "command: /areashop rent %0%"
|
||||
confirm-unrent:
|
||||
- "%lang:prefix%Bist du sicher, dass du %lang:tRegion|%0%|% nicht länger mieten möchtest?"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Klick zum auflösen %0%|%"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Klick zum Auflösen %0%|%"
|
||||
- "hover: %lang:action|Mietvertrag auslösen %0%|%"
|
||||
- "command: /areashop unrent %0%"
|
||||
confirm-buy:
|
||||
- "%lang:prefix%Bist du sicher, dass du %lang:tRegion|%0%|% kaufen willst?"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Klick zum kaufen %0%|%"
|
||||
- "hover: %lang:action|Kaufen %0%|%"
|
||||
- "command: /areashop buy %0%"
|
||||
- "%lang:prefix% Bist du sicher das du %lang:tRegion|%0%|% kaufen möchtest?[break]"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Click to buy %0%|%"
|
||||
- " hover: %lang:action|Buy %0%|%"
|
||||
- " command: /areashop buy %0% "
|
||||
confirm-sell:
|
||||
- "%lang:prefix%Bist du sicher, dass du %lang:tRegion|%0%|% verkaufen willst?[break]"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Klick zum verkaufen %0%|%"
|
||||
- " hover: %lang:action|Verkaufen %0%|%"
|
||||
- " command: /areashop sell %0%"
|
||||
- "%lang:prefix% Bist du sicher, dass du %lang:tRegion|%0%|% verkaufen willst?[break]"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Klick zum Verkaufen von %0%|%"
|
||||
- " hover: %lang:action|Verkaufe %0%|%"
|
||||
- " command: /areashop sell %0% "
|
||||
|
||||
timeleft-years: "%0% Jahre"
|
||||
timeleft-months: "%0% Monate"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
|
||||
# ║ Language file of the AreaShop plugin created by NLThijs48, Github can be found at https://github.com/NLthijs48/AreaShop ║
|
||||
# ║ Language: English, Version: V2.3.2, Percentage translated: 100% (source), author: NLThijs48 ║
|
||||
# ║ Language: English, Version: V2.4.0, Percentage translated: 100% (source), author: NLThijs48 ║
|
||||
# ║ This file will be overwritten at each startup/reload of the plugin, if you want to change anything then do the following: ║
|
||||
# ║ 1: Make a copy of this file ║
|
||||
# ║ 2: Rename it to <servername>.yml (don't use a language code as filename, could otherwise be overwritten in future updates) ║
|
||||
@@ -25,10 +25,10 @@ helpCommand:
|
||||
region: "%lang:tRegion|%region%|%"
|
||||
|
||||
tRegion:
|
||||
- "[bold]%0%[/bold]"
|
||||
- " hover: Region %0%"
|
||||
- " hover: %lang:action|Region information|%"
|
||||
- " command: /areashop info region %0%"
|
||||
- "[bold]%0%[/bold]"
|
||||
- " hover: Region %0%"
|
||||
- " hover: %lang:action|Region information|%"
|
||||
- " command: /areashop info region %0%"
|
||||
|
||||
player: "%lang:tPlayer|%player%|%"
|
||||
|
||||
@@ -58,7 +58,8 @@ cmd-weOnlyByPlayer: "Using a WorldEdit selection is only possible as a player, s
|
||||
cmd-noSelection: "You don't have a WorldEdit selection."
|
||||
cmd-noRegionsFound: "No regions registered in AreaShop are found in your selection."
|
||||
cmd-noWERegionsFound: "No WorldEdit regions intersecting your selection are found."
|
||||
cmd-notRegistered: "The specified region is not available in AreaShop: %0%."
|
||||
cmd-notRegistered: "Region '%0%' is not available in AreaShop."
|
||||
cmd-noRegion: "'%0%' is not a valid WorldGuard region."
|
||||
cmd-noRegionsAtLocation: "No regions found at your location, specify the region as argument."
|
||||
cmd-moreRegionsAtLocation: "More than one region has been found at your location, specify the region as argument."
|
||||
cmd-automaticRegionOnlyByPlayer: "Automatically determining the region is only possible for players, specify the region as argument."
|
||||
@@ -115,6 +116,7 @@ rent-maxRentTime: "You cannot rent %lang:region% more time in advance, the maxim
|
||||
rent-restrictedToWorld: "You need to be in the '%world%' world to rent %lang:region% (you are in '%0%')."
|
||||
rent-restrictedToRegion: "You need to be inside %lang:region% to rent it."
|
||||
rent-expireWarning: "Your region %lang:region% has %timeleft% left, be sure to extend it if you want to keep it."
|
||||
rent-expiringSoon: "Your region %lang:tRegion|%0%|% has %1% left, be sure to extend it if you want to keep it."
|
||||
rent-alreadyAtFull: "%lang:region% is already at or above the maximum rental time, you cannot extend it yet."
|
||||
|
||||
buy-help: "/as buy [region], the region you stand in will be used if not specified."
|
||||
@@ -163,8 +165,8 @@ info-help:
|
||||
- " %lang:command|sold|/as info sold|% [group] [page][break]"
|
||||
- " %lang:command|forsale|/as info forsale|% [group] [page][break]"
|
||||
- " %lang:command|reselling|/as info reselling|% [group] [page][break]"
|
||||
- " %lang:command|nogroup|/as info nogroup [page]|%"
|
||||
- " %lang:command|region|/as info region|% [region][break]"
|
||||
- " %lang:command|nogroup|/as info nogroup [page]|%[break]"
|
||||
- " %lang:command|region|/as info region|% [region]"
|
||||
info-noPermission: "You don't have permission to get information about regions."
|
||||
info-allHeader: "All regions%0%:"
|
||||
info-rentedHeader: "Rented regions%0%:"
|
||||
@@ -284,9 +286,8 @@ info-regionRestrictedRegionRent: "[darkgreen][bold]►[reset] You must be inside
|
||||
info-regionRestrictedWorldRent: "[darkgreen][bold]►[reset] You need to be inside world '%world%' to rent %lang:region%."
|
||||
info-regionRestrictedRegionBuy: "[darkgreen][bold]►[reset] You must be inside %lang:region% to buy it."
|
||||
info-regionRestrictedWorldBuy: "[darkgreen][bold]►[reset] You need to be inside world '%world%' to buy %lang:region%."
|
||||
info-regionRestoringRent: "[darkgreen][bold]►[reset] Restoring is enabled [gray](region will reset at unrent)%0%."
|
||||
info-regionRestoringBuy: "[darkgreen][bold]►[reset] Restoring is enabled [gray](region will reset at sell)%0%."
|
||||
info-regionRestoringProfile: " (profile: %0%)"
|
||||
info-regionRestoringRent: "[darkgreen][bold]►[reset] Restoring is enabled [gray](region will reset at unrent)."
|
||||
info-regionRestoringBuy: "[darkgreen][bold]►[reset] Restoring is enabled [gray](region will reset at sell)."
|
||||
info-regionLandlord: "[darkgreen][bold]►[reset] Landlord: [gray]%lang:landlord% (receives the money)."
|
||||
info-regionNotExisting: "The specified region is not registered: %0%."
|
||||
|
||||
@@ -343,6 +344,8 @@ teleport-noPermissionSign: "You don't have permission to teleport to the sign of
|
||||
teleport-noPermissionOtherSign: "You don't have permission to teleport to signs of regions you do not own."
|
||||
teleport-noPermissionFriend: "You don't have permission to teleport to regions you are added to as a friend."
|
||||
teleport-noPermissionFriendSign: "You don't have permission to teleport to the sign of regions you are added to as a friend."
|
||||
teleport-noPermissionAvailable: "You don't have permission to teleport to available regions."
|
||||
teleport-noPermissionAvailableSign: "You don't have permission to teleport to the sign of available regions."
|
||||
teleport-success: "You teleported to %lang:region%."
|
||||
teleport-successSign: "You teleported to the sign of %lang:region%."
|
||||
teleport-noSafe: "No safe position found in %lang:region%, no spots in the region left or maximum tries exceeded (%0%/%1%)."
|
||||
@@ -404,7 +407,6 @@ add-failed: "Already registered: [gray]%0%."
|
||||
add-blacklisted: "On the blacklist: [gray]%0%."
|
||||
add-specifyWorld: "Specify the world of the region when using from console."
|
||||
add-incorrectWorld: "World '%0%' not found, try again (case-sensitive)."
|
||||
add-noRegion: "WorldGuard region '%0%' does not exist in this world."
|
||||
add-noPermissionRegions: "No permission to add: [gray]%0%."
|
||||
add-noPermissionOwnerMember: "[gray]You either are not a member/owner of these regions or have no permission to add your regions."
|
||||
|
||||
@@ -521,8 +523,10 @@ 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: "[gray]Adding %0% regions at %1% per second."
|
||||
stack-addComplete: "[gray]Adding regions complete."
|
||||
stack-unclearDirection: "Please look clearly in the north, east, south or west direction, currently detected %0%."
|
||||
stack-addComplete: "[gray]Added %0% regions%1%."
|
||||
stack-tooHigh: ", %0% regions skipped because they were above Y=256"
|
||||
stack-tooLow: ", %0% regions skipped because they were below Y=0"
|
||||
stack-unclearDirection: "Please look clearly in the north, east, south, west, up or down direction, currently detected %0%."
|
||||
|
||||
setlandlord-help: "/as setlandlord <player> [region], the region you stand in will be used if not specified."
|
||||
setlandlord-noPermission: "You don't have permission to set the landlord for a region."
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
|
||||
# ║ Language file of the AreaShop plugin created by NLThijs48, Github can be found at https://github.com/NLthijs48/AreaShop ║
|
||||
# ║ Language: French, Version: V2.3.2, Percentage translated: 96% ║
|
||||
# ║ Language: French, Version: V2.4.0, Percentage translated: 97% ║
|
||||
# ║ This file will be overwritten at each startup/reload of the plugin, if you want to change anything then do the following: ║
|
||||
# ║ 1: Make a copy of this file ║
|
||||
# ║ 2: Rename it to <servername>.yml (don't use a language code as filename, could otherwise be overwritten in future updates) ║
|
||||
@@ -8,24 +8,26 @@
|
||||
# ║ 4: Change the strings in the new file to your liking and save the file ║
|
||||
# ║ 5: Use '/as reload' or reload/restart your server to see the changes ║
|
||||
# ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
|
||||
action: "[gold][bold]<%0%>[/bold]"
|
||||
|
||||
button: "[bold]<%0%>[/bold]"
|
||||
|
||||
command:
|
||||
- "[bold]%0%[/bold]"
|
||||
- " hover: %lang:action|Utilise %1%|%"
|
||||
- " hover: %lang:action|Utilisez %1%|%"
|
||||
- " command: %1%"
|
||||
|
||||
helpCommand:
|
||||
- "[gold]%0% [gray]-[reset]"
|
||||
- " hover: %lang:action|Utilise%0%|%"
|
||||
- " hover: %lang:action|Utilisez %0%|%"
|
||||
- " command: %0%"
|
||||
|
||||
region: "%lang:tRegion|%region%|%"
|
||||
region: "%lang:tRégion|%region%|%"
|
||||
|
||||
tRegion:
|
||||
- "[bold]%0%[/bold]"
|
||||
- " hover: Région %0%"
|
||||
- " hover: %lang:action|Région information|%"
|
||||
- " hover: %lang:action|Information sur la région|%"
|
||||
- " command: /areashop info region %0%"
|
||||
|
||||
player: "%lang:tPlayer|%player%|%"
|
||||
@@ -38,7 +40,7 @@ tPlayer:
|
||||
|
||||
landlord:
|
||||
- "[bold]%landlord%[/bold]"
|
||||
- " hover: Bailleur%landlord%"
|
||||
- " hover: Bailleur %landlord%"
|
||||
- " hover: %lang:action|Région de %landlord%|%"
|
||||
- " command: /areashop info player %landlord%"
|
||||
|
||||
@@ -47,7 +49,7 @@ total-maximum: "Vous ne pouvez pas louer ou acheter plus de %0% région(s) au to
|
||||
general-notReady: "AreaShop n'est pas totalement chargé, merci d'attendre."
|
||||
general-noWorld: "Vous ne pouvez pas faire ceci, le monde de %lang:region% n'est en ce moment pas disponible (monde '%world%')."
|
||||
general-noRegion: "Vous ne pouvez pas faire ceci, la région WorldGuard n'est pour le moment pas disponible (région %lang:region%)."
|
||||
general-noEconomy: "Il n'y a pas de plugin d'économie sur votre serveur, ou bien qu'il n'est pas correctement installé. Merci de prévenir l'opérateur du serveur dès que possible."
|
||||
general-noEconomy: "Il n'y a pas de plugin d'économie sur votre serveur, ou celui-ci n'est pas correctement installé. Merci de prévenir l'administrateur du serveur."
|
||||
general-cancelled: "%0%"
|
||||
|
||||
cmd-notValid: "Cette commande est incorrecte, utilisez '/as help' pour plus de détails."
|
||||
@@ -56,21 +58,20 @@ cmd-weOnlyByPlayer: "Utiliser une sélection WorldEdit n'est possible qu'en tant
|
||||
cmd-noSelection: "Vous n'avez pas de séléction WorldEdit."
|
||||
cmd-noRegionsFound: "Aucune région enregistrée dans AreaShop n'a été trouvée dans votre séléction."
|
||||
cmd-noWERegionsFound: "Aucune région WorldEdit croisant votre séléction n'a été trouvée."
|
||||
cmd-notRegistered: "La région spécifiée n'est pas disponible dans AreaShop: %0%."
|
||||
cmd-noRegionsAtLocation: "Aucune région trouvée à votre emplacement, spécifiez la région comme un argument."
|
||||
cmd-moreRegionsAtLocation: "Plus d'une région ont été trouvées à votre emplacement, spécifiez la région comme un argument."
|
||||
cmd-automaticRegionOnlyByPlayer: "Déterminer la région automatiquement est disponible uniquement pour les joueurs, spécifiez la région comme un argument."
|
||||
cmd-automaticRegionOnlyByPlayer: "Déterminer la région automatiquement est possible uniquement pour les joueurs, spécifiez la région comme un argument."
|
||||
|
||||
help-header: "Page d'aide, commandes que vous pouvez exécuter."
|
||||
help-noPermission: "Vous ne pouvez pas voir la page d'aide."
|
||||
help-noPermission: "Vous n'avez pas la permission de voir la page d'aide."
|
||||
help-alias: "Alias des commandes : /areashop, /as"
|
||||
help-help: "%lang:helpCommand|/as help|% Montre cette page d'aide."
|
||||
help-help: "%lang:helpCommand|/as help|% Affiche cette page d'aide."
|
||||
help-info: "%lang:helpCommand|/as info|% Obtenir les informations sur les régions actuelles."
|
||||
help-rent: "%lang:helpCommand|/as rent|% Louer une région, ou prolonger la location actuelle."
|
||||
help-buy: "%lang:helpCommand|/as buy|% Acheter une région."
|
||||
help-unrent: "%lang:helpCommand|/as unrent|% Ne plus louer une région."
|
||||
help-sell: "%lang:helpCommand|/as sell|% Vendre une région."
|
||||
help-reload: "%lang:helpCommand|/as reload|% Reloader tout les fichiers et régions."
|
||||
help-reload: "%lang:helpCommand|/as reload|% Recharge tous les fichiers et met à jour les régions."
|
||||
help-setrestore: "%lang:helpCommand|/as setrestore|% Active/Désactive la restauration et choix du profil."
|
||||
help-setprice: "%lang:helpCommand|/as setprice|% Changer le prix d'une région."
|
||||
help-setduration: "%lang:helpCommand|/as setduration|% Changer le temps de location d'une région."
|
||||
@@ -83,11 +84,11 @@ help-grouplist: "%lang:helpCommand|/as grouplist|% Afficher tout les groupes."
|
||||
help-groupinfo: "%lang:helpCommand|/as groupinfo|% Afficher des informations sur un groupe."
|
||||
help-schemevent: "%lang:helpCommand|/as schemevent|% Déclenche un événement schématique d'une région."
|
||||
help-add: "%lang:helpCommand|/as add|% Enregistrer une région à la vente ou à la location."
|
||||
help-del: "%lang:helpCommand|/as del|% Supprimer une région enregistrée par AreaShop."
|
||||
help-del: "%lang:helpCommand|/as del|% Supprimer une région enregistrée dans AreaShop."
|
||||
help-addsign: "%lang:helpCommand|/as addsign|% Ajouter un panneau à une région existante."
|
||||
help-delsign: "%lang:helpCommand|/as delsign|% Supprimer le panneau que vous regardez."
|
||||
help-me: "%lang:helpCommand|/as me|% Voir les régions que vous possédez (et le temps restant)."
|
||||
help-setowner: "%lang:helpCommand|/as setowner|% Change le propriétaire d'une région ou allonge le temps de location."
|
||||
help-setowner: "%lang:helpCommand|/as setowner|% Change le propriétaire d'une région ou prolonge le temps de location."
|
||||
help-resell: "%lang:helpCommand|/as resell|% Mettre une région en revente."
|
||||
help-stopResell: "%lang:helpCommand|/as stopresell|% Ne plus revendre votre région."
|
||||
help-addFriend: "%lang:helpCommand|/as addfriend|% Ajouter un ami à votre région."
|
||||
@@ -99,23 +100,23 @@ help-setlandlord: "%lang:helpCommand|/as setlandlord|% Définir le bailleur d'un
|
||||
rent-help: "/as rent [region], Si non spécifiée, cible la région dans laquelle vous vous trouvez."
|
||||
rent-noPermission: "Vous n'avez pas la permission de louer une région."
|
||||
rent-maximum: "Vous ne pouvez pas louer plus de %0% région(s) au total (vous possédez déjà %1% dans le groupe '%2%')."
|
||||
rent-maximumExtend: "Vous ne pouvez pas allonger cette location car vous avez plus de %0% région(s) (Vous avez déjà %1% dans le groupe '%2%')."
|
||||
rent-maximumExtend: "Vous ne pouvez pas prolonger cette location car vous avez plus de %0% région(s) (Vous avez déjà %1% dans le groupe '%2%')."
|
||||
rent-payError: "Une erreur durant le paiement s'est produite. Essayez de nouveau plus tard."
|
||||
rent-rented: "Vous louez %lang:region% jusqu'à %until%, vous pouvez étendre la location en fesant un clic droit sur le panneau ou avec la commande /as rent."
|
||||
rent-rented: "Vous louez %lang:region% jusqu'à %until%, vous pouvez étendre la location en faisant un clic droit sur le panneau ou avec la commande /as rent."
|
||||
rent-extended: "Vous avez prolongé votre location de %lang:region% jusqu'au %until%."
|
||||
rent-extendedToMax: "Vous avez allongé votre location de %lang:region% jusqu'au %until% (qui est la durée maximum de location de %maxrenttime%)."
|
||||
rent-lowMoneyExtend: "Vous n'avez pas assez d'argent pour allongé votre location (Vous avez %0% et vous avez besoin de %price%)."
|
||||
rent-lowMoneyExtend: "Vous n'avez pas assez d'argent pour prolonger votre location (Vous avez %0% et vous avez besoin de %price%)."
|
||||
rent-lowMoneyRent: "Vous n'avez pas assez d'argent pour louer %lang:region% (Vous avez %0% et vous avez besoin de %price%)."
|
||||
rent-someoneElse: "Quelqu'un d'autre loue déjà %lang:region%."
|
||||
rent-notRentable: "Cette région n'est pas disponible à la location."
|
||||
rent-maxExtends: "Vous ne pouvez plus allongé cette location (le maximum est de %maxextends% fois), mais après que la prochaine location soit terminé, vous pourrez louer %lang:region% à nouveau."
|
||||
rent-maxExtends: "Vous ne pouvez plus prolonger cette location (le maximum est de %maxextends% fois), mais après que la prochaine location soit terminé, vous pourrez louer %lang:region% à nouveau."
|
||||
rent-maxRentTime: "Vous ne pouvez pas louer %lang:region% plus longtemps à l'avance, le maximum est de %maxrenttime% et vous avez déjà loué pour %timeleft%."
|
||||
rent-restrictedToWorld: "Vous devez être dans le monde '%world%' pour louer %lang:region% (vous êtes dans '%0%')."
|
||||
rent-restrictedToRegion: "Vous devez être à l'intérieur de %lang:region% pour pouvoir la louer."
|
||||
rent-expireWarning: "Votre région %lang:region% n'a plus que %timeleft% de temps de location, soyez sûr d'allonger ce temps de location si vous voulez la conserver."
|
||||
rent-expireWarning: "Votre région %lang:region% n'a plus que %timeleft% de temps de restant de location, soyez sûr d'allonger ce temps de location si vous voulez la conserver."
|
||||
rent-alreadyAtFull: "%lang:region% a déjà atteint ou a dépassé le temps maximum de location, vous ne pouvez pas encore l'étendre la location."
|
||||
|
||||
buy-help: "/as buy [region], Si non spécifiée, cible la région dans laquelle vous vous trouvez."
|
||||
buy-help: "/as buy [région], Si non spécifiée, cible la région dans laquelle vous vous trouvez."
|
||||
buy-noPermission: "Vous n'avez pas la permission d'acheter une région."
|
||||
buy-noPermissionResell: "Vous n'avez pas la permission d'acheter une région dans le mode revente."
|
||||
buy-noPermissionNoResell: "Vous n'avez pas la permission d'acheter une région qui n'est pas dans le mode revente."
|
||||
@@ -126,23 +127,23 @@ buy-succes: "Vous avez acheté la région %lang:region%."
|
||||
buy-successResale: "Vous avez racheté la région %lang:region% qui appartenait à %lang:tPlayer|%0%|%."
|
||||
buy-successSeller: "Votre région %lang:region% a été vendue à %lang:player% pour %0%."
|
||||
buy-lowMoney: "Vous n'avez pas assez d'argent pour acheter %lang:region% (vous possédez %0% et devez payer %price%)."
|
||||
buy-lowMoneyResell: "Vous n'avez pas assez d'argent pour acheter %lang:region% (vous possédez %0% et devez payer %resellprice%)."
|
||||
buy-lowMoneyResell: "Vous n'avez pas assez d'argent pour acheter %lang:region% (vous possédez %0% et vous avez besoin de %resellprice%)."
|
||||
buy-yours: "Vous avez déjà acheté %lang:region%."
|
||||
buy-someoneElse: "Quelqu'un a déjà acheté %lang:region%."
|
||||
buy-restrictedToWorld: "Vous devez être dans le monde '%world%' pour acheter %lang:region% (vous êtes dans '%0%')."
|
||||
buy-restrictedToRegion: "Vous devez être dans %lang:region% pour pouvoir l'acheter."
|
||||
|
||||
unrent-help: "/as unrent [region], Si non spécifiée, cible la région dans laquelle vous vous trouvez."
|
||||
unrent-noPermission: "Vous n'avez pas la permission de dé-louer une région."
|
||||
unrent-noPermissionOther: "Vous n'avez pas la permission de dé-louer une autre région."
|
||||
unrent-notRegistered: "La région ne peut pas ne plus être louée car elle n'est pas enregistrée comme une région que l'on peut louer."
|
||||
unrent-notRented: "La région ne peut pas ne plus être louée car elle n'est pas enregistrée comme actuellement louée."
|
||||
unrent-help: "/as unrent [région], Si non spécifiée, cible la région dans laquelle vous vous trouvez."
|
||||
unrent-noPermission: "Vous n'avez pas la permission de cesser la location d'une région."
|
||||
unrent-noPermissionOther: "Vous n'avez pas la permission de cesser la location d'une autre région."
|
||||
unrent-notRegistered: "Vous ne pouvez pas cesser la location sur cette région car elle n'est pas enregistrer comme location."
|
||||
unrent-notRented: "Vous ne pouvez pas cesser la location sur cette région car elle n'est pas louée."
|
||||
unrent-unrented: "Vous avez rompu la location de %lang:region% de %lang:player%."
|
||||
unrent-expired: "Votre location de %lang:region% a expiré."
|
||||
unrent-expired: "Votre location de %lang:region% a expirée."
|
||||
|
||||
sell-help: "/as sell [region], Si non spécifiée, cible la région dans laquelle vous vous trouvez."
|
||||
sell-notRegistered: "La région ne peut pas être vendue car son statut n'est pas \"à vendre\"."
|
||||
sell-notBought: "La région ne peut pas être vendue car ce n'est pas la propriété de quelqu'un."
|
||||
sell-notRegistered: "La région ne peut pas être vendue car elle n'est pas enregistrée comme à vendre."
|
||||
sell-notBought: "La région ne peut pas être vendue car elle n'est la propriété de personne."
|
||||
sell-sold: " %lang:player% a vendu la région %lang:region%"
|
||||
sell-noPermission: "Vous n'avez pas la permission de vendre une région."
|
||||
sell-noPermissionOther: "Vous n'avez pas la permission de vendre une autre région."
|
||||
@@ -153,16 +154,6 @@ reload-updateComplete: "[gray]Mise à jour des régions terminée."
|
||||
reload-noPermission: "Vous n'avez pas la permission de recharger les fichiers."
|
||||
reload-updateCommandChanged: "'/as updaterents' et '/as updatebuys' ont été supprimées, '/as reload' est la commande à utiliser pour mettre à jour les régions."
|
||||
|
||||
info-help:
|
||||
- "/as info[break]"
|
||||
- " %lang:command|all|/as info all|%[break]"
|
||||
- " %lang:command|rented|/as info rented|% [group] [page][break]"
|
||||
- " %lang:command|forrent|/as info forrent|% [group] [page][break]"
|
||||
- " %lang:command|sold|/as info sold|% [group] [page][break]"
|
||||
- " %lang:command|forsale|/as info forsale|% [group] [page][break]"
|
||||
- " %lang:command|reselling|/as info reselling|% [group] [page][break]"
|
||||
- " %lang:command|nogroup|/as info nogroup [page]|%"
|
||||
- " %lang:command|region|/as info region|% [region][break]"
|
||||
info-noPermission: "Vous n'avez pas la permission d'avoir des informations à propos des régions."
|
||||
info-allHeader: "Toutes les régions%0%:"
|
||||
info-rentedHeader: "Les régions louées%0%:"
|
||||
@@ -176,9 +167,23 @@ info-nogroupNone: "Il n'y a pas de région sans groupe."
|
||||
info-noFiltergroup: "Le groupe '%0%' n'existe pas ou ne peut donc pas être utilisé pour limiter les résultats."
|
||||
info-noRegions: "Aucune région trouvée."
|
||||
info-wrongPage: "%0% n'est pas un numéro de page correct."
|
||||
info-entryForrent: "[darkgreen][bold]►[reset] %lang:region%: [gray]A louer pour %price% par %duration%."
|
||||
info-entryRented: "[darkgreen][bold]►[reset] %lang:region%: [gray]Loué à %lang:player%."
|
||||
info-entryForsale: "[darkgreen][bold]►[reset] %lang:region%: [gray]A vendre pour %price%."
|
||||
info-entrySold: "[darkgreen][bold]►[reset] %lang:region%: [gray]Vendu à %lang:player%."
|
||||
info-entryReselling: "[darkgreen][bold]►[reset] %lang:region%: [gray]Vendu à %lang:player% (revente)."
|
||||
info-pageStatus: "[gold]Page %0%/%1%"
|
||||
info-pagePrevious:
|
||||
- "⇥[gold][bold]◄Précédent[/bold] "
|
||||
- "⇥hover: %lang:action|Afficher la page précédente|%"
|
||||
- "⇥command: %0%"
|
||||
info-pageNoPrevious:
|
||||
- " [darkgray][bold]◄Précédent[/bold] "
|
||||
- " hover: C'est déjà la premier page"
|
||||
info-pageNext:
|
||||
- "⇥[gold][bold]Suivant►[/bold]"
|
||||
- "⇥hover: %lang:action|Afficher la page suivante|%"
|
||||
- "⇥command: %0%"
|
||||
info-pageNoNext:
|
||||
- " [darkgray][bold]Suivaznt►[/bold]"
|
||||
- " hover: C'est déjà la dernière page"
|
||||
@@ -263,9 +268,6 @@ info-regionRestrictedRegionRent: "[darkgreen][bold]►[reset] Vous devez être
|
||||
info-regionRestrictedWorldRent: "[darkgreen][bold]►[reset] Vous devez à l'intérieur du monde '%world%' pour louer %lang:region%."
|
||||
info-regionRestrictedRegionBuy: "[darkgreen][bold]►[reset] Vous devez être à l'intérieur de %lang:region% pour l'acheter."
|
||||
info-regionRestrictedWorldBuy: "[darkgreen][bold]►[reset] Vous devez à l'intérieur du monde '%world%' pour acheter %lang:region%."
|
||||
info-regionRestoringRent: "[darkgreen][bold]►[reset] La restauration est activée [gray](la région sera remise à zéro a la fin de la location)%0%"
|
||||
info-regionRestoringBuy: "[darkgreen][bold]►[reset] La restauration est activée [gray](la région sera remise à zéro a la fin de la location)%0%"
|
||||
info-regionRestoringProfile: "(Profil : %0%)"
|
||||
info-regionLandlord: "[darkgreen][bold]►[reset] Bailleur : [gray]%lang:landlord% (reçoit l'argent)."
|
||||
info-regionNotExisting: "La région spécifiée n'est pas enregistrée : %0%."
|
||||
|
||||
@@ -383,7 +385,6 @@ add-failed: "Déjà enregistré: [gray]%0%."
|
||||
add-blacklisted: "Dans la liste noir: [gray]%0%."
|
||||
add-specifyWorld: "Spécifiez le monde de la région lors de l'utilisation de la console."
|
||||
add-incorrectWorld: "Le monde '%0%' est introuvable, essayez de nouveau (attention à la casse)."
|
||||
add-noRegion: "La région WorldGuard '%0%' n'existe pas dans ce monde."
|
||||
add-noPermissionRegions: "Pas de permission à ajouter: [gray]%0%."
|
||||
add-noPermissionOwnerMember: "[gray]Soit vous n'êtes pas membre / propriétaire de cette région ou n'avez pas la permission d'ajouter vos régions."
|
||||
|
||||
@@ -415,9 +416,20 @@ delsign-success: "Le panneau à été retiré de la région %lang:region%."
|
||||
me-noPermission: "Vous n'avez pas la permission de voir quelle(s) région(s) vous possédez."
|
||||
me-header: "Régions de %lang:tPlayer|%0%|%:"
|
||||
me-notAPlayer: "Vous n'êtes pas un joueur. Vous ne pouvez donc pas avoir de régions."
|
||||
me-rentLine:
|
||||
- "[darkgreen][bold]►[reset] %lang:region% [gray]("
|
||||
- "%timeleft% restant"
|
||||
- "⇥hover: depuis %until%"
|
||||
- ")."
|
||||
me-buyLine: "[darkgreen][bold]►[reset] %lang:region%."
|
||||
me-friendLine:
|
||||
- "[darkgreen][bold]►[reset] %lang:region% [gray]("
|
||||
- "propriétaire: %lang:player%"
|
||||
- "⇥hover: Vous avez ajouté comme ami"
|
||||
- ")."
|
||||
me-nothing: "%lang:tPlayer|%0%|% n'a pas loué ou acheté de régions et n'a pas été ajouté comme ami dans l'un entre eux."
|
||||
me-noPlayer: "%0% n'a pas été trouvé, il ne s'est peut être jamais connecté sur le serveur."
|
||||
me-clickHint: "[gray][italic]Cliquez sur le nom d'une région pour voir les détails."
|
||||
|
||||
setowner-help: "/as setowner <joueur> [region], la région dans laquelle vous vous trouvez sera utilisée si vous ne spécifiez pas de région."
|
||||
setowner-noPermission: "Vous n'avez pas la permission de définir le propriétaire d'une région."
|
||||
@@ -459,6 +471,7 @@ delfriend-noPermissionOther: "Vous n'avez pas la permission de supprimer des ami
|
||||
delfriend-noPermission: "Vous n'avez pas la permission de supprimer des amis de votre région."
|
||||
delfriend-successOther: "%lang:tPlayer|%0%|% a été supprimé comme ami de la région %lang:region%."
|
||||
delfriend-success: "%lang:tPlayer|%0%|% a été supprimé comme ami de votre région %lang:region%."
|
||||
delfriend-notAdded: "%lang:tPlayer|%0%|% n'est pas dans les amis de %lang:region%."
|
||||
delfriend-noOwner: "Vous ne pouvez pas supprimer les amis d'une région sans propriétaire."
|
||||
|
||||
linksigns-multipleRegions: "Plusieurs régions trouvées : [gray]%0%."
|
||||
@@ -488,8 +501,6 @@ stack-wrongAmount: "'%0%' n'est pas une quantité correcte de régions."
|
||||
stack-wrongGap: "'%0%' n'est pas un nombre correct pour le nombre de blocs séparant deux régions."
|
||||
stack-noSelection: "Vous n'avez pas de sélection qui indique où doit se trouver la première région créée."
|
||||
stack-addStart: "[gray]Ajout de %0% régions, %1% par seconde."
|
||||
stack-addComplete: "[gray]Ajout de régions terminé."
|
||||
stack-unclearDirection: "Merci de regarder clairement le Nord, l'Est, le Sud ou l'Ouest, actuellement détectée %0%."
|
||||
|
||||
setlandlord-help: "/as setlandlord <joueur> [région], la région où vous êtes sera utilisé si non spécifié."
|
||||
setlandlord-noPermission: "Vous n'avez pas la permission de définir le bailleur d'une région."
|
||||
@@ -532,10 +543,10 @@ timeleft-hours: "%0% heures"
|
||||
timeleft-minutes: "%0% minutes"
|
||||
timeleft-second: "%0% seconde"
|
||||
timeleft-seconds: "%0% secondes"
|
||||
timeleft-ended: "Expiré"
|
||||
timeleft-ended: "Expirée"
|
||||
|
||||
greeting-forrent: "La région '%region%' peut être louée pour %price% pour une durée de %duration%."
|
||||
greeting-rented: "La région '%region%' est louée par %player% jusqu'au %until%."
|
||||
greeting-forsale: "La région '%region%' peut être achetée pour %price%."
|
||||
greeting-bought: "La région '%region%' est la propriété de %player%."
|
||||
greeting-forrent: "%region% peut être louée pour %price% pour une durée de %duration%."
|
||||
greeting-rented: "%region% est louée par %player% jusqu'au %until%."
|
||||
greeting-forsale: "%region% peut être achetée pour %price%."
|
||||
greeting-bought: "%region% est la propriété de %player%."
|
||||
greeting-resale: "La région '%region%' peut être achetée pour %resaleprice% à %player%."
|
||||
@@ -1,6 +1,6 @@
|
||||
# ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
|
||||
# ║ Language file of the AreaShop plugin created by NLThijs48, Github can be found at https://github.com/NLthijs48/AreaShop ║
|
||||
# ║ Language: Dutch, Version: V2.3.2, Percentage translated: 100% ║
|
||||
# ║ Language: Dutch, Version: V2.4.0, Percentage translated: 100% ║
|
||||
# ║ This file will be overwritten at each startup/reload of the plugin, if you want to change anything then do the following: ║
|
||||
# ║ 1: Make a copy of this file ║
|
||||
# ║ 2: Rename it to <servername>.yml (don't use a language code as filename, could otherwise be overwritten in future updates) ║
|
||||
@@ -58,7 +58,8 @@ cmd-weOnlyByPlayer: "Gebruikmaken van een WorldEdit selectie is alleen mogelijk
|
||||
cmd-noSelection: "Je hebt geen WorldEdit selectie."
|
||||
cmd-noRegionsFound: "Er zijn geen gebieden in je selectie gevonden die geregistreerd staan in AreaShop."
|
||||
cmd-noWERegionsFound: "Er zijn geen WorldEdit gebieden gevonden die zich in je selectie bevinden."
|
||||
cmd-notRegistered: "Het aangegeven gebied is niet geregistreerd in AreaShop: %0%."
|
||||
cmd-notRegistered: "Gebied '%0%' is niet beschikbaar in AreaShop."
|
||||
cmd-noRegion: "'%0%' is geen geldig WorldGuard gebied."
|
||||
cmd-noRegionsAtLocation: "Geen gebieden gevonden op je lokatie, geef het gebied mee als argument."
|
||||
cmd-moreRegionsAtLocation: "Meerdere gebieden gevonden op je lokatie, geef het gebied mee als argument."
|
||||
cmd-automaticRegionOnlyByPlayer: "Automatisch bepalen van het gebied is alleen mogelijk voor spelers, geef het gebied mee als argument."
|
||||
@@ -115,6 +116,7 @@ rent-maxRentTime: "Je kunt %lang:region% niet meer tijd van tevoren huren, de ma
|
||||
rent-restrictedToWorld: "Je moet in de wereld '%world%' zijn om %lang:region% te kopen (je ben in '%0%')."
|
||||
rent-restrictedToRegion: "Je moet in %lang:region% staan om hem te huren."
|
||||
rent-expireWarning: "Je gebied %lang:region% heeft nog %timeleft% over, verleng het als je het wilt houden.."
|
||||
rent-expiringSoon: "Je gebied %lang:tRegion|%0%|% heeft nog %1% over, verleng het als je het wilt houden."
|
||||
rent-alreadyAtFull: "%lang:region% is al verhuurd voor de maximale tijd, je kunt hem niet verlengen."
|
||||
|
||||
buy-help: "/as buy [region], het gebied waarin je staat word gebruikt als je het niet aangeeft."
|
||||
@@ -163,8 +165,9 @@ info-help:
|
||||
- " %lang:command|sold|/as info sold|% [group] [page][break]"
|
||||
- " %lang:command|forsale|/as info forsale|% [group] [page][break]"
|
||||
- " %lang:command|reselling|/as info reselling|% [group] [page][break]"
|
||||
- " %lang:command|nogroup|/as info nogroup [page]|%"
|
||||
- " %lang:command|region|/as info region|% [region][break]"
|
||||
- " %lang:command|nogroup|/as info nogroup [page]|%[break]"
|
||||
- " %lang:command|region|/as info region|% [break]"
|
||||
|
||||
info-noPermission: "Je hebt geen toestemming om informatie over gebieden te bekijken."
|
||||
info-allHeader: "Alle gebieden%0%:"
|
||||
info-rentedHeader: "Verhuurde gebieden%0%:"
|
||||
@@ -279,9 +282,8 @@ info-regionRestrictedRegionRent: "[darkgreen][bold]►[reset] Je moet in %lang:r
|
||||
info-regionRestrictedWorldRent: "[darkgreen][bold]►[reset] je moet in de wereld '%world%' zijn om %lang:region% te huren."
|
||||
info-regionRestrictedRegionBuy: "[darkgreen][bold]►[reset] Je moet in %lang:region% staan om deze te kopen."
|
||||
info-regionRestrictedWorldBuy: "[darkgreen][bold]►[reset] Je moet in de wereld '%world%' staan om %lang:region% te kopen."
|
||||
info-regionRestoringRent: "[darkgreen][bold]►[reset] Herstellen is ingeschakeld [gray](gebied zal resetten bij een huurstop)%0%."
|
||||
info-regionRestoringRent: "[darkgreen][bold]►[reset] Herstellen is ingeschakeld [gray](gebied zal resetten bij een huurstop)."
|
||||
info-regionRestoringBuy: "[darkgreen][bold]►[reset] Herstellen is ingeschakeld [gray](gebied zal resetten bij verkoop)%0%."
|
||||
info-regionRestoringProfile: " (profiel: %0%)"
|
||||
info-regionLandlord: "[darkgreen][bold]►[reset] Landeigenaar: [gray]%lang:landlord% (krijgt het geld)."
|
||||
info-regionNotExisting: "Het aangegeven gebied is niet geregistreerd: %0%."
|
||||
|
||||
@@ -399,7 +401,6 @@ add-failed: "Al geregistreerd: [gray]%0%."
|
||||
add-blacklisted: "Op de blacklist: [gray]%0%."
|
||||
add-specifyWorld: "Geef de wereld van het gebied aan als je het commando vanuit de console gebruikt."
|
||||
add-incorrectWorld: "Wereld '%0%' niet gevonden, probeer opnieuw (hoofdlettergevoelig)."
|
||||
add-noRegion: "WorldGuard gebied '%0%' bestaat niet in deze wereld."
|
||||
add-noPermissionRegions: "Geen toestemming om toe te voegen: [gray]%0%."
|
||||
add-noPermissionOwnerMember: "[gray]Je bent geen member/owner van deze gebieden of hebt geen toestemming om je gebieden toe te voegen."
|
||||
|
||||
@@ -516,8 +517,10 @@ stack-wrongAmount: "'%0%' is geen goed aantal gebieden."
|
||||
stack-wrongGap: "'%0%' is geen correct getal voor het aantal blokken ruimte tussen gebieden."
|
||||
stack-noSelection: "Je hebt geen selectie die aangeeft waar het eerste gebied word gemaakt."
|
||||
stack-addStart: "[gray]%0% gebieden aan het toevoegen met %1% per seconde."
|
||||
stack-addComplete: "[gray]Toevoegen van gebieden voltooid."
|
||||
stack-unclearDirection: "Kijk precies in het noorden, oosten, zuiden of westen, op dit moment gedetecteert: %0%."
|
||||
stack-addComplete: "[gray]%0% gebieden toegevoegd%1%."
|
||||
stack-tooHigh: ", %0% gebieden overgeslagen omdat ze zich boven Y=256 bevinden"
|
||||
stack-tooLow: ", %0% gebieden overgeslagen omdat ze zich onder Y=0 bevinden"
|
||||
stack-unclearDirection: "Kijk duidelijk in de noord, oost, zuid, west, omhoog of naar beneden richting, gedetecteerd: %0%."
|
||||
|
||||
setlandlord-help: "/as setlandlord <speler> [gebied], het gebied waar je in staat zal worden gebruikt als niet aangegeven."
|
||||
setlandlord-noPermission: "Je hebt geen toestemming om de landeigenaar in te stellen voor een gebied."
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
|
||||
# ║ Language file of the AreaShop plugin created by NLThijs48, Github can be found at https://github.com/NLthijs48/AreaShop ║
|
||||
# ║ Language: Norwegian, Version: V2.3.2, Percentage translated: 96% ║
|
||||
# ║ Language: Norwegian, Version: V2.4.0, Percentage translated: 94% ║
|
||||
# ║ This file will be overwritten at each startup/reload of the plugin, if you want to change anything then do the following: ║
|
||||
# ║ 1: Make a copy of this file ║
|
||||
# ║ 2: Rename it to <servername>.yml (don't use a language code as filename, could otherwise be overwritten in future updates) ║
|
||||
@@ -56,7 +56,6 @@ cmd-weOnlyByPlayer: "Du kan bare bruke en WorldEdit markering som en spiller, sp
|
||||
cmd-noSelection: "Du har ikke laget en WorldEdit markering."
|
||||
cmd-noRegionsFound: "Ingen regioner som er registrert i AreaShop er funnet i din markering."
|
||||
cmd-noWERegionsFound: "Ingen WorldEdit regioner som overlapper din markering er funnet."
|
||||
cmd-notRegistered: "Den spesifiserte regionen er ikke tilgjengelig i AreaShop: %0%."
|
||||
cmd-noRegionsAtLocation: "Ingen regioner er funnet på din plassering, spesifiser region navnet som et argument."
|
||||
cmd-moreRegionsAtLocation: "Mer enn en region er funnet på din plassering, spesifiser region navnet som et argument."
|
||||
cmd-automaticRegionOnlyByPlayer: "Automatisk valg av region er bare mulig for spillere, spesifiser region navnet som som et argument."
|
||||
@@ -153,16 +152,6 @@ reload-updateComplete: "[gray]Oppdatering av regioner ferdig."
|
||||
reload-noPermission: "Du har ikke rettigheter til å laste inn konfigurasjonen på nytt."
|
||||
reload-updateCommandChanged: "'/as updaterents' og '/as updatebuys' har blitt fjernet, '/as reload' vil også oppdatere regioner så bruk den kommandoen fremover."
|
||||
|
||||
info-help:
|
||||
- "/as info[break]"
|
||||
- " %lang:command|all|/as info all|%[break]"
|
||||
- " %lang:command|rented|/as info rented|% [group] [page][break]"
|
||||
- " %lang:command|forrent|/as info forrent|% [group] [page][break]"
|
||||
- " %lang:command|sold|/as info sold|% [group] [page][break]"
|
||||
- " %lang:command|forsale|/as info forsale|% [group] [page][break]"
|
||||
- " %lang:command|reselling|/as info reselling|% [group] [page][break]"
|
||||
- " %lang:command|nogroup|/as info nogroup [page]|%"
|
||||
- " %lang:command|region|/as info region|% [region][break]"
|
||||
info-noPermission: "Du har ikke rettigheter til å få informasjon om regioner."
|
||||
info-allHeader: "Alle regioner%0%:"
|
||||
info-rentedHeader: "Leide regioner%0%:"
|
||||
@@ -263,9 +252,6 @@ info-regionRestrictedRegionRent: "[darkgreen][bold]►[reset] Du må stå på in
|
||||
info-regionRestrictedWorldRent: "[darkgreen][bold]►[reset] Du må være i '%world%' for å leie %lang:region%."
|
||||
info-regionRestrictedRegionBuy: "[darkgreen][bold]►[reset] Du må være på innsiden av %lang:region% for å kjøpe den."
|
||||
info-regionRestrictedWorldBuy: "[darkgreen][bold]►[reset] Du må være i '%world%' for å kjøpe %lang:region%."
|
||||
info-regionRestoringRent: "[darkgreen][bold]►[reset] Gjenoppretting er aktivert [gray](regionen vil gjenopprettes ved stopp av leie)%0%."
|
||||
info-regionRestoringBuy: "[darkgreen][bold]►[reset] Gjenoppretting er aktivert [gray](regionen vil gjenopprettes ved salg)%0%."
|
||||
info-regionRestoringProfile: "(profil: %0%)"
|
||||
info-regionLandlord: "[darkgreen][bold]►[reset] Grunneier: [gray]%lang:landlord% (mottar pengene)."
|
||||
info-regionNotExisting: "Den spesifiserte regionen er ikke registrert: %0%."
|
||||
|
||||
@@ -383,7 +369,6 @@ add-failed: "Allerede registrert: [gray]%0%."
|
||||
add-blacklisted: "På svartelisten: [gray]%0%."
|
||||
add-specifyWorld: "Spesifiser verdenen til en region når du bruker konsoll."
|
||||
add-incorrectWorld: "Verden '%0%' ikke funnet, prøv igjen (sensitiv for store og små bokstaver)."
|
||||
add-noRegion: "WorldGuard region '%0%' eksisterer ikke i denne verdenen."
|
||||
add-noPermissionRegions: "Ingen rettigheter til å legge til: [gray]%0%."
|
||||
add-noPermissionOwnerMember: "[gray]Du er enten ikke et medlem/eier av disse regionene eller har ikke rettigheter til å legge til dine regioner."
|
||||
|
||||
@@ -481,6 +466,7 @@ stack-help:
|
||||
- " [gray]<rent|buy> Bestem om dem skal leies eller kjøpes.[break]"
|
||||
- " [gray][group] En gruppe du vil legge dem til i.[break]"
|
||||
- " [gray]Regionene vil bli laget i rettningen du ser."
|
||||
|
||||
stack-accepted: "Begynner å lage %0% %1% regioner med %2% blokker mellom dem, navnene starter med %3% og vil ha nummer bak seg.%4%"
|
||||
stack-addToGroup: "Regioner laget vil bli lagt til i gruppen '%0%'."
|
||||
stack-noPermission: "Du har ikke rettigheter til å lage og legge til regioner i AreaShop i store mengder."
|
||||
@@ -488,8 +474,6 @@ stack-wrongAmount: "'%0%' er ikke en riktig mengde regioner."
|
||||
stack-wrongGap: "'%0%' er ikke et riktig nummer for antall blokker mellom regioner."
|
||||
stack-noSelection: "Du har ikke laget en markering som indikerer hvor den første regionen skal bli laget."
|
||||
stack-addStart: "[gray]Legger til %0% regioner på %1% per sekund."
|
||||
stack-addComplete: "[gray]Regioner er ferdig lagt til."
|
||||
stack-unclearDirection: "Du må se rett mot nord, sør, øst eller vest, du ser mot %0%."
|
||||
|
||||
setlandlord-help: "/as setlandlord <spiller> [region], regionen du står i vil bli brukt om ikke spesifisert."
|
||||
setlandlord-noPermission: "Du har ikke rettigheter til å sette grunneier for en region."
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
|
||||
# ║ Language file of the AreaShop plugin created by NLThijs48, Github can be found at https://github.com/NLthijs48/AreaShop ║
|
||||
# ║ Language: Russian, Version: V2.3.2, Percentage translated: 86% ║
|
||||
# ║ Language: Russian, Version: V2.4.0, Percentage translated: 97% ║
|
||||
# ║ This file will be overwritten at each startup/reload of the plugin, if you want to change anything then do the following: ║
|
||||
# ║ 1: Make a copy of this file ║
|
||||
# ║ 2: Rename it to <servername>.yml (don't use a language code as filename, could otherwise be overwritten in future updates) ║
|
||||
@@ -8,6 +8,8 @@
|
||||
# ║ 4: Change the strings in the new file to your liking and save the file ║
|
||||
# ║ 5: Use '/as reload' or reload/restart your server to see the changes ║
|
||||
# ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
|
||||
action: "[gold][bold]<%0%>[/bold]"
|
||||
|
||||
button: "[bold]<%0%>[/bold]"
|
||||
|
||||
command:
|
||||
@@ -53,10 +55,9 @@ general-cancelled: "%0%"
|
||||
cmd-notValid: "Ошибка в команде, используй '/as help' для получения дополнительной информации."
|
||||
cmd-onlyByPlayer: "Эта команда может быть применена только игроком. "
|
||||
cmd-weOnlyByPlayer: "Использование выделения доступно только для игроков, укажите название региона в качестве дополнительного аргумента."
|
||||
cmd-noSelection: "Вы не выделили регион."
|
||||
cmd-noSelection: "Вы не имеете WorldEdit выделения."
|
||||
cmd-noRegionsFound: "В выбранной области не найдено регионов, зарегистрированных в AreaShop."
|
||||
cmd-noWERegionsFound: "Внутри вашего выделения не обнаружено регионов."
|
||||
cmd-notRegistered: "Указаный регион не используется в AreaShop: %0%."
|
||||
cmd-noRegionsAtLocation: "В вашем местоположении не найдено регионов, укажите регион в качестве аргумента."
|
||||
cmd-moreRegionsAtLocation: "В вашем местоположении найдено несколько регионов, укажите название региона для уточнения."
|
||||
cmd-automaticRegionOnlyByPlayer: "Автоматическое определение региона доступно только для игроков, укажите регион в качестве аргумента."
|
||||
@@ -86,7 +87,7 @@ help-add: "%lang:helpCommand|/as add|% Зарегистрировать реги
|
||||
help-del: "%lang:helpCommand|/as del|% Удалить зарегистрированный регион из AreaShop."
|
||||
help-addsign: "%lang:helpCommand|/as addsign|% Добавить табличку для региона."
|
||||
help-delsign: "%lang:helpCommand|/as delsign|% Удалить табличку на которую вы смотрите."
|
||||
help-me: "%lang:helpCommand|/as me|% Проверить список своих регионов(+истечение аренды)"
|
||||
help-me: "%lang:helpCommand|/as me|% Проверить список своих регионов(+истечение аренды)."
|
||||
help-setowner: "%lang:helpCommand|/as setowner|% Установить владельца региона или расширить аренду."
|
||||
help-resell: "%lang:helpCommand|/as resell|% Установить один из Ваших регионов в режим перепродажи."
|
||||
help-stopResell: "%lang:helpCommand|/as stopresell|% Установить Ваш регион обратно в режим продано."
|
||||
@@ -153,16 +154,6 @@ reload-updateComplete: "[gray]Обновление регионов заверш
|
||||
reload-noPermission: "Недостаточно полномочий для того, чтобы перезагрузить конфиги плагина."
|
||||
reload-updateCommandChanged: "'/as updaterents' и '/as updatebuys' были удалены, '/as reload' теперь будет также обновлять регионы, используйте эту команду взамен."
|
||||
|
||||
info-help:
|
||||
- "/as info[break]"
|
||||
- " %lang:command|all|/as info all|%[break]"
|
||||
- " %lang:command|rented|/as info rented|% [group] [page][break]"
|
||||
- " %lang:command|forrent|/as info forrent|% [group] [page][break]"
|
||||
- " %lang:command|sold|/as info sold|% [group] [page][break]"
|
||||
- " %lang:command|forsale|/as info forsale|% [group] [page][break]"
|
||||
- " %lang:command|reselling|/as info reselling|% [group] [page][break]"
|
||||
- " %lang:command|nogroup|/as info nogroup [page]|%"
|
||||
- " %lang:command|region|/as info region|% [region][break]"
|
||||
info-noPermission: "У Вас нет прав для получения информации о регионах."
|
||||
info-allHeader: "Все регионы%0%:"
|
||||
info-rentedHeader: "Арендовано регионов%0%:"
|
||||
@@ -176,9 +167,23 @@ info-nogroupNone: "Здесь нет регионов без групп."
|
||||
info-noFiltergroup: "Группа '%0%' не существует, потому не может быть использована для ограничения результатов."
|
||||
info-noRegions: "Нет найденых регионов."
|
||||
info-wrongPage: "%0% неверный номер страницы."
|
||||
info-entryForrent: "[darkgreen][bold]►[reset] %lang:region%: [gray]Можно арендовать за %price% на %duration%."
|
||||
info-entryRented: "[darkgreen][bold]►[reset] %lang:region%: [gray]Арендован %lang:player%."
|
||||
info-entryForsale: "[darkgreen][bold]►[reset] %lang:region%: [gray]Можно продать за %price%."
|
||||
info-entrySold: "[darkgreen][bold]►[reset] %lang:region%: [gray]Продан %lang:player%."
|
||||
info-entryReselling: "[darkgreen][bold]►[reset] %lang:region%: [gray]Продан %lang:player% (перепродажа)."
|
||||
info-pageStatus: "[gold]Страница %0%/%1%"
|
||||
info-pagePrevious:
|
||||
- " [gold][bold]◄Предыдущая[/bold] "
|
||||
- " hover: %lang:action|Показать предыдущую страницу|%"
|
||||
- " command: %0%"
|
||||
info-pageNoPrevious:
|
||||
- " [darkgray][bold]◄Предыдущая[/bold] "
|
||||
- " hover: Это первая страница"
|
||||
info-pageNext:
|
||||
- " [gold][bold]Следующая►[/bold]"
|
||||
- " hover: %lang:action|Показать следующую страницу|%"
|
||||
- " command: %0%"
|
||||
info-pageNoNext:
|
||||
- " [darkgray][bold]Следующая►[/bold]"
|
||||
- " hover: Это последняя страница"
|
||||
@@ -195,7 +200,7 @@ info-regionBought: "[darkgreen][bold]►[reset] Куплено %lang:player%."
|
||||
info-regionReselling: "[darkgreen][bold]►[reset] Купленный %lang:player%, сейчас продаётся."
|
||||
info-regionExtending:
|
||||
- "[darkgreen][bold]►[reset] "
|
||||
- "[bold]Продление для[/bold]"
|
||||
- "[bold]Продление за[/bold]"
|
||||
- " hover: Продлить аренду %region%"
|
||||
- " hover: длительностью %duration% за %price%"
|
||||
- " hover: %lang:action|Продлить аренду %region%|%"
|
||||
@@ -203,14 +208,14 @@ info-regionExtending:
|
||||
- ": [gray]%price% на %duration%."
|
||||
info-regionCanBeRented:
|
||||
- "[darkgreen][bold]►[reset] "
|
||||
- "[bold]Аренда для[/bold]"
|
||||
- "[bold]Аренда за[/bold]"
|
||||
- " hover: Арендовать %region% за %price% на %duration%"
|
||||
- " hover: %lang:action|Аренда %region%|%"
|
||||
- " command: /areashop rent %region%"
|
||||
- ": [gray]%price% на %duration%."
|
||||
info-regionCanBeBought:
|
||||
- "[darkgreen][bold]►[reset] "
|
||||
- "[bold]Купить для[/bold]"
|
||||
- "[bold]Купить за[/bold]"
|
||||
- " hover: Купить %region% за %price%"
|
||||
- " hover: %lang:action|Купить %region%|%"
|
||||
- " command: /areashop buy %region%"
|
||||
@@ -250,11 +255,11 @@ info-regionTeleport:
|
||||
- " hover: %lang:action|Телепортация на %region%|%"
|
||||
- " command: /areashop tp %region%"
|
||||
info-setRegionTeleport:
|
||||
- "[bold]установка места телепортации[/bold]"
|
||||
- "[bold]установить точку телепортации[/bold]"
|
||||
- " hover: %region%"
|
||||
- " hover: %lang:action|Set teleport location|%"
|
||||
- " hover: %lang:action|Установить точку телепорта|%"
|
||||
- " command: /areashop settp %region%"
|
||||
info-regionSigns: "[darkgreen][bold]►[reset] Подключенные таблички: [gray]%0%."
|
||||
info-regionSigns: "[darkgreen][bold]►[reset] Связанные таблички: [gray]%0%."
|
||||
info-regionSignLocation: "[gray](%0%, %1%, %2%, %3%)[reset]"
|
||||
info-regionGroups: "[darkgreen][bold]►[reset] Назначенные группы: [gray]%0%."
|
||||
info-regionInactiveUnrent: "[darkgreen][bold]►[reset] Авто снятие аренды после: [gray]%inactivetime% бездействия игрока."
|
||||
@@ -263,9 +268,6 @@ info-regionRestrictedRegionRent: "[darkgreen][bold]►[reset] Ты должен
|
||||
info-regionRestrictedWorldRent: "[darkgreen][bold]►[reset] Ты должен быть в мире '%world%' для аренды %lang:region%."
|
||||
info-regionRestrictedRegionBuy: "[darkgreen][bold]►[reset] Ты должен быть внутри %lang:region% для его покупки."
|
||||
info-regionRestrictedWorldBuy: "[darkgreen][bold]►[reset] Ты должен быть в мире '%world%' для покупки %lang:region%."
|
||||
info-regionRestoringRent: "[darkgreen][bold]►[reset] Восстановление включено [gray](регион будет сброшен после снятия аренды)%0%."
|
||||
info-regionRestoringBuy: "[darkgreen][bold]►[reset] Восстановление включено [gray](регион будет сброшен после продажи)%0%."
|
||||
info-regionRestoringProfile: " (профиль: %0%)"
|
||||
info-regionLandlord: "[darkgreen][bold]►[reset] Землевладелец: [gray]%lang:landlord% (Получит деньги)."
|
||||
info-regionNotExisting: "Указанный регион не зарегистрирован: %0%."
|
||||
|
||||
@@ -280,14 +282,51 @@ setprice-noPermission: "У вас нет разрешения на измене
|
||||
setprice-help: "/as setprice <price> [имярегиона], если не указано имя, будет выбран регион в котором вы находитесь."
|
||||
setprice-notRegistered: "Указанный регион не зарегистрирован: %0%."
|
||||
setprice-wrongPrice: "'%0%' не допустимая цена."
|
||||
setprice-successRent: "Цену региона %lang:region% изменено на %price% до %duration%."
|
||||
setprice-successBuy: "Цену региона %lang:region% изменено на %price%."
|
||||
setprice-successRemoved: "Цена в %lang:region% была удалена, использование новой цены из группы или файла default.yml, новая цена: %price%."
|
||||
setprice-noLandlord: "У вас нет разрешения на изменение цены, потому что вы не землевладелец в %lang:region%."
|
||||
|
||||
setduration-noPermission: "У вас нет разрешения на изменение длительности аренды."
|
||||
setduration-help: "/as setduration <amount> <identifier> [имярегиона], если не указано имя, будет выбран регион в котором вы находитесь."
|
||||
setduration-notRegistered: "%0% не зарегистрирован для сдачи в аренду."
|
||||
setduration-wrongAmount: "'%0%' не является допустимым количеством, используйте целое число."
|
||||
setduration-wrongFormat: "'%0%' не правильный формат времени, проверьте документацию на Bukkit."
|
||||
setduration-success: "Длительность аренды в регионе %lang:region% изменена до '%duration%'."
|
||||
setduration-noLandlord: "У вас нет разрешения на изменение длительности аренды, потому что вы не землевладелец в %lang:region%."
|
||||
setduration-successRemoved: "Длительность аренды в %lang:region% было удалено, использование новой длительности аренды из группы или файла default.yml, новая длительность: %duration%."
|
||||
|
||||
setup-noRegion: "Вы не указали регион на второй строке."
|
||||
setup-alreadyRentSign: "Регион уже добавлен в AreaShop в виде аренды региона, добавьте табличку с [as] на первой строке, или '/as addsign'."
|
||||
setup-alreadyBuySign: "Регион уже добавлен в AreaShop в виде покупного региона, добавьте табличку с [as] на первой строке, или '/as addsign'."
|
||||
setup-noDuration: "Вы не указали, на сколько времени этот регион можно арендовать, сделайте это на третьей строчке."
|
||||
setup-wrongDuration: "Время указано не в правильном формате, например: 1 day."
|
||||
setup-noPrice: "Вы не указали цену на четвертой строке."
|
||||
setup-wrongPrice: "Вы не указали цену правильно, используйте только цифры ."
|
||||
setup-rentSuccess: "Сдача аренды в регионе %lang:region% настроена правильно."
|
||||
setup-buySuccess: "Покупка региона %lang:region% настроена правильно."
|
||||
setup-noPermissionRent: "У вас нет разрешения на создание арендных регионов."
|
||||
setup-noPermissionBuy: "У вас нет разрешения на создание проваемых регионов."
|
||||
setup-couldNotDetect: "Найдено несколько областей с одинаковым приоритетом это/или родительский/дочерна связь, указать одно на второй строке (2 из регионов, которые были найдены: %lang:tRegion|%0%|% и %lang:tRegion|%1%|%)."
|
||||
setup-blacklisted: "%0% находится в черном списке и не могут быть добавлены к AreaShop"
|
||||
setup-noPermission: "Вы не можете добавить регион '%0%', вы не являетесь владельцем/участником или не имеете прав для этого."
|
||||
|
||||
destroy-noPermissionRent: "У вас нет разрешения на создание регионов для аренды."
|
||||
destroy-noPermissionBuy: "У вас нет разрешения на создание регионов для продажи."
|
||||
destroy-successRent: "%lang:region% успешно зарегистрирован в качестве региона для аренды."
|
||||
destroy-successBuy: "%lang:region% успешно зарегистрирован в качестве региона для продажи."
|
||||
|
||||
teleport-help: "/as tp <region> [табличка]."
|
||||
teleport-noRentOrBuy: "Указанный регион не зарегистрирован: %0%."
|
||||
teleport-noPermission: "У вас нет разрешения для телепортации на ваш регион."
|
||||
teleport-noPermissionOther: "У вас нет разрешения для телепортации на регионы которыми вы не владеете."
|
||||
teleport-noPermissionSign: "У вас нет разрешения для телепортации к таблички вашего региона."
|
||||
teleport-noPermissionOtherSign: "У вас нет разрешения для телепортации к табличек регионов которыми вы не владеете."
|
||||
teleport-noPermissionFriend: "У вас нет разрешения для телепортации на регионы в которых вы добавлены как друг."
|
||||
teleport-noPermissionFriendSign: "У вас нет разрешения для телепортации к табличкам регионов в которых вы добавлены как друг."
|
||||
teleport-success: "Вы телепортированы к %lang:region%."
|
||||
teleport-successSign: "Вы телепортированы к табличке возле %lang:region%."
|
||||
teleport-noSafe: "Сохранение позиции не найдено в %lang:region%, нет места в регионе или превышен максимальный лимит (%0%/%1%)."
|
||||
teleport-blocked: "Вы не можете телепортироваться, потому что положение находится за пределами региона, и вы вынуждены телепортироваться во внутрь."
|
||||
teleport-changedToSign: "У вас есть только разрешение на телепортироваться к табличке, а не во внутрь региона, телепортация к табличке."
|
||||
teleport-changedToNoSign: "Ни одна табличка не доступна что бы телепортироваться, попытка телепортироваться во внутрь региона вместо этого."
|
||||
@@ -302,9 +341,12 @@ setteleport-reset: "Точка телепорта для %lang:region% была
|
||||
|
||||
find-help: "/as find <buy|rent> [стоимость] [группа]."
|
||||
find-noPermission: "У вас нет разрешения на поиск регионов и телепортироваться к ним."
|
||||
find-success: "Найден %0% регион: %lang:region%, при поиске с максимальной ценой в вашем балансе: %1%%2%."
|
||||
find-successMax: "Найдено %0% регионов: %lang:region%, при поиске с максимальной ценой %1%%2%."
|
||||
find-wrongMaxPrice: "Указанная максимальная цена имеет не правильный номер: %0%."
|
||||
find-wrongGroup: "Указанная группа не существует: %0%."
|
||||
find-noneFound: "Ни один %0% регион не найден при поиске с максимальной ценой в вашем балансе: %1%%2%."
|
||||
find-noneFoundMax: "Ни один %0% регион не найден при поиске с максимальной ценой %1%%2%."
|
||||
find-onlyInGroup: ", искать регионы только в группах: %0%."
|
||||
|
||||
groupadd-help: "/as groupadd <group> [имярегиона], если не указать имя, будут выбраны все регионы в вашем WorldEdit выделении."
|
||||
@@ -338,12 +380,11 @@ schemevent-noPermission: "У вас нет разрешения на иници
|
||||
|
||||
add-help: "/as add <rent|buy> [rрегион] [мир]."
|
||||
add-noPermission: "У вас нет разрешения добавлять регионы в AreaShop."
|
||||
add-success: "AДобавлен к %0%: [gray]%1%."
|
||||
add-success: "Добавлен в %0%: [gray]%1%."
|
||||
add-failed: "Уже зарегистрирован: [gray]%0%."
|
||||
add-blacklisted: "Включен в черный список : [gray]%0%."
|
||||
add-specifyWorld: "Укажите мир региона при использовании из консоли."
|
||||
add-incorrectWorld: "Мир '%0%' не найден, попробуйте еще раз (с учетом регистра)."
|
||||
add-noRegion: "WorldGuard регион '%0%' не существует в этом мире."
|
||||
add-noPermissionRegions: "Нет разрешения, чтобы добавить: [gray]%0%."
|
||||
add-noPermissionOwnerMember: "[gray]Вы либо не являетесь участником/владельцем этих регионов, либо не имеете разрешения добавлять свои регионы."
|
||||
|
||||
@@ -375,9 +416,20 @@ delsign-success: "Табличка была удалена из региона %
|
||||
me-noPermission: "У вас нет прав, чтобы проверить, какие регионы вы имеете."
|
||||
me-header: "Регионы %lang:tPlayer|%0%|%:"
|
||||
me-notAPlayer: "Вы не являетесь игроком, которому доступны какие-либо регионы."
|
||||
me-rentLine:
|
||||
- "[darkgreen][bold]►[reset] %lang:region% [gray]("
|
||||
- "%timeleft% истек"
|
||||
- " hover: until %until%"
|
||||
- ")."
|
||||
me-buyLine: "[darkgreen][bold]►[reset] %lang:region%."
|
||||
me-friendLine:
|
||||
- "[darkgreen][bold]►[reset] %lang:region% [gray]("
|
||||
- "принадлежит %lang:player%"
|
||||
- " hover: Вы добавили друга"
|
||||
- ")."
|
||||
me-nothing: "%lang:tPlayer|%0%|% не арендовали или покупали регионы и не добавлялись в друзья."
|
||||
me-noPlayer: "%0% не может быть найден, вероятно, никогда не присоединился к серверу."
|
||||
me-clickHint: "[gray][italic]Нажмите на имя региона , чтобы увидеть детали"
|
||||
|
||||
setowner-help: "/as setowner <player> [имярегиона], если не указано имя, будет выбран регион в котором вы находитесь."
|
||||
setowner-noPermission: "У вас нет прав, чтобы установить владельца региона."
|
||||
@@ -385,6 +437,8 @@ setowner-noPermissionRent: "У вас нет прав, чтобы установ
|
||||
setowner-noPermissionBuy: "У вас нет прав, чтобы установить владельца для покупки регионов."
|
||||
setowner-notRegistered: "Указанный регион не зарегистрирован, владелец не может быть установлен."
|
||||
setowner-noPlayer: "Не удалось получить UUID указанного игрока: %0%."
|
||||
setowner-succesRent: "Владелец в %lang:region% успешно изменен на %lang:player%, орендований до %until% (%timeleft% истечет)."
|
||||
setowner-succesRentExtend: "Владелец %lang:player%, аренда расширена на '%duration%', сейчас арендован до %until% (%timeleft% истечет)."
|
||||
setowner-succesBuy: "Владелец в %lang:region% успешно изменен на %lang:player%."
|
||||
|
||||
resell-help: "/as resell <price> [имярегиона], если не указано имя, будет выбран регион в котором вы находитесь."
|
||||
@@ -417,14 +471,15 @@ delfriend-noPermissionOther: "У вас нет разрешения на уда
|
||||
delfriend-noPermission: "У вас нет разрешения на удаление друзей из вашего региона."
|
||||
delfriend-successOther: "%lang:tPlayer|%0%|% был удален из друзей в регионе %lang:region%."
|
||||
delfriend-success: "%lang:tPlayer|%0%|% был удален из друзей в вашем регионе %lang:region%."
|
||||
delfriend-notAdded: "%lang:tPlayer|%0%|% не добавлен до друзей в %lang:region%."
|
||||
delfriend-noOwner: "Вы не можете удалять друзей из региона без владельца."
|
||||
|
||||
linksigns-multipleRegions: "Найдено несколько регионов: [gray]%0%."
|
||||
linksigns-multipleRegionsAdvice: "Нажмите в другое время, чтобы попробовать еще раз или использовать '/as linksigns' чтобы остановить."
|
||||
linksigns-multipleRegionsAdvice: "Нажмите в другое время, чтобы попробовать еще раз или используйте '/as linksigns' чтобы остановить."
|
||||
linksigns-noRegions: "Не найдено регионов AreaShop в направлении взгляда, убедитесь что регион добавлен в AreaShop [gray](максимум расстояние в 100 блоков)."
|
||||
linksigns-regionFound: "Регион %lang:region% был найден, теперь соедините с табличкой кликнув левой кнопкой миши ."
|
||||
linksigns-signFound: "Найдена табличка в (%0%, %1%, %2%), теперь соедините с регионом кликнув правой кнопкой мыши ."
|
||||
linksigns-noSign: "Никаких табличок обнаружено в направлении взгляда, убедитесь, что у вас есть прямой взгляд на табличку и нажмите снова [gray](максимум расстояние в 100 блоков)."
|
||||
linksigns-regionFound: "Регион %lang:region% был выбран, теперь укажите табличку кликнув левой кнопкой мыши для его привязки."
|
||||
linksigns-signFound: "Обнаружена табличка в (%0%, %1%, %2%), теперь укажите регион кликнув правой кнопкой мыши для ее привязки"
|
||||
linksigns-noSign: "Никаких табличек не обнаружено в направлении взгляда, убедитесь, что у вас есть прямой взгляд на табличку и нажмите снова [gray](максимум расстояние в 100 блоков)."
|
||||
linksigns-alreadyRegistered: "Эта табличка уже зарегистрирована в регионе %lang:region%, кликни еще раз, чтобы выбрать другую табличку."
|
||||
linksigns-first: "Включен режим привязки табличек."
|
||||
linksigns-next: "[gray]Клик лкм. выбрать табличку, клик пкм. выбрать регион, использовать /as linksigns для отключения режима."
|
||||
@@ -446,8 +501,6 @@ stack-wrongAmount: "'%0%' не правильное количество рег
|
||||
stack-wrongGap: "'%0%' не правильное число блоков для отступа между регионами."
|
||||
stack-noSelection: "У вас нет выделения, которое указывает, где должен быть создан первый регион."
|
||||
stack-addStart: "[gray]Добавлено %0% регионов около %1% в секунду."
|
||||
stack-addComplete: "[gray]Добавление регионов прошло успешно."
|
||||
stack-unclearDirection: "Посмотрите, пожалуйста, четко на север, восток, юг или запад, обнаружено %0%."
|
||||
|
||||
setlandlord-help: "/as setlandlord <player> [имярегиона], если не указано имя, будет выбран регион в котором вы находитесь."
|
||||
setlandlord-noPermission: "У вас не разрешения чтобы назначить землевладельца в регион."
|
||||
@@ -488,12 +541,12 @@ timeleft-months: "%0% месяцев"
|
||||
timeleft-days: "%0% дней"
|
||||
timeleft-hours: "%0% часов"
|
||||
timeleft-minutes: "%0% минут"
|
||||
timeleft-second: "%0% секунда"
|
||||
timeleft-second: "%0% секунд"
|
||||
timeleft-seconds: "%0% секунд"
|
||||
timeleft-ended: "Истек"
|
||||
|
||||
greeting-forrent: "%region% может быть арендован за %price% в %duration%"
|
||||
greeting-rented: "%region% арендован игроком %player% до %untill%."
|
||||
greeting-forrent: "%region% может быть арендован за %price% на %duration%"
|
||||
greeting-rented: "%region% арендован игроком %player% до %until%."
|
||||
greeting-forsale: "%region% может быть куплен за %price%."
|
||||
greeting-bought: "%region% куплен игроком %player%."
|
||||
greeting-resale: "%region% может быть куплен за %resaleprice% у игрока %player%."
|
||||
@@ -0,0 +1,552 @@
|
||||
# ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
|
||||
# ║ Language file of the AreaShop plugin created by NLThijs48, Github can be found at https://github.com/NLthijs48/AreaShop ║
|
||||
# ║ Language: Swedish, Version: V2.4.0, Percentage translated: 97% ║
|
||||
# ║ This file will be overwritten at each startup/reload of the plugin, if you want to change anything then do the following: ║
|
||||
# ║ 1: Make a copy of this file ║
|
||||
# ║ 2: Rename it to <servername>.yml (don't use a language code as filename, could otherwise be overwritten in future updates) ║
|
||||
# ║ 3: Change the 'language' setting in config.yml to '<servername>', do not include '.yml' ║
|
||||
# ║ 4: Change the strings in the new file to your liking and save the file ║
|
||||
# ║ 5: Use '/as reload' or reload/restart your server to see the changes ║
|
||||
# ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
|
||||
action: "[gold][bold]<%0%>[/bold]"
|
||||
|
||||
button: "[bold]<%0%>[/bold]"
|
||||
|
||||
command:
|
||||
- "[bold]%0%[/bold]"
|
||||
- " hover: %lang:action|Använd %1%|%"
|
||||
- " command: %1%"
|
||||
|
||||
helpCommand:
|
||||
- "[gold]%0% [gray]-[reset]"
|
||||
- " hover: %lang:action|Använd %0%|%"
|
||||
- " command: %0%"
|
||||
|
||||
region: "%lang:tRegion|%region%|%"
|
||||
|
||||
tRegion:
|
||||
- "[bold]%0%[/bold]"
|
||||
- " hover: Område %0%"
|
||||
- " hover: %lang:action|Regions information|%"
|
||||
- " command: /areashop info region %0%"
|
||||
|
||||
player: "%lang:tPlayer|%player%|%"
|
||||
|
||||
tPlayer:
|
||||
- "[bold]%0%[/bold]"
|
||||
- " hover: Spelare %0%"
|
||||
- " hover: %lang:action|Regioner av %0%|%"
|
||||
- " command: /areashop info player %0%"
|
||||
|
||||
landlord:
|
||||
- "[bold]%landlord%[/bold]"
|
||||
- " hover: Hyresvärd %landlord%"
|
||||
- " hover: %lang:action|Regioner av %landlord%|%"
|
||||
- " command: /areashop info player %landlord%"
|
||||
|
||||
total-maximum: "Du kan inte hyra/köpa mer än %0% region(er) totalt (Du har redan %1% inom grupp '%2%')."
|
||||
|
||||
general-notReady: "AreaShop har inte laddat klart, vänligen vänta."
|
||||
general-noWorld: "Du kan inte göra detta. Världen: %lang:region% är inte tillgänglig (värld '%world%')"
|
||||
general-noRegion: "Du kan inte göra så, WorldGuard regionen är inte tillgänglig (region %lang:region%)"
|
||||
general-noEconomy: "Det finns inget tillägg för ekonomisystem installerat eller så är det inte inställt korrekt. Meddela serverns ägare om detta."
|
||||
general-cancelled: "%0%"
|
||||
|
||||
cmd-notValid: "Kommandot är inte tillgängligt, använd '/as help' för mer information."
|
||||
cmd-onlyByPlayer: "Detta kommando kan enbart köras av en spelare."
|
||||
cmd-weOnlyByPlayer: "Användning av WorldEdit är enbart tillgängligt för en spelare, specifiera regionens namn som extra argument."
|
||||
cmd-noSelection: "Du har ingen WorldEdit område valt."
|
||||
cmd-noRegionsFound: "Inga regioner registrerade i AreaShop finns i ditt val."
|
||||
cmd-noWERegionsFound: "Inga WorldEdit regioner som korsar ditt val finns."
|
||||
cmd-noRegionsAtLocation: "Inga regioner finns på din plats, ange en region som argument."
|
||||
cmd-moreRegionsAtLocation: "Mer än en region har hittats på din plats, ange en region som argument."
|
||||
cmd-automaticRegionOnlyByPlayer: "Att automatiskt avgöra regionen är enbart möjligt för spelare, ange en region som argument."
|
||||
|
||||
help-header: "Hjälpsidan, kommandon som du kan utföra."
|
||||
help-noPermission: "Du har inte behörighet för att visa hjälpsidan."
|
||||
help-alias: "Kommando alias: /areashop, /as."
|
||||
help-help: "%lang:helpCommand|/as help|% Visar denna hjälpsida."
|
||||
help-info: "%lang:helpCommand|/as info|% Få information om aktuella regioner."
|
||||
help-rent: "%lang:helpCommand|/as rent|% Hyr en region eller förlänga din nuvarande hyra."
|
||||
help-buy: "%lang:helpCommand|/as buy|% Köp en region."
|
||||
help-unrent: "%lang:helpCommand|/as unrent|% Sluta hyra en region."
|
||||
help-sell: "%lang:helpCommand|/as sell|% sälj en region."
|
||||
help-reload: "%lang:helpCommand|/as reload|% Ladda om alla filer och uppdatera regionerna."
|
||||
help-setrestore: "%lang:helpCommand|/as setrestore|% Ställ in återställning på/av och välj profil."
|
||||
help-setprice: "%lang:helpCommand|/as setprice|% Ändra priset av en region."
|
||||
help-setduration: "%lang:helpCommand|/as setduration|% Ändra varaktigheten för en hyraregion."
|
||||
help-teleport: "%lang:helpCommand|/as tp|% Teleportera till en hyr-/köpregion."
|
||||
help-setteleport: "%lang:helpCommand|/as settp|% Sätt ut teleporteringsposition för en region."
|
||||
help-find: "%lang:helpCommand|/as find|% Hitta en ledig köpa eller hyra."
|
||||
help-groupadd: "%lang:helpCommand|/as groupadd|% Lägg till en region till en grupp."
|
||||
help-groupdel: "%lang:helpCommand|/as groupdel|% Radera en region från en grupp."
|
||||
help-grouplist: "%lang:helpCommand|/as grouplist|% Visa alla grupper som för närvarande är registrerade."
|
||||
help-groupinfo: "%lang:helpCommand|/as groupinfo|% Visa information om en grupp."
|
||||
help-schemevent: "%lang:helpCommand|/as schemevent|% Utlös en schematisk händelse för en region."
|
||||
help-add: "%lang:helpCommand|/as add|% Registrera en region som hyra eller köpa."
|
||||
help-del: "%lang:helpCommand|/as del|% Radera en registrerad region från AreaShop."
|
||||
help-addsign: "%lang:helpCommand|/as addsign|% Lägg till en skylt till en existerande region."
|
||||
help-delsign: "%lang:helpCommand|/as delsign|% Radera skylten du ser på."
|
||||
help-me: "%lang:helpCommand|/as me|% Se vilka områden du har (+expiration)."
|
||||
help-setowner: "%lang:helpCommand|/as setowner|% Bestäm regionens ägare eller förläng hyran."
|
||||
help-resell: "%lang:helpCommand|/as resell|% Sätt en region i återförsäljarläge."
|
||||
help-stopResell: "%lang:helpCommand|/as stopresell|% Sätt tillbaka en region i sålt läge."
|
||||
help-addFriend: "%lang:helpCommand|/as addfriend|% Lägg till en vän till en region."
|
||||
help-delFriend: "%lang:helpCommand|/as delfriend|% Ta bort en vän från en region."
|
||||
help-linksigns: "%lang:helpCommand|/as linksigns|% Använd länkningsläge med gruppskylt."
|
||||
help-stack: "%lang:helpCommand|/as stack|% Skapa flera regioner och lägg till dem."
|
||||
help-setlandlord: "%lang:helpCommand|/as setlandlord|% Ange hyresvärden för en region."
|
||||
|
||||
rent-help: "/as rent [region], regionen du står i kommer användas om inget är angivet."
|
||||
rent-noPermission: "Du har inte behörighet att hyra en region."
|
||||
rent-maximum: "Du kan inte hyra mer än %0% region(er) (du har redan %1% i grupp '%2%')."
|
||||
rent-maximumExtend: "Du kan inte förlänga den här hyran för du har redan fler än %0% region(er) (du har redan %1% i grupp '%2%')."
|
||||
rent-payError: "Något gick fel med betalningen, försök igen senare."
|
||||
rent-rented: "Du hyrde %lang:region% fram till %until%, du kan förlänga din hyrtid genom att högerklicka skylten igen eller genom att använda /as rent."
|
||||
rent-extended: "Du kan förlänga ditt hyrande av %lang:region% fram till %until%."
|
||||
rent-extendedToMax: "Du förlängde ditt hyrande av %lang:region% fram till %until% (vilket är den maximala hyrtiden på %maxrenttime%)."
|
||||
rent-lowMoneyExtend: "Du har inte tillräckligt med pengar för att förlänga hyran (du har %0% och du behöver %price%)."
|
||||
rent-lowMoneyRent: "Du har inte tillräckligt med pengar för att hyra %lang:region% (du har %0% och du behöver %price%)."
|
||||
rent-someoneElse: "Någon annan har redan hyrt %lang:region%."
|
||||
rent-notRentable: "Den här regionen är inte tillgänglig för att hyras."
|
||||
rent-maxExtends: "Du kan inte förlänga den här hyran mer (maximalt är %maxextends% times), men efter att hyran är över kan du hyra %lang:region% igen."
|
||||
rent-maxRentTime: "Du kan inte hyra %lang:region% mer tid i förväg, maximal tid är %maxrenttime% och du har för tillfället hyrt den i %timeleft%."
|
||||
rent-restrictedToWorld: "Du måste vara i världen '%world%' för att hyra %lang:region% (du är i '%0%')."
|
||||
rent-restrictedToRegion: "Du måste vara innanför %lang:region% för att hyra den."
|
||||
rent-expireWarning: "Din region %lang:region% har %timeleft% kvar, se till att föränga den om du vill ha kvar den."
|
||||
rent-alreadyAtFull: "%lang:region% Är redan på eller över den maximala tiden du får hyra, du kan inte förlänga den än."
|
||||
|
||||
buy-help: "/as buy [region], regionen du står i kommer användas om ingen annan specifieras."
|
||||
buy-noPermission: "Du har inte rättigheterna att köpa en region."
|
||||
buy-noPermissionResell: "Du har inte rättigheterna att köpa en region i återsäljnings läge."
|
||||
buy-noPermissionNoResell: "Du har inte rättigheterna att köpa en region som inte är i återsäljnings läge."
|
||||
buy-notBuyable: "Regionen %lang:region% är inte tillgänglig att köpas."
|
||||
buy-maximum: "Du kan inte köpa fler än %0% region(er) (du har redan %1% i grupp '%2%')."
|
||||
buy-payError: "Något gick fel med betalningen, försök igen senare."
|
||||
buy-succes: "Du köpte %lang:region%."
|
||||
buy-successResale: "Du köpte %lang:region% från %lang:tPlayer|%0%|%."
|
||||
buy-successSeller: "Din region %lang:region% har blivit såld till %lang:player% för %0%."
|
||||
buy-lowMoney: "Du har inte tillräckligt med pengar för att köpa %lang:region% (du har %0% och du behöver %price%)."
|
||||
buy-lowMoneyResell: "Du har inte tillräckligt med pengar för att köpa %lang:region% (du har %0% och du behöver %resellprice%)."
|
||||
buy-yours: "Du äger redan %lang:region%."
|
||||
buy-someoneElse: "Någon annan har redan köpt %lang:region%."
|
||||
buy-restrictedToWorld: "Du måste befinna dig i världen '%world%' för att köpa %lang:region% (du befinner dig i '%0%')."
|
||||
buy-restrictedToRegion: "Du måste vara innanför %lang:region% för att köpa den."
|
||||
|
||||
unrent-help: "/as unrent [region], regionen du står i kommer användas om inget är angivet."
|
||||
unrent-noPermission: "Du har inte rättigheterna för att säga upp hyran av en region."
|
||||
unrent-noPermissionOther: "Du har inte rättigheterna för att säga upp hyran av en annan region."
|
||||
unrent-notRegistered: "Hyran för den här regionen kan inte tas bort då den inte är registrerad för uthyrning."
|
||||
unrent-notRented: "Hyran för den här regionen kan inte tas bort då den inte är hyrd."
|
||||
unrent-unrented: "%lang:region% för %lang:player% har fått sin hyrning borttagen."
|
||||
unrent-expired: "Din hyrning av %lang:region% har löpt ut."
|
||||
|
||||
sell-help: "/as sell [region], regionen du står i kommer användas om ingen annan specifieras."
|
||||
sell-notRegistered: "Den här regionen kan inte säljas då den inte är registrerad för att köpas."
|
||||
sell-notBought: "Regionen kan inte säljas för det är ingens egendom."
|
||||
sell-sold: "%lang:region% för %lang:player% har sålts."
|
||||
sell-noPermission: "Du har inte rättigheterna att sälja den här regionen."
|
||||
sell-noPermissionOther: "Du har inte rättigheterna att sälja en annan region."
|
||||
|
||||
reload-reloading: "Laddat om alla filer, kollar nu hyror och uppdaterar regioner."
|
||||
reload-updateStart: "[gray]Uppdaterar %0% regioner med %1% per sekund."
|
||||
reload-updateComplete: "[gray]Uppdatering av regioner är klar."
|
||||
reload-noPermission: "Du har inte rättigheterna för att ladda om konfigureringsfiler."
|
||||
reload-updateCommandChanged: "'/as updaterents' och '/as updatebuys' har tagits bort, '/as reload' uppdaterar även regioner nu så använd det kommandot istället."
|
||||
|
||||
info-noPermission: "Du har inte rättigheterna för att få information om regionerna."
|
||||
info-allHeader: "Alla regioner%0%:"
|
||||
info-rentedHeader: "Hyrda regioner%0%:"
|
||||
info-forrentHeader: "Regioner för uthyrning%0%:"
|
||||
info-forsaleHeader: "Regioner till salu%0%:"
|
||||
info-soldHeader: "Sålda regioner%0%:"
|
||||
info-resellingHeader: "Regioner för återsäljning%0%:"
|
||||
info-nogroupHeader: "Regioner utan grupp%0%:"
|
||||
info-limitedToGroup: " (begränsade till grupp %0%)"
|
||||
info-nogroupNone: "Det finns inga regioner utan grupp."
|
||||
info-noFiltergroup: "Grupp '%0%' finns inte och kan därför inte användas för att begränsa reslutaten."
|
||||
info-noRegions: "Inga regioner kunde hittas."
|
||||
info-wrongPage: "%0% är inte ett korrekt sidonummer."
|
||||
info-entryForrent: "[darkgreen][bold]►[reset] %lang:region%: [gray]Uthyres för %price% per %duration%."
|
||||
info-entryRented: "[darkgreen][bold]►[reset] %lang:region%: [gray]Uthyrd till %lang:player%."
|
||||
info-entryForsale: "[darkgreen][bold]►[reset] %lang:region%: [gray]Till salu för %price%."
|
||||
info-entrySold: "[darkgreen][bold]►[reset] %lang:region%: [gray]Såld till %lang:player%."
|
||||
info-entryReselling: "[darkgreen][bold]►[reset] %lang:region%: [gray]Såld till %lang:player% (återsäljer)."
|
||||
info-pageStatus: "[gold]Sida %0%/%1%"
|
||||
info-pagePrevious:
|
||||
- " [gold][bold]◄Föregående[/bold] "
|
||||
- " hover: %lang:action|Visar föregående sida|%"
|
||||
- " command: %0%"
|
||||
info-pageNoPrevious:
|
||||
- " [darkgray][bold]◄Föregående[/bold] "
|
||||
- " hover: Detta är redan första sidan"
|
||||
info-pageNext:
|
||||
- " [gold][bold]Nästa►[/bold]"
|
||||
- " hover: %lang:action|Visar nästa sida|%"
|
||||
- " command: %0%"
|
||||
info-pageNoNext:
|
||||
- " [darkgray][bold]Nästa►[/bold]"
|
||||
- " hover: Detta är redan sista sidan"
|
||||
info-playerHelp: "/as info player <namn>."
|
||||
info-playerRents: "Regioner hyrda av %lang:tPlayer|%0%|%: [gray]%1%"
|
||||
info-playerNoRents: "%lang:tPlayer|%0%|% har inte hyrt någon region."
|
||||
info-playerBuys: "Regioner köpta av %lang:tPlayer|%0%|%: [gray]%1%."
|
||||
info-playerNoBuys: "%lang:tPlayer|%0%|% har inte köpt någon region."
|
||||
info-regionHelp: "/as info region [namn], regionen du står i kommer användas om ingen annan specifieras."
|
||||
info-regionHeaderRent: "[darkgreen]Information om %lang:region%:"
|
||||
info-regionHeaderBuy: "[darkgreen]Information om %lang:region%:"
|
||||
info-regionRented: "[darkgreen][bold]►[reset] Hyrd av %lang:player% tills: [gray]%until%."
|
||||
info-regionBought: "[darkgreen][bold]►[reset] Köpt av %lang:player%."
|
||||
info-regionReselling: "[darkgreen][bold]►[reset] Köpt av %lang:player%, ute till återförsäljning."
|
||||
info-regionExtending:
|
||||
- "[darkgreen][bold]►[reset] "
|
||||
- "[bold]Förläng för[/bold]"
|
||||
- " hover: Förläng hyrning av %region%"
|
||||
- " hover: med %duration% för %price%"
|
||||
- " hover: %lang:action|Förläng hyrning av %region%|%"
|
||||
- " command: /areashop rent %region%"
|
||||
- ": [gray]%price% per %duration%."
|
||||
info-regionCanBeRented:
|
||||
- "[darkgreen][bold]►[reset] "
|
||||
- "[bold]Hyra för[/bold]"
|
||||
- " hover: Hyr %region% för %price% per %duration%"
|
||||
- " hover: %lang:action|Hyr %region%|%"
|
||||
- " command: /areashop rent %region%"
|
||||
- ": [gray]%price% per %duration%."
|
||||
info-regionCanBeBought:
|
||||
- "[darkgreen][bold]►[reset] "
|
||||
- "[bold]Köp för[/bold]"
|
||||
- " hover: Köp %region% för %price%"
|
||||
- " hover: %lang:action|Köp %region%|%"
|
||||
- " command: /areashop buy %region%"
|
||||
- ": [gray]%price%."
|
||||
info-regionReselPrice: "[darkgreen][bold]►[reset] Återsäljningspris: [gray]%resellprice% (du kan köpa den från %lang:player%)."
|
||||
info-regionFriends: "[darkgreen][bold]►[reset] Tillagda vänner: [gray]%0%."
|
||||
info-friend: "%lang:tPlayer|%0%|%"
|
||||
info-friendRemove:
|
||||
- "%lang:info-friend|%0%|%"
|
||||
- "[red]✕[gray]"
|
||||
- " hover: Region %region%"
|
||||
- " hover: %lang:action|Ta bort%0% som vän|%"
|
||||
- " command: /areashop delfriend %0% %region%"
|
||||
info-regionMoneyBackBuy: "[darkgreen][bold]►[reset] Försäljning återbetalning: [gray]%moneyback% (%moneybackpercent%% av priset)."
|
||||
info-regionMoneyBackBuyClick:
|
||||
- "[darkgreen][bold]►[reset] "
|
||||
- "[bold]Försäljning återbetalning[/bold]"
|
||||
- " hover: Sälj %region% och få tillbaka %moneyback%"
|
||||
- " hover: %lang:action|Sälj%region%|%"
|
||||
- " command: /areashop sell %region%"
|
||||
- ": [gray]%moneyback% (%moneybackpercent%% av priset)."
|
||||
info-regionMoneyBackRent: "[darkgreen][bold]►[reset] Avbruten hyras återbetalning: [gray]%moneyback% (%moneybackpercent%% av återstående tid)."
|
||||
info-regionMoneyBackRentClick:
|
||||
- "[darkgreen][bold]►[reset] "
|
||||
- "[bold]Avbruten hyras återbetalning[/bold]"
|
||||
- " hover: Avbryt hyra %region% och få tillbaka %moneyback%"
|
||||
- " hover: %lang:action|Avbryt hyra %region%|%"
|
||||
- " command: /areashop unrent %region%"
|
||||
- ": [gray]%moneyback% (%moneybackpercent%% av återstående tid)."
|
||||
info-regionMaxExtends: "[darkgreen][bold]►[reset] Maximalt antal expansioner: [gray]%maxextends% time(s)."
|
||||
info-regionNoExtending: "[darkgreen][bold]►[reset] Hyran kan inte förlängas."
|
||||
info-regionExtendsLeft: "[darkgreen][bold]►[reset] Expansioner kvar: [gray]%extendsleft% time(s) utav %maxextends%."
|
||||
info-regionMaxRentTime: "[darkgreen][bold]►[reset] Hyra i förväg: [gray]%maxrenttime% max."
|
||||
info-prefix: "[darkgreen][bold]►[reset] "
|
||||
info-regionTeleport:
|
||||
- "[bold]Gå till regionen[/bold]"
|
||||
- " hover: %lang:action|Teleportera till %region%|%"
|
||||
- " command: /areashop tp %region%"
|
||||
info-setRegionTeleport:
|
||||
- "[bold]sätt ut teleporteringsplats[/bold]"
|
||||
- " hover: %region%"
|
||||
- " hover: %lang:action|Sätt ut teleporteringsplats|%"
|
||||
- " command: /areashop settp %region%"
|
||||
info-regionSigns: "[darkgreen][bold]►[reset] Connected signs: [gray]%0%."
|
||||
info-regionSignLocation: "[gray](%0%, %1%, %2%, %3%)[reset]"
|
||||
info-regionGroups: "[darkgreen][bold]►[reset] Tilldelade grupper: [gray]%0%."
|
||||
info-regionInactiveUnrent: "[darkgreen][bold]►[reset] Avsluta hyrning automatiskt efter: [gray]%inactivetime% av inaktivetet från spelaren."
|
||||
info-regionInactiveSell: "[darkgreen][bold]►[reset] Sälj automatiskt efter: [gray]%inactivetime% av inaktivetet från spelaren."
|
||||
info-regionRestrictedRegionRent: "[darkgreen][bold]►[reset] Du måste befinna dig innanför %lang:region% för att hyra den."
|
||||
info-regionRestrictedWorldRent: "[darkgreen][bold]►[reset] Du måste befinna dig i världen '%world%' för att hyra %lang:region%."
|
||||
info-regionRestrictedRegionBuy: "[darkgreen][bold]►[reset] Du måste befinna dig innanför %lang:region% för att köpa den."
|
||||
info-regionRestrictedWorldBuy: "[darkgreen][bold]►[reset] Du måste vara i världen '%world%' för att köpa %lang:region%."
|
||||
info-regionLandlord: "[darkgreen][bold]►[reset] Hyresvärd: [gray]%lang:landlord% (mottager pengarna)."
|
||||
info-regionNotExisting: "Den specifierade regionen är inte registrerad: %0%."
|
||||
|
||||
setrestore-help: "/as setrestore <region> <true|false|general> [profile]."
|
||||
setrestore-noPermission: "Du har inte rättigheterna att ändra återställnings inställningarna."
|
||||
setrestore-notRegistered: "Den specifierade regionen är inte registrerad: %0%."
|
||||
setrestore-invalidSetting: "'%0%' är inte ett giltigt tillstånd, bör vara true, false eller general."
|
||||
setrestore-success: "Återställningsläget för %lang:region% inställt till '%0%'."
|
||||
setrestore-successProfile: "Återställningsläget för %lang:region% inställt till '%0%' och profilen till '%1%'."
|
||||
|
||||
setprice-noPermission: "Du har inte rättigheterna för att ställa in priset på en region."
|
||||
setprice-help: "/as setprice <price> [region], regionen du står i kommer användas om ingen annan specifieras."
|
||||
setprice-notRegistered: "Den specifierade regionen är inte registrerad: %0%."
|
||||
setprice-wrongPrice: "'%0%' är inte ett giltigt pris."
|
||||
setprice-successRent: "Priset på regionen %lang:region% ändrad till %price% per %duration%."
|
||||
setprice-successBuy: "Priset på regionen %lang:region% ändrad till %price%."
|
||||
setprice-successRemoved: "Priset på %lang:region% har tagits bort, Den kommer nu använda priset från en grupp i filen default.yml, nytt pris: %price%."
|
||||
setprice-noLandlord: "Du har inte rättigheterna att ändra priset för du inte är hyresvärd av %lang:region%."
|
||||
|
||||
setduration-noPermission: "Du har inte rättigheterna att ändra tiden för en hyra."
|
||||
setduration-help: "/as setduration <amount> <identifier> [region], regionen du står i kommer användas om inget annat specifieras."
|
||||
setduration-notRegistered: "%0% är inte registrerad för uthyrning."
|
||||
setduration-wrongAmount: "'%0%' är inte ett giltigt nummer, använd ett helt nummer."
|
||||
setduration-wrongFormat: "'%0%' är inte ett giltigt tidsformat, kolla dokumentationen på bukkit."
|
||||
setduration-success: "Varaktigheten av region %lang:region% ändrad till '%duration%'."
|
||||
setduration-noLandlord: "Du har inte rättigheterna att ändra varaktigheten för du är inte hyresvärd av %lang:region%."
|
||||
setduration-successRemoved: "Varaktigheten av %lang:region% har tagits bort, det kommer nu använda den varaktighet som finns i filen default.yml, ny varaktighet: %duration%."
|
||||
|
||||
setup-noRegion: "Du specifierade inte någon region på andra raden."
|
||||
setup-alreadyRentSign: "Regionen du specifierade är redan tillagd till AreaShop som en hyr region, lägg till skyltat med [as] på första raden eller '/as addsign'."
|
||||
setup-alreadyBuySign: "Regionen du specifierade är redan tillagd till AreaShop som en köp region, lägg till skyltat med [as] på första raden eller '/as addsign'."
|
||||
setup-noDuration: "Du specifierade inte hur länge regionen kan hyras, gör detta på den tredje raden."
|
||||
setup-wrongDuration: "Tiden som specifieras är inte i rätt format, exempel: 1 day."
|
||||
setup-noPrice: "Du specifierade inte priset på fjärde raden."
|
||||
setup-wrongPrice: "Du specifierade inte priset korrekt, använd bara siffror."
|
||||
setup-rentSuccess: "Hyrning av region %lang:region% är inställt korrekt."
|
||||
setup-buySuccess: "Köp av region %lang:region% är inställt korrekt."
|
||||
setup-noPermissionRent: "Du har inte rättigheterna för att ställa in regioner att hyra."
|
||||
setup-noPermissionBuy: "Du har inte rättigheterna för att ställa in regioner att köpa."
|
||||
setup-couldNotDetect: "Hittade flera regioner med samma prioritet och/eller förälder/barn-relation, specifiera en på den andra raden (2 av regionerna som hittades: %lang:tRegion|%0%|% och %lang:tRegion|%1%|%)."
|
||||
setup-blacklisted: "%0% är svartlistad och kan inte läggas till i AreaShop."
|
||||
setup-noPermission: "Du kan inte lägga till regionen '%0%', du är inte ägare/medlem i den eller så saknar du rättigheterna för det."
|
||||
|
||||
destroy-noPermissionRent: "Du har inte rättigheterna för att avregistrera en hyrbar region."
|
||||
destroy-noPermissionBuy: "Du har inte rättigheterna för att avregistrera en köpbar region."
|
||||
destroy-successRent: "%lang:region% avregistrerades som hyrbar region."
|
||||
destroy-successBuy: "%lang:region% avregistrerades som köpbar region."
|
||||
|
||||
teleport-help: "/as tp <region> [skylt]."
|
||||
teleport-noRentOrBuy: "Den specifierade regionen är inte registrerad: %0%."
|
||||
teleport-noPermission: "Du har inte rättigheterna för att teleportera dig till din region."
|
||||
teleport-noPermissionOther: "Du har inte rättigheterna för att teleportera dig till regioner du inte äger."
|
||||
teleport-noPermissionSign: "Du har inte rättigheterna för att teleportera dig till skylten i din region."
|
||||
teleport-noPermissionOtherSign: "Du har inte rättigheterna för att teleportera dig till skylten i regioner du inte äger."
|
||||
teleport-noPermissionFriend: "Du har inte rättigheterna för att teleportera dig till regioner du är tillagd i som vän."
|
||||
teleport-noPermissionFriendSign: "Du har inte rättigheterna för att teleportera dig till skylten i regioner du är tillagd i som vän."
|
||||
teleport-success: "Du teleporterade till %lang:region%."
|
||||
teleport-successSign: "Du teleporterade till skylten i %lang:region%."
|
||||
teleport-noSafe: "Ingen säker plats hittades %lang:region%, inga platser i regionen kvar eller maximalt försök överskreds (%0%/%1%)."
|
||||
teleport-blocked: "Du kan inte teleportera dig då den positionen befinner sig utanför regionen och du måste teleportera dig innanför."
|
||||
teleport-changedToSign: "Du har bara rättigheterna för att teleportera till skylten och inte innanför regionen, teleporterar till skylt."
|
||||
teleport-changedToNoSign: "Ingen skylt tillgänglig att teleportera till, försöker teleportera innanför regionen istället."
|
||||
|
||||
setteleport-help: "/as settp [region] [reset], regionen du står i kommer andvändas om inget specifieras."
|
||||
setteleport-noPermission: "Du har inte rättigheterna att sätta ut teleporteringsplatsen."
|
||||
setteleport-noPermissionOther: "Du har inte rättigheterna för att sätta ut teleporteringsplatsen för en region du inte äger."
|
||||
setteleport-noRentOrBuy: "Den specifierade regionen är inte registrerad: %0%."
|
||||
setteleport-success: "Teleporteringsplats för %lang:region% utsatt."
|
||||
setteleport-notInside: "Platsen måste vara innanför regionen."
|
||||
setteleport-reset: "Teleporteringsplats för %lang:region% har återställts."
|
||||
|
||||
find-help: "/as find <buy|rent> [maxpris] [grupp]."
|
||||
find-noPermission: "Du har inte rättigheterna för att söka på regioner och teleportera till dem."
|
||||
find-success: "Hittade en %0% region: %lang:region%, när sökande med maxpris av ditt konto: %1%%2%."
|
||||
find-successMax: "Hittade en %0% region: %lang:region%, när sökande med maxpris på %1%%2%."
|
||||
find-wrongMaxPrice: "Det specifierade maxpriset är inte ett korrekt nummer: %0%."
|
||||
find-wrongGroup: "Den specifierade gruppen finns inte: %0%."
|
||||
find-noneFound: "Ingen %0% region hittades när sökande med maxpris av ditt konto: %1%%2%."
|
||||
find-noneFoundMax: "Ingen %0% region hittades när sökande med maxpris på %1%%2%."
|
||||
find-onlyInGroup: ", sökte endast efter regioner i gruppen: %0%."
|
||||
|
||||
groupadd-help: "/as groupadd <group> [region], om ingen region är specifierad används alla regioner från din WorldEdit markering."
|
||||
groupadd-noPermission: "Du har inte rättigheterna för att lägga till regioner i grupper."
|
||||
groupadd-success: "Region %lang:region% har lagts till i grupp '%0%', den här gruppen har nu %1% medlem(mar)."
|
||||
groupadd-failed: "Region %lang:region% är redan medlem i gruppen '%0%'."
|
||||
groupadd-weSuccess: "Tillagd i grupp %0%: [gray]%1%."
|
||||
groupadd-weFailed: "Var redan i grupp %0%: [gray]%1%."
|
||||
|
||||
groupdel-help: "/as groupdel <group> [region], Om inget område är specifierat används alla områden från ditt WorldEdit val."
|
||||
groupdel-noPermission: "Du har inte rättigheterna att ta bort regioner från grupper."
|
||||
groupdel-success: "Regionen %lang:region% har tagits bort från gruppen '%0%', den här gruppen har nu %1% medlem(mar)."
|
||||
groupdel-failed: "Regionen %lang:region% är inte medlem i någon grupp '%0%'."
|
||||
groupdel-weSuccess: "Borttagen från gruppen %0%: [gray]%1%."
|
||||
groupdel-weFailed: "Var inte i någon grupp %0% ändå: [gray]%1%."
|
||||
|
||||
grouplist-noPermission: "Du har inte rättigheterna att visa registrerade grupper."
|
||||
grouplist-noGroups: "Det finns för närvarande inga grupper registrerade."
|
||||
grouplist-success: "Följande grupper är registrerade: [gray]%0%."
|
||||
|
||||
groupinfo-help: "/as groupinfo <grupp>."
|
||||
groupinfo-noPermission: "Du har inte rättigheterna att visa information om en grupp."
|
||||
groupinfo-noGroup: "Det finns ingen grupp registrerad med namnet '%0%', använd /as grouplist för att kolla grupper."
|
||||
groupinfo-members: "Följande regioner är medlemmar i gruppen %0%: [gray]%1%."
|
||||
groupinfo-noMembers: "Gruppen %0% har inga medlemmar."
|
||||
|
||||
schemevent-help: "/as schemevent <region> <created|deleted|rented|unrented|bought|sold>."
|
||||
schemevent-wrongEvent: "Det specifierade eventet '%0%' existerar inte, använd ett av följande: [gray]%1%."
|
||||
schemevent-success: "Eventet '%0%' har blivit triggat för regionen %lang:region%."
|
||||
schemevent-noPermission: "Du har inte rättigheterna för att trigga ett schematiskt event."
|
||||
|
||||
add-help: "/as add <rent|buy> [region] [värld]."
|
||||
add-noPermission: "Du har inte rättigheterna att lägga till regioner i AreaShop."
|
||||
add-success: "Tillagd som %0%: [gray]%1%."
|
||||
add-failed: "Redan registrerad: [gray]%0%."
|
||||
add-blacklisted: "På svartlistan: [gray]%0%."
|
||||
add-specifyWorld: "Specifiera världen för regionen när consolen används."
|
||||
add-incorrectWorld: "Värld '%0%' hittades inte, Försök igen (skiftlägeskänsligt)."
|
||||
add-noPermissionRegions: "Saknar rättighet att lägga till: [gray]%0%."
|
||||
add-noPermissionOwnerMember: "[gray]Du är antingen inte medlem/ägare av dessa regioner eller så saknar du rättigheterna att lägga till dina regioner."
|
||||
|
||||
del-noPermission: "Du har inte rättigheterna att ta bort regioner."
|
||||
del-success: "Borttagna regioner: [gray]%0%."
|
||||
del-failed: "Ingen rättighet att ta bort eller inte registrerad: [gray]%0%."
|
||||
|
||||
addsign-help: "/as addsign [region] [profil]."
|
||||
addsign-noSign: "Du tittar inte på en skylt."
|
||||
addsign-noRegions: "Ingen region hittades runt skyltens position."
|
||||
addsign-couldNotDetect: "Hittade flera regioner runt skylten, specifiera regionen med et extra argument (2 av regionerna som hittades: %lang:tRegion|%0%|% och %lang:tRegion|%1%|%)."
|
||||
addsign-couldNotDetectSign: "Hittade flera regioner runt skylten, specifiera regionen på andra raden (2 av regionerna som hittades: %lang:tRegion|%0%|% och %lang:tRegion|%1%|%)."
|
||||
addsign-wrongProfile: "Den specifierade profilen existerar inte, använd ett av följande (kolla konfig): [gray]%0%."
|
||||
addsign-profile:
|
||||
- "[bold]%0%[/bold]"
|
||||
- " hover: Skyltprofil %0%"
|
||||
- " hover: %lang:action|Använd denna profil|%"
|
||||
- " Kommando: /areashop linksigns %0%"
|
||||
addsign-success: "Skylten har lagts till i %lang:region%."
|
||||
addsign-successProfile: "Skylten har lagts till i %lang:region% med profil %0%."
|
||||
addsign-alreadyRegistered: "Den skylten är redan registrerad för %lang:region%."
|
||||
addsign-noPermission: "Du har inte rättigheterna för att lägga till en skylt."
|
||||
|
||||
delsign-noSign: "Du tittar inte på en skylt."
|
||||
delsign-noPermission: "Du har inte rättigheterna att ta bort en skylt."
|
||||
delsign-noRegion: "Den skylten tillhör inte en AreaShop region."
|
||||
delsign-success: "Skylten har tagits bort från regionen %lang:region%."
|
||||
|
||||
me-noPermission: "Du har inte rättigheterna att kolla vilka regioner du har."
|
||||
me-header: "Regioner för %lang:tPlayer|%0%|%:"
|
||||
me-notAPlayer: "Du är inte en spelare så du kan inte ha någon region."
|
||||
me-rentLine:
|
||||
- "[darkgreen][bold]►[nollställ] %lang:region% [gray]("
|
||||
- "%timeleft% kvar"
|
||||
- " hover: tills %until%"
|
||||
- ")."
|
||||
me-buyLine: "[darkgreen][bold]►[nollställ] %lang:region%."
|
||||
me-friendLine:
|
||||
- "[darkgreen][bold]►[nollställ] %lang:region% [gray]("
|
||||
- "ägd av %lang:player%"
|
||||
- " hover: Du är tillagd som vän"
|
||||
- ")."
|
||||
me-nothing: "%lang:tPlayer|%0%|% har inte hyrt eller köpt någon region och är inte tillagd som vän i någon."
|
||||
me-noPlayer: "%0% hittades inte, antagligen aldrig varit på servern."
|
||||
me-clickHint: "[gray][italic]Klicka en regions namn för att se detaljer."
|
||||
|
||||
setowner-help: "/as setowner <spelare> [region], regionen du står i kommer användas om inget annat specifieras."
|
||||
setowner-noPermission: "Du har inte rättigheterna att bestämma ägare av en region."
|
||||
setowner-noPermissionRent: "Du har inte rättigheterna att bestämma ägare av hyrda regioner."
|
||||
setowner-noPermissionBuy: "Du har inte rättigheterna att bestämma ägare av köpta regioner."
|
||||
setowner-notRegistered: "Den specifierade regionen är inte registrerad, ägare kan inte bestämmas."
|
||||
setowner-noPlayer: "Kunde inte få fram UUID ab specifierad spelare: %0%."
|
||||
setowner-succesRent: "Ägare av %lang:region% har ändrats till %lang:player%, hyrd till %until% (%timeleft% kvar)."
|
||||
setowner-succesRentExtend: "Ägaren var redan %lang:player%, hyrtid utökad med '%duration%', hyrs nu till %until% (%timeleft% kvar)."
|
||||
setowner-succesBuy: "Ägare av %lang:region% ändrad till %lang:player%."
|
||||
|
||||
resell-help: "/as resell <pris> [region], regionen du står i kommer användas om inte annan specifieras."
|
||||
resell-wrongPrice: "'%0%' är inte ett giltigt pris."
|
||||
resell-notRegistered: "Den specifierade regionen är inte registrerad: %0%."
|
||||
resell-notBought: "Du kan inte återsälja %lang:region% för den är inte såld än."
|
||||
resell-success: "%lang:region% är satt till återsäljning för %resellprice%."
|
||||
resell-noPermission: "Du har inte rättigheterna att sätta ut din region i återsäljningsläge."
|
||||
resell-noPermissionOther: "Du har inte rättigheterna att sätta ut regioner i återsäljningsläge."
|
||||
|
||||
stopresell-help: "/as stopresell [region], regionen du står i kommer användas om inget annat specifieras."
|
||||
stopresell-notRegistered: "Den specifierade regionen är inte registrerad: %0%."
|
||||
stopresell-notResell: "Du kan inte avsluta en återsäljning av %lang:region% för den är inte i återsäljningsläge."
|
||||
stopresell-success: "%lang:region% är återsatt i sålt läge."
|
||||
stopresell-noPermission: "Du har inte rättigheterna att ändra tillbaka din region till sålt läge."
|
||||
stopresell-noPermissionOther: "Du har inte rättigheterna att ändra tillbaka regioner till sålt läge."
|
||||
|
||||
addfriend-help: "/as addfriend <spelare> [region], regionen du står i kommer användas om ingen annan specifieras."
|
||||
addfriend-noPermissionOther: "Du har inte rättigheterna att lägga till vänner i regioner som inte tillhör dig."
|
||||
addfriend-noPermission: "Du har inte rättigheterna att lägga till vänner i dina regioner."
|
||||
addfriend-successOther: "%lang:tPlayer|%0%|% har lagts till som vän i region %lang:region%."
|
||||
addfriend-success: "%lang:tPlayer|%0%|% har lagts till som vän i din region %lang:region%."
|
||||
addfriend-alreadyAdded: "%lang:tPlayer|%0%|% är redan tillagd som vän i %lang:region%."
|
||||
addfriend-self: "Att lägga till en ägare av en region som vän vore meningslöst."
|
||||
addfriend-noOwner: "Du kan inte lägga till vänner till en region som saknar ägare."
|
||||
addfriend-notVisited: "Du kan inte lägga till %0% för han har inte besökt servern ännu."
|
||||
|
||||
delfriend-help: "/as delfriend <spelare> [region], regionen du står i kommer användas om inget annat specifieras."
|
||||
delfriend-noPermissionOther: "Du har inte rättigheterna att ta bort vänner från regioner som inte tillhör dig."
|
||||
delfriend-noPermission: "Du har inte rättigheterna att ta bort vänner från din region."
|
||||
delfriend-successOther: "%lang:tPlayer|%0%|% har tagits bort som vän från region %lang:region%."
|
||||
delfriend-success: "%lang:tPlayer|%0%|% har tagits bort som vän från din region %lang:region%."
|
||||
delfriend-notAdded: "%lang:tPlayer|%0%|% är inte tillagd som vän i %lang:region%."
|
||||
delfriend-noOwner: "Du kan inte ta bort en vän från en region som saknar ägare."
|
||||
|
||||
linksigns-multipleRegions: "Hittade flera regioner: [gray]%0%."
|
||||
linksigns-multipleRegionsAdvice: "Klicka en annan gång för att försöka igen eller använd '/as linksigns' för att sluta."
|
||||
linksigns-noRegions: "Hittade ingen AreaShop region åt det hållet din markör pekar, försäkra att regionen är tillagd i AreaShop [gray](maximalt avstånd 100 block)."
|
||||
linksigns-regionFound: "Region %lang:region% har hittats, sikta mot en skylt och vänsterklicka för att länka den."
|
||||
linksigns-signFound: "Hittade en skylt vid (%0%, %1%, %2%), sikta mot en region nu och högerklicka för att länka den."
|
||||
linksigns-noSign: "Ingen skylt hittades åt det hållet din markering är vänd, försäkra dig att du har fri sikt mot en skylt och klicka igen [gray](maximalt avstånd 100 block)."
|
||||
linksigns-alreadyRegistered: "Den skylten är redan registrerad för region %lang:region%, klicka igen för att välja en annan skylt."
|
||||
linksigns-first: "Du har gått in i skylt-länknings läge."
|
||||
linksigns-next: "[gray]Vänsterklicka för att välja en skylt, högerklicka för att välja en region, använd /as linksigns för att avsluta."
|
||||
linksigns-noPermission: "Du har inte rättigheterna för att gå in i mass-länknings läge."
|
||||
linksigns-stopped: "Avslutade skylt-länknings läge."
|
||||
|
||||
stack-help:
|
||||
- "/as stack <mängd> <mellanrum> <namn> <rent|buy> [grupp].[break]"
|
||||
- " [gray]<mängd> Antal regioner som kommer skapas.[break]"
|
||||
- " [gray]<mellanrum> Avstånd i antal block mellan regionerna.[break]"
|
||||
- " [gray]<namn> Namnet på regionerna (numrering kommer hamna efter det).[break]"
|
||||
- " [gray]<rent|buy> Skapa hyr- eller köpregioner.[break]"
|
||||
- " [gray][group] En grupp att lägga till de skapade regionerna i.[break]"
|
||||
- " [gray]Regionerna kommer skapas åt det håll du är vänd åt."
|
||||
stack-accepted: "Börjar skapa %0% %1% regioner med %2% block iemellan, namnen startar med %3% och har ett nummer efter sig.%4%"
|
||||
stack-addToGroup: " Skapade regioner kommer läggas till i gruppen '%0%'."
|
||||
stack-noPermission: "Du har inte rättigheterna att skapa och lägga till regioner i AreaShop i massläge."
|
||||
stack-wrongAmount: "'%0%' är inte ett correct antal regioner."
|
||||
stack-wrongGap: "'%0%' är inte ett correct nummer för antalet blocks mellanrum mellan regioner."
|
||||
stack-noSelection: "Du har ingenting valt som visar var första regionen ska skapas."
|
||||
stack-addStart: "[gray]Lägger till %0% regioner vid %1% per sekund."
|
||||
|
||||
setlandlord-help: "/as setlandlord <spelare> [region], regionen du står i kommer användas om inget annat specifieras."
|
||||
setlandlord-noPermission: "Du har inte rättigheterna att bestämma en hyresvärd för en region."
|
||||
setlandlord-success: "%lang:landlord% har satts in som hyresvärd för %lang:region%."
|
||||
|
||||
message-help: "/as message <spelare> <meddelande...>"
|
||||
message-noPermission: "Du har inte rättigheterna för att skicka AreaShop meddelanden."
|
||||
message-notOnline: "%0% är inte online."
|
||||
|
||||
confirm-rent:
|
||||
- "%lang:prefix%Är du säker på att du vill hyra %lang:tRegion|%0%|%?[break]"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Klicka för att hyra %0%|%"
|
||||
- " hover: %lang:action|Rent %0%|%"
|
||||
- " command: /areashop rent %0%"
|
||||
confirm-extend:
|
||||
- "%lang:prefix%Är du säker på att du vill förlänga %lang:tRegion|%0%|%?[break]"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Klicka för att förlänga %0%|%"
|
||||
- " hover: %lang:action|Extend %0%|%"
|
||||
- " command: /areashop rent %0%"
|
||||
confirm-unrent:
|
||||
- "%lang:prefix%Är du säker på att du vill sluta hyra %lang:tRegion|%0%|%?[break]"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Klicka för att sluta hyra %0%|%"
|
||||
- " hover: %lang:action|Stop renting %0%|%"
|
||||
- " command: /areashop unrent %0%"
|
||||
confirm-buy:
|
||||
- "%lang:prefix%Är du säker på att du vill köpa %lang:tRegion|%0%|%?[break]"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Klicka för att köpa %0%|%"
|
||||
- " hover: %lang:action|Buy %0%|%"
|
||||
- " command: /areashop buy %0%"
|
||||
confirm-sell:
|
||||
- "%lang:prefix%Är du säker på att du vill sälja %lang:tRegion|%0%|%?[break]"
|
||||
- "[darkgreen][bold]►[reset] %lang:button|Klicka för att sälja %0%|%"
|
||||
- " hover: %lang:action|Sell %0%|%"
|
||||
- " command: /areashop sell %0%"
|
||||
|
||||
timeleft-years: "%0% år"
|
||||
timeleft-months: "%0% månader"
|
||||
timeleft-days: "%0% dagar"
|
||||
timeleft-hours: "%0% timmar"
|
||||
timeleft-minutes: "%0% minuter"
|
||||
timeleft-second: "%0% sekund"
|
||||
timeleft-seconds: "%0% sekunder"
|
||||
timeleft-ended: "Utgånget"
|
||||
|
||||
greeting-forrent: "%region% kan hyras för %price% per %duration%."
|
||||
greeting-rented: "%region% hyrs av %player% fram till %until%."
|
||||
greeting-forsale: "%region% kan köpas för %price%."
|
||||
greeting-bought: "%region% är köpt av %player%."
|
||||
greeting-resale: "%region% kan köpas för %resaleprice% av %player%."
|
||||
@@ -162,6 +162,12 @@ permissions:
|
||||
areashop.teleportfriendsign:
|
||||
description: Teleport to the sign of regions where you are added as friend
|
||||
default: true
|
||||
areashop.teleportavailable:
|
||||
description: Teleport to regions which are available
|
||||
default: true
|
||||
areashop.teleportavailablesign:
|
||||
description: Teleport to the sign of regions which are available
|
||||
default: true
|
||||
areashop.setteleport:
|
||||
description: Set the teleport spot for your region
|
||||
default: true
|
||||
|
||||
@@ -7,7 +7,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public interface AreaShopInterface {
|
||||
void debugI(String message);
|
||||
void debugI(Object... message);
|
||||
YamlConfiguration getConfig();
|
||||
WorldGuardPlugin getWorldGuard();
|
||||
WorldEditPlugin getWorldEdit();
|
||||
|
||||
@@ -71,6 +71,10 @@ Old video for AreaShop v1.0: [Tutorial by VariationVault](https://www.youtube.co
|
||||
* [Vault](http://dev.bukkit.org/bukkit-plugins/vault/): 1.4.1 or higher
|
||||
* An economy plugin supported by Vault (check the [Vault page](http://dev.bukkit.org/bukkit-plugins/vault/) for a list of these)
|
||||
|
||||
### Extension plugins
|
||||
Do you know a plugin that is nice to use with AreaShop? Let me know.
|
||||
* [[Premium] Shop - a simple, intuitive shop plugin](https://www.spigotmc.org/resources/shop-a-simple-intuitive-shop-plugin.9628/updates): Let players buy and sell items from other players in or outside an AreaShop region, if restoring from schematic is enabled in AreaShop Shops will removed correctly.
|
||||
|
||||
### Metrics
|
||||
This plugin utilizes Hidendra's plugin metrics system, which means that the following information is collected and sent to mcstats.org:
|
||||
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
<dependency>
|
||||
<groupId>org.bukkit</groupId>
|
||||
<artifactId>bukkit</artifactId>
|
||||
<version>1.7.9-R0.2</version>
|
||||
<version>1.8-R0.1-SNAPSHOT</version>
|
||||
<type>jar</type>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
@@ -41,11 +41,9 @@ public class WorldEditHandler5 extends WorldEditInterface {
|
||||
}
|
||||
clipBoard.place(editSession, origin, false);
|
||||
} catch(MaxChangedBlocksException e) {
|
||||
pluginInterface.getLogger().warning("Exeeded the block limit while restoring schematic of " + regionInterface.getName());
|
||||
pluginInterface.getLogger().warning("Exeeded the block limit while restoring schematic of "+regionInterface.getName()+", limit in exception: "+e.getBlockLimit()+", limit passed by AreaShop: "+pluginInterface.getConfig().getInt("maximumBlocks"));
|
||||
result = false;
|
||||
} catch(DataException e) {
|
||||
otherException = e;
|
||||
} catch(IOException e) {
|
||||
} catch(DataException|IOException e) {
|
||||
otherException = e;
|
||||
}
|
||||
if(otherException != null) {
|
||||
@@ -72,9 +70,7 @@ public class WorldEditHandler5 extends WorldEditInterface {
|
||||
Exception otherException = null;
|
||||
try {
|
||||
SchematicFormat.MCEDIT.save(clipboard, file);
|
||||
} catch (DataException e) {
|
||||
otherException = e;
|
||||
} catch (IOException e) {
|
||||
} catch(DataException|IOException e) {
|
||||
otherException = e;
|
||||
}
|
||||
if(otherException != null) {
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
<dependency>
|
||||
<groupId>org.bukkit</groupId>
|
||||
<artifactId>bukkit</artifactId>
|
||||
<version>1.7.9-R0.2</version>
|
||||
<version>1.8-R0.1-SNAPSHOT</version>
|
||||
<type>jar</type>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
@@ -74,7 +74,7 @@ public class WorldEditHandler6 extends WorldEditInterface {
|
||||
.build();
|
||||
Operations.completeLegacy(operation);
|
||||
} catch (MaxChangedBlocksException e) {
|
||||
pluginInterface.getLogger().warning("Exeeded the block limit while restoring schematic of " + regionInterface.getName());
|
||||
pluginInterface.getLogger().warning("Exeeded the block limit while restoring schematic of "+regionInterface.getName()+", limit in exception: "+e.getBlockLimit()+", limit passed by AreaShop: "+pluginInterface.getConfig().getInt("maximumBlocks"));
|
||||
return false;
|
||||
} catch (IOException e) {
|
||||
pluginInterface.getLogger().warning("An error occured while restoring schematic of " + regionInterface.getName() + ", enable debug to see the complete stacktrace");
|
||||
@@ -108,8 +108,8 @@ public class WorldEditHandler6 extends WorldEditInterface {
|
||||
ForwardExtentCopy copy = new ForwardExtentCopy(editSession, new CuboidRegion(world, regionInterface.getRegion().getMinimumPoint(), regionInterface.getRegion().getMaximumPoint()), clipboard, regionInterface.getRegion().getMinimumPoint());
|
||||
try {
|
||||
Operations.completeLegacy(copy);
|
||||
} catch (MaxChangedBlocksException e1) {
|
||||
pluginInterface.getLogger().warning("Exeeded the block limit while saving schematic of " + regionInterface.getName());
|
||||
} catch(MaxChangedBlocksException e) {
|
||||
pluginInterface.getLogger().warning("Exeeded the block limit while saving schematic of "+regionInterface.getName()+", limit in exception: "+e.getBlockLimit()+", limit passed by AreaShop: "+pluginInterface.getConfig().getInt("maximumBlocks"));
|
||||
return false;
|
||||
}
|
||||
Closer closer = Closer.create();
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<dependency>
|
||||
<groupId>org.bukkit</groupId>
|
||||
<artifactId>bukkit</artifactId>
|
||||
<version>1.7.9-R0.2</version>
|
||||
<version>1.8-R0.1-SNAPSHOT</version>
|
||||
<type>jar</type>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<dependency>
|
||||
<groupId>org.bukkit</groupId>
|
||||
<artifactId>bukkit</artifactId>
|
||||
<version>1.7.9-R0.2</version>
|
||||
<version>1.8-R0.1-SNAPSHOT</version>
|
||||
<type>jar</type>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<dependency>
|
||||
<groupId>org.bukkit</groupId>
|
||||
<artifactId>bukkit</artifactId>
|
||||
<version>1.7.9-R0.2</version>
|
||||
<version>1.8-R0.1-SNAPSHOT</version>
|
||||
<type>jar</type>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
Reference in new issue
Block a user