Spigot AdvancedRegionMarket ARM v3.3.5 MC 1.12-1.17+

Sell, rent and manage worldguard regions. Create Hotels, manage via GUI and more.

  1. Hey,

    Wondering if there is a way if someone rents an area, builds on it, then doesn't pay or sells it (so they lose the property) the region resets back to what it was when it was created? (empty or premade area)
     
  2. alex9849 updated AdvancedRegionMarket with a new update entry:

    Better RegionButEvent and additional -buy parameter for tptofreeregion command

    Read the rest of this update entry...
     
  3. Hey. I tried the latest version but had to revert back to the previous because the plugin wasn't loading and giving this error on startup: https://pastebin.com/X4R0iWvK
     
  4. ARM now only starts if stuff like the maxrenttime and extendtime is always at least 1. Check your presets.yml. It looks like you have one or more presets that contain a maxrenttime or extendtime below 1 second. Btw. one second means a minimal value of 1000 in the corresponding config file fields
     
  5. I've just uploaded a small update that should be a bit more tolerant to malformed config files
     
  6. Strange. I only have 1 preset and it has always had a minium maxrenttime. Here it is: https://pastebin.com/96AawMxC

    Maybe its missing something else?
     
  7. Just try the newest update. That looks like a bug. But the newest version should've fixed it :)
     
    • Like Like x 1
  8. Any GUI support - to list areas for sale / tp to them / rent them - from GUI?
     
  9. Yes
     
    • Optimistic Optimistic x 1
  10. Hi,
    Each time when i try to remove my rent from menu, server got massive lag. Another weird thing is that my sign showing me 7 days remaining and with stucked timer, but menu telling me that my rent was already expired. Using paper 1.15.2 last build. Is there any fix? Players have same issue and they can do this too.

    Using version v3.2

    [18:05:52 ERROR]: The server has not responded for 10 seconds! Creating thread dump
    [18:05:52 ERROR]: ------------------------------
    [18:05:52 ERROR]: Server thread dump (Look for plugins here before reporting to Paper!):
    [18:05:52 ERROR]: ------------------------------
    [18:05:52 ERROR]: Current Thread: Server thread
    [18:05:52 ERROR]: PID: 34 | Suspended: false | Native: true | State: RUNNABLE
    [18:05:52 ERROR]: Stack:
    [18:05:52 ERROR]: java.net.SocketInputStream.socketRead0(Native Method)
    [18:05:52 ERROR]: java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
    [18:05:52 ERROR]: java.net.SocketInputStream.read(SocketInputStream.java:171)
    [18:05:52 ERROR]: java.net.SocketInputStream.read(SocketInputStream.java:141)
    [18:05:52 ERROR]: sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
    [18:05:52 ERROR]: sun.security.ssl.InputRecord.read(InputRecord.java:503)
    [18:05:52 ERROR]: sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975)
    [18:05:52 ERROR]: sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:933)
    [18:05:52 ERROR]: sun.security.ssl.AppInputStream.read(AppInputStream.java:105)
    [18:05:52 ERROR]: java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
    [18:05:52 ERROR]: java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
    [18:05:52 ERROR]: java.io.BufferedInputStream.read(BufferedInputStream.java:345)
    [18:05:52 ERROR]: sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:735)
    [18:05:52 ERROR]: sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:678)
    [18:05:52 ERROR]: sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1593)
    [18:05:52 ERROR]: sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1498)
    [18:05:52 ERROR]: sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:268)
    [18:05:52 ERROR]: com.mojang.authlib.HttpAuthenticationService.performGetRequest(HttpAuthenticationService.java:130)
    [18:05:52 ERROR]: com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:66)
    [18:05:52 ERROR]: com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillGameProfile(YggdrasilMinecraftSessionService.java:180)
    [18:05:52 ERROR]: com.destroystokyo.paper.profile.PaperMinecraftSessionService.fillGameProfile(PaperMinecraftSessionService.java:37)
    [18:05:52 ERROR]: com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillProfileProperties(YggdrasilMinecraftSessionService.java:173)
    [18:05:52 ERROR]: com.destroystokyo.paper.profile.PaperMinecraftSessionService.fillProfileProperties(PaperMinecraftSessionService.java:30)
    [18:05:52 ERROR]: com.destroystokyo.paper.profile.CraftPlayerProfile.complete(CraftPlayerProfile.java:186)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.TileEntitySkull$3.call(TileEntitySkull.java:229)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.TileEntitySkull$3.call(TileEntitySkull.java:225)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.TileEntitySkull.b(TileEntitySkull.java:247)
    [18:05:52 ERROR]: org.bukkit.craftbukkit.v1_15_R1.inventory.CraftMetaSkull.applyToItem(CraftMetaSkull.java:95)
    [18:05:52 ERROR]: org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack.setItemMeta(CraftItemStack.java:518)
    [18:05:52 ERROR]: org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack.asNMSCopy(CraftItemStack.java:42)
    [18:05:52 ERROR]: org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventory.setItem(CraftInventory.java:99)
    [18:05:52 ERROR]: net.alex9849.arm.gui.GuiInventory.getInventory(GuiInventory.java:40)
    [18:05:52 ERROR]: net.alex9849.arm.gui.Gui.placeFillItems(Gui.java:1427)
    [18:05:52 ERROR]: net.alex9849.arm.gui.Gui.openRegionOwnerManager(Gui.java:364)
    [18:05:52 ERROR]: net.alex9849.arm.gui.Gui$4.execute(Gui.java:147)
    [18:05:52 ERROR]: net.alex9849.arm.gui.Gui.onClick(Gui.java:1900)
    [18:05:52 ERROR]: com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor808.execute(Unknown Source)
    [18:05:52 ERROR]: org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69)
    [18:05:52 ERROR]: org.bukkit.plugin.EventExecutor$$Lambda$3422/1916681453.execute(Unknown Source)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:2384)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.PacketPlayInWindowClick.a(SourceFile:32)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.PacketPlayInWindowClick.a(SourceFile:10)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.PlayerConnectionUtils$$Lambda$5759/637159694.run(Unknown Source)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.TickTask.run(SourceFile:18)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.MinecraftServer.ba(MinecraftServer.java:1106)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.MinecraftServer.executeNext(MinecraftServer.java:1099)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.MinecraftServer.sleepForTick(MinecraftServer.java:1060)
    [18:05:52 ERROR]: net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:975)
    [18:05:52 ERROR]: ------------------------------
    [18:05:52 ERROR]: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH ---
    [18:05:52 ERROR]: ------------------------------
    [18:05:57 ERROR]: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH - git-Paper-387 (MC: 1.15.2) ---
    [18:05:57 ERROR]: The server has not responded for 15 seconds! Creating thread dump
    [18:05:57 ERROR]: ------------------------------
    [18:05:57 ERROR]: Server thread dump (Look for plugins here before reporting to Paper!):
    [18:05:57 ERROR]: ------------------------------
    [18:05:57 ERROR]: Current Thread: Server thread
    [18:05:57 ERROR]: PID: 34 | Suspended: false | Native: false | State: RUNNABLE
    [18:05:57 ERROR]: Stack:
    [18:05:57 ERROR]: java.util.concurrent.LinkedBlockingDeque.removeFirstOccurrence(LinkedBlockingDeque.java:591)
    [18:05:57 ERROR]: java.util.concurrent.LinkedBlockingDeque.remove(LinkedBlockingDeque.java:797)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.UserCache.b(UserCache.java:189)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.UserCache.a(UserCache.java:272)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.UserCache.c(UserCache.java:238)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.UserCache.c(UserCache.java:234)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.UserCache.a(UserCache.java:136)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.UserCache.a(UserCache.java:109)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.UserCache.saveProfile(UserCache.java:107)
    [18:05:57 ERROR]: com.destroystokyo.paper.profile.CraftPlayerProfile.complete(CraftPlayerProfile.java:191)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.TileEntitySkull$3.call(TileEntitySkull.java:229)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.TileEntitySkull$3.call(TileEntitySkull.java:225)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.TileEntitySkull.b(TileEntitySkull.java:247)
    [18:05:57 ERROR]: org.bukkit.craftbukkit.v1_15_R1.inventory.CraftMetaSkull.applyToItem(CraftMetaSkull.java:95)
    [18:05:57 ERROR]: org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack.setItemMeta(CraftItemStack.java:518)
    [18:05:57 ERROR]: org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack.asNMSCopy(CraftItemStack.java:42)
    [18:05:57 ERROR]: org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventory.setItem(CraftInventory.java:99)
    [18:05:57 ERROR]: net.alex9849.arm.gui.GuiInventory.getInventory(GuiInventory.java:40)
    [18:05:57 ERROR]: net.alex9849.arm.gui.Gui.openRegionOwnerManager(Gui.java:366)
    [18:05:57 ERROR]: net.alex9849.arm.gui.Gui$4.execute(Gui.java:147)
    [18:05:57 ERROR]: net.alex9849.arm.gui.Gui.onClick(Gui.java:1900)
    [18:05:57 ERROR]: com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor808.execute(Unknown Source)
    [18:05:57 ERROR]: org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69)
    [18:05:57 ERROR]: org.bukkit.plugin.EventExecutor$$Lambda$3422/1916681453.execute(Unknown Source)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:2384)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.PacketPlayInWindowClick.a(SourceFile:32)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.PacketPlayInWindowClick.a(SourceFile:10)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.PlayerConnectionUtils$$Lambda$5759/637159694.run(Unknown Source)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.TickTask.run(SourceFile:18)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.MinecraftServer.ba(MinecraftServer.java:1106)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.MinecraftServer.executeNext(MinecraftServer.java:1099)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.MinecraftServer.sleepForTick(MinecraftServer.java:1060)
    [18:05:57 ERROR]: net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:975)
    [18:05:57 ERROR]: ------------------------------
    [18:05:57 ERROR]: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH ---
    [18:05:57 ERROR]: ------------------------------
    I tried to remove that sign and create new, with price 5000:5d:15d and it wrote the sign with different price, i had to change price in the FTP file.
    There is the new broken sign..
    [​IMG]
    Price was 5000:5d:15d and signs seems not being ok.

    And i founded another bug, when someone bought rent, and his rent will expire, the next player which buy it receive broken shop, including placed crates and blocks by player before..Using LWC and in the cfg file RemoveEntitiesOnRegionRestore value is true
    So i don't know what's wrong ? I always create region through worldguard, then i'll set it with your plugin (arm setregionkind) and put the sign. It is wrong ?

    Thanks.
     
    #312 TheLaoming, Sep 30, 2020
    Last edited: Sep 30, 2020
  11. Install the newest version. The lag in the region menu comes from your spigot server, that tries to load the skin of the player who owns the region. For some reason this takes very long. The newest version contains an option that can disable this.
    The part with the broken region comes from other plugins that you have installed. ARM only restores a worldedit schematic if the region gets restored. The removeEntities parts refers to stuff like items and animals inside your region. If you don't want LWC protections in your region you have to configure that in LWC. (Switch is off or disable it in that world, maybe the is an option to exclude your worldguard regions) (Chests are protected by worldguard)
     
    #313 alex9849, Oct 1, 2020
    Last edited: Oct 2, 2020
    • Agree Agree x 1
  12. I noticed the RegionManager#doTick call is taking relatively long (~1% of a tick) with virtually all of the time spent on updating the signs every single tick.

    Fixing that would be appreciated. :)
     
  13. You won't get the doTick method faster as it is. Currently only signs that are located in loaded chunks are getting updated. All signs get distributed over the whole update interval. (by default 40 ticks = 2 seconds. That means if you have 80 regions ARM will update max 2 regions per tick.) Also the regions get distributed in a way that signs located in the same chunk will be updated in different ticks, in order to have a higher proximity of not needing to update many signs in a specific tick, but almost none in another.
    The only thing you can do about the 1% workload is to increase the update interval in your config.yml.
     
  14. I'm pretty certain the method can be optimized quite a bit.

    In my use case virtually all the time is spent updating the sign text/replacing the variables, despite nothing being changed. So some caching or update checking could go a long way.

    Increasing the SignAndResetUpdateInterval did seem to improve it a bit, though.
     
  15. Replacing the variables doesn't even take long. What takes long is writing the stuff on the sign. What I could do is only update the signs that really have changed, but that will only show a effect if you use sellregions and display the remaining time on rent- and contractregions as a date
     
  16. From my benchmarks using Spark replacing the variables took 80% of the time, with setting the signs only taking 20%.

    Which makes sense, given that String operations are rather expensive.
     
  17. can anyone confirm me that the import from areashop works fine on 1.16.x?
     
  18. I could use some help, I have spent better part of two hours scanning the internet for information.
    I have installed Advance region market on my server. Now all I get after setting up a region for renting or selling is an error message.
    I have the latest Worldguard, Worldedit, Vault and Easyconomy.
    Do any of you guys have any clue on what to do?
    Code (Text):
    [22:16:49] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to AdvancedRegionMarket v3.2.7
    org.bukkit.event.EventException: null
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:319) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:589) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at org.bukkit.craftbukkit.v1_16_R2.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:483) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.PlayerInteractManager.a(PlayerInteractManager.java:447) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.PlayerConnection.a(PlayerConnection.java:1278) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.PacketPlayInUseItem.a(PacketPlayInUseItem.java:27) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.PacketPlayInUseItem.a(PacketPlayInUseItem.java:1) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.TickTask.run(SourceFile:18) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.executeTask(SourceFile:144) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.executeNext(SourceFile:118) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.MinecraftServer.ba(MinecraftServer.java:941) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.MinecraftServer.executeNext(MinecraftServer.java:934) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.awaitTasks(SourceFile:127) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.MinecraftServer.sleepForTick(MinecraftServer.java:918) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.MinecraftServer.w(MinecraftServer.java:850) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at net.minecraft.server.v1_16_R2.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_261]
    Caused by: java.lang.NullPointerException
            at net.alex9849.arm.regions.Region.buy(Region.java:716) ~[?:?]
            at net.alex9849.arm.regions.RentRegion.signClickAction(RentRegion.java:72) ~[?:?]
            at net.alex9849.arm.handler.listener.SignClickListener.handleSignCmd(SignClickListener.java:64) ~[?:?]
            at net.alex9849.arm.handler.listener.SignClickListener.interactEvent(SignClickListener.java:47) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_261]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_261]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_261]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_261]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:315) ~[spigot-1.16.3.jar:git-Spigot-988b411-aa8206a]
            ... 20 more