[ECON] ChestShop 3.7.18 (iConomyChestShop) - Chest&sign shop for economy plugins [1.8]

Discussion in 'Archived: Plugin Releases' started by Acrobot, Feb 12, 2011.

  1. Offline

    Acrobot

    An easy way to create shops - no protection plugin needed!
    You don't need to be on-line to earn money anymore!
    [​IMG]
    I've put a LOT of effort into making this plugin,
    you can donate if you appreciate my effort =)

    Requirements:
    - An economy plugin supported by Register or Vault, for example iConomy, BOSEconomy or Essentials Eco.
    Optional:
    - For additional economy plugin support - Vault
    - For Permissions: bPermissions, PEX, or any other permission plugin
    - For additional protection: LWC, Lockette, Deadbolt
    - For other item names (aliases): OddItem


    Setup:
    Copy the .jar file from the .zip you downloaded into /plugins folder.
    You can also copy the example files if you want to generate statistics page.

    Translations:
    You can change the plugin's language, here's a list of all user-made translations.
    If you want to update or submit a translation, feel free to PM me.
    Translations (open)

    Arabic - Attarhsase2
    Bulgarian - Muff1Ncho
    Czech - LordPgsa
    Chinese (Simplified) - tab415263
    Danish - Cannafix
    Dutch - speedlegs
    French- DragonSlayer875
    German - RasCas
    Hungarian - Anachen
    Indonesian - Yahya98
    Italian - Massimo1993
    Korean - Zwing87
    Norwegian - _AlexN_ and TheUnkownGamer
    Polish - Holls1
    Portugese (Brasil) - FelipeMarques14
    Russian - VADemon from http://minemania.ru/
    Slovak - LordPgsa
    Slovenian - jEErc
    Spanish - thxaaaa
    Swedish - Maxell
    Turkish - Developer
    Traditional Chinese - hellboyincs
    Vietnamese - etrubi1 from http://minevn.com/


    Permissions:
    How to create a ChestShop?
    - Place a chest, if you haven't already.
    - Place a sign 1 block near the chest (for example, above the chest)
    - On the sign, write:

    [​IMG]
    (Item name can actually be item ID or alias)
    First line will be filled in by the plugin automatically.
    Price is a combination of buy and sell price.
    You have to have B near buy price (people buy from you), and S near sell price (people sell to you).
    If you have both B and S, separate them with a colon - :
    For example:
    [​IMG]

    means that AcrobotPL wants to sell 64 diamonds for 10 currency, and buy them back from you for 5 currency.
    Also, if you put "free" instead of price, it is free to buy or sell :)

    - Now, when you finish editing the sign, if LWC is turned on in config, shop will be automatically created.
    Also, if your default protection is turned on in the config, people won't be able to break chest, sign or the block the sign is on.

    What is an Admin Shop?
    Admin shop is the shop that doesn't require a chest, because it has infinite stock.
    If you sell to it, the items will disappear, and if you buy from it, items will magically appear.
    To create one, you have to be Admin/OP. Just put "Admin Shop" (or anything specified in config file) on the first line of the sign.

    Restricting shops to some groups or regions
    You can either use permissions, or you can just put a sign ABOVE shop sign (you need to be in that group to create the sign) to restrict it to players with ChestShop.group.groupName permission
    The syntax is:
    [restricted]
    firstGroupName
    2ndGroupName
    3rdGroupName
    Only those groups will be able to use that shop

    To restrict a shop to some regions:
    - If you're using Towny, turn TOWNY_INTEGRATION on. Residents will be able to create shops in economy plots (either their or, if specified in config, any)
    - If you're using WorldGuard, you can use an experimental "chestshop" flag. Turn WORLDGUARD_INTEGRATION on and flag a region. (f.e. /region flag ChestShopRegion chestshop allow)

    Do you want to limit the maximum prices for items?
    Well, there's an app.... wait, not that : P
    You can use an experimental feature in ChestShop.
    In your config.yml, add lines like:
    max-buy-price-5: 14
    max-sell-price-5: 15

    That means that the maximum price for items BOUGHT by PLAYER is 14, and items SOLD by PLAYER using the shop is 15.

    You can also use a global setting, like this:
    max-sell-price: 200

    That means that the maximum price for items SOLD to PLAYER is 200 (if there is, for example, a max-sell-price-5 found, it will be used instead of the global sell price)

    USING SHOPS
    You could buy and sell by right and left clicking the sign for a long time.
    Now it's the only way to use the shops.
    It's SIMPLE!
    Just LEFT-CLICK to SELL to shop, and
    RIGHT-CLICK to BUY from shop.
    (This can be changed in the config file)

    DESTROYING SHOPS
    If you want to delete your old shop, simply SNEAK and destroy the sign.
    It's that easy =)

    STOCKING THE SHOPS
    You can either open the chest and stock it up, or click on your own sign - it will open chest's inventory (that way you can have chests not openable by other people for sure :D)

    ItemInfo command
    It's a simple command that shows item information.
    If you use it without any arguments, it shows you information about the item you're holding.
    If you specify item id or item name after the command, it will show you information about that item.

    Source code
    ChestShop is Open-Source =)
    You can find its code on https://github.com/Acrobot/ChestShop-3


    Thanks to:
    - kali876, ziomekYOYO and Herocraft server for testing the plugin and finding every little bug =)
    - Everyone who uses this plugin - really big thanks for this, I never thought it will be so popular
    - Everyone who provided translation - many people's lives will be easier now
    - @Nijikokun for Register
    - @LennardF1989 for awesome Persistence Reimplemented
    - @Temaska for fixing the plugin while I was on holidays
    - @VADemon for providing a great support for other users
    - @Euthyphro for his patience and really good bug spotting
    - vagrant326 for making a great price sheet
    - Epics for his great help
    :)
    If something's not working
    You can't change the sign color - that breaks the formatting.
    If that's not the issue, please give me this information, so I can help you faster.
    - CraftBukkit version (type /version in chat)
    - ChestShop version (type /csversion in chat)
    - Your economy plugin (iConomy? BOSEconomy? other one?)
    - Have you got any Permission plugin? Which one?

    [​IMG]
    Changelog (open)

    Changelog can be found on BukkitDev - http://dev.bukkit.org/server-mods/chestshop/files/
     
  2. Offline

    9berend9

    @Acrobot
    Ok, thanks for your quick response :)
     
  3. Offline

    Acrobot

    @Snowy007
    Oh ok, I'll just update the description :)

    @9berend9
    Now THAT is fast, right? :p

    @HalestormXV
    Yeah, probably will be possible after re-write :p
     
  4. Offline

    bond654

    I found out the problem I had wroten wrong sorry :(
     
  5. Offline

    ShadowSplicer

    Took a screenie of my plugins, and yes I know not all of them are up to date. The ones that are for the economy/permissions are updated though.
    Chestshop help.jpg
    Yes, I know the format of the signs. I've checked that many times over ;D
    Possible problem: "[iConomy] Database Error: java.sql.SQLException: No suitable dri
    ver found for jdbc:mysql:\\localhost:3306\iConomy" I'm not sure if that affects CS though. Any thoughts?
     
  6. Offline

    Acrobot

    @ShadowSplicer
    I don't know if it affects CS - that says that iConomy couldn't find find MySQL connector. Do you use MySQL?
    Can you tell me
    - Do you get any errors in console? (Regarding ChestShop, not iConomy)
    - What error do you get when you place the shop sign?
     
  7. Offline

    ShadowSplicer

    I don't use SQL at all; it lags for me.
    No errors or messages at all in-console.
    [Shop] You can't create this type of shop!
     
  8. Offline

    Malaras

    The Towny_Integration dont seem to be working in wilderness. Not sure if its ment to or not. If it isnt could it be added to wilderness or another option for it?
    Being able to only make a Chestshop in Shop plots/ in town

    Like, Just Example

    Code:
    TOWNY_INTEGRATION_Wilderness: true
    #Do you want to only let people build inside shop plots?
    Did i explain it better?

    Thanks,
     
  9. Offline

    Acrobot

    @ShadowSplicer
    Hmm... That can be caused only by:
    - too long 3rd sign line
    - not having permission to create shops...

    Basically, that's it. The most probable cause is that
    - when you use Permissions by Niji/TheYeti/rjrjrj (Permissions 2, Permissions 3) - you aren't an admin (you haven't got * node, or at least ChestShop.shop.create (case sensitive!))
    @Malaras
    Do you mean that you CAN make shops inside wilderness or not?
     
  10. Offline

    ShadowSplicer

    OMG just figured it out. There weren't any caps in the "ChestShop" perm node :x I feel stupid now, I forgot that I had to revert the server a couple days, and I had been messing with CS before that, and hadn't changed it to caps yet.

    Thanks for your help :) Great job with the plugin, BTW
     
    odielag likes this.
  11. Offline

    Acrobot

  12. Offline

    Locx

    @Acrobot
    I'm having a permissions problem. i put in Chestshop.shop.buy/sell/create.whatever. but my players get.
    [Shop] you don't have permission to do this
    I typed the node in EXACTLY the way it should be.
    the only problem i can think of is my server using PEX.
    But i don't think it should metter. since all my other nodes work perfectly fine.
     
    odielag and xrobau like this.
  13. Offline

    Malaras

    Can, Well some one did on server. when i have Towny_INTEGRATION set to true
     
  14. with 3.21:

    Code:
    [SEVERE] Could not pass event BLOCK_PISTON_RETRACT to ChestShop
    java.lang.ClassCastException: org.bukkit.material.MaterialData cannot be cast to org.bukkit.material.PistonBaseMaterial
    	at org.bukkit.event.block.BlockPistonEvent.getDirection(BlockPistonEvent.java:41)
    	at org.bukkit.event.block.BlockPistonRetractEvent.getRetractLocation(BlockPistonRetractEvent.java:18)
    	at com.Acrobot.ChestShop.Listeners.blockBreak.getRetractBlock(blockBreak.java:60)
    	at com.Acrobot.ChestShop.Listeners.blockBreak.onBlockPistonRetract(blockBreak.java:56)
    	at org.bukkit.plugin.java.JavaPluginLoader$44.execute(JavaPluginLoader.java:547)
    	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
    	at net.minecraft.server.BlockPiston.g(BlockPiston.java:85)
    	at net.minecraft.server.BlockPiston.doPhysics(BlockPiston.java:47)
    	at org.getspout.spout.block.mcblock.CustomBlock.doPhysics(CustomBlock.java:185)
    	at net.minecraft.server.BlockPistonExtension.doPhysics(BlockPistonExtension.java:148)
    	at org.getspout.spout.block.mcblock.CustomBlock.doPhysics(CustomBlock.java:185)
    	at net.minecraft.server.World.k(World.java:488)
    	at net.minecraft.server.World.applyPhysics(World.java:466)
    	at net.minecraft.server.BlockRedstoneWire.g(BlockRedstoneWire.java:49)
    	at net.minecraft.server.BlockRedstoneWire.doPhysics(BlockRedstoneWire.java:286)
    	at org.getspout.spout.block.mcblock.CustomBlock.doPhysics(CustomBlock.java:185)
    	at net.minecraft.server.World.k(World.java:488)
    	at net.minecraft.server.World.applyPhysics(World.java:463)
    	at net.minecraft.server.BlockLever.interact(BlockLever.java:167)
    	at org.getspout.spout.block.mcblock.CustomBlock.interact(CustomBlock.java:259)
    	at net.minecraft.server.ItemInWorldManager.interact(ItemInWorldManager.java:268)
    	at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:592)
    	at net.minecraft.server.Packet15Place.a(SourceFile:57)
    	at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
    	at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:92)
    	at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:500)
    	at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
    	at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:464)
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
    	at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    on bukkit 1185 :)
     
  15. Using PEX - having no problems, works fine.
    Remember: Permissions ARE CASE-SENSITIVE!
    Wrong (ChestShop ≠ Chestshop):
    Chestshop.shop.buy
    Right:
    ChestShop.shop.create - lets you create shop
    ChestShop.shop.buy - lets you buy from shops
    ChestShop.shop.sell - lets you sell to shops
     
  16. Offline

    patey

    how does the stats page work?

    http://142.176.58.46/stats/stats.php

    thats the stats page i have...all i get is
    Item Volume Bought Sold Stack size Price per stack Price per unit
    Calculated in: 1.0 ms


    Code:
    PREFERRED_ECONOMY_PLUGIN: "iConomy"
    #Preferred economy plugin (iConomy, BOSEconomy, Essentials). If you do not want to specify this, leave it blank.
    REVERSE_BUTTONS: false
    #If true, people will buy with left-click and sell with right-click.
    ALLOW_LEFT_CLICK_DESTROYING: true
    #If true, if you left-click your own shop sign you won't open chest's inventory, but instead you will start destroying the sign.
    STACK_UNSTACKABLES: true
    #If true, ALL things (including food, etc.) will stack up to 64
    SERVER_ECONOMY_ACCOUNT: "Patey"
    #Economy account's name you want Admin Shops to be assigned to
    ADMIN_SHOP_NAME: "Admin Shop"
    #First line of your admin shop should look like this
    SHOP_CREATION_PRICE: 50
    #Amount of money player must pay to create a shop
    LOG_TO_FILE: true
    #If true, plugin will log transactions in its own file
    LOG_TO_CONSOLE: false
    #Do you want ChestShop's messages to show up in console?
    LOG_TO_DATABASE: true
    #If true, plugin will log transactions in EBean database
    GENERATE_STATISTICS_PAGE: true
    #If true, plugin will generate shop statistics webpage.
    STATISTICS_PAGE_PATH: "z:/stats/shopstats.php"
    #Where should your generated website be saved?
    RECORD_TIME_TO_LIVE: 1000
    #How long should transaction information be stored?
    STATISTICS_PAGE_GENERATION_INTERVAL: 30
    #How often should the website be generated?
    USE_BUILT_IN_PROTECTION: false
    #Do you want to use built-in protection against chest destruction?
    PROTECT_CHEST_WITH_LWC: true
    #Do you want to protect shop chests with LWC?
    PROTECT_SIGN_WITH_LWC: true
    #Do you want to protect shop signs with LWC?
    MASK_CHESTS_AS_OTHER_BLOCKS: false
    #Do you want to mask shop chests as other blocks? HIGHLY EXPERIMENTAL, CAN LAG!
    SHOW_MESSAGE_OUT_OF_STOCK: true
    #Do you want to show "Out of stock" messages?
    SHOW_TRANSACTION_INFORMATION_CLIENT: true
    #Do you want to show "You bought/sold... " messages?
    SHOW_TRANSACTION_INFORMATION_OWNER: true
    #Do you want to show "Somebody bought/sold... " messages?
    TOWNY_INTEGRATION: false
    #Do you want to only let people build inside shop plots?
     
  17. Offline

    Acrobot

    @Locx
    Basically, what @VADemon said :)
    The permissions are case-sensitive.

    @patey
    Did anyone buy or sell from/to shops? It saves the information to the DB every 10 seconds or so. (Also, the page is generated every 30 secs)

    @Malaras
    Hmm, sure. I'll talk to Towny dev's about this.

    @Spidi
    Thanks for the information, however, do you know what caused this error?
     
  18. unfortunately i do not. There are no pistons in the area and none of the shops are selling them.
     
  19. Offline

    Acrobot

    @Spidi
    This is caused when a piston PULLS something. Unfortunately, I have no idea what. Maybe it tries to pull when there is other piston active? I'll check that.
    EDIT: I added a custom method that should fix that :p
     
  20. Offline

    draco777

    I get this error when I start.
    Code:
    17:19:21 [SEVERE] Error occurred while enabling ChestShop v3.21 (Is it up to date?): com/griefcraft/modules/limits/LimitsModule
    java.lang.NoClassDefFoundError: com/griefcraft/modules/limits/LimitsModule
    at com.Acrobot.ChestShop.Protection.Plugins.LWCplugin.setLWC(LWCplugin.java:21)
    at com.Acrobot.ChestShop.Listeners.pluginEnable.initializePlugin(pluginEnable.java:49)
    at com.Acrobot.ChestShop.Listeners.pluginEnable.initializePlugins(pluginEnable.java:39)
    at com.Acrobot.ChestShop.ChestShop.onEnable(ChestShop.java:57)
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:126)
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:920)
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:278)
    at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:173)
    at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:156)
    at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:297)
    at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:284)
    at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:152)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:348)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    Caused by: java.lang.ClassNotFoundException: com.griefcraft.modules.limits.LimitsModule
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:36)
    at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:24)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 14 more
    Can anyone help me?
     
  21. Offline

    Acrobot

    @draco777
    Looks like broken LWC - either corrupted or old.
     
  22. Offline

    patey

    shops have been used,
    is
    RECORD_TIME_TO_LIVE: 1000 #How long should transaction information be stored?

    how long it stays in that webpage too?
    if so, is that seconds its measured in? can i set it for 3 days?
     
  23. Offline

    Acrobot

    @patey
    Yep - that's seconds.
    3 days would be 86400

    Try saving to different file - maybe it'll work.
     
  24. Offline

    Ralm

    @Acrobot
    Hi Acrobot, Love your plugins.
    I was thinking on a feature from another plugin to use with ChestShop but it would need a kind of ChestShop API. The thing was using DynamicShop, which have dynamic prices at Admin Shops. So I sugested to the plugin dev to add a feature in his plugin to have the prices from the admin shops influciated by ChestShop transactions.
    For example: Diamond at 100 coins each average on ChestShop (Player Shops) and Admin shop (using DynamicShop) at 110 coins. Now a bunch of people go and buy Diamonds, a lot of them, then the admin shop would rise the price auto like to 120 coins with the DynamicShop.

    Get the ideia?? I can try to explain it better, but the other plugin dev (from DynamicShop) told me that we would need ChestShop to have an API so his plugin could do that.
    Can you add that??

    Thanks a lot,
    Ralm.
     
  25. Offline

    Acrobot

    @Ralm
    Thanks, and yeah, the API is coming in ChestShop 4 - unfortunately, I don't know when it'll be out. Probably not soon.
    Probably the most possible solution would be adjusting the price after every transactions - people will be able to find special deals :p (signs that weren't updated yet)
     
  26. Offline

    heifinator

    I have essentials installed but use iconomy. After setting the first value in the config to iconomy chestshop still uses essentials economy as its economy plugin.
     
  27. Offline

    albieos

    Acro..

    My previous post was actually asking if we could completely stop shop creation if LWC limits are reached.

    If you do add limits in v4 that is one I would like to see. Possibly a combination of limits say:

    Shoplimit: 4
    StopBuildIfLWCLimit: True

    So if you have 2 LWC protections. You can only build 2 shops (or 1 if you have a LWC)

    If you have 5 LWC protections you could build 4 shops and still have 1 LWC.

    etc.. etc.. etc..
     
  28. Offline

    Kainzo

  29. Offline

    n0nick

    I have Bukkit 1185 and Chestshop 3.21 and have the following Problem:

    2011-09-29 11:56:27 [SEVERE] Could not pass event BLOCK_PISTON_RETRACT to ChestShop
    java.lang.ClassCastException: org.bukkit.material.MaterialData cannot be cast to org.bukkit.material.PistonBaseMaterial
    at org.bukkit.event.block.BlockPistonEvent.getDirection(BlockPistonEvent.java:41)
    at org.bukkit.event.block.BlockPistonRetractEvent.getRetractLocation(BlockPistonRetractEvent.java:18)
    at com.Acrobot.ChestShop.Listeners.blockBreak.getRetractBlock(blockBreak.java:60)
    at com.Acrobot.ChestShop.Listeners.blockBreak.onBlockPistonRetract(blockBreak.java:56)
    at org.bukkit.plugin.java.JavaPluginLoader$44.execute(JavaPluginLoader.java:547)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
    at net.minecraft.server.BlockPiston.g(BlockPiston.java:85)
    at net.minecraft.server.BlockPiston.doPhysics(BlockPiston.java:47)
    at net.minecraft.server.BlockPistonExtension.doPhysics(BlockPistonExtension.java:148)
    at net.minecraft.server.World.k(World.java:488)
    at net.minecraft.server.World.applyPhysics(World.java:464)
    at net.minecraft.server.World.update(World.java:431)
    at net.minecraft.server.World.setTypeId(World.java:403)
    at net.minecraft.server.BlockPistonExtension.doPhysics(BlockPistonExtension.java:146)
    at net.minecraft.server.World.k(World.java:488)
    at net.minecraft.server.World.applyPhysics(World.java:465)
    at net.minecraft.server.World.update(World.java:431)
    at net.minecraft.server.World.setTypeId(World.java:403)
    at net.minecraft.server.BlockPiston.a(BlockPiston.java:143)
    at net.minecraft.server.World.playNote(World.java:2449)
    at net.minecraft.server.WorldServer.playNote(WorldServer.java:162)
    at net.minecraft.server.BlockPiston.g(BlockPiston.java:93)
    at net.minecraft.server.BlockPiston.doPhysics(BlockPiston.java:47)
    at net.minecraft.server.BlockPistonExtension.doPhysics(BlockPistonExtension.java:148)
    at net.minecraft.server.World.k(World.java:488)
    at net.minecraft.server.World.applyPhysics(World.java:463)
    at net.minecraft.server.BlockRedstoneWire.g(BlockRedstoneWire.java:49)
    at net.minecraft.server.BlockRedstoneWire.doPhysics(BlockRedstoneWire.java:286)
    at net.minecraft.server.World.k(World.java:488)
    at net.minecraft.server.World.applyPhysics(World.java:466)
    at net.minecraft.server.BlockRedstoneTorch.remove(BlockRedstoneTorch.java:67)
    at net.minecraft.server.Chunk.a(Chunk.java:335)
    at net.minecraft.server.World.setRawTypeIdAndData(World.java:316)
    at net.minecraft.server.World.setTypeIdAndData(World.java:414)
    at net.minecraft.server.BlockRedstoneTorch.a(BlockRedstoneTorch.java:118)
    at net.minecraft.server.World.i(World.java:1891)
    at net.minecraft.server.World.doTick(World.java:1638)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:454)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)


    Is it a Bug?
     
  30. Offline

    Acrobot

    @Kainzo
    Yeah - that error is related to Chests masked as furnaces. Here, a furnace wants to be a sign.

    @n0nick
    Fixed in newest version, in development - yes, it's a bug. (In CraftBukkit actually)
     
  31. Offline

    zipfe

    @Acrobot
    Works fine, just like the old version.

    The only thing I really miss is the config where to find the chest in relation to the sign. The old version allowed to say that chests are x blocks below the sign etc.

    That seems gone? Broke our server shop, it was built with Y = 2 blocks below sign for the chests. :(
     

Share This Page