Skip to content

Commit 93017e0

Browse files
committed
Fluid Selection setting in XRay, including flowing water, water, flowing lava and lava. Helpful for removing large areas as you can disable flowing water to only see sources
1 parent 746f599 commit 93017e0

43 files changed

Lines changed: 194 additions & 66 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/main/java/com/lambda/mixin/render/AbstractBlockRenderContextMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class AbstractBlockRenderContextMixin {
3232

3333
@ModifyReturnValue(method = "shouldDrawSide", at = @At("RETURN"))
3434
private boolean modifyShouldDrawSide(boolean original) {
35-
if (XRay.INSTANCE.isEnabled() && XRay.isSelected(state) && XRay.getOpacity() < 100)
35+
if (XRay.INSTANCE.isEnabled() && XRay.getBlockSelection().contains(state.getBlock()) && XRay.getOpacity() < 100)
3636
return true;
3737
return original;
3838
}

src/main/java/com/lambda/mixin/render/AbstractTerrainRenderContextMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class AbstractTerrainRenderContextMixin {
3636

3737
@Inject(method = "bufferQuad", at = @At(value = "INVOKE", target = "Lnet/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractTerrainRenderContext;bufferQuad(Lnet/fabricmc/fabric/impl/client/indigo/renderer/mesh/MutableQuadViewImpl;Lnet/minecraft/client/render/VertexConsumer;)V"), cancellable = true)
3838
private void injectBufferQuad(MutableQuadViewImpl quad, CallbackInfo ci) {
39-
if (XRay.INSTANCE.isDisabled() || XRay.isSelected(blockInfo.blockState)) return;
39+
if (XRay.INSTANCE.isDisabled() || XRay.getBlockSelection().contains(blockInfo.blockState.getBlock())) return;
4040
int opacity = XRay.getOpacity();
4141

4242
if (opacity == 0) ci.cancel();

src/main/java/com/lambda/mixin/render/BlockMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
public class BlockMixin {
3030
@ModifyReturnValue(method = "shouldDrawSide", at = @At("RETURN"))
3131
private static boolean modifyShouldDrawSide(boolean original, BlockState state, BlockState otherState, Direction side) {
32-
if (XRay.INSTANCE.isEnabled() && XRay.isSelected(state) && XRay.getOpacity() < 100)
32+
if (XRay.INSTANCE.isEnabled() && XRay.getBlockSelection().contains(state.getBlock()) && XRay.getOpacity() < 100)
3333
return true;
3434
return original;
3535
}

src/main/java/com/lambda/mixin/render/FluidRendererMixin.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,11 @@ public class FluidRendererMixin {
3737

3838
@Inject(method = "render", at = @At("HEAD"), cancellable = true)
3939
private void injectRender(BlockRenderView world, BlockPos pos, VertexConsumer vertexConsumer, BlockState blockState, FluidState fluidState, CallbackInfo info) {
40-
if (XRay.INSTANCE.isDisabled()) {
40+
if (XRay.INSTANCE.isDisabled() || !XRay.getFluidSelection().contains(fluidState.getFluid())) {
4141
opacity.set(255);
4242
return;
4343
}
44+
4445
int alpha = (int) (XRay.getOpacity() * 2.55);
4546

4647
if (alpha == 0) info.cancel();

src/main/java/com/lambda/mixin/render/RenderLayersMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ private static void injectGetBlockLayer(BlockState state, CallbackInfoReturnable
3434
if (XRay.INSTANCE.isDisabled()) return;
3535
final var opacity = XRay.getOpacity();
3636
if (opacity <= 0 || opacity >= 100) return;
37-
if (!XRay.isSelected(state)) cir.setReturnValue(BlockRenderLayer.TRANSLUCENT);
37+
if (!XRay.getBlockSelection().contains(state.getBlock())) cir.setReturnValue(BlockRenderLayer.TRANSLUCENT);
3838
}
3939

4040
@Inject(method = "getFluidLayer", at = @At("HEAD"), cancellable = true)

src/main/java/com/lambda/mixin/render/SodiumBlockRendererMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
public class SodiumBlockRendererMixin {
3232
@Inject(method = "renderModel", at = @At(value = "INVOKE", target = "Lnet/caffeinemc/mods/sodium/client/model/color/ColorProviderRegistry;getColorProvider(Lnet/minecraft/block/Block;)Lnet/caffeinemc/mods/sodium/client/model/color/ColorProvider;", shift = At.Shift.AFTER), cancellable = true)
3333
private void injectRenderModel(BlockStateModel model, BlockState state, BlockPos pos, BlockPos origin, CallbackInfo ci) {
34-
if (XRay.INSTANCE.isEnabled() && !XRay.isSelected(state) && XRay.getOpacity() < 100)
34+
if (XRay.INSTANCE.isEnabled() && !XRay.getBlockSelection().contains(state.getBlock()) && XRay.getOpacity() < 100)
3535
ci.cancel();
3636
}
3737
}

src/main/java/com/lambda/mixin/render/SodiumFluidRendererImplMixin.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@
3434
public class SodiumFluidRendererImplMixin {
3535
@Inject(method = "render", at = @At("HEAD"), cancellable = true)
3636
private void injectRender(LevelSlice level, BlockState blockState, FluidState fluidState, BlockPos blockPos, BlockPos offset, TranslucentGeometryCollector collector, ChunkBuildBuffers buffers, CallbackInfo info) {
37-
if (XRay.INSTANCE.isEnabled() && !XRay.isSelected(blockState) && XRay.getOpacity() < 100)
38-
info.cancel();
37+
if (XRay.INSTANCE.isEnabled() &&
38+
!XRay.getFluidSelection().contains(fluidState.getFluid()) &&
39+
XRay.getOpacity() < 100
40+
) info.cancel();
3941
}
4042
}

src/main/java/com/lambda/mixin/render/SodiumLightDataAccessMixin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ public class SodiumLightDataAccessMixin {
3939
@ModifyVariable(method = "compute", at = @At(value = "TAIL"), name = "bl")
4040
private int modifyLight(int value) {
4141
if (XRay.INSTANCE.isEnabled()) {
42-
final var blockState = level.getBlockState(pos);
43-
if (XRay.isSelected(blockState)) return 0xFFF;
42+
final var block = level.getBlockState(pos).getBlock();
43+
if (XRay.getBlockSelection().contains(block)) return 0xFFF;
4444
}
4545

4646
return value;

src/main/kotlin/com/lambda/config/Config.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import com.lambda.config.settings.StringSetting
3030
import com.lambda.config.settings.collections.BlockCollectionSetting
3131
import com.lambda.config.settings.collections.ClassCollectionSetting
3232
import com.lambda.config.settings.collections.CollectionSetting
33+
import com.lambda.config.settings.collections.FluidCollectionSetting
3334
import com.lambda.config.settings.collections.ItemCollectionSetting
3435
import com.lambda.config.settings.collections.MapSetting
3536
import com.lambda.config.settings.comparable.BooleanSetting
@@ -49,6 +50,7 @@ import com.lambda.imgui.flag.ImGuiInputTextFlags
4950
import com.lambda.util.KeyCode
5051
import com.lambda.util.Nameable
5152
import net.minecraft.block.Block
53+
import net.minecraft.fluid.Fluid
5254
import net.minecraft.item.Item
5355
import net.minecraft.registry.Registries
5456
import net.minecraft.util.math.BlockPos
@@ -242,6 +244,16 @@ abstract class Config(
242244

243245
@ConfigEntryDsl
244246
@JvmName("collectionSetting3")
247+
fun setting(
248+
name: String,
249+
defaultValue: Collection<Fluid>,
250+
immutableCollection: Collection<Fluid> = Registries.FLUID.toList(),
251+
description: String = "",
252+
visibility: () -> Boolean = { true }
253+
) = setting(name) { layer -> FluidCollectionSetting(name, description, this, layer, visibility, immutableCollection, defaultValue.toMutableList()) }
254+
255+
@ConfigEntryDsl
256+
@JvmName("collectionSetting4")
245257
inline fun <reified T : Any> setting(
246258
name: String,
247259
defaultValue: Collection<T>,

src/main/kotlin/com/lambda/config/ConfigEditor.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ package com.lambda.config
2121

2222
import com.lambda.config.entries.Property
2323
import com.lambda.config.entries.Setting
24+
import com.lambda.config.entries.Setting.Companion.onValueChange
2425
import com.lambda.context.SafeContext
2526
import kotlin.reflect.KProperty0
2627
import kotlin.reflect.jvm.isAccessible

0 commit comments

Comments
 (0)