IMPROVED Clarity on some lang files
FIXEDMenus having wrong context info
Hello everyone I'm going abroad for holidays. As such, updates will slow or rather more or less come to a halt. The only updates for the next few weeks will be minor fixes and hotfixes if anything breaks.
If you want to support the development, please buy the premium edition: At this point, I've sunken well over 300 hours of my time into making this project. Buying premium edition really helps keep this project alive <3 I appreciate every single one of you and thanks for the feedback over the past few months. Y'all rock! - Netizen
Bottomless shops can now be edited easily with /market admin editbottomless
TinyMarkets uses Paper-API 1.21.10 (up from 1.21.4)
Bottomless shops can have periodic restocking, stock limits etc
Signs are now formating a lot more intelligently with bigger numbers becoming clearer and trades where more than 1 item is sold per trade having a price / amount indicator
Fixed some silly bugs with bedrock interactions (though there are still some rough edges that need to be ironed out)
Bulkdiscounts etc are a lot more easy to understand as they are now shown directly in the purchase price when reaching a defined tier
Fixed occasional bug with refund telling users they cannot refund despite this clearly working
Made shared-mode more robust and update perms immediately
NEW Admins can create physical shops with infinite or auto-restocking stock by creating a shop, then entering
/market admin createbotomless whilst looking at a shop
NEW PREMIUM users can now fully customize every single line of the signs of shops via signs.yml
IMPROVED Fixed various parsing errors and issues with placeholders internally not being rendered correctly in custom translations
IMPROVED Fixed some more missing message keys and wrong mappings
Special thanks to GaZZip and Kiri for helping me test these issues and putting together a list of missing/buggy elements in lang files. You guys are amazing!
Updates will slow for the next few days/around 1-2 weeks as I am processing the loss of my beloved pet whilst also somehow juggling finals for uni. Thank you for understanding.
IMPROVED Shopmenu now displays selected amount in title for easier visual distinction of quantities when buying/selling
IMPROVED Fixed some keys loading from wrong location resulting in missing messages
FIXED Empty blocklist having a spacer item with no lore
REWORKED Database connectivity and scheduler fully async. Plugin no longer cloggs main thread when reloading or connecting to DB.
Netizen's words of wisdom Over the past few versions, I've also invested a lot of time into upgrading the architecture behind the hood. As a result, the already very performant tinymarkets is now so highly optimized, it sometimes doesn't even show up in the profiler in idle due to its low overhead and resource usage!
IMPROVED Custom currency symbols are now rendered more consistently across menus and messages.
This change comes with some manual changes you need to do: Update all your lang files (if you are a premium user) to add {symbol} behind any instance of {price}
MAJOR NEW FEATURE FOR PREMIUM EDITION - Native Folia support!
NEW The plugins entire scheduling logic has been rewritten to add parallel-support for regular paper/spigot and Folia!
Disclaimer:To use TinyMarkets on Folia you need the premium edition and the folia addon (currently pending approval)
IMPROVED menu_bases.yml is clearer now
FIXED Automigrator kept remigrating files even on same versions (no issues but just a bit silly)
REWORKED The plugin now comes with an internal fingerprinting algorithm that is able to distinguish version specific files. This makes it so the automigration system is more consistent, performant and less prone to issues with newly added elements.
Dropping the new .jar into your server will automatically upgrade all your configs and migrate over your settings and custom translations (premium only for translations)!
NEW (PREMIUM Only) Players can select the color of the item preview frame (including per color permissions)
NEW Internal expiry system (warning when heavily outdated verision): Looking at bstats, I can tell that a lot of servers are running outdated versions. This is fine up to a certain point. There are still over 10 servers running versions below 1.9.2 which is rather alarming. Starting with this version, the plugin has an internal "expiry" date. Past this date, the plugin will warn server owners rather "agressively" that they are running a really outdated version. Don't worry, the plugin will keep working exactly as before, no matter what. This makes it easy to warn players about outdated versions without relying on external databases or API's that may break or go offline over time.
The default expiry is set to 3 months (90 days) relative to the release date of the plugins version.
IMPROVED Quicksell works more reliable, does not trigger spam warnings and gives a more detailed receipt info
FIXED Some missing lang strings or rather referrences to them, causing there to be inconsistencies across menus despite referring to the same string
TinyMarkets is now feature complete. The next few weeks/months will mostly focus on fixing some tech debt and legacy issues. One of the biggest and longest standing ones of this is the absolute mess that the lang files can be due to how the plugin grew over the past few months. Stage one will be the "Lang files refactor" update: It aims to fix issues with outdated/dead strings and generally bring a bit more structure into how lang customization works. This only affects premium plugin users!
IMPROVED Added new file menu_bases.yml that contains reused menu elements like back buttons, confirm buttons etc.
IMPROVED Removed about 35 dead and outdated strings across multiple menu lang files (more to follow based on reports)
IMPROVED When itempreview is set to "static", the item now correctly orients itself towards the sign
IMPROVED Teleporting to shops now teleports ontop of if that is blocked right infront where the sign is to prevent abuse and weird situations where players got stuck outside of shops/bases
IMPROVED Various messagekeys that are depreciated were removed
IMPROVED In stack-permissions mode: Default amount is now added to the cummulative total of allowed shops. I.e. if default limit is 10 and user has perms tinymarkets.maxshops.5 and tinymarkets.maxshops.15, then the new total limit is 30 (10 + 5 + 15)
IMPROVED Fallback handler for localstorage timeout on /market admin reload
FIXED Permission-limits for maxshops amount being ignored
NEW Plugin comes with internal adminshop system including browser listings, restock rates and an editor (WIP)
NEW Plugin now comes with an order system: Can't find any offers for an item? Simply create an offer and let users fetch the item for you!
NEW Optional refund tax (global value and can be toggled per shop)
NEWAntidupe earlywarning system with expansive incident report (/market admin dupeincidents)
Wanna test how it works? Enable debug, login with op and use command
/market admin givemenuitem -> This will trigger an announcement in global chat and is only inteded for you to simulate getting a duped item from a GUI to see the dupe-alert system in action. It does not actually dupe anything and all items are flagged.
IMPROVED Lang files were reworked to remove outdated and no longer used strings
IMPROVED Automigrator works better than ever
IMPROVED Performance hickups with complex searches reduces by over 150%
FIXED Search / Filtering not finding some items
FIXED Refund system not working for shops with complex nbt-tags
NEW Plugin now shops with its own default adminshop system that can be used as either a fully blown admin shop within the market browser or just as a price reccomendation engine.
IMPROVED Reworked major parts of the market browser to fix search querries, make filtering easier and improve sizing and visibility
FIXED Debugger throwing errors in rare cases despite being disabled
NEW Players can now open a manual stock input GUI and place items directly into it. Matching items will be added to stock, others returned. This should facilitate placing specific amounts of stock even further.
NEW The plugin now has multiple "tracers" that watch and guard certain interactions. If enabled, suspicious activity will be flagged and a message showed to OP users. This should make it even easier to track potential abuse and dupes.
IMPROVED Cleared up some legacy code in old classes that was no longer needed
FIXED Locking certain inventory actions whenever a market was open
FIXED Internal overflow issue causing dupe (very, very specific but still, a bug that is instrumental to be fixed so you NEED to updated immediately)
I will not elaborate how this dupe happens to protect serves that haven't updated yet.
My sincerest apologies, I've included a new anti-dupe hardened check that can be configured that scans the inventory after x actions to check if it contains any items flagged as menu items.
NEW Let users refund purchases after a mislick etc. for a limited time (if shop has space, money and user still has the original item)
NEW Let users select stack amounts easier with the new submenu to select amounts
IMPROVED Default purchase menu now has two extra buttons to set selected amount to nearest full stack.
NEW Players can now create hybrid shops (that both sell and buy the same item) by clicking on "set price" and entering "S{sellprice} B{buyprice}" i.e. "S15 B10"
NEW The plugin keeps track of hybrid shops and tracks sales individually
IMPROVED Onboarding remembers already completed steps, making sure you can exit GUI at any point and return to setup without having to worry about settings being lost.
IMPROVED Better DB connection checks (fallback safety)
FIXED Set "debug" to false by default - sorry if your console was very spammy, oops.
FIXED Complete rewrite of the custom lang loader system - this should fix all menus that were previously having issues with loading custom itemnames and itemlores.
IMPROVED Lang files are now split. All files are in folder "lang" with messages in messages.yml and all menus having their own file in "menus".
IMPROVED Users can now filter their /market myshops page by stock, price, profit etc.
NEW Option for stacking permissions (inheriting higher limits via permissions for maxshops and maxstacksize)
NEW Command /market mystats to see list of stats including shop limits etc
NEW Support for Towny
NEW Support for Bentobox-skyblock
NEW All menu configs are split into seperate files
NEWAll messages and lang files are in folder "lang"
NEW Plugin startup was slimmed down a bit, some of its logging moved into a seperate logging file.
NEWMigration for ChestShop3 (Requires manual input from players due to technical limitations with ChestShop3)
FIXED Custom menu itemnames and lores not loading sometimes across a lot of menus (rewrite of the menu renderer)
FIXED Weird interaction warning messages when using shops on Plotsquared plots and other claims
IMPROVED Bidding system now comes with admin commands (/market admin featured) to set stage, remaining time etc.
IMPROVED Slots won in bidding process now are marked as "Featured"
IMPROVED Players can only have one featured slot
IMPROVED Players can now select a specific shop or a shopgroup for their featured slot.
NEW Players can now issue refunds for trades they've completed within the last 5 minutes
NEW Added more sign-interactions and seperated shift and none-shift interactions (though this might be a bit buggy for bedrock, sorry guys, just nothing I can do about this)
NEW (Experimental) Itemcages: Creating a glass around the previewitem to seperate it more from "drops" if enabled
NEW (Experimental) Static previewitem rotation; Previewitems do not rotate towards players anymore if enabled
IMPROVEDVisual clarity of settings menu
IMPROVED Loadbalancer
IMPROVED Modularized some systems like commands (does not affect players, just makes my life easier)
FIXED Pending offers button sometimes not working
FIXED Hologram and previewitem not shifting over when switching from default location to custom location
NEWPlayers can create shared shops (Free mode limited to 3 players per shop). In shared mode, players can assign permissions, handle shop parts they have perms for and work together
NEWShop grouping. Shops can be grouped together for easier management
NEW Shop browser with featured slots (toggleable). If enabled, there is a server-wide blind bidding after which the winners will have one slot to advertise their shops in the global browser.
NEW Item-preview custom offset (with toggle and default preset)
NEW Optional creation and upkeep cost systems
IMPROVED Settings menu (split by category, toggles and with pages)
FIXED Permission check firing too often, causing 0.05% more server load than necessary (Yes, I take the "best optimized shop" thing very serious).
FIXED Automigrator duping lore lines when checking for old configs
I have made an (AI) Summary of the updated API for anyone that wants to use it. Please don't come at me for not hosting in publicly, just use reflections as described in the guide. I can't be arsed to manage the API library via maven.
I am very sorry to anyone that was affected by the automigrator duping lore lines. DM me or open a ticket in Discord and I'll personally sort this out for you! <3
FIX Counteroffer menu for item-trades blocking all inventory interactions, effectively speaking blocking the player from using the "Offer different item" option. (silly bug)
NEW Users can now create counteroffers, manage them easier and see pending offers. This comes with automatic nudges about unclaimed trades and new offers
NEW Toggle for admins to allow teleporting to shops (with warmup) to shops from browser and search function
NEW Global Browser for shops by category or player
NEW Categoryeditor for admins for browser
NEW Automatic migration from config.yml and messages.yml (premium only) when new update drops. The plugin will copy over your settings
IMPROVED Search is now more accurate and offers better filtering
NEW Configurable time limits before old counteroffers are moved to new "history" tab.
NEW Auto-deletion from player gui of old counteroffers after 90 days (configurable)
IMPROVED Fixes for migration from Plugin "Shop" when in barter mode - hopefully fixes stock migration being broken.
NEW Players can make counter offers for shops (toggleable global and per shop)
NEW Players can offer bulk-purchase discounts i.e. 5% off from an order of 1000 items or more (default and permission based limits)
NEW Initial support for dynmap (though markers are having issues rendering for now - experimental)
NEW Support for plot-squared
NEW Claimables menu - unclaimed offers that got accepted land here
Improved Adding more message configs to messages.yml for bossbar and actionmar messages etc
Improved Better shop prechaching for statistics and price overviews
And some more I forgot to note down... will be appended in the next update info
NEW Discord webhooks (fully working including batchmode or instant mode
NEW Public API (shade jar into your plugin as lib and use reflection. See below for list of api methods and examples.
IMPROVED Fixed a bug with migration from plugin Shop (
https://www.spigotmc.org/resources/shop-the-intuitive-shop-plugin.9628/) caused by the owner storing the location of shops not as the container but the sign... and in the wrong format... and not always the same depending on what side the container is facing.
Seriously, just avoid that plugin, its utter dog****...
API:
Code (YAML):
Available methods: getAllShops
() - Get
all registered shops
getShopById
(long
) - Get shop by ID
getShopAt
(Location
) - Get shop at location
getShopsByOwner
(UUID
) - Get
all shops by owner
getShopCount
(UUID
) - Count shops owned by player
isShop
(Location
) - Check if location has a shop
getMaxShopsFor
(Player
) - Get max shops for player
setEconomyProvider
(Economy
) - Set custom economy
getEconomyProvider
() - Get current economy
firePrePurchaseEvent
(...) - Fire purchase event
firePreSellEvent
(...) - Fire sell event
getVersion
() - Get plugin version
isPremium
() - Check if premium
getPlugin
() - Get raw plugin instance
// TinyMarkets is a Paper plugin, so it may not be enabled yet when this Bukkit plugin enables. // We need to wait for the server to finish loading, then check for TinyMarkets. getLogger
().
info("Waiting for TinyMarkets to be available...");
// Schedule a delayed task to hook into TinyMarkets after server is fully loaded new BukkitRunnable
(){ privateint attempts
=0; privatefinalint maxAttempts
=20;// Try for 10 seconds (20 * 10 ticks = 200 ticks = 10 seconds)
@Override
publicvoid run
(){ attempts
++;
// Check if TinyMarkets API is available if(TinyMarketsAPI.
isAvailable()){ tinyMarketsAPI
= TinyMarketsAPI.
getInstance(); hooked
=true;
// If we've exceeded max attempts, give up if(attempts
>= maxAttempts
){ getLogger
().
warning("TinyMarkets API not available after "+ maxAttempts
+" attempts. MarketsHooker will not function."); getLogger
().
warning("Please ensure TinyMarkets is installed and enabled."); this.
cancel(); } } }.
runTaskTimer(this, 10L, 10L
);// Start after 10 ticks, repeat every 10 ticks (0.5 seconds) }
@Override
publicvoid onDisable
(){ getLogger
().
info("MarketsHooker disabled!"+(hooked
?" (was hooked to TinyMarkets)":" (was not hooked)")); }
ADDED - New ingame settings menu with /market admin settings
ADDED - Configurable glow colors for each of the actions
ADDED - Signs of shops are now considered part of it and various interactions can be "programmed" to them, allowing you to set different kinds of interactions to your own liking
ADDED - Internal shop protection system to prevent it from being blown up by entities, mobs etc.
ADDED - Configurable radius of /autostock command in config.yml
FIXED - Signs blocking you from interacting with shops and forcing you to use the container itself
FIXED - Very rare display error with chestshops rotating the wrong way around after toggling on/off
IMPROVED - Local-storage migration for plugin Shop (
https://www.spigotmc.org/resources/shop-the-intuitive-shop-plugin.9628/) now works and will load data properly (detection of different storage file formats)
FIX - No longer shading the imports directly, reducing the jar size (and now once again hosted directly on spigot)
FIX - Players being able to set storage to database in freemode, causing dataloss after restart
FIX - Substore types "EXP" and "Playerpoints" now work properly with the menus to set them and retrieve them
FIX - Startup crashes when failing to load hikariCP
IMPROVED - Better checks for worldguard
IMPROVED - More stable checks when no claim system is installed
Hey y'all.
This is a very small fix for some missing default messages in FREE-Plugin mode. No changes in config or anything, just a drag and drop fix.
Enjoy it! <3
Important: you NEED to update your jar, the plugin won't start otherwhise. I am looking for a more elegant fix but for now, I shaded the needed hikaricp libs into the plugin itself