Botania

Botania

145M Downloads

Brew Texture override does not used

Closed this issue · 0 comments

commented

Mod Loader

Forge

Minecraft Version

1.20.1

Botania version

1.20.1-448

Modloader version

forge 47.4.0

Modpack info

No response

The latest.log file

none

Issue description

ClampedItemPropertyFunction brewGetter = (stack, world, entity, seed) -> {
BaseBrewItem item = ((BaseBrewItem) stack.getItem());
return item.getSwigs() - item.getSwigsLeft(stack);
};
consumer.accept(BotaniaItems.brewVial, prefix("swigs_taken"), brewGetter);
consumer.accept(BotaniaItems.brewFlask, prefix("swigs_taken"), brewGetter);

in there it defined swigs_taken returned like : 1.02.03.0
but in ClampedItemPropertyFunction has some code:

@OnlyIn(Dist.CLIENT)
public interface ClampedItemPropertyFunction extends ItemPropertyFunction {
    /** @deprecated */
    @Deprecated
    default float call(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed) {
        return Mth.clamp(this.unclampedCall(stack, level, entity, seed), 0.0F, 1.0F);
    }

    float unclampedCall(ItemStack var1, @Nullable ClientLevel var2, @Nullable LivingEntity var3, int var4);
}

A Mth.clamp limited value force in range 0.0 to 1.0
and we see model.json

{
"parent": "minecraft:item/generated",
"overrides": [
{
"model": "botania:item/brew_flask_1",
"predicate": {
"botania:swigs_taken": 1.0
}
},
{
"model": "botania:item/brew_flask_2",
"predicate": {
"botania:swigs_taken": 2.0
}
},
{
"model": "botania:item/brew_flask_3",
"predicate": {
"botania:swigs_taken": 3.0
}
},
{
"model": "botania:item/brew_flask_4",
"predicate": {
"botania:swigs_taken": 4.0
}
},
{
"model": "botania:item/brew_flask_5",
"predicate": {
"botania:swigs_taken": 5.0
}
}
],
"textures": {
"layer0": "botania:item/flask",
"layer1": "botania:item/brew_flask_0"
}
}

defined value "botania:swigs_taken": 5.0 was out of range
so in game, all the texture after first override will never be used:

Image

curretsolution is in ItemModelProvider

OverrideHolder flaskOverrides = new OverrideHolder();
for (int i = 1; i <= 5; i++) {
ResourceLocation overrideModel = ModelLocationUtils.getModelLocation(brewFlask, "_" + i);
GENERATED_1.create(overrideModel,
TextureMapping.layer0(flask).put(LAYER1, overrideModel),
consumer);
flaskOverrides.add(overrideModel, Pair.of(prefix("swigs_taken"), (double) i));
}
GENERATED_OVERRIDES_1.create(ModelLocationUtils.getModelLocation(brewFlask),
TextureMapping.layer0(flask).put(LAYER1, TextureMapping.getItemTexture(brewFlask, "_0")),
flaskOverrides,
consumer);
items.remove(brewFlask);
OverrideHolder vialOverrides = new OverrideHolder();
for (int i = 1; i <= 3; i++) {
ResourceLocation overrideModel = ModelLocationUtils.getModelLocation(brewVial, "_" + i);
GENERATED_1.create(overrideModel,
TextureMapping.layer0(vial).put(LAYER1, overrideModel),
consumer);
vialOverrides.add(overrideModel, Pair.of(prefix("swigs_taken"), (double) i));
}
GENERATED_OVERRIDES_1.create(ModelLocationUtils.getModelLocation(brewVial),
TextureMapping.layer0(vial).put(LAYER1, TextureMapping.getItemTexture(brewVial, "_0")),
vialOverrides, consumer);
items.remove(brewVial);

flaskOverrides.add(overrideModel, Pair.of(prefix("swigs_taken"), (double) i));

make this (double) i * 0.1D

also remember in BotaniaItemProperties

return item.getSwigs() - item.getSwigsLeft(stack);

return 0.1F * (item.getSwigs() - item.getSwigsLeft(stack))

Steps to reproduce

No response

Other information

No response