PluginBugs / Issues-ItemsAdder

Repository used to keep track of issues of my plugin ItemsAdder
https://itemsadder.devs.beer
48 stars 21 forks source link

[Suggestion] Add GeyserMc Resoucepacks Support #206

Open YoutubeNosios opened 4 years ago

YoutubeNosios commented 4 years ago

Hey ! Could you add a command to convert the pack for pocket edition please ? ( GeyserMc compatibility ) Thank you in advance !

Notes by LoneDev:

LoneDev6 commented 4 years ago

This is a really cool idea, I will make some tests in the future to add this, for sure!

LoneDev6 commented 3 years ago

As I see the project is really really in beta, so I won't work on compatibility as it's not stable: https://github.com/GeyserMC/Geyser/issues

I will wait it to be more stable

LoneDev6 commented 3 years ago

Currently the Geyser team is discussing about compatibility for resourcepacks in general here: https://github.com/GeyserMC/Geyser/issues/210

One big issue is the lack of compatibility of namespaces (which are a Minecraft Java builtin feature, not only a ItemsAdder feature)

TypicalShavonne commented 2 years ago

https://github.com/GeyserMC/Geyser/pull/2822 šŸ‘€

editon96 commented 2 years ago

so now its posible for Geyser to load Recauces but have Item Adder that Future? I have Geyser and want to buy ItemAdder but only if that exist already unitl then I wait.

ghost commented 1 year ago

Currently the Geyser team is discussing about compatibility for resourcepacks in general here: GeyserMC/Geyser#210

One big issue is the lack of compatibility of namespaces (which are a Minecraft Java builtin feature, not only a ItemsAdder feature)

@LoneDev6

They seeminly added support for ItemsAdder in this PR.

According to one of the Geyser developers, it should be possible for ItemsAdder to support Geyser. It's also available on the master/release branch as of now (3 days ago from this writing).

They have a small wiki page up and running as well.

ofunny commented 1 year ago

2141 is not really a duplicate, it's just related. As far as I understand this thread and #1999 people wanted compatibility with Geyser way before they released their resource pack mapping in the main branch.

The idea of #2141 is to start a project what will take care about the correct conversion of ItemAdders "Default" and "Other" pack to Bedrock including Geyser mapping, sprite json (for 3D inventory) and FAQ. So people could download the prebuild "Default" and "Other" Bedrock pack with Geyser mappings the same way as the can download the Java version right now from the ItemsAdder website (and use it on their servers or as reference for other custom packs). Another even better idea would be a collaboration with https://github.com/Kas-tle/java2bedrock.sh to get the converter completely compatible with ItemsAdder so that no manual pack work would be necessary.

We could do a open source project if enough people would be interested. But yeah, just an idea.

LoneDev6 commented 1 year ago

I don't have enough experience in Bedrock and in Geyser to do so, anyone is free to join the project. The default pack is public: https://github.com/ItemsAdder/DefaultPack

LoneDev6 commented 1 year ago

Also I'm not comfortable to work on a project that changes completely every 6 months (Geyser).

ofunny commented 1 year ago

Well I'm not sure what experience you had with Geyser so far, but to be fair, the initial support for Java to Bedrock resource pack mappings on the main Geyser git branch (release) has been on 09/19/2022 (or 19.09.2022 if not US) less than 3 months ago ā€“ everything prior to this date has been in their Feature/Extension development branch and was not made for production.

How it works is really simple: You can choose either between a simple JSON file what just contains mappings from items in your Java resource pack to Items in the equivalent Bedrock pack or you could do the same thing what the JSON file does but via Geyser extension (creating mappings via code) ā€“ https://wiki.geysermc.org/geyser/custom-items/

The only thing Geyser is missing at the moment is the support for custom blocks, what will be added sooner or later.

Compatible

Incompatible

Coming soon Support for custom blocks

Special case 3D models won't show up in Bedrock inventories unless you create a 2D sprite (image) for each model what than could be mapped in the Bedrock pack ā€“ in other words, you need an 2D image for each 3D model to display them in Bedrock inventories ā€“ see https://github.com/Kas-tle/java2bedrock.sh#item-icons

