Giter Club home page Giter Club logo

clientstorage's Introduction

https://i.imgur.com/ApkCPZ3.png

Discord GitHub license Client environment Singleplayer environment

Highly inspired by AE2 / Refined Storage ... but clientside! Features crafting search interface and inventory layout saving!

A clientside mod (yes you can use it on any server, though anticheats might interfer) to never search for an item again! Command or GUI, whatever you prefer!

Having a chestmonster? You'll be able to deal with it easily!

Features

  • toggle with a keybind
  • taking items out too cheaty? Only mark containers that include the wanted item
  • see all items in chests, minecarts, barrels etc. that are in your reach proximity
  • any resourcepack support (gui is made out of creative textures)
  • pick up items seamlessly
  • search for items via built-in searchbox
    • # for tags (e. g. #protection - will search for any items having protection tag)
    • @ for modded items (e. g. @simplevillagers - will search for items from simplevillagers mod)
  • autodetect server type and modify needed packet delays (to some extent)
  • save inventory layout to a preset
    • this allows you to have your shulkers / chests configured what items you can shift-click in and where they'll go!

Screenshots

  1. Crafting search interface
Zoomed Whole inventory
  1. Storage presets

image

Showcase

storage_presets.mp4
out.mp4
2022-10-11.10-21-04.mp4
2022-11-15.11-04-59.mp4

Current problems

  • detecting server is done via brand field from CustomPayload - this could be improved
  • items sometimes glitch out
  • items are "shift-clicked"
  • donkeys & llamas are still experimental

Server owners

  • want to limit some mod features (e.g. through wall container discovery?)
    • you can install mod on fabric or bukkit-type servers and sync the config to the client!

Contributions

There's so much more that can be done (look at current problems)! If you want to help, feel free to fork the repo and submit a pull request! Thanks 😉.

clientstorage's People

Contributors

imgbotapp avatar magneticflux- avatar samolego avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

clientstorage's Issues

[Bug] Weird crash with furnaces when world is open to lan

For some reason I can't open furnaces if I use "Open to LAN" option and then crash if I try opening my inventory.

How to reproduce the issue:

  1. Open any world
  2. Open the world to lan
  3. Right click a furnace (nothing happens, furnace gui isn't showing up)
  4. Press e to open inventory
  5. Game crashes

Other things I've noticed

  • If you hold Shift while clicking, furnace gui opens as usual, no crashes either.
  • If you open any other gui (chest, barrel, crafting table, etc) after clicking a furnace, you also won't crash.
  • If the mod is disabled via in-game config, furnace gui works without issues.

Crashlog: https://mclo.gs/KvKiwvO

[Paper 1.19.2] Bukkit plugin fails to load - "Cannot find main class `org.samo_lego.clientstorage.bukkit.ClientStorageBukkit'"

I'm running a Minecraft 1.19.2 server using Paper. (derivative of Bukkit)
(Paper build 1.19.2 - 237)

The ClientStorage 1.2.1 Bukkit plugin fails to load with the following error:

[13:23:02 ERROR]: Could not load 'plugins/clientstorage-bukkit-1.19.2-1.2.1.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: Cannot find main class `org.samo_lego.clientstorage.bukkit.ClientStorageBukkit'
	at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:73) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:153) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:411) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:319) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.craftbukkit.v1_19_R1.CraftServer.loadPlugins(CraftServer.java:423) ~[paper-1.19.2.jar:git-Paper-237]
	at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:278) ~[paper-1.19.2.jar:git-Paper-237]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1100) ~[paper-1.19.2.jar:git-Paper-237]
	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:305) ~[paper-1.19.2.jar:git-Paper-237]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.ClassNotFoundException: org.samo_lego.clientstorage.bukkit.ClientStorageBukkit
	at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:177) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:124) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
	at java.lang.Class.forName0(Native Method) ~[?:?]
	at java.lang.Class.forName(Class.java:467) ~[?:?]
	at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:71) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
	... 8 more

Tested on both Linux and macOS.

Linux:

$ uname -a
Linux hostname 5.19.0-1-amd64 #1 SMP PREEMPT_DYNAMIC Debian 5.19.6-1 (2022-09-01) x86_64 GNU/Linux

$ java -version
openjdk version "17.0.4.1" 2022-08-12
OpenJDK Runtime Environment Temurin-17.0.4.1+1 (build 17.0.4.1+1)
OpenJDK 64-Bit Server VM Temurin-17.0.4.1+1 (build 17.0.4.1+1, mixed mode, sharing)

macOS:

