Skip to content

Commit

Permalink
Added sodium compatibility for code hider
Browse files Browse the repository at this point in the history
  • Loading branch information
KingsMMA committed Jul 10, 2023
1 parent 97cd1de commit 0ccff13
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 12 deletions.
5 changes: 5 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ repositories {
maven {
url "https://jitpack.io"
}

maven {
url "https://api.modrinth.com/maven"
}
}

dependencies {
Expand All @@ -26,6 +30,7 @@ dependencies {

// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
modImplementation "maven.modrinth:sodium:mc1.19.4-0.4.10"
}

processResources {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package dev.kingrabbit.fruitfulutilities.config.categories;

import dev.kingrabbit.fruitfulutilities.FruitfulUtilities;
import dev.kingrabbit.fruitfulutilities.config.CategoryInfo;
import dev.kingrabbit.fruitfulutilities.config.ConfigCategory;
import dev.kingrabbit.fruitfulutilities.config.properties.ConfigBoolean;
import net.minecraft.client.MinecraftClient;
import net.minecraft.util.math.BlockPos;

@SuppressWarnings("CanBeFinal")
@CategoryInfo(id = "code_hider", display = "Code Hider")
Expand All @@ -17,4 +20,15 @@ public class CodeHiderCategory extends ConfigCategory {
@ConfigBoolean(id = "all", display = "Hide Non-Plot Blocks", description = "Hides all blocks not on the plot. Only activates when inside the plot")
public boolean hideAll = true;

public static boolean shouldHideBlock(BlockPos pos) {
if (MinecraftClient.getInstance().player == null) return false;
if (!FruitfulUtilities.getInstance().configManager.enabled()) return false;
if (FruitfulUtilities.inPlot(pos) || !FruitfulUtilities.inPlot(MinecraftClient.getInstance().player.getBlockPos()))
return false;

CodeHiderCategory category = FruitfulUtilities.getInstance().configManager.getCategory(CodeHiderCategory.class);
if (!category.enabled || !category.hideAll) return false;
return true;
}

}
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package dev.kingrabbit.fruitfulutilities.mixin;

import dev.kingrabbit.fruitfulutilities.FruitfulUtilities;
import dev.kingrabbit.fruitfulutilities.config.categories.CodeHiderCategory;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.chunk.ChunkRendererRegion;
import net.minecraft.util.math.BlockPos;
import org.spongepowered.asm.mixin.Mixin;
Expand All @@ -17,15 +15,7 @@ public class ChunkRendererRegionMixin {

@Inject(method = "getBlockState", at = @At("HEAD"), cancellable = true)
public void getBlockState(BlockPos pos, CallbackInfoReturnable<BlockState> cir) {
if (MinecraftClient.getInstance().player == null) return;
if (!FruitfulUtilities.getInstance().configManager.enabled()) return;
if (FruitfulUtilities.inPlot(pos) || !FruitfulUtilities.inPlot(MinecraftClient.getInstance().player.getBlockPos())) return;

CodeHiderCategory category = FruitfulUtilities.getInstance().configManager.getCategory(CodeHiderCategory.class);
if (!category.enabled || !category.hideAll) return;

cir.setReturnValue(Blocks.VOID_AIR.getDefaultState());

if (CodeHiderCategory.shouldHideBlock(pos)) cir.setReturnValue(Blocks.VOID_AIR.getDefaultState());;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package dev.kingrabbit.fruitfulutilities.mixin.compatibility.sodium;

import dev.kingrabbit.fruitfulutilities.FruitfulUtilities;
import dev.kingrabbit.fruitfulutilities.config.ConfigManager;
import dev.kingrabbit.fruitfulutilities.config.categories.CodeHiderCategory;
import me.jellysquid.mods.sodium.client.render.occlusion.BlockOcclusionCache;
import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.world.BlockView;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

@Pseudo
@Mixin(BlockOcclusionCache.class)
public class BlockOcclusionCacheMixin {

@Inject(method = "shouldDrawSide", at = @At("RETURN"), cancellable = true)
public void shouldDrawSide(BlockState selfState, BlockView view, BlockPos pos, Direction facing, CallbackInfoReturnable<Boolean> cir) {
if (CodeHiderCategory.shouldHideBlock(pos)) {
cir.setReturnValue(false);
}

ConfigManager configManager = FruitfulUtilities.getInstance().configManager;
CodeHiderCategory category = configManager.getCategory(CodeHiderCategory.class);
if (configManager.enabled() && category.enabled && category.hideAll) {
if (pos.getZ() == -4270 && -675 >= pos.getX() && pos.getX() >= -975 && facing == Direction.NORTH) cir.setReturnValue(true);
else if (pos.getX() == -675 && -3970 >= pos.getZ() && pos.getZ() >= -4270 && facing == Direction.EAST) cir.setReturnValue(true);
else if (pos.getZ() == -3970 && -3970 >= pos.getX() && pos.getX() >= -975 && facing == Direction.SOUTH) cir.setReturnValue(true);
else if (pos.getX() == -975 && -3970 >= pos.getZ() && pos.getZ() >= -4270 && facing == Direction.WEST) cir.setReturnValue(true);
}
}

}
3 changes: 2 additions & 1 deletion src/main/resources/fruitfulutilities.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"ChunkRendererRegionMixin",
"ClientPlayNetworkHandlerMixin",
"InGameHudMixin",
"PlayerInventoryMixin"
"PlayerInventoryMixin",
"compatibility.sodium.BlockOcclusionCacheMixin"
],
"injectors": {
"defaultRequire": 1
Expand Down

0 comments on commit 0ccff13

Please sign in to comment.