diff --git a/build.gradle b/build.gradle index 634dc59..bdbd070 100644 --- a/build.gradle +++ b/build.gradle @@ -33,6 +33,8 @@ repositories { url = 'https://ladysnake.jfrog.io/artifactory/mods' } maven { url 'https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/' } + maven { url "https://maven.shedaniel.me/" } + maven { url "https://maven.terraformersmc.com/releases/" } } dependencies { @@ -58,6 +60,11 @@ dependencies { modCompileOnly "maven.modrinth:sodium:${sodium_version}" modRuntimeOnly "maven.modrinth:sodium:${sodium_version}" implementation "org.joml:joml:1.10.4" + + modApi("me.shedaniel.cloth:cloth-config-fabric:8.2.88") { + exclude(group: "net.fabricmc.fabric-api") + } + modApi "com.terraformersmc:modmenu:4.2.0-beta.2" } processResources { diff --git a/src/main/java/com/eightsidedsquare/angling/client/AnglingClient.java b/src/main/java/com/eightsidedsquare/angling/client/AnglingClient.java index 58eb7ac..89bd5fc 100644 --- a/src/main/java/com/eightsidedsquare/angling/client/AnglingClient.java +++ b/src/main/java/com/eightsidedsquare/angling/client/AnglingClient.java @@ -38,6 +38,7 @@ import static com.eightsidedsquare.angling.core.AnglingMod.MOD_ID; public class AnglingClient implements ClientModInitializer { + @Override public void onInitializeClient() { BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(), @@ -84,7 +85,6 @@ public void onInitializeClient() { ParticleFactoryRegistry.getInstance().register(AnglingParticles.WORM, WormParticle.Factory::new); ModelPredicateProviderRegistry.register(AnglingItems.DONGFISH_BUCKET, new Identifier(MOD_ID, "has_horngus"), this::dongfishBucketItemHasHorngus); - } private float dongfishBucketItemHasHorngus(ItemStack stack, ClientWorld clientWorld, LivingEntity livingEntity, int i) { diff --git a/src/main/java/com/eightsidedsquare/angling/config/AnglingConfig.java b/src/main/java/com/eightsidedsquare/angling/config/AnglingConfig.java new file mode 100644 index 0000000..139bcc3 --- /dev/null +++ b/src/main/java/com/eightsidedsquare/angling/config/AnglingConfig.java @@ -0,0 +1,11 @@ +package com.eightsidedsquare.angling.config; + +import me.shedaniel.autoconfig.ConfigData; +import me.shedaniel.autoconfig.annotation.Config; +import me.shedaniel.autoconfig.annotation.ConfigEntry; + +@Config(name = "angling") +public class AnglingConfig implements ConfigData { + @ConfigEntry.Category("client") + public boolean hideWaterBehindGlass = true; +} diff --git a/src/main/java/com/eightsidedsquare/angling/config/ModMenuIntegration.java b/src/main/java/com/eightsidedsquare/angling/config/ModMenuIntegration.java new file mode 100644 index 0000000..7d14ba7 --- /dev/null +++ b/src/main/java/com/eightsidedsquare/angling/config/ModMenuIntegration.java @@ -0,0 +1,13 @@ +package com.eightsidedsquare.angling.config; + +import com.eightsidedsquare.angling.config.AnglingConfig; +import com.terraformersmc.modmenu.api.ConfigScreenFactory; +import com.terraformersmc.modmenu.api.ModMenuApi; +import me.shedaniel.autoconfig.AutoConfig; + +public class ModMenuIntegration implements ModMenuApi { + @Override + public ConfigScreenFactory getModConfigScreenFactory() { + return parent -> AutoConfig.getConfigScreen(AnglingConfig.class, parent).get(); + } +} diff --git a/src/main/java/com/eightsidedsquare/angling/core/AnglingMod.java b/src/main/java/com/eightsidedsquare/angling/core/AnglingMod.java index de27244..0c428ba 100644 --- a/src/main/java/com/eightsidedsquare/angling/core/AnglingMod.java +++ b/src/main/java/com/eightsidedsquare/angling/core/AnglingMod.java @@ -2,13 +2,17 @@ import com.eightsidedsquare.angling.common.entity.util.*; import com.eightsidedsquare.angling.common.world.PelicanSpawner; +import com.eightsidedsquare.angling.config.AnglingConfig; import com.eightsidedsquare.angling.core.world.AnglingPlacedFeatures; +import me.shedaniel.autoconfig.AutoConfig; +import me.shedaniel.autoconfig.serializer.JanksonConfigSerializer; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import software.bernie.geckolib3.GeckoLib; public class AnglingMod implements ModInitializer { public static final String MOD_ID = "angling"; + public static AnglingConfig CONFIG; @Override public void onInitialize() { @@ -29,5 +33,8 @@ public void onInitialize() { PelicanSpawner spawner = new PelicanSpawner(); ServerTickEvents.END_WORLD_TICK.register(world -> spawner.spawn(world, world.getServer().isMonsterSpawningEnabled(), world.getServer().shouldSpawnAnimals())); + + AutoConfig.register(AnglingConfig.class, JanksonConfigSerializer::new); + CONFIG = AutoConfig.getConfigHolder(AnglingConfig.class).getConfig(); } } diff --git a/src/main/java/com/eightsidedsquare/angling/mixin/FluidRendererMixin.java b/src/main/java/com/eightsidedsquare/angling/mixin/FluidRendererMixin.java index 3ed142e..ed96bb6 100644 --- a/src/main/java/com/eightsidedsquare/angling/mixin/FluidRendererMixin.java +++ b/src/main/java/com/eightsidedsquare/angling/mixin/FluidRendererMixin.java @@ -1,5 +1,6 @@ package com.eightsidedsquare.angling.mixin; +import com.eightsidedsquare.angling.core.AnglingMod; import net.fabricmc.fabric.api.tag.convention.v1.ConventionalBlockTags; import net.minecraft.block.BlockState; import net.minecraft.client.render.block.FluidRenderer; @@ -18,7 +19,7 @@ public abstract class FluidRendererMixin { @Inject(method = "shouldRenderSide", at = @At("HEAD"), cancellable = true) private static void shouldRenderSide(BlockRenderView world, BlockPos pos, FluidState fluidState, BlockState blockState, Direction direction, FluidState neighborFluidState, CallbackInfoReturnable cir) { - if(fluidState.isIn(FluidTags.WATER)) { + if(AnglingMod.CONFIG.hideWaterBehindGlass && fluidState.isIn(FluidTags.WATER)) { if(world.getBlockState(pos.offset(direction)).isIn(ConventionalBlockTags.GLASS_BLOCKS)) { cir.setReturnValue(false); } diff --git a/src/main/java/com/eightsidedsquare/angling/mixin/integration/SodiumFluidRendererMixin.java b/src/main/java/com/eightsidedsquare/angling/mixin/integration/SodiumFluidRendererMixin.java index d870917..d852dcc 100644 --- a/src/main/java/com/eightsidedsquare/angling/mixin/integration/SodiumFluidRendererMixin.java +++ b/src/main/java/com/eightsidedsquare/angling/mixin/integration/SodiumFluidRendererMixin.java @@ -1,5 +1,6 @@ package com.eightsidedsquare.angling.mixin.integration; +import com.eightsidedsquare.angling.core.AnglingMod; import me.jellysquid.mods.sodium.client.render.pipeline.FluidRenderer; import net.fabricmc.fabric.api.tag.convention.v1.ConventionalBlockTags; import net.minecraft.block.BlockState; @@ -22,7 +23,7 @@ public abstract class SodiumFluidRendererMixin { @Inject(method = "isFluidOccluded", at = @At("RETURN"), cancellable = true) private void isFluidOccluded(BlockRenderView world, int x, int y, int z, Direction dir, Fluid fluid, CallbackInfoReturnable cir) { - if(!cir.getReturnValue()) { + if(AnglingMod.CONFIG.hideWaterBehindGlass && !cir.getReturnValue()) { BlockState state = world.getBlockState(new BlockPos(scratchPos).offset(dir.getOpposite())); BlockState sideState = world.getBlockState(scratchPos); if(state.getFluidState().isIn(FluidTags.WATER) && sideState.isIn(ConventionalBlockTags.GLASS_BLOCKS)) { diff --git a/src/main/resources/assets/angling/lang/en_us.json b/src/main/resources/assets/angling/lang/en_us.json index 45766ac..6a355d4 100644 --- a/src/main/resources/assets/angling/lang/en_us.json +++ b/src/main/resources/assets/angling/lang/en_us.json @@ -141,5 +141,7 @@ "advancements.husbandry.traded_with_pelican.title": "Paying the Bill", "advancements.husbandry.traded_with_pelican.description": "Trade the Fish inside a Pelican's Beak for another Fish", "advancements.husbandry.look_at_nautilus.title": "Cephalopod Activities", - "advancements.husbandry.look_at_nautilus.description": "Observe a Nautilus" + "advancements.husbandry.look_at_nautilus.description": "Observe a Nautilus", + "text.autoconfig.angling.title": "Angling Config", + "text.autoconfig.angling.option.hideWaterBehindGlass": "Hide Water Behind Glass" } \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 56df9ca..510ea1a 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -30,6 +30,9 @@ ], "preLaunch": [ "com.eightsidedsquare.angling.core.AnglingPreLaunch" + ], + "modmenu": [ + "com.eightsidedsquare.angling.config.ModMenuIntegration" ] }, "mixins": [ @@ -41,7 +44,8 @@ "fabricloader": ">=0.14.6", "fabric": "*", "minecraft": "~1.19", - "java": ">=17" + "java": ">=17", + "cloth-config2": ">=8.0.0" }, "custom": { "cardinal-components": [ @@ -49,5 +53,6 @@ ] }, "suggests": { + "modmenu": ">=4.0.0" } }