% uname -a
Darwin hostname 21.6.0 Darwin Kernel Version 21.6.0: Mon Aug 22 20:19:52 PDT 2022; root:xnu-8020.140.49~2/RELEASE_ARM64_T6000 arm64

% java -version
openjdk version "17.0.5" 2022-10-18 LTS
OpenJDK Runtime Environment Zulu17.38+21-CA (build 17.0.5+8-LTS)
OpenJDK 64-Bit Server VM Zulu17.38+21-CA (build 17.0.5+8-LTS, mixed mode, sharing)

Double Reads?

For some reason, even with single chests, it keeps reading double the amount of items in nearby chests. (Like two iron swords with durability 15, despite only being 1 of them)

[Bug]gui error

Uploading QQ截图20230520015840.png…
have tried deleting other mods, and unload all resourcepacks, no luck
fabric 1.19.4-0.4.14
the latest version of this mod

[bug] Cant open crafting table if there is no storage nearby.

Steps to reproduce:

Place a crafting table a good distance away from any chests or other storage
Right click

Expected behavior

Crafting table screen opens

Actual behavior

Crafting table screen NEVER opens.

Video Demo:

2022-09-06.22-19-08.mp4

[enhancement] Search entity inventories

Perhaps hardcode it so Chest/Hopper minecarts/boats are only searched by default, with a config option to add more entities later.

2022-09-06.22-25-54.mp4

[enhancement] Highlight which chest has the item in question

I don't know how exactly this mod works, but it appears to be easily detectable by anticheats.
So, I think a cool improvement would be a toggle that disables the ability to take the item without opening the chest, and it would allow you to search through chests you've already opened (the insides of the chest are stored client-side), and when you search it, and select the item, it would show you which chest has it, and maybe even highlight the item when you open the chest.

[Bug | Multiplayer]: Not being able to store / retrieve items from nearby chests

I don't really understand debug mode things but can you atleast what the "inventory size mismatch" means and yeah I sometimes can't store and retrieve items from chests

The server also has anticheat so that maybe the problem? Also, when that bug happens, and I open the crafting table again, most of the items are gone and won't come back until I open the chest that contains the item I'm looking for

[enhancement] Show storage capacity

Since we have the available storage data, it'd be really simple to calculate the "fullness" of the storage. Rendering it ... well that'd be a it harder 😛

[Feature] Add search command

It would be awesome if there was a command to search for a specific block within a radius. For radius' larger than 6, it should use the cache.

Examples:

Search within the radius set in the settings

Command:
/search stone

Results (in chat):

4x   @ 1, 64, 1
450x @ 1, 65, 1

Search within a provided radius (using the cache for containers further than 6 blocks)

Command:
/search stone 12

Results (in chat):

4x   @ 1,  64, 1
450x @ 1,  65, 1
50x  @ 10, 64, 1

1.20.6 Update

Hello! I really like this mod, can you make the 1.20.6 update please.
Thank you so much!

Support Quilt servers

Logged in the chat on connection:

[21:18:20] [Render thread/INFO]: [System] [CHAT] [ClientStorage] Server type quilt is unknown. Please set appropriate packet delay in config.

Syncing issues, in general?

I don't know if I'm doing something wrong, but in general, input items both from the menu and from the chest cause syncing issues which break taking any unsynched items out.

Tested in Singleplayer, Paper Server, and Vanilla server with Cache Container enabled and disabled.
Item Transfer settings were also enabled and disabled for container testing
Tested with only fabric API mod and Yet Another Config and the bugs still persisted (in the video I had performance and visual mods)

This video shows most of the bugs, in chronological order:
Input to the menu doesn't work in any way I tested, causing syncing issues
Taking the unsynched items away causes glitches
Putting items into the chest sometimes rechecks, causing duplication visual glitches and syncing issues (sometimes it doesn't recheck and doubles only once, still unsynced though)
(Not shown) Taking the unsynched items away also causes glitches
Taking the items away from the container directly doesn't correctly update the menu if unsynced
https://user-images.githubusercontent.com/70297682/198537801-e4e4dbd1-e51a-490e-8c9e-a0b46316385b.mp4

Hard to make it actually work, but when it does sync correctly (rarely works when putting items into the container), taking items out from the container works fine. Item transfer is still sometimes buggy as it sometimes drags; sometimes goes straight into inventory; sometimes goes into inventory, and then clicks again and now you are dragging a different item (possibly due to syncing issues though). If this is too complicated, there should be a setting to just put straight it in the inventory to avoid this bug.
https://user-images.githubusercontent.com/70297682/198537760-ae6ee768-d1c2-4946-a818-25d288b50c08.mp4

1.20 on modrinth.

Would like to be able to get 1.20 through modrinth instead of going to curseforge

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.