What needs to be done The main task is the creation of an equivalent Bedrock pack what represents the Java resource pack and the mappings for Geyser (either via JSON file or via Geyser extension). There is a converter script what can convert Java to Bedrock resource packs already (https://github.com/Kas-tle/java2bedrock.sh) and it would also create the mappings file for Geyser but it's not perfect so there many things what have to be fixed manually after conversion from Java to Bedrock.

Anyway, the whole Bedrock pack and the conversion ... both are unrelated to Geyser. Geyser just takes care about the mapping (which Java item, model ... represents which Bedrock equivalent in the resource packs).

Closing words I will try to get as many things ported from the Java to the Bedrock pack as possible as long as I find enough time. What worries me more atm is keeping the Bedrock pack up to date with your Java pack releases, because obviously you would have to integrate all changes to the finally generated Java resource pack also into the Bedrock pack and update the Geyser mappings (if they would change). I can not predict how often you chance your packs and how much work this will cause.

I plan to do this for my own Minecraft server and I may consider to do it open source but of course not if I'm the only guy who is working on it. I know I'm not the only one trying to port the pack, so my idea is to work together rather than alone.

LoneDev6 commented 1 year ago

Well, people can just convert their pack using this script right? https://github.com/Kas-tle/java2bedrock.sh I sincerely doubt a script can automate the whole process because some stuff are very crazy in Java edition, like shaders tricks and similar.

Anyway probably it gets over my head but I think that it's better to play with Java edition and everything working instead of having a partially ported experience.

TypicalShavonne commented 1 year ago
  • Emojis in GUI titles (

Emojis in GUI titles is compatible i would say, but it isnt very efficient

YoutubeNosios commented 1 year ago

Lmaoo I created this thread a while ago, Iā€™m proud it was finally been added šŸ˜‚ good job

ofunny commented 1 year ago

Well, people can just convert their pack using this script right? https://github.com/Kas-tle/java2bedrock.sh I sincerely doubt a script can automate the whole process because some stuff are very crazy in Java edition, like shaders tricks and similar.

Basically yes but it's not working perfect yet for each pack, so you would have to do stuff manually.

Anyway probably it gets over my head but I think that it's better to play with Java edition and everything working instead of having a partially ported experience.

I recommend everybody to use the Java version anyway but I'm offering a cross-platform/play server. Some people do not wanna buy Java, do not wanna play Java or simply just can't because the use a console, phone etc. ā€“ in my point of view the Bedrock version must not be perfect, it's fine if stuff is missing like animation on swords and so on, but it should work so far that Bedrock players can play along with Java players being able to see all custom items and to use them as well.

LoneDev6 commented 1 year ago

Isn't Java free for who owns bedrock? They gifted it some months ago.

ofunny commented 1 year ago

Isn't Java free for who owns bedrock? They gifted it some months ago.

Yeah looks like the are selling it now together: https://help.minecraft.net/hc/en-us/articles/6657208607501-Minecraft-Java-Bedrock-Edition-for-PC-FAQ

ofunny commented 1 year ago

May I ask you one thing that would be important for me, if there is a wiki page already than I'm sorry, I must have missed it.

Lets say I start with Default Itemsadder pack, but would not use all of its content in the beginning and later I would add some new or different content or new packs or if you would release a new update for your default pack and I replace the old version with the new one ā€“ would the custom model data ids stay consistent among changes?

As far as I know you start from 10000 except of DIAMOND what starts at 11000 (not sure why but it's the default config) and just count up from the starting value for each parent item whenever a new custom item refers to it.

Of course within the Geyser mapping file I have to use this custom model ids to create references to the Bedrock resource pack, especially when I handcraft some of them it would break if the model ids could change on ItemsAdder pack updates or additions. But I guess that would also break existing items and block in the world so I believe they are consistent, right? Or is there any case I have to consider?

LoneDev6 commented 1 year ago

As far as I know you start from 10000 except of DIAMOND what starts at 11000 (not sure why but it's the default config) and just count up from the starting value for each parent item whenever a new custom item refers to it.

It's just an example to let people see that it can be customized per-material and/or globally.

ofunny commented 1 year ago

Is there a way to get in contact for help with some internal questions. I mean on Discord is just community und DMs are not allowed?

LoneDev6 commented 1 year ago

letting me know how you assign the unicode code to a new font YML entry internal so I can predict that somehow.

You can get the list by reading the generated pack zip file and checking default.json font.

ofunny commented 1 year ago

letting me know how you assign the unicode code to a new font YML entry internal so I can predict that somehow.

You can get the list by reading the generated pack zip file and checking default.json font.

Already solved that and ended up writing a script that extends the Emoji configs with custom symbols via yaml, even if I could read the font cache file, that way it's even more reliable.

I rather would need the contact (see above) for other things.

LoneDev6 commented 1 year ago

Sure, open a private ticket on discord even if it's not a payment issue, i'll see if i can help. Channel: #support

ofunny commented 1 year ago

Thanks, I wrote you on Patreon with my main DC tag.

thefourcraft commented 1 year ago

Found this issue, I talked to @ofunny on discord

Funasitien commented 6 months ago

Some informations to add to this issue compared to what I asked on the forum, and what after using the plugin are at my eyes possible

First, when I first publish the forum post, I wasn't sure how the "custom block configuration", formely custom mapping, work. And even if itemsadder blocks havn't an id like with mods, some players manage to use these custom mappings to port custom ia blocks to bedrock.

Also, in the same forum post, I only talk about blocks. Custom items can alerady be done with Geyser, even if we have to remake the pack on every ia custom model data changes, and GUI can be done with JsonUI, a bit complicated but still possible.

So I think the first step of Bedrock compatobility would be a propper documentation. Custom blocks knoledge (on bedrock) are still limitated and JsonUI isn't eaysier as Java GUI.

And to make ia compatible with bedrock, some internal changes has to be made. Custom model data changes on items seems to be less important as when I first made my forum post, but custom model datas has to be fixed on items to make then creation of custom items, by us or the plugin, eaysier.

And by the way i'm the author of https://forum.devs.beer/d/1909-new-geyser-support

And GG, you reach to the bottom. Thanks you :D

ofunny commented 6 months ago

Honestly, I wrote my initial questions over a year ago when I was still new to Geyser and ItemsAdder. Since then, I've managed to get most things running on Bedrock using ItemsAdder. Lonedev has some example videos that I've included in a ticket on Discord. I have also created a GitHub repository for some of the trickier aspects (https://github.com/ofunny/ofunnysBedrockExamples/). However, it's not a complete guide. I took a break for a few weeks to work on other projects, but I plan to be more active again this year.

Still, a significant portion of the conversation relies only partly on script assistance and requires still a lot of manual work. If anyone starts a project to automate everything, feel free to contact me. However, such an project would likely need to be addressed on the ItemsAdder side.

LoneDev6 commented 6 months ago

And to make ia compatible with bedrock, some internal changes has to be made.

I'm not quite a fan of Geyser as it introduces server owners to lot of inconsistencies due to how the clients work differently. This opens up the possibility for both user reporting issues to server admins and customers reporting issues to me. I don't think Geyser is worth getting an official compatibility due to how unstable the whole thing is. I am also not a big fan of ViaVersion for the same reason, it introduces lot of inconsistencies.

implementing compatibility requires lot of work to be done on the whole resourcepack generation pipeline and I would also need to study the Bedrock format as I have 0 knowledge on how to create resourceapacks correctly.

ItemsAdder has an API, if someone wants to implement compatibility they can start doing that. If anything is missing in the API they can just contact me and I can try to add it. A rough compatibility layer be implemented by coding something that reads the generated Java resourcepack and converts it to Bedrock edition. But idk if that would be enough.

Anyway I have already explained that same thing over and over on Discord and various places, I hope now my point of view is more clear.