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.0
、2.0
、 3.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:

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