GeyserMC / Geyser

A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition.
https://geysermc.org
MIT License
4.69k stars 674 forks source link

Bedrock clients cannot "eat" usually inedible items with a modified food component that allows a item to be "eaten". #4890

Open underscoreBon opened 1 month ago

underscoreBon commented 1 month ago

Describe the bug

Bedrock clients cannot consume usually inedible items with a modified food component that allows a item to be "eaten".

I have a datapack on a server that has items that are "usable" with right click by "eating" said item. (yea, funny workaround i know) but I experimented on the Bedrock side and... they cannot "eat" inedible-edible items (they can still eat food-component-modified edible items though)

To Reproduce

1. Get yourself a inedible item that has a modified food component. (either on a Java or Bedrock Client) Example: _/give @p diamond[food={nutrition:1,saturation:1,can_always_eat:true,eatseconds:1}] 1 2. Give the Bedrock Player the inedible-edible item 3. Attempt to consume the Item on the bedrock side

If this sounds confusing to you, I'm confused too, while writing this.

Expected behaviour

You'd expect the Bedrock player to "Eat" the item... but it does not for some reason... (Java players are just fine)

Screenshots / Videos

No response

Server Version and Plugins

Server: Paper 1.21-109-master@5a5035b

Geyser Dump

https://dump.geysermc.org/X717oPnEQcZrpF3FC3g2hpcaTej3fmW3

Geyser Version

2.4.0-b617 (git-master-1dd9ba3)

Minecraft: Bedrock Edition Device/Version

Tested on Windows 11 Version, but im pretty sure it can happen in other bedrock clients

Additional Context

I'm pretty sure that this is a "bedrock limitation" if you can't find some sort of work around (or that I'm missing something) but if you can't fix it, let me know.

Camotoy commented 1 month ago

So the main issue is that Bedrock does not have dynamic components so we can't make an item edible unless it's pre-defined as edible.

But, um, can you link the datapack? In the event there's some cheap workaround for Bedrock players?

underscoreBon commented 1 month ago

You can run the command i just listed on the java side and give the modified diamond to the bedrock player

Camotoy commented 1 month ago

I have a datapack on a server that has items that are "usable" with right click by "eating" said item. (yea, funny workaround i know)

Referring to this - I'm curious to know more.

onebeastchris commented 1 month ago

With the PR here: https://github.com/GeyserMC/Geyser/pull/4655 , you could create a "custom item" using custom model data on the vanilla item. If you give it the vanilla texture/name, you could then modify the custom item properties to make it edible/wearable/etc

underscoreBon commented 1 month ago

I have a datapack on a server that has items that are "usable" with right click by "eating" said item. (yea, funny workaround i know)

Referring to this - I'm curious to know more.

I used the technique used in this video for the right click detect

underscoreBon commented 1 month ago

With the PR here: #4655 , you could create a "custom item" using custom model data on the vanilla item. If you give it the vanilla texture/name, you could then modify the custom item properties to make it edible/wearable/etc

Seems like i have to do some config stuff (sarcastic yay)

onebeastchris commented 1 month ago

Unfortunately not possible just yet, but will be in the future. While not ideal, it would atleast provide a way to have a workaround