Finalize ARM migration

This commit is contained in:
NotAlexNoyle committed 2026-07-16 19:45:15 -04:00
1 parent ccf5f48411
commit c3859603c3
95 files changed
+1882 -1020

No files matched your search

@@ -285,9 +285,8 @@ public final class AreaShop extends JavaPlugin implements AreaShopApi {
);
injector = Guice.createInjector(Stage.PRODUCTION, new BukkitModule(getServer()), asModule);
// Extract default regions from JAR
try {
java.util.zip.ZipInputStream zip = new java.util.zip.ZipInputStream(new java.io.FileInputStream(this.getFile()));
// Extract the migrated ARM data from the JAR without replacing live data.
try(java.util.zip.ZipInputStream zip = new java.util.zip.ZipInputStream(new java.io.FileInputStream(this.getFile()))) {
java.util.zip.ZipEntry entry;
while((entry = zip.getNextEntry()) != null) {
if(entry.getName().startsWith("regions/") && entry.getName().endsWith(".yml")) {
@@ -297,10 +296,13 @@ public final class AreaShop extends JavaPlugin implements AreaShopApi {
}
}
}
zip.close();
} catch (Exception e) {
error("Failed to extract default regions from JAR: " + e.getMessage());
}
java.io.File groupsFile = new java.io.File(getDataFolder(), AreaShop.groupsFile);
if(!groupsFile.exists()) {
saveResource(AreaShop.groupsFile, false);
}
// Load all data from files and check versions
fileManager = injector.getInstance(IFileManager.class);
@@ -893,5 +895,3 @@ public final class AreaShop extends JavaPlugin implements AreaShopApi {
}
@@ -854,6 +854,7 @@ public class FileManager extends Manager implements IFileManager {
InputStreamReader normal = new InputStreamReader(plugin.getResource(AreaShop.defaultFile), StandardCharsets.UTF_8)
) {
defaultConfig = YamlConfiguration.loadConfiguration(custom);
migrateIncompleteArmDefaults(defaultFile);
if(defaultConfig.getKeys(false).isEmpty()) {
AreaShop.warn("File 'default.yml' is empty, check for errors in the log.");
result = false;
@@ -865,6 +866,32 @@ public class FileManager extends Manager implements IFileManager {
return result;
}
/**
* Repair the first ARM migration's generated default.yml. The signature is
* deliberately exact so user-customized AreaShop installations are untouched.
*/
private void migrateIncompleteArmDefaults(File defaultFile) {
if(!"%width% * %length% * %height% * 32".equals(defaultConfig.getString("rent.price"))) {
return;
}
defaultConfig.set("general.flagProfile.ALL.priority", 20);
defaultConfig.set("general.flagProfile.forrent.greeting",
"%lang:wgPrefix%&6This shop can be rented for &b%price% Diamonds &6per &2%duration%");
defaultConfig.set("general.flagProfile.forsale.greeting",
"%lang:wgPrefix%&6This shop can be purchased for &b%price% Diamonds");
defaultConfig.set("general.flagProfile.resell.greeting",
"%lang:wgPrefix%&6This shop can be purchased for &b%resellprice% Diamonds");
defaultConfig.set("rent.price", "%width% * %depth% * 32");
defaultConfig.set("rent.maxRentTime", "365 days");
defaultConfig.set("rent.warningOnLoginTime", "7 days");
try {
defaultConfig.save(defaultFile);
AreaShop.info("Repaired settings from the incomplete AdvancedRegionMarket migration in default.yml");
} catch(IOException e) {
AreaShop.warn("Could not save repaired AdvancedRegionMarket settings to " + defaultFile.getAbsolutePath());
}
}
/**
* Load the default.yml file
* @return true if it has been loaded successfully, otherwise false
@@ -896,6 +923,7 @@ public class FileManager extends Manager implements IFileManager {
InputStreamReader hidden = new InputStreamReader(plugin.getResource(AreaShop.configFileHidden), StandardCharsets.UTF_8)
) {
config = YamlConfiguration.loadConfiguration(custom);
migrateIncompleteArmConfig(configFile);
if(config.getKeys(false).isEmpty()) {
AreaShop.warn("File 'config.yml' is empty, check for errors in the log.");
result = false;
@@ -920,6 +948,39 @@ public class FileManager extends Manager implements IFileManager {
return result;
}
/**
* Repair the invalid map-shaped limit groups emitted by the first ARM
* migration. AreaShop requires total/rents/buys integer values here.
*/
private void migrateIncompleteArmConfig(File configFile) {
if(!config.isConfigurationSection("limitGroups.og.groups")
|| config.isInt("limitGroups.og.rents")) {
return;
}
config.set("limitGroups.default.total", -1);
config.set("limitGroups.default.rents", -1);
config.set("limitGroups.default.buys", -1);
setArmLimitGroup("og", 2);
setArmLimitGroup("og-pro", 3);
setArmLimitGroup("og-master", 4);
try {
config.save(configFile);
AreaShop.info("Repaired limit groups from the incomplete AdvancedRegionMarket migration in config.yml");
} catch(IOException e) {
AreaShop.warn("Could not save repaired AdvancedRegionMarket limits to " + configFile.getAbsolutePath());
}
}
private void setArmLimitGroup(String name, int limit) {
String path = "limitGroups." + name + ".";
config.set(path + "total", limit);
config.set(path + "rents", limit);
config.set(path + "buys", limit);
config.set(path + "groups", null);
config.set(path + "groupLimits.shop", limit - 1);
config.set(path + "groupLimits.union-shop", 1);
}
/**
* Load the groups.yml file from disk
* @return true if succeeded, otherwise false
@@ -940,6 +1001,7 @@ public class FileManager extends Manager implements IFileManager {
if(groupsConfig == null) {
groupsConfig = new YamlConfiguration();
}
mergeBundledArmGroups(groupFile);
for(String groupName : groupsConfig.getKeys(false)) {
RegionGroup group = regionFactory.createRegionGroup(groupName);
groups.put(groupName, group);
@@ -947,6 +1009,29 @@ public class FileManager extends Manager implements IFileManager {
return result;
}
private void mergeBundledArmGroups(File groupFile) {
try(InputStream input = plugin.getResource(AreaShop.groupsFile)) {
if(input == null) {
return;
}
YamlConfiguration bundled = YamlConfiguration.loadConfiguration(
new InputStreamReader(input, StandardCharsets.UTF_8));
boolean changed = false;
for(String path : bundled.getKeys(true)) {
if(!bundled.isConfigurationSection(path) && !groupsConfig.isSet(path)) {
groupsConfig.set(path, bundled.get(path));
changed = true;
}
}
if(changed) {
groupsConfig.save(groupFile);
AreaShop.info("Added migrated AdvancedRegionMarket region groups to groups.yml");
}
} catch(IOException e) {
AreaShop.warn("Could not merge migrated AdvancedRegionMarket region groups into " + groupFile.getAbsolutePath());
}
}
/**
* Load all region files.
*/
@@ -980,6 +1065,8 @@ public class FileManager extends Manager implements IFileManager {
List<GeneralRegion> noWorld = new ArrayList<>();
Map<GeneralRegion, File> noRegion = new HashMap<>();
List<GeneralRegion> incorrectDuration = new ArrayList<>();
List<String> unresolvedLegacyOwners = new ArrayList<>();
int migratedLegacyRegions = 0;
for(File regionFile : regionFiles) {
if(regionFile.exists() && regionFile.isFile() && !regionFile.isHidden()) {
@@ -998,6 +1085,7 @@ public class FileManager extends Manager implements IFileManager {
AreaShop.warn("Something went wrong reading region file: " + regionFile.getAbsolutePath());
continue;
}
boolean legacyArmRegion = migrateLegacyArmRegionShape(regionConfig);
// Construct the correct type of region
String type = regionConfig.getString("general.type");
@@ -1019,9 +1107,14 @@ public class FileManager extends Manager implements IFileManager {
noWorld.add(region);
} else if(region.getRegion() == null) {
noRegion.put(region, regionFile);
} else if(legacyArmRegion && !migrateLegacyArmRegionState(region, regionConfig, regionFile)) {
unresolvedLegacyOwners.add(region.getName());
} else if(region instanceof RentRegion && !Utils.checkTimeFormat(((RentRegion)region).getDurationString())) {
incorrectDuration.add(region);
} else {
if(legacyArmRegion) {
migratedLegacyRegions++;
}
added = true;
addRegionNoSave(region);
}
@@ -1077,9 +1170,109 @@ public class FileManager extends Manager implements IFileManager {
}
AreaShop.warn("The following regions have an incorrect time format as duration: " + Utils.createCommaSeparatedList(incorrectDurationNames));
}
if(!unresolvedLegacyOwners.isEmpty()) {
AreaShop.warn("Could not migrate the renter because exactly one WorldGuard owner was not found; these regions were not loaded: "
+ Utils.createCommaSeparatedList(unresolvedLegacyOwners));
}
if(migratedLegacyRegions > 0) {
AreaShop.info("Migrated " + migratedLegacyRegions + " AdvancedRegionMarket region files to the AreaShop format");
}
plugin.setReady(true);
}
/**
* Convert the flat files produced by the first ARM migration into AreaShop's
* nested region schema. The legacy state keys remain until ownership has been
* recovered from WorldGuard.
*/
private boolean migrateLegacyArmRegionShape(YamlConfiguration regionConfig) {
if(regionConfig.isSet("general.type") || !regionConfig.isString("type")) {
return false;
}
String type = regionConfig.getString("type");
if(!RegionType.RENT.getValue().equals(type) && !RegionType.BUY.getValue().equals(type)) {
return false;
}
regionConfig.set("general.name", regionConfig.getString("name"));
regionConfig.set("general.type", type);
regionConfig.set("general.world", regionConfig.getString("world"));
ConfigurationSection signs = regionConfig.getConfigurationSection("signs");
if(signs != null) {
for(String key : signs.getKeys(false)) {
String source = "signs." + key + ".";
String destination = "general.signs." + key + ".location.";
regionConfig.set(destination + "world", regionConfig.get(source + "world"));
regionConfig.set(destination + "x", regionConfig.get(source + "x"));
regionConfig.set(destination + "y", regionConfig.get(source + "y"));
regionConfig.set(destination + "z", regionConfig.get(source + "z"));
}
}
mergeBundledArmRegion(regionConfig);
return true;
}
private void mergeBundledArmRegion(YamlConfiguration regionConfig) {
String name = regionConfig.getString("general.name");
if(name == null) {
return;
}
try(InputStream input = plugin.getResource("regions/" + name.toLowerCase(Locale.ENGLISH) + ".yml")) {
if(input == null) {
return;
}
YamlConfiguration bundled = YamlConfiguration.loadConfiguration(
new InputStreamReader(input, StandardCharsets.UTF_8));
for(String path : bundled.getKeys(true)) {
if(!bundled.isConfigurationSection(path) && !regionConfig.isSet(path)) {
regionConfig.set(path, bundled.get(path));
}
}
} catch(IOException e) {
AreaShop.warn("Could not read bundled AdvancedRegionMarket data for " + name);
}
}
/**
* ARM stored tenants and friends in the WorldGuard owner/member domains. Read
* them before AreaShop applies its own flag profile, then persist everything
* in the AreaShop region file.
*/
private boolean migrateLegacyArmRegionState(GeneralRegion region, YamlConfiguration regionConfig, File regionFile) {
if(regionConfig.getBoolean("rented")) {
List<UUID> owners = worldGuardInterface.getOwners(region.getRegion()).asUniqueIdList();
if(!(region instanceof RentRegion) || owners.size() != 1) {
return false;
}
UUID renter = owners.get(0);
regionConfig.set("rent.renter", renter.toString());
regionConfig.set("rent.rentedUntil", regionConfig.getLong("rentedUntil"));
List<String> friends = new ArrayList<>();
for(UUID member : worldGuardInterface.getMembers(region.getRegion()).asUniqueIdList()) {
if(!member.equals(renter)) {
friends.add(member.toString());
}
}
regionConfig.set("general.friends", friends.isEmpty() ? null : friends);
}
regionConfig.set("name", null);
regionConfig.set("type", null);
regionConfig.set("world", null);
regionConfig.set("signs", null);
regionConfig.set("rented", null);
regionConfig.set("rentedUntil", null);
// Fixed ARM prices must not override the adaptive area formula in default.yml.
regionConfig.set("rent.price", null);
try {
regionConfig.save(regionFile);
return true;
} catch(IOException e) {
AreaShop.warn("Could not save migrated AdvancedRegionMarket region file: " + regionFile.getAbsolutePath());
return false;
}
}
/**
* Checks for old file formats and converts them to the latest format.
@@ -1421,10 +1614,3 @@ public class FileManager extends Manager implements IFileManager {
@@ -1298,6 +1298,10 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
if(extend) {
exclude = this;
}
LimitResult regionGroupLimit = checkRegionGroupLimits(offlinePlayer, exclude);
if(regionGroupLimit != null) {
return regionGroupLimit;
}
String typePath;
if(type == RegionType.RENT) {
typePath = "rents";
@@ -1308,7 +1312,7 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
List<String> groups = new ArrayList<>(plugin.getConfig().getConfigurationSection("limitGroups").getKeys(false));
while(!groups.isEmpty()) {
String group = groups.get(0);
if(plugin.hasPermission(offlinePlayer, "areashop.limits." + group) && this.matchesLimitGroup(group)) {
if(hasLimitGroupPermission(offlinePlayer, group) && this.matchesLimitGroup(group)) {
String pathPrefix = "limitGroups." + group + ".";
if(!plugin.getConfig().isInt(pathPrefix + "total")) {
AreaShop.warn("Limit group " + group + " in the config.yml file does not correctly specify the number of total regions (should be specified as total: <number>)");
@@ -1338,7 +1342,7 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
// Get the highest number from the groups of the same category
List<String> groupsCopy = new ArrayList<>(groups);
for(String checkGroup : groupsCopy) {
if(plugin.hasPermission(offlinePlayer, "areashop.limits." + checkGroup) && this.matchesLimitGroup(checkGroup)) {
if(hasLimitGroupPermission(offlinePlayer, checkGroup) && this.matchesLimitGroup(checkGroup)) {
if(limitGroupsOfSameCategory(group, checkGroup)) {
groups.remove(checkGroup);
int totalLimitOther = plugin.getConfig().getInt("limitGroups." + checkGroup + ".total");
@@ -1383,6 +1387,67 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
return new LimitResult(true, null, 0, 0, null);
}
/**
* Keep the ARM limit permissions working while permission data is migrated.
*/
private boolean hasLimitGroupPermission(OfflinePlayer player, String group) {
return plugin.hasPermission(player, "areashop.limits." + group)
|| plugin.hasPermission(player, "arm.limit." + group);
}
/**
* Enforce ARM's per-region-kind limits using AreaShop region groups. The
* highest applicable permission group wins, matching AreaShop's normal limit
* behavior when a player has multiple ranks.
*/
private LimitResult checkRegionGroupLimits(OfflinePlayer player, GeneralRegion exclude) {
ConfigurationSection limitGroups = plugin.getConfig().getConfigurationSection("limitGroups");
if(limitGroups == null) {
return null;
}
for(RegionGroup regionGroup : plugin.getFileManager().getGroups()) {
if(!regionGroup.isMember(this)) {
continue;
}
int highestLimit = Integer.MIN_VALUE;
String highestPermissionGroup = null;
for(String permissionGroup : limitGroups.getKeys(false)) {
String path = "limitGroups." + permissionGroup + ".groupLimits." + regionGroup.getName();
if(hasLimitGroupPermission(player, permissionGroup)
&& matchesLimitGroup(permissionGroup)
&& plugin.getConfig().isInt(path)) {
int configuredLimit = plugin.getConfig().getInt(path);
if(configuredLimit == -1) {
highestLimit = Integer.MAX_VALUE;
highestPermissionGroup = permissionGroup;
break;
}
if(configuredLimit > highestLimit) {
highestLimit = configuredLimit;
highestPermissionGroup = permissionGroup;
}
}
}
if(highestLimit == Integer.MIN_VALUE || highestLimit == Integer.MAX_VALUE) {
continue;
}
int current = 0;
for(GeneralRegion ownedRegion : plugin.getFileManager().getRegionsRef()) {
if(ownedRegion.getBooleanSetting("general.countForLimits")
&& ownedRegion.isOwner(player)
&& regionGroup.isMember(ownedRegion)
&& (exclude == null || !exclude.getName().equals(ownedRegion.getName()))) {
current++;
}
}
if(current >= highestLimit) {
return new LimitResult(false, LimitType.TOTAL, highestLimit, current,
highestPermissionGroup + "/" + regionGroup.getName());
}
}
return null;
}
/**
* Class to store the result of a limits check.
*/
@@ -1705,7 +1770,5 @@ public abstract class GeneralRegion implements GeneralRegionInterface, Comparabl
+13 -6
View File
@@ -105,22 +105,29 @@ years: [y, year, years]
# https://github.com/NLthijs48/AreaShop/wiki/Limitgroups-information-and-examples.
limitGroups:
default:
total: 1
rents: 1
buys: 1
# ARM did not impose a limit on players without an arm.limit.* permission.
total: -1
rents: -1
buys: -1
og:
total: 2
groups:
rents: 2
buys: 2
groupLimits:
shop: 1
union-shop: 1
og-pro:
total: 3
groups:
rents: 3
buys: 3
groupLimits:
shop: 2
union-shop: 1
og-master:
total: 4
groups:
rents: 4
buys: 4
groupLimits:
shop: 3
union-shop: 1
+7 -7
View File
@@ -113,7 +113,7 @@ general:
# '' will remove the flag from the region.
flagProfile:
ALL: # Flags that should always be applied
priority: 10
priority: 20
owners: ''
members: ''
ride: 'allow g:members'
@@ -122,14 +122,14 @@ general:
block-place: 'allow g:members'
chest-access: 'allow g:members'
forrent:
greeting: '%lang:prefix%&6This shop can be rented for &b%price% Diamonds &6per &2%duration%'
greeting: '%lang:wgPrefix%&6This shop can be rented for &b%price% Diamonds &6per &2%duration%'
use: 'allow g:all'
rented:
members: '%uuid%, %friendsuuid%'
greeting: ''
use: 'allow g:members'
forsale:
greeting: '%lang:prefix%&6This shop can be purchased for &b%price% Diamonds'
greeting: '%lang:wgPrefix%&6This shop can be purchased for &b%price% Diamonds'
use: 'allow g:all'
sold:
members: '%uuid%, %friendsuuid%'
@@ -137,7 +137,7 @@ general:
use: 'allow g:members'
resell:
members: '%uuid%, %friendsuuid%'
greeting: '%lang:prefix%&6This shop can be purchased for &b%resellprice% Diamonds'
greeting: '%lang:wgPrefix%&6This shop can be purchased for &b%resellprice% Diamonds'
use: 'allow g:all'
##### Save and restore schematics to clean up regions.
@@ -205,7 +205,7 @@ general:
# └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
rent:
# The default price of a rental region (variables, mathematical expressions and JavaScript can be used).
price: '%width% * %length% * %height% * 32'
price: '%width% * %depth% * 32'
# The default duration of a rental region, you can find all time indicators in config.yml below the RENTING header.
duration: '30 days'
# Automatically extend the rental when it is running out (if the player meets the criteria)
@@ -218,13 +218,13 @@ rent:
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.
maxRentTime: 'unlimited'
maxRentTime: '365 days'
# 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.
warningOnLoginTime: '1 day'
warningOnLoginTime: '7 days'
# 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.
+101
View File
@@ -0,0 +1,101 @@
default:
name: default
priority: 0
regions:
- shop-51
- shop-52
- shop-55
- shop-56
- shop-57
- shop-58
- shop-59
- shop-60
- shop-61
- shop-62
- shop-63
- shop-64
- shop-65
- shop-66
- shop-67
- shop-68
- shop-69
- shop-70
- shop-71
- shop-72
- shop-73
- shop-74
- shop-75
- shop-76
- shop-77
- shop-79
- shop-80
- shop-81
- shop-82
- shop-83
- shop-84
- shop-85
- shop-86
- shop-87
- shop-88
- shop-89
- shop-90
shop:
name: shop
priority: 0
regions:
- shop-1
- shop-2
- shop-3
- shop-4
- shop-5
- shop-6
- shop-7
- shop-8
- shop-9
- shop-10
- shop-11
- shop-12
- shop-13
- shop-14
- shop-15
- shop-16
- shop-17
- shop-18
- shop-19
- shop-20
- shop-21
- shop-22
- shop-23
- shop-24
- shop-25
- shop-26
- shop-27
- shop-28
- shop-29
- shop-30
- shop-31
- shop-32
- shop-33
- shop-34
- shop-35
- shop-36
- shop-37
- shop-38
- shop-39
- shop-40
- shop-41
- shop-42
- shop-43
- shop-44
- shop-45
- shop-46
- shop-47
- shop-48
- shop-49
- shop-50
- shop-53
- shop-54
union-shop:
name: union-shop
priority: 0
regions: []
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-1
type: rent
world: world
signs:
'0':
world: world
x: -202.0
"y": 78.0
z: -211.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-1
type: rent
world: world
lastActive: 1740855792526
signs:
'0':
location:
world: world
x: -202.0
y: 78.0
z: -211.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 9c272295-71dd-4aad-b59e-3de12d73b68a
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-10
type: rent
world: world
signs:
'0':
world: world
x: -213.0
"y": 78.0
z: -283.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-10
type: rent
world: world
lastActive: 1721220684913
signs:
'0':
location:
world: world
x: -213.0
y: 78.0
z: -283.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: a0fc2d97-f374-4fb0-b1ad-f881d9b9f656
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-11
type: rent
world: world
signs:
'0':
world: world
x: -208.0
"y": 77.0
z: -273.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-11
type: rent
world: world
lastActive: 1699769932373
signs:
'0':
location:
world: world
x: -208.0
y: 77.0
z: -273.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 8330d120-2e4b-48c1-bfdc-8d4920dee119
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-12
type: rent
world: world
signs:
'0':
world: world
x: -193.0
"y": 74.0
z: -231.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-12
type: rent
world: world
lastActive: 1697469191691
signs:
'0':
location:
world: world
x: -193.0
y: 74.0
z: -231.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 50428042-1e75-46d6-bc90-ea989b653a46
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-13
type: rent
world: world
signs:
'0':
world: world
x: -169.0
"y": 69.0
z: -269.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-13
type: rent
world: world
lastActive: 1697469236664
signs:
'0':
location:
world: world
x: -169.0
y: 69.0
z: -269.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 3ff2b505-698b-4c6a-a07c-be0644130677
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-14
type: rent
world: world
signs:
'0':
world: world
x: -176.0
"y": 68.0
z: -278.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-14
type: rent
world: world
lastActive: 1697469389729
signs:
'0':
location:
world: world
x: -176.0
y: 68.0
z: -278.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 76a16193-28cc-43bc-97e2-034876ab4a68
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-15
type: rent
world: world
signs:
'0':
world: world
x: -154.0
"y": 70.0
z: -259.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-15
type: rent
world: world
lastActive: 1697474769503
signs:
'0':
location:
world: world
x: -154.0
y: 70.0
z: -259.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 9950501e-140d-4f62-a883-06b989013d4d
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-16
type: rent
world: world
signs:
'0':
world: world
x: -156.0
"y": 68.0
z: -277.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-16
type: rent
world: world
lastActive: 1699002248416
signs:
'0':
location:
world: world
x: -156.0
y: 68.0
z: -277.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: fbd2363f-7879-47a8-89c1-415f2c103aac
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-17
type: rent
world: world
signs:
'0':
world: world
x: -151.0
"y": 70.0
z: -243.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-17
type: rent
world: world
lastActive: 1713603529712
signs:
'0':
location:
world: world
x: -151.0
y: 70.0
z: -243.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 6b8ee573-0330-402d-8ad3-faeb2a27246a
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-18
type: rent
world: world
signs:
'0':
world: world
x: -149.0
"y": 69.0
z: -282.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-18
type: rent
world: world
lastActive: 1697469776078
signs:
'0':
location:
world: world
x: -149.0
y: 69.0
z: -282.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 9f28d36c-6865-4a7c-b79b-b47faefb7b0f
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-19
type: rent
world: world
signs:
'0':
world: world
x: -132.0
"y": 72.0
z: -258.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-19
type: rent
world: world
lastActive: 1697469823700
signs:
'0':
location:
world: world
x: -132.0
y: 72.0
z: -258.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 7eea4139-71dc-40ef-b082-9258dc66d54e
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-2
type: rent
world: world
signs:
'0':
world: world
x: -206.0
"y": 78.0
z: -215.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-2
type: rent
world: world
lastActive: 1697467290342
signs:
'0':
location:
world: world
x: -206.0
y: 78.0
z: -215.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: cbcc64a0-22d8-4b85-be7d-f531385704e4
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-20
type: rent
world: world
signs:
'0':
world: world
x: -130.0
"y": 68.0
z: -281.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-20
type: rent
world: world
lastActive: 1697469927588
signs:
'0':
location:
world: world
x: -130.0
y: 68.0
z: -281.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 3ce11fdd-46c5-4935-9e5d-f8e71e3910f6
rentedUntil: 1786804780000
+22 -12
View File
@@ -1,12 +1,22 @@
---
name: shop-21
type: rent
world: world
signs:
'0':
world: world
x: -129.0
"y": 73.0
z: -252.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-21
type: rent
world: world
lastActive: 1729108772982
friends:
- a8f81a4a-d522-4cdf-a299-3c2842c13635
- 471770e7-59f1-40ba-b273-52d20000b561
- a12777f4-5c67-4b70-8567-7c3e9725a0e9
signs:
'0':
location:
world: world
x: -129.0
y: 73.0
z: -252.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 4f872b50-f500-4569-9d51-f6cbfcca894c
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-22
type: rent
world: world
signs:
'0':
world: world
x: -115.0
"y": 68.0
z: -277.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-22
type: rent
world: world
lastActive: 1697470028843
signs:
'0':
location:
world: world
x: -115.0
y: 68.0
z: -277.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 88b7c361-19d5-4be3-9c64-be71142a51a4
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-23
type: rent
world: world
signs:
'0':
world: world
x: -111.0
"y": 72.0
z: -258.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-23
type: rent
world: world
lastActive: 1697470078024
signs:
'0':
location:
world: world
x: -111.0
y: 72.0
z: -258.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 1caf7594-d95a-4488-ba62-47d43a27aaab
rentedUntil: 1786804780000
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-24
type: rent
world: world
signs:
'0':
world: world
x: -103.0
"y": 68.0
z: -278.0
general:
name: shop-24
type: rent
world: world
signs:
'0':
location:
world: world
x: -103.0
y: 68.0
z: -278.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+22 -12
View File
@@ -1,12 +1,22 @@
---
name: shop-25
type: rent
world: world
signs:
'0':
world: world
x: -107.0
"y": 67.0
z: -274.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-25
type: rent
world: world
lastActive: 1705302176193
friends:
- 49d02d8a-6a02-4b7c-b849-67be313c36b4
- 1535efec-ec8c-491c-9cd3-1731ef98c9b0
- 6a4a92f0-07ea-42c7-87fa-7a44a2a9723b
signs:
'0':
location:
world: world
x: -107.0
y: 67.0
z: -274.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: cb4872b5-67d5-4431-8ad2-763f6fb6ced8
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-26
type: rent
world: world
signs:
'0':
world: world
x: -107.0
"y": 72.0
z: -252.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-26
type: rent
world: world
lastActive: 1697470248832
signs:
'0':
location:
world: world
x: -107.0
y: 72.0
z: -252.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 42ca230e-d44d-4c4b-841c-2d0bedb4f005
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-27
type: rent
world: world
signs:
'0':
world: world
x: -112.0
"y": 72.0
z: -250.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-27
type: rent
world: world
lastActive: 1697470333765
signs:
'0':
location:
world: world
x: -112.0
y: 72.0
z: -250.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: a7d51ca2-c5c2-4005-b0d9-a47cf06d73c8
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-28
type: rent
world: world
signs:
'0':
world: world
x: -107.0
"y": 73.0
z: -246.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-28
type: rent
world: world
lastActive: 1717352356014
signs:
'0':
location:
world: world
x: -107.0
y: 73.0
z: -246.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: c6ed864f-6c8b-44f0-a5cc-044bcdd934aa
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-29
type: rent
world: world
signs:
'0':
world: world
x: -111.0
"y": 72.0
z: -240.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-29
type: rent
world: world
lastActive: 1697470578544
signs:
'0':
location:
world: world
x: -111.0
y: 72.0
z: -240.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 33c02316-f7fd-4204-8178-e6a4f0ea9ffa
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-3
type: rent
world: world
signs:
'0':
world: world
x: -200.0
"y": 78.0
z: -217.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-3
type: rent
world: world
lastActive: 1698910993261
signs:
'0':
location:
world: world
x: -200.0
y: 78.0
z: -217.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: c9236ebb-8cd0-4b8c-b94f-c12cfcdb4c38
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-30
type: rent
world: world
signs:
'0':
world: world
x: -123.0
"y": 73.0
z: -241.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-30
type: rent
world: world
lastActive: 1699769932373
signs:
'0':
location:
world: world
x: -123.0
y: 73.0
z: -241.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 8330d120-2e4b-48c1-bfdc-8d4920dee119
rentedUntil: 1786804780000
+20 -12
View File
@@ -1,12 +1,20 @@
---
name: shop-31
type: rent
world: world
signs:
'0':
world: world
x: -130.0
"y": 72.0
z: -242.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-31
type: rent
world: world
lastActive: 1727771307421
friends:
- 4f872b50-f500-4569-9d51-f6cbfcca894c
signs:
'0':
location:
world: world
x: -130.0
y: 72.0
z: -242.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: a8f81a4a-d522-4cdf-a299-3c2842c13635
rentedUntil: 1786804780000
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-32
type: rent
world: world
signs:
'0':
world: world
x: -164.0
"y": 68.0
z: -230.0
general:
name: shop-32
type: rent
world: world
signs:
'0':
location:
world: world
x: -164.0
y: 68.0
z: -230.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-33
type: rent
world: world
signs:
'0':
world: world
x: -163.0
"y": 69.0
z: -225.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-33
type: rent
world: world
lastActive: 1697470865322
signs:
'0':
location:
world: world
x: -163.0
y: 69.0
z: -225.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 830f7748-c61f-4913-8af4-b95a3abf3615
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-34
type: rent
world: world
signs:
'0':
world: world
x: -154.0
"y": 68.0
z: -204.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-34
type: rent
world: world
lastActive: 1697470909534
signs:
'0':
location:
world: world
x: -154.0
y: 68.0
z: -204.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: ca8b8f60-dc62-4f7a-ac83-997284a41303
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-35
type: rent
world: world
signs:
'0':
world: world
x: -158.0
"y": 69.0
z: -190.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-35
type: rent
world: world
lastActive: 1697470944710
signs:
'0':
location:
world: world
x: -158.0
y: 69.0
z: -190.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 16fd9c05-d5b3-4c88-9534-e4f7b7fb49ce
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-36
type: rent
world: world
signs:
'0':
world: world
x: -145.0
"y": 69.0
z: -214.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-36
type: rent
world: world
lastActive: 1697471011856
signs:
'0':
location:
world: world
x: -145.0
y: 69.0
z: -214.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 1f60f6c2-c942-4271-87b5-14494cf35033
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-37
type: rent
world: world
signs:
'0':
world: world
x: -142.0
"y": 70.0
z: -198.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-37
type: rent
world: world
lastActive: 1697471089766
signs:
'0':
location:
world: world
x: -142.0
y: 70.0
z: -198.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 4bf7fec6-04cc-4f1c-8d75-90883d0463cf
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-38
type: rent
world: world
signs:
'0':
world: world
x: -137.0
"y": 70.0
z: -188.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-38
type: rent
world: world
lastActive: 1697471131476
signs:
'0':
location:
world: world
x: -137.0
y: 70.0
z: -188.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: b67ae6a1-d8b2-4d7c-846f-8a43470a3389
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-39
type: rent
world: world
signs:
'0':
world: world
x: -122.0
"y": 68.0
z: -185.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-39
type: rent
world: world
lastActive: 1717908011457
signs:
'0':
location:
world: world
x: -122.0
y: 68.0
z: -185.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: c14a78d4-98a9-437e-b1c8-ac7a1772c6ea
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-4
type: rent
world: world
signs:
'0':
world: world
x: -205.0
"y": 77.0
z: -227.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-4
type: rent
world: world
lastActive: 1697799641396
signs:
'0':
location:
world: world
x: -205.0
y: 77.0
z: -227.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 6fb3a7c4-66b0-4808-8670-e6f5068ca5c4
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-40
type: rent
world: world
signs:
'0':
world: world
x: -114.0
"y": 69.0
z: -186.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-40
type: rent
world: world
lastActive: 1713719044014
signs:
'0':
location:
world: world
x: -114.0
y: 69.0
z: -186.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: aec7ca7a-3ca9-4001-adfc-a81b596d8201
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-41
type: rent
world: world
signs:
'0':
world: world
x: -109.0
"y": 69.0
z: -189.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-41
type: rent
world: world
lastActive: 1713719044014
signs:
'0':
location:
world: world
x: -109.0
y: 69.0
z: -189.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: aec7ca7a-3ca9-4001-adfc-a81b596d8201
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-42
type: rent
world: world
signs:
'0':
world: world
x: -108.0
"y": 68.0
z: -201.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-42
type: rent
world: world
lastActive: 1697471396751
signs:
'0':
location:
world: world
x: -108.0
y: 68.0
z: -201.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 321f6eff-5815-4f16-a857-f85d63ad3e8e
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-43
type: rent
world: world
signs:
'0':
world: world
x: -106.0
"y": 68.0
z: -207.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-43
type: rent
world: world
lastActive: 1697471439912
signs:
'0':
location:
world: world
x: -106.0
y: 68.0
z: -207.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: c0541b9a-e999-460d-b5bb-e778eee09738
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-44
type: rent
world: world
signs:
'0':
world: world
x: -106.0
"y": 68.0
z: -222.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-44
type: rent
world: world
lastActive: 1706147034515
signs:
'0':
location:
world: world
x: -106.0
y: 68.0
z: -222.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 6e0007a5-9164-4fba-8c6a-fe940ba797fc
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-45
type: rent
world: world
signs:
'0':
world: world
x: -117.0
"y": 68.0
z: -213.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-45
type: rent
world: world
lastActive: 1697471512519
signs:
'0':
location:
world: world
x: -117.0
y: 68.0
z: -213.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 5d3a5ac0-8a2c-41e6-b20d-9283b1ef227c
rentedUntil: 1786804780000
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-46
type: rent
world: world
signs:
'0':
world: world
x: -54.0
"y": 34.0
z: -224.0
general:
name: shop-46
type: rent
world: world
signs:
'0':
location:
world: world
x: -54.0
y: 34.0
z: -224.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-47
type: rent
world: world
signs:
'0':
world: world
x: -51.0
"y": 35.0
z: -227.0
general:
name: shop-47
type: rent
world: world
signs:
'0':
location:
world: world
x: -51.0
y: 35.0
z: -227.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-48
type: rent
world: world
signs:
'0':
world: world
x: -47.0
"y": 35.0
z: -222.0
general:
name: shop-48
type: rent
world: world
signs:
'0':
location:
world: world
x: -47.0
y: 35.0
z: -222.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-49
type: rent
world: world
signs:
'0':
world: world
x: -56.0
"y": 35.0
z: -215.0
general:
name: shop-49
type: rent
world: world
signs:
'0':
location:
world: world
x: -56.0
y: 35.0
z: -215.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-5
type: rent
world: world
signs:
'0':
world: world
x: -200.0
"y": 78.0
z: -239.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-5
type: rent
world: world
lastActive: 1697467347181
signs:
'0':
location:
world: world
x: -200.0
y: 78.0
z: -239.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 9f6742ea-f6ed-4c32-a211-178b1b958f3f
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-50
type: rent
world: world
signs:
'0':
world: world
x: -231.0
"y": 55.0
z: -277.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-50
type: rent
world: world
lastActive: 1704299370588
signs:
'0':
location:
world: world
x: -231.0
y: 55.0
z: -277.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 1e9815f6-480a-4ef5-8de9-f73c76b72af3
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-51
type: rent
world: world
signs:
'0':
world: world
x: -146.0
"y": 57.0
z: -201.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-51
type: rent
world: world
lastActive: 1715104715767
signs:
'0':
location:
world: world
x: -146.0
y: 57.0
z: -201.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: bc26eba9-b8e3-45f1-a755-d46260cdccc7
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-52
type: rent
world: world
signs:
'0':
world: world
x: -146.0
"y": 57.0
z: -207.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-52
type: rent
world: world
lastActive: 1730449340234
signs:
'0':
location:
world: world
x: -146.0
y: 57.0
z: -207.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: a8f81a4a-d522-4cdf-a299-3c2842c13635
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-53
type: rent
world: world
signs:
'0':
world: world
x: -158.0
"y": 57.0
z: -201.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-53
type: rent
world: world
lastActive: 1726145227241
signs:
'0':
location:
world: world
x: -158.0
y: 57.0
z: -201.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 297eaa53-8782-4bd6-a46e-94c9efb9e4f5
rentedUntil: 1786804780000
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-54
type: rent
world: world
signs:
'0':
world: world
x: -158.0
"y": 57.0
z: -207.0
general:
name: shop-54
type: rent
world: world
signs:
'0':
location:
world: world
x: -158.0
y: 57.0
z: -207.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-55
type: rent
world: world
signs:
'0':
world: world
x: -171.0
"y": 56.0
z: -201.0
general:
name: shop-55
type: rent
world: world
signs:
'0':
location:
world: world
x: -171.0
y: 56.0
z: -201.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-56
type: rent
world: world
signs:
'0':
world: world
x: -169.0
"y": 57.0
z: -207.0
general:
name: shop-56
type: rent
world: world
signs:
'0':
location:
world: world
x: -169.0
y: 57.0
z: -207.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-57
type: rent
world: world
signs:
'0':
world: world
x: -183.0
"y": 56.0
z: -201.0
general:
name: shop-57
type: rent
world: world
signs:
'0':
location:
world: world
x: -183.0
y: 56.0
z: -201.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-58
type: rent
world: world
signs:
'0':
world: world
x: -180.0
"y": 56.0
z: -207.0
general:
name: shop-58
type: rent
world: world
signs:
'0':
location:
world: world
x: -180.0
y: 56.0
z: -207.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-59
type: rent
world: world
signs:
'0':
world: world
x: -196.0
"y": 56.0
z: -201.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-59
type: rent
world: world
lastActive: 1729108772982
signs:
'0':
location:
world: world
x: -196.0
y: 56.0
z: -201.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 4f872b50-f500-4569-9d51-f6cbfcca894c
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-6
type: rent
world: world
signs:
'0':
world: world
x: -205.0
"y": 78.0
z: -234.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-6
type: rent
world: world
lastActive: 1702765705339
signs:
'0':
location:
world: world
x: -205.0
y: 78.0
z: -234.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 1ca5f38d-0f3b-4dd6-b675-70de09328f6c
rentedUntil: 1786804780000
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-60
type: rent
world: world
signs:
'0':
world: world
x: -192.0
"y": 56.0
z: -207.0
general:
name: shop-60
type: rent
world: world
signs:
'0':
location:
world: world
x: -192.0
y: 56.0
z: -207.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-61
type: rent
world: world
signs:
'0':
world: world
x: -208.0
"y": 56.0
z: -201.0
general:
name: shop-61
type: rent
world: world
signs:
'0':
location:
world: world
x: -208.0
y: 56.0
z: -201.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-62
type: rent
world: world
signs:
'0':
world: world
x: -203.0
"y": 56.0
z: -220.0
general:
name: shop-62
type: rent
world: world
signs:
'0':
location:
world: world
x: -203.0
y: 56.0
z: -220.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-63
type: rent
world: world
signs:
'0':
world: world
x: -209.0
"y": 56.0
z: -224.0
general:
name: shop-63
type: rent
world: world
signs:
'0':
location:
world: world
x: -209.0
y: 56.0
z: -224.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-64
type: rent
world: world
signs:
'0':
world: world
x: -203.0
"y": 56.0
z: -232.0
general:
name: shop-64
type: rent
world: world
signs:
'0':
location:
world: world
x: -203.0
y: 56.0
z: -232.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-65
type: rent
world: world
signs:
'0':
world: world
x: -209.0
"y": 56.0
z: -235.0
general:
name: shop-65
type: rent
world: world
signs:
'0':
location:
world: world
x: -209.0
y: 56.0
z: -235.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-66
type: rent
world: world
signs:
'0':
world: world
x: -190.0
"y": 56.0
z: -243.0
general:
name: shop-66
type: rent
world: world
signs:
'0':
location:
world: world
x: -190.0
y: 56.0
z: -243.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-67
type: rent
world: world
signs:
'0':
world: world
x: -204.0
"y": 56.0
z: -249.0
general:
name: shop-67
type: rent
world: world
signs:
'0':
location:
world: world
x: -204.0
y: 56.0
z: -249.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-68
type: rent
world: world
signs:
'0':
world: world
x: -178.0
"y": 56.0
z: -243.0
general:
name: shop-68
type: rent
world: world
signs:
'0':
location:
world: world
x: -178.0
y: 56.0
z: -243.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-69
type: rent
world: world
signs:
'0':
world: world
x: -186.0
"y": 56.0
z: -249.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-69
type: rent
world: world
lastActive: 1699769932373
signs:
'0':
location:
world: world
x: -186.0
y: 56.0
z: -249.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 8330d120-2e4b-48c1-bfdc-8d4920dee119
rentedUntil: 1786804780000
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-7
type: rent
world: world
signs:
'0':
world: world
x: -202.0
"y": 77.0
z: -248.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-7
type: rent
world: world
lastActive: 1698652723042
signs:
'0':
location:
world: world
x: -202.0
y: 77.0
z: -248.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 1535efec-ec8c-491c-9cd3-1731ef98c9b0
rentedUntil: 1786804780000
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-70
type: rent
world: world
signs:
'0':
world: world
x: -166.0
"y": 56.0
z: -243.0
general:
name: shop-70
type: rent
world: world
signs:
'0':
location:
world: world
x: -166.0
y: 56.0
z: -243.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-71
type: rent
world: world
signs:
'0':
world: world
x: -174.0
"y": 56.0
z: -249.0
general:
name: shop-71
type: rent
world: world
signs:
'0':
location:
world: world
x: -174.0
y: 56.0
z: -249.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-72
type: rent
world: world
signs:
'0':
world: world
x: -154.0
"y": 56.0
z: -243.0
general:
name: shop-72
type: rent
world: world
signs:
'0':
location:
world: world
x: -154.0
y: 56.0
z: -243.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-73
type: rent
world: world
signs:
'0':
world: world
x: -162.0
"y": 56.0
z: -249.0
general:
name: shop-73
type: rent
world: world
signs:
'0':
location:
world: world
x: -162.0
y: 56.0
z: -249.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-74
type: rent
world: world
signs:
'0':
world: world
x: -142.0
"y": 56.0
z: -243.0
general:
name: shop-74
type: rent
world: world
signs:
'0':
location:
world: world
x: -142.0
y: 56.0
z: -243.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-75
type: rent
world: world
signs:
'0':
world: world
x: -150.0
"y": 56.0
z: -249.0
general:
name: shop-75
type: rent
world: world
signs:
'0':
location:
world: world
x: -150.0
y: 56.0
z: -249.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-76
type: rent
world: world
signs:
'0':
world: world
x: -130.0
"y": 56.0
z: -243.0
general:
name: shop-76
type: rent
world: world
signs:
'0':
location:
world: world
x: -130.0
y: 56.0
z: -243.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-77
type: rent
world: world
signs:
'0':
world: world
x: -132.0
"y": 56.0
z: -249.0
general:
name: shop-77
type: rent
world: world
signs:
'0':
location:
world: world
x: -132.0
y: 56.0
z: -249.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-79
type: rent
world: world
signs:
'0':
world: world
x: -126.0
"y": 56.0
z: -249.0
general:
name: shop-79
type: rent
world: world
signs:
'0':
location:
world: world
x: -126.0
y: 56.0
z: -249.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-8
type: rent
world: world
signs:
'0':
world: world
x: -207.0
"y": 78.0
z: -245.0
general:
name: shop-8
type: rent
world: world
signs:
'0':
location:
world: world
x: -207.0
y: 78.0
z: -245.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-80
type: rent
world: world
signs:
'0':
world: world
x: -101.0
"y": 56.0
z: -262.0
general:
name: shop-80
type: rent
world: world
signs:
'0':
location:
world: world
x: -101.0
y: 56.0
z: -262.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-81
type: rent
world: world
signs:
'0':
world: world
x: -114.0
"y": 56.0
z: -249.0
general:
name: shop-81
type: rent
world: world
signs:
'0':
location:
world: world
x: -114.0
y: 56.0
z: -249.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-82
type: rent
world: world
signs:
'0':
world: world
x: -101.0
"y": 56.0
z: -274.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-82
type: rent
world: world
lastActive: 1740855792526
signs:
'0':
location:
world: world
x: -101.0
y: 56.0
z: -274.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 9c272295-71dd-4aad-b59e-3de12d73b68a
rentedUntil: 1786804780000
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-83
type: rent
world: world
signs:
'0':
world: world
x: -107.0
"y": 56.0
z: -266.0
general:
name: shop-83
type: rent
world: world
signs:
'0':
location:
world: world
x: -107.0
y: 56.0
z: -266.0
facing: EAST
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-84
type: rent
world: world
signs:
'0':
world: world
x: -108.0
"y": 56.0
z: -279.0
general:
name: shop-84
type: rent
world: world
signs:
'0':
location:
world: world
x: -108.0
y: 56.0
z: -279.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-85
type: rent
world: world
signs:
'0':
world: world
x: -124.0
"y": 56.0
z: -273.0
general:
name: shop-85
type: rent
world: world
signs:
'0':
location:
world: world
x: -124.0
y: 56.0
z: -273.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-86
type: rent
world: world
signs:
'0':
world: world
x: -120.0
"y": 56.0
z: -279.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-86
type: rent
world: world
lastActive: 1729108417572
signs:
'0':
location:
world: world
x: -120.0
y: 56.0
z: -279.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 471770e7-59f1-40ba-b273-52d20000b561
rentedUntil: 1786804780000
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-87
type: rent
world: world
signs:
'0':
world: world
x: -136.0
"y": 56.0
z: -273.0
general:
name: shop-87
type: rent
world: world
signs:
'0':
location:
world: world
x: -136.0
y: 56.0
z: -273.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-88
type: rent
world: world
signs:
'0':
world: world
x: -132.0
"y": 56.0
z: -279.0
general:
name: shop-88
type: rent
world: world
signs:
'0':
location:
world: world
x: -132.0
y: 56.0
z: -279.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-89
type: rent
world: world
signs:
'0':
world: world
x: -148.0
"y": 56.0
z: -273.0
general:
name: shop-89
type: rent
world: world
signs:
'0':
location:
world: world
x: -148.0
y: 56.0
z: -273.0
facing: NORTH
rent:
duration: '30 days'
maxRentTime: '365 days'
+18 -12
View File
@@ -1,12 +1,18 @@
---
name: shop-9
type: rent
world: world
signs:
'0':
world: world
x: -205.0
"y": 77.0
z: -260.0
rented: true
rentedUntil: 1786804780000
general:
name: shop-9
type: rent
world: world
lastActive: 1697468947453
signs:
'0':
location:
world: world
x: -205.0
y: 77.0
z: -260.0
facing: WEST
rent:
duration: '30 days'
maxRentTime: '365 days'
renter: 7497ef87-70e4-465a-b2f5-c1d9e9ddc952
rentedUntil: 1786804780000
+15 -10
View File
@@ -1,10 +1,15 @@
---
name: shop-90
type: rent
world: world
signs:
'0':
world: world
x: -144.0
"y": 56.0
z: -279.0
general:
name: shop-90
type: rent
world: world
signs:
'0':
location:
world: world
x: -144.0
y: 56.0
z: -279.0
facing: SOUTH
rent:
duration: '30 days'
maxRentTime: '365 days'