OptiGUI

OptiGUI

8M Downloads

[BUG, FEATURE REQUEST] GUI sprites support

Vi-Tul opened this issue ยท 1 comments

commented

Feature description

Since version 3.0 uses the advanced json format, it would be great to be able to change sprites depending on the GUI.
As I understand, there is already some movement in this direction. F.e. using inspector in villager GUI, it allows to change this textures:

{
  "textures": {
    "minecraft:textures/gui/container/villager.png": "example:path/to/changed/texture.png",
    "minecraft:widget/button": "example:path/to/changed/texture.png",
    "minecraft:container/villager/scroller": "example:path/to/changed/texture.png",
    "minecraft:container/villager/trade_arrow": "example:path/to/changed/texture.png",
    "minecraft:container/villager/experience_bar_background": "example:path/to/changed/texture.png",
    "minecraft:container/villager/experience_bar_current": "example:path/to/changed/texture.png"
  },
}

The issue is that you can't really change them, because it results in a missing textures, hence the BUG in the title
Image

Another usecase could be to independently change sprites in Inventory, Smithing table and Enchanting table GUIs, since in vanilla they are all using sprites from sprites\container\slot and intersect with each other

commented

Indeed this is a bug.

I spent way too much time trying to figure out sprites with my other mod. Sprites are compiled into an atlas from the resource packs' <namespace>:textures/gui/sprites folders, and don't have the PNG extension (that's why you see minecraft:widget/button instead of minecraft:textures/gui/sprites/widget/button.png).

OptiGUI checks for the presence of the replacement textures, so the workaround is to do something like this:

  • Place the texture to /assets/example/textures/gui/sprites/path/to/texture.png
  • Set the replacement sprite to example:path/to/texture
  • Place an empty file to /assets/example/path/to/texture

I reckon I should split "textures": {} into "change_textures": {} and "change_sprites": {}, as well as document this to clear up confusion among resource pack creators.

Renaming if to load_if and match to match_nbt could also be beneficial.