Angelica

Angelica

58.4k Downloads

Support full block.properties format

LKD-PIX opened this issue · 6 comments

commented

Your GTNH Discord Username

lukapix

Mod Version

1.0.0-beta25

Bug Report

Hey, in optifine shaders one can specify behaviour for rendered block in a block.properties file.
In (im using complementary reimagined) for example, a line defining a leave block for swaying in the wind looks like this:
block.10009= TConstruct:slime.leaves
This works, so far and there is no issue with that, but when we get to wanting to differentiate blocks by meta optifine could also do the following:
block.10009= TConstruct:slime.leaves:2
to only specify this meta version of the block for swaying.
Further, Iris allows blockstates in modern minecraft to be defined similiarly:
block.10021= double_plant:half=upper
neither of those seem to work in Angelica right now, making it very hard or impossible to make shaders look correct on a lot of blocks.
(maybe im also stupid)

Java Version

Java 21

Graphics Card Vendor

AMD/ATI
Radeon 6900XT

Shaders

Yes: Please put relevant information about shaderpack in the report(what shaderpack, any special settings of note, etc)

MCPF or other features disabled by default

No: Go ahead and create an issue

Mod List or GTNH Pack Version

GTNH 2.7.0

Final Checklist

  • I have searched the issues and haven't found a similar issue.
  • I have read the known incompatibilities and this is not related to one of those.
  • I am running an officially released version. (Or, if I've compiled it myself I plan to fix the issue)
commented

The metadata should be doable, Iris probably doesn’t do it because it does the block states instead, but block states don’t exist in 1.7.10, so it doesn’t make sense for us to do those.

commented

iirc @Roadhog360 had some mapping from metas to blockstates - dunno if he made it a library or not, but we could use it for partial blockstate support for shaders developed against modern versions

commented

Having drop-in support for modern shaders would be really cool, but i mainly care about being able to differentiate between different metas at all

iirc @Roadhog360 had some mapping from metas to blockstates - dunno if he made it a library or not, but we could use it for partial blockstate support for shaders developed against modern versions

commented

Metas should be supported, but if it's not working there's a bug. I'd point people to these places:

commented

I have a system like this, yes, but it is not complete at all. It is currently in dire need of a major rewrite, too.

commented

It looks to me like the metadata should be detected here:

https://github.com/GTNewHorizons/Angelica/blob/master/src/main/java/net/coderbot/iris/block_rendering/BlockMaterialMapping.java

It seems that the code block for detecting that metadata is commented out.

As an aside, what would be preferable is to support NBT tags instead of blockstates alongside of metadata. This would allow for deep shader integration when it comes to mods such as carpenter's blocks or ArchitectureCraft, which depend on NBT data to texture the block.

I have been working on a full block.properties file for the modern Complementary Unbound - assuming that we can get metadata and NBT integration, I'll share it once I'm done. It'll have all of the major mods included, including most/all of the ones in GT.

(also, supporting a dimension.properties file would also be a MAJOR benefit. This is something that was added to optifine and iris some time after 1.7.10, but for mods like galacticraft, it would allow someone such as myself to make custom skies, etc. for those dimensions, allowing for actual real shader integration there. And again, I'd be happy to share that work once I'm done, assuming that angelica starts supporting it).

edit:

example of potential NBT support:

block.1000 = ArchitectureCraft:shape:0:BaseName=minecraft:stonebrick \

Such an entry would trigger the architectureCraft slopes to be added to block.1000 only when they are made from Stone Bricks.