mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-02-08 06:26:43 +01:00
Disable leaf flowers on fast graphics
This commit is contained in:
parent
c924d81331
commit
2abeff5767
5 changed files with 66 additions and 3 deletions
|
@ -29,8 +29,6 @@ public class FruitBearingBlock extends LeavesBlock implements TintedBlock, Bucka
|
|||
public static final int WITHER_AGE = 15;
|
||||
public static final EnumProperty<Stage> STAGE = EnumProperty.of("stage", Stage.class);
|
||||
|
||||
public static final List<FruitBearingBlock> REGISTRY = new ArrayList<>();
|
||||
|
||||
private final Supplier<Block> fruit;
|
||||
private final Supplier<ItemStack> rottenFruitSupplier;
|
||||
|
||||
|
@ -47,7 +45,6 @@ public class FruitBearingBlock extends LeavesBlock implements TintedBlock, Bucka
|
|||
this.overlay = overlay;
|
||||
this.fruit = fruit;
|
||||
this.rottenFruitSupplier = rottenFruitSupplier;
|
||||
REGISTRY.add(this);
|
||||
FlammableBlockRegistry.getDefaultInstance().add(this, 30, 60);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
package com.minelittlepony.unicopia.compat.sodium;
|
||||
|
||||
import me.jellysquid.mods.sodium.client.SodiumClientMod;
|
||||
import net.fabricmc.fabric.api.util.TriState;
|
||||
|
||||
public class Impl implements SodiumDelegate {
|
||||
static Impl INSTANCE = new Impl();
|
||||
|
||||
@Override
|
||||
public TriState isFancyLeavesOrBetter() {
|
||||
return switch (SodiumClientMod.options().quality.leavesQuality) {
|
||||
case FAST -> TriState.FALSE;
|
||||
case FANCY -> TriState.TRUE;
|
||||
case DEFAULT -> TriState.DEFAULT;
|
||||
};
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package com.minelittlepony.unicopia.compat.sodium;
|
||||
|
||||
import net.fabricmc.fabric.api.util.TriState;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
|
||||
public interface SodiumDelegate {
|
||||
SodiumDelegate EMPTY = new SodiumDelegate() {};
|
||||
|
||||
static SodiumDelegate getInstance() {
|
||||
if (FabricLoader.getInstance().isModLoaded("sodium")) {
|
||||
return Impl.INSTANCE;
|
||||
}
|
||||
return EMPTY;
|
||||
}
|
||||
|
||||
default TriState isFancyLeavesOrBetter() {
|
||||
return TriState.DEFAULT;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package com.minelittlepony.unicopia.mixin.client;
|
||||
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
||||
|
||||
import com.minelittlepony.unicopia.block.FruitBearingBlock;
|
||||
import com.minelittlepony.unicopia.compat.sodium.SodiumDelegate;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.render.block.BlockModels;
|
||||
|
||||
@Mixin(BlockModels.class)
|
||||
abstract class MixinBlockModels {
|
||||
@ModifyVariable(
|
||||
method = "getModel(Lnet/minecraft/block/BlockState;)Lnet/minecraft/client/render/model/BakedModel;",
|
||||
at = @At("HEAD"),
|
||||
argsOnly = true,
|
||||
ordinal = 0
|
||||
)
|
||||
private BlockState getAppearance(BlockState state) {
|
||||
if (state.contains(FruitBearingBlock.STAGE)
|
||||
&& !SodiumDelegate.getInstance().isFancyLeavesOrBetter().orElse(MinecraftClient.isFancyGraphicsOrBetter())) {
|
||||
return state.with(FruitBearingBlock.STAGE, FruitBearingBlock.Stage.IDLE);
|
||||
}
|
||||
return state;
|
||||
}
|
||||
}
|
|
@ -65,6 +65,7 @@
|
|||
"client.MixinAnimalModel",
|
||||
"client.MixinArmorFeatureRenderer",
|
||||
"client.MixinBackgroundRenderer",
|
||||
"client.MixinBlockModels",
|
||||
"client.MixinCamera",
|
||||
"client.MixinClientWorld",
|
||||
"client.MixinClientPlayNetworkHandler",
|
||||
|
|
Loading…
Reference in a new issue