tom2208 / chestcleaner Goto Github PK
View Code? Open in Web Editor NEWChestCleaner is a Minecraft Spigot plugin that sorts your chests and inventories. (+ Autorefill for items in the hotbar)
License: GNU General Public License v3.0
ChestCleaner is a Minecraft Spigot plugin that sorts your chests and inventories. (+ Autorefill for items in the hotbar)
License: GNU General Public License v3.0
Hi there, I have a plugin called EnchantGUI that turns your enchanting table into a GUI system. When players right clicked the enchanting table with an iron hoe, it would dupe their item because the plugin thinks that they're clicking a container.
Can I request it so that on the PlayerInteractEvent, you check if it's a container? (Chest, Shulker box, Ender Chest, Trapped Chest, Dispenser, etc?) Currently I've removed the plugin and I'll wait till this issue is fixed
I suspect that ChestCleaner might have something to do with it so i thought it be better i post it here. This have never happened until a few hours after i installed ChestCleaner 2.0. I had no other version of ChestCleaner installed before 2.0, and the only other plugin i run is Dynmap. Server is based on Paperclip.jar v. 1.15.2
[20:38:16] [Server thread/INFO]: SomeGamer joined the game
[20:38:17] [Server thread/INFO]: SomeGamer [/IP ADDR:53748] logged in with entity id 1 at ([world]114.0849586267286, 63.0, 218.38341590479666)
[20:41:35] [Server thread/INFO]: SomeGamer lost connection: Disconnected
[20:41:35] [Server thread/INFO]: SomeGamer left the game
[20:48:03] [Craft Scheduler Thread - 5/WARN]: java.net.UnknownHostException: api.spigotmc.org
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:220)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/java.net.Socket.connect(Socket.java:609)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:285)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:265)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:372)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1187)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1081)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1587)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1515)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:250)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at chestcleaner.main.UpdateChecker$1.lambda$0(UpdateChecker.java:48)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftTask.run(CraftTask.java:84)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[20:48:03] [Craft Scheduler Thread - 5/WARN]: at java.base/java.lang.Thread.run(Thread.java:834)
Server reacted fine to commands entered directly into server CLI.
It seems like there is an issue with the maven build of chestcleaner.
The color code for instance §6 is displayed in a worng way, the color works but it brings a 'T' or 'Â' like sybole with it (in console or ingame chat). This happens in the console and in the ingame chat.
Further the wrong plugin version gets displayed in the console (1.6.2 instead of 1.8).
Some example images:
https://imgur.com/meg39v7
https://imgur.com/gvUJtKQ
The middle mouse button, doubleclick, etc.
When armor breaks, autorefill puts the new armor in the off-hand, but replaces whatever's there, such as a shield.
Autosort is not working on enderchests now.
Instead of initializing the config.yml from Java and having all the default values inside the code, we should create a sample config.yml Resource (like the *.properties files) which contains all default values.
"Since using 2.0 if I run a command that opens a GUI while holding a cleaning item it will clean the players inventory instead of opening the plugins GUI. (Tested with Jobs Reborn and McRPG GUI's) Paper 1.15.2"
Transforming the project into maven.
When player is placing skull, it drops the server's TPS, and there's an event that is called. I've been able to capture it in spark, you can see it below.
Here's my server version:
Paper 1.15.2 build 378
chestcleaner 2.0.2
A user reported an issue: he can't use his own language because of "ANSI" encoding.
The saddle or the carpet in case of the llama gets sorted, so the saddle gets swapped with a block or something for instance.
There is no support for the commands in the console. This should be a feature of a future version.
You can find the command classes in the folder src/chestcleaner/commands, the work should be mainly done there.
Hey,
I get the following error on start-up when trying to use the most recent version of ChestCleaner:
Server version: Paper 1.15.2 - 389
ChestCleaner: 2.3.2
Let me know if you need to know anything else :)
Hey, thanks a lot for the recent update!
We are currently still experiencing an issue with the autorefill feature. We use a plugin called Wildstacker to limit the number of spawners players can place in a chunk, however, when that plugin denies a spawner placement, the previously reported issue still occurs, even though it is fixed for WorldGuard regions.
Now, I think it would be futile trying to add support for all plugins out there, so a simple blacklist for autorefill, where you could just add the problematic items in cases like this would do the trick. Since there are already blacklists for sorting and stacking it would make sense to have one for this feature as well I guess.
Thanks a lot again for your effort!
sh1mrr4
Creating a SQL support. Instead of saving the playerdata and config in a .yml file it should be possible to save it in database.
Further, if you want to use the same database for multiple servers there should be a feature that refreshs the playerdata and configurations, so that the player can change it's settings on one server and can use them in another (Should work already with login-loading, but we have to take an eye on that).
I use Xisumavoid's Vanilla tweaks and the redstone Wrench datapack breaks when it is put in a chest with ChestCleaner running on PaperMCSpiggot 1.16.1-138
these are my plugins when it is not working
When I disable Chest Cleaner the Wrench is able to be put in a chest or hopper and taken back out and have it work. what more information can I provide you for this issue?
I would like the ability to disable update checking, as the message being sent to me every time I log in is quite annoying, thanks! :)
Hey,
I am encountering an issue with the autorefill feature in certain situations. If the last block of something in the hotbar is placed, but placing the block is prevented by another plugin (for example if somebody places a block in a region proteced by WorldGuard), the item moved to the hotbar by autorefill overwrites the item that wasn't actually placed.
This seems to be a general issue involving all kinds of plugins, that prevent block-placement in certain situations, so a fix for this handy feature would be greatly appreciated.
Version ChestCleaner: 2.0.2
Server: Paper 1.15.2-378
Best regards,
sh1mrr4
I read the document for autorefill (https://github.com/tom2208/ChestCleaner/wiki/Autorefill-2.0) and try below setting in config.yml
refill:
blocks: true
consumables: true
It seems work for block, but seems not work for consumables. Below gif reproduce steps:
Is this behavior expected?
CraftBukkit version git-Spigot-e7dc2f5-a8ec1d6 (MC: 1.15.2) (Implementing API version 1.15.2-R0.1-SNAPSHOT)
Paper version git-Paper-318 (MC: 1.15.2) (Implementing API version 1.15.2-R0.1-SNAPSHOT)
Making multiple lining possible by using the setLore subcommand.
Maybe with the symbole &n.
When a player is placing seeds and runs out of the stack, if they have wheat and seeds in their inventory, wheat goes into their hand instead of more seeds.
It would be more helpful if wheat and seeds were separate in this way so that wheat only goes to the hand if you run out of wheat, and seeds only go to the hand if you run out of seeds.
This would help solving this issue: https://github.com/tom2208/ChestCleaner/issues/22.
Further, it would make the command implementation more efficent.
At the time ChestCleaner just works for server versions 1.13, 1.14 and 1.15 (maybe 1.16). A support for 1.7, 1.8, 1.9, 1.10, 1.11, 1.12 would be great.
This only works when you have dirt in your inventory.
When you use a hoe on Coarse dirt, the hoe will be replaced by dirt from your inventory ending up without a hoe after using once.
Reworking the timer / counter classes.
At the moment there are some problems.
Looks like you refactored some sorting functionalities to SortingUtils, but didn't add the file to your commit.
I would prefer a clearer, reusable and more adjustable sorting system. For this we should rework the whole sorting system a bit.
Creating filter objects you can combine for a sorting configuration. For instance CreariveTabFilter, ShapeFilter, etc.
The the server operators can set a combination of filters as the default state and the normal players can create their own individual filter combination.
The rules of the combination should be:
filters are creating categories the next splits each category into other sub categories (may include a not effected category, but should categorize all materials) etc.
The order of categories is the sorting. After all other filters are applited the items in the first category will come first in the order they are saved in the category.
But we have to differ between filters and evaluators. Filters are creating categories, that would make no sense for evaluators. For instance the alphabetical evaluator, each item would have its own category. Filters are splitting materials into categories and are sorting the order of the categories then. Evaluators are compairing items.
Example:
{CreativeTabFliter, ShapeFilter, AlphabeticleEvaluator}
CreativeTabFilter => 10 CreativeTab categories
=> each of this categories would call the next filter ShapeFilter => creating new categories of the new filter => sorting the sub categories of ShapeFilter with the AlphabeticleEvaluator.
A visualition would look a bit like the visualition of merge sort (but with bigger groups of elements before starting to merge) (https://en.wikipedia.org/wiki/File:Merge_sort_algorithm_diagram.svg).
Pros:
easy to adjust, reuse
easy to create new filters
easy to safe the configuration of the players
easy to save player configurations
players can customize their own sortering
Cons:
you have to find abstraction levels to get the sorting you want, you can't just save a list of 900 Elements. You have to find the right combination of filters.
By the way: the playerconfig.yml is for the individual playerdata, generell configurations are saved in the config.yml
Its old code. Needs to get reworked.
Wirting a documentation for developer in the wiki
A better documentation for spigot, to make it easier for people to understand the features of the plugin. You can orientate on my doctumentation on spigot if you need a list of the features or something. It should be short. Detailed informations are for the wiki.
Yet our users have to enter the cooldown in ms.
Something like 1d 2h 3min 2sec 1ms would be nice.
Like the title every time I place a black I get an output to chat.
If I place a dirt block it says DIRT.
Does not happen on v2.2.1
I am running Paper 220
Report by Ergosphere: https://www.spigotmc.org/threads/chestcleaner-sorting-plugin-api.237322/page-12#post-4145528
Blacklisted Enderchest caused the issue in this case.
=> dont showing autocompletions for commands the player couldn't execute because he is missing the permission for it.
The main here target is to create a good wiki. That means good and long explainations of every feature. In comapred to #4 this is more detailed, the documentation you can find on spigot should be just a short overview.
Reported by "IAmSoccer":
Example: an amount of 64 swords in one stack
https://pastebin.com/3fQzVdU2 every time an items breaks
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.