diff --git a/src/main/java/ru/betterend/mixin/common/ChunkGeneratorMixin.java b/src/main/java/ru/betterend/mixin/common/ChunkGeneratorMixin.java index ee1f54c9..c1cd1260 100644 --- a/src/main/java/ru/betterend/mixin/common/ChunkGeneratorMixin.java +++ b/src/main/java/ru/betterend/mixin/common/ChunkGeneratorMixin.java @@ -1,17 +1,23 @@ package ru.betterend.mixin.common; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.At; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ChunkRegion; +import net.minecraft.world.gen.StructureAccessor; import net.minecraft.world.gen.chunk.ChunkGenerator; +import ru.betterend.registry.DefaultBiomeFeatures; @Mixin(ChunkGenerator.class) public class ChunkGeneratorMixin { - /*@Inject(method = "generateFeatures", at = @At("RETURN")) + /*@Inject(method = "generateFeatures", at = @At("HEAD")) private void fixerPass(ChunkRegion region, StructureAccessor accessor, CallbackInfo info) { int chunkX = region.getCenterChunkX(); int chunkZ = region.getCenterChunkZ(); BlockPos start = new BlockPos(chunkX << 4, 16, chunkZ << 4); - BlockPos end = start.add(15, 64, 15); - BlocksHelper.fixBlocks(region, start, end); + DefaultBiomeFeatures.MOUNTAINS.getFeature() }*/ } diff --git a/src/main/java/ru/betterend/mixin/common/DefaultBiomeCreatorMixin.java b/src/main/java/ru/betterend/mixin/common/DefaultBiomeCreatorMixin.java new file mode 100644 index 00000000..2a93c3c3 --- /dev/null +++ b/src/main/java/ru/betterend/mixin/common/DefaultBiomeCreatorMixin.java @@ -0,0 +1,32 @@ +package ru.betterend.mixin.common; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; + +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.DefaultBiomeCreator; +import net.minecraft.world.biome.GenerationSettings; +import net.minecraft.world.gen.GenerationStep; +import net.minecraft.world.gen.feature.ConfiguredFeatures; +import net.minecraft.world.gen.feature.ConfiguredStructureFeatures; +import net.minecraft.world.gen.surfacebuilder.ConfiguredSurfaceBuilders; +import ru.betterend.registry.DefaultBiomeFeatures; + +@Mixin(DefaultBiomeCreator.class) +public class DefaultBiomeCreatorMixin { + @Shadow + private static Biome composeEndSpawnSettings(GenerationSettings.Builder builder) { + return null; + }; + + @Overwrite + public static Biome createEndHighlands() { + GenerationSettings.Builder builder = (new GenerationSettings.Builder()) + .surfaceBuilder(ConfiguredSurfaceBuilders.END).structureFeature(ConfiguredStructureFeatures.END_CITY) + .feature(GenerationStep.Feature.SURFACE_STRUCTURES, ConfiguredFeatures.END_GATEWAY) + .feature(GenerationStep.Feature.VEGETAL_DECORATION, ConfiguredFeatures.CHORUS_PLANT) + .feature(DefaultBiomeFeatures.MOUNTAINS.getFeatureStep(), DefaultBiomeFeatures.MOUNTAINS.getFeatureConfigured()); + return composeEndSpawnSettings(builder); + } +} diff --git a/src/main/java/ru/betterend/registry/BiomeRegistry.java b/src/main/java/ru/betterend/registry/BiomeRegistry.java index 7f2202c4..47cd9d6c 100644 --- a/src/main/java/ru/betterend/registry/BiomeRegistry.java +++ b/src/main/java/ru/betterend/registry/BiomeRegistry.java @@ -26,7 +26,7 @@ public class BiomeRegistry { public static final EndBiome END = registerBiome(BiomeKeys.THE_END, BiomeType.LAND, true); public static final EndBiome END_BARRENS = registerBiome(BiomeKeys.END_BARRENS, BiomeType.VOID, true); - public static final EndBiome END_HIGHLANDS = registerBiome(BiomeKeys.END_HIGHLANDS, BiomeType.LAND, false); + public static final EndBiome END_HIGHLANDS = registerBiome(BiomeKeys.END_HIGHLANDS, BiomeType.LAND, true); public static final EndBiome END_MIDLANDS = registerBiome(BiomeKeys.END_MIDLANDS, BiomeType.LAND, false); public static final EndBiome SMALL_END_ISLANDS = registerBiome(BiomeKeys.SMALL_END_ISLANDS, BiomeType.VOID, true); public static final EndBiome FOGGY_MUSHROOMLAND = registerBiome(new BiomeFoggyMushroomland(), BiomeType.LAND); diff --git a/src/main/java/ru/betterend/registry/DefaultBiomeFeatures.java b/src/main/java/ru/betterend/registry/DefaultBiomeFeatures.java new file mode 100644 index 00000000..5f1b33b2 --- /dev/null +++ b/src/main/java/ru/betterend/registry/DefaultBiomeFeatures.java @@ -0,0 +1,8 @@ +package ru.betterend.registry; + +import ru.betterend.world.features.EndFeature; +import ru.betterend.world.features.MountainFeature; + +public class DefaultBiomeFeatures { + public static final EndFeature MOUNTAINS = EndFeature.makeChunkFeature("mountains", new MountainFeature()); +} diff --git a/src/main/java/ru/betterend/registry/FeatureRegistry.java b/src/main/java/ru/betterend/registry/FeatureRegistry.java index 7e453e50..7312db5f 100644 --- a/src/main/java/ru/betterend/registry/FeatureRegistry.java +++ b/src/main/java/ru/betterend/registry/FeatureRegistry.java @@ -5,6 +5,7 @@ import ru.betterend.world.features.DoublePlantFeature; import ru.betterend.world.features.EndFeature; import ru.betterend.world.features.EndLakeFeature; import ru.betterend.world.features.MossyGlowshroomFeature; +import ru.betterend.world.features.MountainFeature; import ru.betterend.world.features.SinglePlantFeature; import ru.betterend.world.features.VineFeature; diff --git a/src/main/java/ru/betterend/world/features/MountainFeature.java b/src/main/java/ru/betterend/world/features/MountainFeature.java new file mode 100644 index 00000000..e4f66704 --- /dev/null +++ b/src/main/java/ru/betterend/world/features/MountainFeature.java @@ -0,0 +1,73 @@ +package ru.betterend.world.features; + +import java.util.Random; + +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockPos.Mutable; +import net.minecraft.world.StructureWorldAccess; +import net.minecraft.world.gen.chunk.ChunkGenerator; +import net.minecraft.world.gen.feature.DefaultFeatureConfig; +import ru.betterend.registry.BiomeRegistry; +import ru.betterend.util.BlocksHelper; + +public class MountainFeature extends DefaultFeature { + private static final Mutable POS = new Mutable(); + + @Override + public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos blockPos, DefaultFeatureConfig featureConfig) { + int px = (blockPos.getX() >> 4) << 4; + int pz = (blockPos.getZ() >> 4) << 4; + for (int x = 0; x < 16; x++) { + POS.setX(px | x); + for (int z = 0; z < 16; z++) { + POS.setZ(pz | z); + int min = this.getPosOnSurfaceWG(world, POS).getY(); + if (min > 50) { + double max = getHeightSmooth(world, 7) * 10 + min; + for (int y = min; y < max; y++) { + POS.setY(y); + BlocksHelper.setWithoutUpdate(world, POS, Blocks.END_STONE); + } + } + } + } + + return true; + } + + private int getHeight(StructureWorldAccess world) { + if (BiomeRegistry.getFromBiome(world.getBiome(POS)) != BiomeRegistry.END_HIGHLANDS) { + return -4; + } + int h = this.getPosOnSurfaceWG(world, POS).getY(); + if (h < 57) { + return 0; + } + return h - 57; + } + + private double getHeightSmooth(StructureWorldAccess world, int radius) { + int sx = POS.getX(); + int sz = POS.getZ(); + int r2 = radius * radius; + double height = 0; + double max = 0; + for (int x = -radius; x <= radius; x++) { + POS.setX(sx + x); + int x2 = x * x; + for (int z = -radius; z <= radius; z++) { + POS.setZ(sz + z); + int z2 = z * z; + if (x2 + z2 < r2) { + double mult = 1 - Math.sqrt(x2 + z2) / radius; + max += mult; + height += getHeight(world) * mult; + } + } + } + POS.setX(sx); + POS.setZ(sz); + return height / max; + } +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_fur.json b/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_fur.json new file mode 100644 index 00000000..4893c261 --- /dev/null +++ b/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_fur.json @@ -0,0 +1,3 @@ +{ + "defaultMaterial": "betterend:wave_glow_all" +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_hymenophore.json b/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_hymenophore.json new file mode 100644 index 00000000..c2b812b6 --- /dev/null +++ b/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_hymenophore.json @@ -0,0 +1,3 @@ +{ + "defaultMaterial": "betterend:glow_all" +} diff --git a/src/main/resources/assets/betterend/materials/glow_10.json b/src/main/resources/assets/betterend/materials/glow_10.json new file mode 100644 index 00000000..b7e484ad --- /dev/null +++ b/src/main/resources/assets/betterend/materials/glow_10.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_10.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_33.json b/src/main/resources/assets/betterend/materials/glow_33.json new file mode 100644 index 00000000..f46cadaa --- /dev/null +++ b/src/main/resources/assets/betterend/materials/glow_33.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_33.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_50.json b/src/main/resources/assets/betterend/materials/glow_50.json new file mode 100644 index 00000000..51c1620a --- /dev/null +++ b/src/main/resources/assets/betterend/materials/glow_50.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_50.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_50_half.json b/src/main/resources/assets/betterend/materials/glow_50_half.json new file mode 100644 index 00000000..bbc2233f --- /dev/null +++ b/src/main/resources/assets/betterend/materials/glow_50_half.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_50_half.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_all.json b/src/main/resources/assets/betterend/materials/glow_all.json new file mode 100644 index 00000000..7bc59ca7 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/glow_all.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_all.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_all_half.json b/src/main/resources/assets/betterend/materials/glow_all_half.json new file mode 100644 index 00000000..24cbf346 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/glow_all_half.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_all_half.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_inc.json b/src/main/resources/assets/betterend/materials/glow_inc.json new file mode 100644 index 00000000..bbb22a51 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/glow_inc.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_inc.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_transparent.json b/src/main/resources/assets/betterend/materials/glow_transparent.json new file mode 100644 index 00000000..e2711368 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/glow_transparent.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_transparent.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/large_wave_glow_50_half.json b/src/main/resources/assets/betterend/materials/large_wave_glow_50_half.json new file mode 100644 index 00000000..df4d43d6 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/large_wave_glow_50_half.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave_large.vert", + "fragmentSource": "betterend:shaders/material/glow_50_half.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/large_wave_glow_inc.json b/src/main/resources/assets/betterend/materials/large_wave_glow_inc.json new file mode 100644 index 00000000..1fd992b1 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/large_wave_glow_inc.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave_large.vert", + "fragmentSource": "betterend:shaders/material/glow_inc.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/noshade.json b/src/main/resources/assets/betterend/materials/noshade.json new file mode 100644 index 00000000..ffc32c09 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/noshade.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/offset_floor.json b/src/main/resources/assets/betterend/materials/offset_floor.json new file mode 100644 index 00000000..4e6bf34e --- /dev/null +++ b/src/main/resources/assets/betterend/materials/offset_floor.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/offset_floor.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/small_wave_glow_50_half.json b/src/main/resources/assets/betterend/materials/small_wave_glow_50_half.json new file mode 100644 index 00000000..ecf415e6 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/small_wave_glow_50_half.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/small_wave.vert", + "fragmentSource": "betterend:shaders/material/glow_50_half.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/wave_glow_33.json b/src/main/resources/assets/betterend/materials/wave_glow_33.json new file mode 100644 index 00000000..df18184f --- /dev/null +++ b/src/main/resources/assets/betterend/materials/wave_glow_33.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave.vert", + "fragmentSource": "betterend:shaders/material/glow_33.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/wave_glow_33_half.json b/src/main/resources/assets/betterend/materials/wave_glow_33_half.json new file mode 100644 index 00000000..c40b5f6a --- /dev/null +++ b/src/main/resources/assets/betterend/materials/wave_glow_33_half.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave.vert", + "fragmentSource": "betterend:shaders/material/glow_33_half.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/wave_glow_50_half.json b/src/main/resources/assets/betterend/materials/wave_glow_50_half.json new file mode 100644 index 00000000..ac6d5690 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/wave_glow_50_half.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave.vert", + "fragmentSource": "betterend:shaders/material/glow_50_half.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/wave_glow_all.json b/src/main/resources/assets/betterend/materials/wave_glow_all.json new file mode 100644 index 00000000..819681c0 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/wave_glow_all.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave.vert", + "fragmentSource": "betterend:shaders/material/glow_all.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/wave_glow_inc.json b/src/main/resources/assets/betterend/materials/wave_glow_inc.json new file mode 100644 index 00000000..e3c2b735 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/wave_glow_inc.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave.vert", + "fragmentSource": "betterend:shaders/material/glow_inc.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving.json b/src/main/resources/assets/betterend/materials/waving.json new file mode 100644 index 00000000..71f35bb3 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/waving.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving_floor.json b/src/main/resources/assets/betterend/materials/waving_floor.json new file mode 100644 index 00000000..5f325724 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/waving_floor.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave_floor.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving_large.json b/src/main/resources/assets/betterend/materials/waving_large.json new file mode 100644 index 00000000..3750a965 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/waving_large.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave_large.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving_small.json b/src/main/resources/assets/betterend/materials/waving_small.json new file mode 100644 index 00000000..19a9696e --- /dev/null +++ b/src/main/resources/assets/betterend/materials/waving_small.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/small_wave.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving_wall.json b/src/main/resources/assets/betterend/materials/waving_wall.json new file mode 100644 index 00000000..41d94a37 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/waving_wall.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wall_wave.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving_wall_glow_all.json b/src/main/resources/assets/betterend/materials/waving_wall_glow_all.json new file mode 100644 index 00000000..17bb32e7 --- /dev/null +++ b/src/main/resources/assets/betterend/materials/waving_wall_glow_all.json @@ -0,0 +1,10 @@ +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wall_wave.vert", + "fragmentSource": "canvas:shaders/material/glow_all.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_10.frag b/src/main/resources/assets/betterend/shaders/material/glow_10.frag new file mode 100644 index 00000000..70f71947 --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/glow_10.frag @@ -0,0 +1,6 @@ +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.1 ? 1 : 0; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_33.frag b/src/main/resources/assets/betterend/shaders/material/glow_33.frag new file mode 100644 index 00000000..1aa1b27d --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/glow_33.frag @@ -0,0 +1,6 @@ +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.33 ? 1 : 0; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_33_half.frag b/src/main/resources/assets/betterend/shaders/material/glow_33_half.frag new file mode 100644 index 00000000..17f1e47e --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/glow_33_half.frag @@ -0,0 +1,6 @@ +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.33 ? 0.5 : 0; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_50.frag b/src/main/resources/assets/betterend/shaders/material/glow_50.frag new file mode 100644 index 00000000..40a3441b --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/glow_50.frag @@ -0,0 +1,6 @@ +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.5 ? 1 : 0; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_50_half.frag b/src/main/resources/assets/betterend/shaders/material/glow_50_half.frag new file mode 100644 index 00000000..349cfacc --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/glow_50_half.frag @@ -0,0 +1,6 @@ +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.5 ? 0.5 : 0; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_all.frag b/src/main/resources/assets/betterend/shaders/material/glow_all.frag new file mode 100644 index 00000000..2458e833 --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/glow_all.frag @@ -0,0 +1,6 @@ +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = 1; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_all_half.frag b/src/main/resources/assets/betterend/shaders/material/glow_all_half.frag new file mode 100644 index 00000000..7bb29ff4 --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/glow_all_half.frag @@ -0,0 +1,6 @@ +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = 0.5; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_inc.frag b/src/main/resources/assets/betterend/shaders/material/glow_inc.frag new file mode 100644 index 00000000..7000eb4f --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/glow_inc.frag @@ -0,0 +1,7 @@ +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + float light = frx_luminance(fragData.spriteColor.rgb) * 2 - 0.3; + fragData.emissivity = clamp(light, 0, 1); +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_transparent.frag b/src/main/resources/assets/betterend/shaders/material/glow_transparent.frag new file mode 100644 index 00000000..562c7ace --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/glow_transparent.frag @@ -0,0 +1,8 @@ +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = 1; + fragData.ao = false; + fragData.diffuse = false; +} diff --git a/src/main/resources/assets/betterend/shaders/material/offset_floor.vert b/src/main/resources/assets/betterend/shaders/material/offset_floor.vert new file mode 100644 index 00000000..a80a3b5e --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/offset_floor.vert @@ -0,0 +1,18 @@ +#include frex:shaders/api/vertex.glsl +#include frex:shaders/api/world.glsl +#include frex:shaders/lib/math.glsl +#include frex:shaders/lib/noise/noise4d.glsl + +/****************************************************** + Based on "GPU-Generated Procedural Wind Animations for Trees" + by Renaldas Zioma in GPU Gems 3, 2007 + https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees + + Remake of canvas default shader for the Nether +******************************************************/ + +#define NOISE_SCALE 0.125 + +void frx_startVertex(inout frx_VertexData data) { + data.vertex.xz += data.normal.xz * data.spriteUV.y * 0.02; +} diff --git a/src/main/resources/assets/betterend/shaders/material/small_wave.vert b/src/main/resources/assets/betterend/shaders/material/small_wave.vert new file mode 100644 index 00000000..2d726f17 --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/small_wave.vert @@ -0,0 +1,24 @@ +#include frex:shaders/api/vertex.glsl +#include frex:shaders/api/world.glsl +#include frex:shaders/lib/math.glsl +#include frex:shaders/lib/noise/noise4d.glsl + +/****************************************************** + Based on "GPU-Generated Procedural Wind Animations for Trees" + by Renaldas Zioma in GPU Gems 3, 2007 + https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees + + Remake of canvas default shader for the Nether +******************************************************/ + +void frx_startVertex(inout frx_VertexData data) { + #ifdef ANIMATED_FOLIAGE + float t = frx_renderSeconds() * 0.05; + + vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * 0.5; + float wind = snoise(vec4(pos, t)) * 0.02; + + data.vertex.x += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; + data.vertex.z += sin(t * 19) * wind; + #endif +} diff --git a/src/main/resources/assets/betterend/shaders/material/wall_wave.vert b/src/main/resources/assets/betterend/shaders/material/wall_wave.vert new file mode 100644 index 00000000..89df1916 --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/wall_wave.vert @@ -0,0 +1,30 @@ +#include frex:shaders/api/vertex.glsl +#include frex:shaders/api/world.glsl +#include frex:shaders/lib/math.glsl +#include frex:shaders/lib/noise/noise4d.glsl + +/****************************************************** + Based on "GPU-Generated Procedural Wind Animations for Trees" + by Renaldas Zioma in GPU Gems 3, 2007 + https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees + + Remake of canvas default shader for the Nether +******************************************************/ + +void frx_startVertex(inout frx_VertexData data) { + #ifdef ANIMATED_FOLIAGE + float t = frx_renderSeconds() * 0.05; + + vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * 0.5; + float wind = snoise(vec4(pos, t)) * 0.1; + + //vec3 center = frx_modelOriginWorldPos() + vec3(0.5); + //vec3 absDist = abs(pos - center) * 2; + //wind *= clamp(1 - absDist.x + absDist.y + absDist.z, 0, 1); + wind *= 1 - data.spriteUV.y; + + data.vertex.y += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; + data.vertex.x += cos(t * 14) * wind; + data.vertex.z += sin(t * 19) * wind; + #endif +} diff --git a/src/main/resources/assets/betterend/shaders/material/wave.vert b/src/main/resources/assets/betterend/shaders/material/wave.vert new file mode 100644 index 00000000..df877506 --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/wave.vert @@ -0,0 +1,26 @@ +#include frex:shaders/api/vertex.glsl +#include frex:shaders/api/world.glsl +#include frex:shaders/lib/math.glsl +#include frex:shaders/lib/noise/noise4d.glsl + +/****************************************************** + Based on "GPU-Generated Procedural Wind Animations for Trees" + by Renaldas Zioma in GPU Gems 3, 2007 + https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees + + Remake of canvas default shader for the Nether +******************************************************/ + +#define NOISE_SCALE 0.125 + +void frx_startVertex(inout frx_VertexData data) { + #ifdef ANIMATED_FOLIAGE + float t = frx_renderSeconds() * 0.05; + + vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * NOISE_SCALE; + float wind = snoise(vec4(pos, t)) * 0.1; + + data.vertex.x += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; + data.vertex.z += sin(t * 19) * wind; + #endif +} diff --git a/src/main/resources/assets/betterend/shaders/material/wave_floor.vert b/src/main/resources/assets/betterend/shaders/material/wave_floor.vert new file mode 100644 index 00000000..eaeb9b7c --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/wave_floor.vert @@ -0,0 +1,27 @@ +#include frex:shaders/api/vertex.glsl +#include frex:shaders/api/world.glsl +#include frex:shaders/lib/math.glsl +#include frex:shaders/lib/noise/noise4d.glsl + +/****************************************************** + Based on "GPU-Generated Procedural Wind Animations for Trees" + by Renaldas Zioma in GPU Gems 3, 2007 + https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees + + Remake of canvas default shader for the Nether +******************************************************/ + +#define NOISE_SCALE 0.125 + +void frx_startVertex(inout frx_VertexData data) { + #ifdef ANIMATED_FOLIAGE + float t = frx_renderSeconds() * 0.05; + + vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * NOISE_SCALE; + float wind = snoise(vec4(pos, t)) * 0.2; + wind *= 1 - data.spriteUV.y; + + data.vertex.x += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; + data.vertex.z += sin(t * 19) * wind; + #endif +} diff --git a/src/main/resources/assets/betterend/shaders/material/wave_large.vert b/src/main/resources/assets/betterend/shaders/material/wave_large.vert new file mode 100644 index 00000000..c2d2019e --- /dev/null +++ b/src/main/resources/assets/betterend/shaders/material/wave_large.vert @@ -0,0 +1,24 @@ +#include frex:shaders/api/vertex.glsl +#include frex:shaders/api/world.glsl +#include frex:shaders/lib/math.glsl +#include frex:shaders/lib/noise/noise4d.glsl + +/****************************************************** + Based on "GPU-Generated Procedural Wind Animations for Trees" + by Renaldas Zioma in GPU Gems 3, 2007 + https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees + + Remake of canvas default shader for the Nether +******************************************************/ + +void frx_startVertex(inout frx_VertexData data) { + #ifdef ANIMATED_FOLIAGE + float t = frx_renderSeconds() * 0.05; + + vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * 0.0625; + float wind = snoise(vec4(pos, t)) * 0.25; + + data.vertex.x += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; + data.vertex.z += sin(t * 19) * wind; + #endif +} diff --git a/src/main/resources/betterend.mixins.common.json b/src/main/resources/betterend.mixins.common.json index 33fd2062..e9029b91 100644 --- a/src/main/resources/betterend.mixins.common.json +++ b/src/main/resources/betterend.mixins.common.json @@ -15,7 +15,8 @@ "LivingEntityMixin", "BiomeMixin", "SlimeEntityMixin", - "LocateCommandMixin" + "LocateCommandMixin", + "DefaultBiomeCreatorMixin" ], "injectors": { "defaultRequire": 1