diff --git a/src/main/java/ru/betterend/integration/NourishIntegration.java b/src/main/java/ru/betterend/integration/NourishIntegration.java index 37a92fa6..ca0efca9 100644 --- a/src/main/java/ru/betterend/integration/NourishIntegration.java +++ b/src/main/java/ru/betterend/integration/NourishIntegration.java @@ -17,9 +17,36 @@ public class NourishIntegration extends ModIntegration { Tag.Named protein = getItemTag("protein"); Tag.Named sweets = getItemTag("sweets"); - TagHelper.addTag(fats, EndItems.END_FISH_RAW, EndItems.END_FISH_COOKED); - TagHelper.addTag(fruit, EndItems.SHADOW_BERRY_RAW, EndItems.SHADOW_BERRY_COOKED, EndItems.BLOSSOM_BERRY, EndItems.SHADOW_BERRY_JELLY, EndItems.SWEET_BERRY_JELLY); - TagHelper.addTag(protein, EndItems.END_FISH_RAW, EndItems.END_FISH_COOKED); - TagHelper.addTag(sweets, EndItems.SHADOW_BERRY_JELLY, EndItems.SWEET_BERRY_JELLY); + TagHelper.addTag( + fats, + EndItems.END_FISH_RAW, + EndItems.END_FISH_COOKED + ); + TagHelper.addTag( + fruit, + EndItems.SHADOW_BERRY_RAW, + EndItems.SHADOW_BERRY_COOKED, + EndItems.BLOSSOM_BERRY, + EndItems.SHADOW_BERRY_JELLY, + EndItems.SWEET_BERRY_JELLY, + EndItems.AMBER_ROOT_RAW, + EndItems.CHORUS_MUSHROOM_RAW, + EndItems.CHORUS_MUSHROOM_COOKED, + EndItems.BOLUX_MUSHROOM_COOKED + ); + TagHelper.addTag( + protein, + EndItems.END_FISH_RAW, + EndItems.END_FISH_COOKED, + EndItems.CHORUS_MUSHROOM_COOKED, + EndItems.BOLUX_MUSHROOM_COOKED, + EndItems.CAVE_PUMPKIN_PIE + ); + TagHelper.addTag( + sweets, + EndItems.SHADOW_BERRY_JELLY, + EndItems.SWEET_BERRY_JELLY, + EndItems.CAVE_PUMPKIN_PIE + ); } } diff --git a/src/main/java/ru/betterend/mixin/common/EndDragonFightMixin.java b/src/main/java/ru/betterend/mixin/common/EndDragonFightMixin.java index dc2e8229..633044d3 100644 --- a/src/main/java/ru/betterend/mixin/common/EndDragonFightMixin.java +++ b/src/main/java/ru/betterend/mixin/common/EndDragonFightMixin.java @@ -52,25 +52,25 @@ public class EndDragonFightMixin { @Inject(method = "tryRespawn", at = @At("HEAD"), cancellable = true) private void be_tryRespawnDragon(CallbackInfo info) { if (GeneratorOptions.replacePortal() && GeneratorOptions.hasDragonFights() && this.dragonKilled && this.respawnStage == null) { - BlockPos blockPos = this.portalLocation; + BlockPos blockPos = portalLocation; if (blockPos == null) { LOGGER.debug("Tried to respawn, but need to find the portal first."); BlockPattern.BlockPatternMatch blockPatternMatch = this.findExitPortal(); if (blockPatternMatch == null) { LOGGER.debug("Couldn't find a portal, so we made one."); - this.spawnExitPortal(true); + spawnExitPortal(true); } else { LOGGER.debug("Found the exit portal & temporarily using it."); } - blockPos = this.portalLocation; + blockPos = portalLocation; } List crystals = Lists.newArrayList(); - BlockPos center = blockPos.above(2); + BlockPos center = GeneratorOptions.getPortalPos().above(5); for (Direction dir : BlocksHelper.HORIZONTAL) { - List crystalList = this.level.getEntitiesOfClass(EndCrystal.class, new AABB(center.relative(dir, 3))); + List crystalList = level.getEntitiesOfClass(EndCrystal.class, new AABB(center.relative(dir, 4))); if (crystalList.isEmpty()) { info.cancel(); return; @@ -80,7 +80,7 @@ public class EndDragonFightMixin { } LOGGER.debug("Found all crystals, respawning dragon."); - this.respawnDragon(crystals); + respawnDragon(crystals); info.cancel(); } } diff --git a/src/main/java/ru/betterend/mixin/common/EndSpikeMixin.java b/src/main/java/ru/betterend/mixin/common/EndSpikeMixin.java new file mode 100644 index 00000000..8132558f --- /dev/null +++ b/src/main/java/ru/betterend/mixin/common/EndSpikeMixin.java @@ -0,0 +1,43 @@ +package ru.betterend.mixin.common; + +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.levelgen.feature.SpikeFeature.EndSpike; +import ru.betterend.util.WorldDataUtil; +import ru.betterend.world.generator.GeneratorOptions; + +@Mixin(EndSpike.class) +public class EndSpikeMixin { + @Final + @Shadow + private int height; + + @Inject(method = "getHeight", at = @At("HEAD"), cancellable = true) + private void be_getSpikeHeight(CallbackInfoReturnable info) { + if (!GeneratorOptions.isDirectSpikeHeight()) { + int x = getCenterX(); + int z = getCenterZ(); + String pillarID = String.format("%d_%d", x, z); + CompoundTag pillar = WorldDataUtil.getCompoundTag("pillars"); + int minY = pillar.contains(pillarID) ? pillar.getInt(pillarID) : 65; + int maxY = minY + height - 54; + info.setReturnValue(maxY); + } + } + + @Shadow + public int getCenterX() { + return 0; + } + + @Shadow + public int getCenterZ() { + return 0; + } +} diff --git a/src/main/java/ru/betterend/mixin/common/SpikeFeatureMixin.java b/src/main/java/ru/betterend/mixin/common/SpikeFeatureMixin.java index 699b1250..218a0be0 100644 --- a/src/main/java/ru/betterend/mixin/common/SpikeFeatureMixin.java +++ b/src/main/java/ru/betterend/mixin/common/SpikeFeatureMixin.java @@ -63,6 +63,7 @@ public class SpikeFeatureMixin { minY = world.getChunk(x >> 4, z >> 4).getHeight(Types.WORLD_SURFACE, x & 15, z); } + GeneratorOptions.setDirectSpikeHeight(); int maxY = minY + spike.getHeight() - 64; if (GeneratorOptions.replacePillars() && be_radiusInRange(radius)) { diff --git a/src/main/java/ru/betterend/registry/EndSounds.java b/src/main/java/ru/betterend/registry/EndSounds.java index 7110cd17..a91c77fd 100644 --- a/src/main/java/ru/betterend/registry/EndSounds.java +++ b/src/main/java/ru/betterend/registry/EndSounds.java @@ -10,6 +10,7 @@ public class EndSounds { public static final SoundEvent MUSIC_WATER = register("music", "water"); public static final SoundEvent MUSIC_DARK = register("music", "dark"); public static final SoundEvent MUSIC_OPENSPACE = register("music", "openspace"); + public static final SoundEvent MUSIC_CAVES = register("music", "caves"); // Ambient public static final SoundEvent AMBIENT_FOGGY_MUSHROOMLAND = register("ambient", "foggy_mushroomland"); @@ -21,6 +22,7 @@ public class EndSounds { public static final SoundEvent AMBIENT_SULPHUR_SPRINGS = register("ambient", "sulphur_springs"); public static final SoundEvent AMBIENT_UMBRELLA_JUNGLE = register("ambient", "umbrella_jungle"); public static final SoundEvent AMBIENT_GLOWING_GRASSLANDS = register("ambient", "glowing_grasslands"); + public static final SoundEvent AMBIENT_CAVES = register("ambient", "caves"); // Entity public static final SoundEvent ENTITY_DRAGONFLY = register("entity", "dragonfly"); diff --git a/src/main/java/ru/betterend/world/biome/cave/EmptyAuroraCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/EmptyAuroraCaveBiome.java index 93fb0624..eb5d1120 100644 --- a/src/main/java/ru/betterend/world/biome/cave/EmptyAuroraCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/EmptyAuroraCaveBiome.java @@ -2,7 +2,6 @@ package ru.betterend.world.biome.cave; import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndParticles; -import ru.betterend.registry.EndSounds; import ru.betterend.world.biome.BiomeDefinition; public class EmptyAuroraCaveBiome extends EndCaveBiome { @@ -12,7 +11,6 @@ public class EmptyAuroraCaveBiome extends EndCaveBiome { .setFogDensity(2.0F) .setPlantsColor(108, 25, 46) .setWaterAndFogColor(186, 77, 237) - .setMusic(EndSounds.MUSIC_FOREST) .setParticles(EndParticles.GLOWING_SPHERE, 0.001F)); this.addFloorFeature(EndFeatures.BIG_AURORA_CRYSTAL, 1); diff --git a/src/main/java/ru/betterend/world/biome/cave/EmptyEndCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/EmptyEndCaveBiome.java index 4976fed1..9ed57309 100644 --- a/src/main/java/ru/betterend/world/biome/cave/EmptyEndCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/EmptyEndCaveBiome.java @@ -1,15 +1,11 @@ package ru.betterend.world.biome.cave; import ru.betterend.registry.EndFeatures; -import ru.betterend.registry.EndSounds; import ru.betterend.world.biome.BiomeDefinition; public class EmptyEndCaveBiome extends EndCaveBiome { public EmptyEndCaveBiome() { - super(new BiomeDefinition("empty_end_cave") - .setFogDensity(2.0F) - .setMusic(EndSounds.MUSIC_FOREST)); - + super(new BiomeDefinition("empty_end_cave").setFogDensity(2.0F)); this.addFloorFeature(EndFeatures.END_STONE_STALAGMITE, 1); this.addCeilFeature(EndFeatures.END_STONE_STALACTITE, 1); } diff --git a/src/main/java/ru/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java index ed5ed762..3e262482 100644 --- a/src/main/java/ru/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java @@ -2,7 +2,6 @@ package ru.betterend.world.biome.cave; import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndParticles; -import ru.betterend.registry.EndSounds; import ru.betterend.world.biome.BiomeDefinition; public class EmptySmaragdantCaveBiome extends EndCaveBiome { @@ -12,7 +11,6 @@ public class EmptySmaragdantCaveBiome extends EndCaveBiome { .setFogDensity(2.0F) .setPlantsColor(0, 131, 145) .setWaterAndFogColor(31, 167, 212) - .setMusic(EndSounds.MUSIC_FOREST) .setParticles(EndParticles.SMARAGDANT, 0.001F)); this.addFloorFeature(EndFeatures.SMARAGDANT_CRYSTAL, 1); diff --git a/src/main/java/ru/betterend/world/biome/cave/EndCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/EndCaveBiome.java index 3f25a5bb..a90c8dfd 100644 --- a/src/main/java/ru/betterend/world/biome/cave/EndCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/EndCaveBiome.java @@ -7,6 +7,7 @@ import net.minecraft.world.entity.ai.behavior.WeightedList; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.Feature; import ru.betterend.registry.EndBiomes; +import ru.betterend.registry.EndSounds; import ru.betterend.world.biome.BiomeDefinition; import ru.betterend.world.biome.EndBiome; import ru.betterend.world.features.EndFeature; @@ -26,6 +27,8 @@ public class EndCaveBiome extends EndBiome { new CaveChunkPopulatorFeature(() -> (EndCaveBiome) EndBiomes.getBiome(definition.getID())) ); definition.addFeature(feature).setCaveBiome(); + definition.setMusic(EndSounds.MUSIC_CAVES); + definition.setLoop(EndSounds.AMBIENT_CAVES); return definition; } diff --git a/src/main/java/ru/betterend/world/biome/cave/JadeCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/JadeCaveBiome.java index d399695d..f50d2bcc 100644 --- a/src/main/java/ru/betterend/world/biome/cave/JadeCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/JadeCaveBiome.java @@ -5,7 +5,6 @@ import net.minecraft.util.Mth; import net.minecraft.world.level.block.state.BlockState; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBlocks; -import ru.betterend.registry.EndSounds; import ru.betterend.world.biome.BiomeDefinition; public class JadeCaveBiome extends EndCaveBiome { @@ -18,7 +17,6 @@ public class JadeCaveBiome extends EndCaveBiome { .setFogColor(118, 150, 112) .setFogDensity(2.0F) .setWaterAndFogColor(95, 223, 255) - .setMusic(EndSounds.MUSIC_FOREST) ); JADE[0] = EndBlocks.VIRID_JADESTONE.stone.defaultBlockState(); JADE[1] = EndBlocks.AZURE_JADESTONE.stone.defaultBlockState(); diff --git a/src/main/java/ru/betterend/world/biome/cave/LushAuroraCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/LushAuroraCaveBiome.java index 52ff7f1b..d8c3c1e2 100644 --- a/src/main/java/ru/betterend/world/biome/cave/LushAuroraCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/LushAuroraCaveBiome.java @@ -7,7 +7,6 @@ import ru.betterend.blocks.BlockProperties.TripleShape; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndParticles; -import ru.betterend.registry.EndSounds; import ru.betterend.world.biome.BiomeDefinition; public class LushAuroraCaveBiome extends EndCaveBiome { @@ -17,7 +16,6 @@ public class LushAuroraCaveBiome extends EndCaveBiome { .setFogDensity(2.0F) .setPlantsColor(108, 25, 46) .setWaterAndFogColor(186, 77, 237) - .setMusic(EndSounds.MUSIC_FOREST) .setParticles(EndParticles.GLOWING_SPHERE, 0.001F) .setSurface(EndBlocks.CAVE_MOSS)); diff --git a/src/main/java/ru/betterend/world/biome/cave/LushSmaragdantCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/LushSmaragdantCaveBiome.java index c9a40749..0997c6fa 100644 --- a/src/main/java/ru/betterend/world/biome/cave/LushSmaragdantCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/LushSmaragdantCaveBiome.java @@ -3,7 +3,6 @@ package ru.betterend.world.biome.cave; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndParticles; -import ru.betterend.registry.EndSounds; import ru.betterend.world.biome.BiomeDefinition; public class LushSmaragdantCaveBiome extends EndCaveBiome { @@ -13,7 +12,6 @@ public class LushSmaragdantCaveBiome extends EndCaveBiome { .setFogDensity(2.0F) .setPlantsColor(0, 131, 145) .setWaterAndFogColor(31, 167, 212) - .setMusic(EndSounds.MUSIC_FOREST) .setParticles(EndParticles.SMARAGDANT, 0.001F) .setSurface(EndBlocks.CAVE_MOSS)); diff --git a/src/main/java/ru/betterend/world/features/terrain/caves/TunelCaveFeature.java b/src/main/java/ru/betterend/world/features/terrain/caves/TunelCaveFeature.java index c414c6a0..df3dfdd2 100644 --- a/src/main/java/ru/betterend/world/features/terrain/caves/TunelCaveFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/caves/TunelCaveFeature.java @@ -11,6 +11,7 @@ import net.minecraft.util.Mth; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.ChunkGenerator; +import net.minecraft.world.level.levelgen.Heightmap.Types; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import ru.betterend.noise.OpenSimplexNoise; @@ -24,8 +25,13 @@ public class TunelCaveFeature extends EndCaveFeature { private static final OpenSimplexNoise BIOME_NOISE_Z = new OpenSimplexNoise("biome_noise_z".hashCode()); private Set generate(WorldGenLevel world, BlockPos center, Random random) { - int x1 = (center.getX() >> 4) << 4; - int z1 = (center.getZ() >> 4) << 4; + int cx = center.getX() >> 4; + int cz = center.getZ() >> 4; + if ((long) cx * (long) cx + (long) cz + (long) cz < 256) { + return Sets.newHashSet(); + } + int x1 = cx << 4; + int z1 = cz << 4; int x2 = x1 + 16; int z2 = z1 + 16; int y2 = world.getHeight(); @@ -43,12 +49,19 @@ public class TunelCaveFeature extends EndCaveFeature { for (int y = 0; y < y2; y++) { pos.setY(y); float val = Mth.abs((float) noiseH.eval(x * 0.02, y * 0.01, z * 0.02)); - float vert = Mth.sin((y + (float) noiseV.eval(x * 0.01, z * 0.01) * 20) * 0.1F) * 0.9F;//Mth.abs(y - 50 + (float) noiseV.eval(x * 0.01, z * 0.01) * 20) * 0.1F; + float vert = Mth.sin((y + (float) noiseV.eval(x * 0.01, z * 0.01) * 20) * 0.1F) * 0.9F; float dist = (float) noiseD.eval(x * 0.1, y * 0.1, z * 0.1) * 0.12F; vert *= vert; if (val + vert + dist < 0.15 && world.getBlockState(pos).is(EndTags.GEN_TERRAIN)) { BlocksHelper.setWithoutUpdate(world, pos, AIR); positions.add(pos.immutable()); + int height = world.getHeight(Types.WORLD_SURFACE_WG, pos.getX(), pos.getZ()); + if (height < pos.getY() + 4) { + while (pos.getY() < height) { + pos.setY(pos.getY() + 1); + BlocksHelper.setWithoutUpdate(world, pos, AIR); + } + } } } } @@ -75,9 +88,14 @@ public class TunelCaveFeature extends EndCaveFeature { Set floorPositions = Sets.newHashSet(); Set ceilPositions = Sets.newHashSet(); MutableBlockPos mut = new MutableBlockPos(); + Set remove = Sets.newHashSet(); caveBlocks.forEach((bpos) -> { mut.set(bpos); - if (world.getBlockState(mut).getMaterial().isReplaceable()) { + int height = world.getHeight(Types.WORLD_SURFACE, bpos.getX(), bpos.getZ()); + if (mut.getY() >= height) { + remove.add(bpos); + } + else if (world.getBlockState(mut).getMaterial().isReplaceable()) { mut.setY(bpos.getY() - 1); if (world.getBlockState(mut).is(EndTags.GEN_TERRAIN)) { floorPositions.add(mut.immutable()); @@ -91,6 +109,7 @@ public class TunelCaveFeature extends EndCaveFeature { BlockState surfaceBlock = biome.getBiome().getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial(); placeFloor(world, biome, floorPositions, random, surfaceBlock); placeCeil(world, biome, ceilPositions, random); + caveBlocks.removeAll(remove); placeWalls(world, biome, caveBlocks, random); } fixBlocks(world, preCaveBlocks); @@ -102,10 +121,16 @@ public class TunelCaveFeature extends EndCaveFeature { private Set mutateBlocks(Set caveBlocks) { Set result = Sets.newHashSet(); caveBlocks.forEach(pos -> { - int dx = pos.getX() + (int) (BIOME_NOISE_X.eval(pos.getX() * 0.2, pos.getZ() * 0.2) * 5); - int dz = pos.getZ() + (int) (BIOME_NOISE_Z.eval(pos.getX() * 0.2, pos.getZ() * 0.2) * 5); - if ((dx >> 4) == (pos.getX() >> 4) && (dz >> 4) == (pos.getZ() >> 4)) { - result.add(pos); + int dx = pos.getX() + Mth.floor(BIOME_NOISE_X.eval(pos.getX() * 0.1, pos.getZ() * 0.1) * 3); + int dz = pos.getZ() + Mth.floor(BIOME_NOISE_Z.eval(pos.getX() * 0.1, pos.getZ() * 0.1) * 3); + if (dx >> 4 == pos.getX() >> 4 && dz >> 4 == pos.getZ() >> 4) { + int cx = ((pos.getX() >> 4) << 4) | 8; + int cz = ((pos.getZ() >> 4) << 4) | 8; + dx = pos.getX() - cx; + dz = pos.getZ() - cz; + if (dx * dx + dz * dz < 64) { + result.add(pos); + } } }); return result; diff --git a/src/main/java/ru/betterend/world/generator/GeneratorOptions.java b/src/main/java/ru/betterend/world/generator/GeneratorOptions.java index 5c7f6c2d..3d068461 100644 --- a/src/main/java/ru/betterend/world/generator/GeneratorOptions.java +++ b/src/main/java/ru/betterend/world/generator/GeneratorOptions.java @@ -28,6 +28,7 @@ public class GeneratorOptions { private static boolean replacePillars; private static long islandDistBlock; private static int islandDistChunk; + private static boolean directSpikeHeight; public static void init() { biomeSizeLand = Configs.GENERATOR_CONFIG.getInt("biomeMap", "biomeSizeLand", 256); @@ -142,4 +143,14 @@ public class GeneratorOptions { public static int getIslandDistChunk() { return islandDistChunk; } + + public static void setDirectSpikeHeight() { + directSpikeHeight = true; + } + + public static boolean isDirectSpikeHeight() { + boolean height = directSpikeHeight; + directSpikeHeight = false; + return height; + } } diff --git a/src/main/java/ru/betterend/world/structures/features/EternalPortalStructure.java b/src/main/java/ru/betterend/world/structures/features/EternalPortalStructure.java index aa59776a..e7080736 100644 --- a/src/main/java/ru/betterend/world/structures/features/EternalPortalStructure.java +++ b/src/main/java/ru/betterend/world/structures/features/EternalPortalStructure.java @@ -26,7 +26,7 @@ public class EternalPortalStructure extends FeatureBaseStructure { private static final StructureTemplate STRUCTURE = StructureHelper.readStructure(STRUCTURE_ID); @Override - protected boolean shouldStartAt(ChunkGenerator chunkGenerator, BiomeSource biomeSource, long worldSeed, WorldgenRandom chunkRandom, int chunkX, int chunkZ, Biome biome, ChunkPos chunkPos, NoneFeatureConfiguration featureConfig) { + protected boolean isFeatureChunk(ChunkGenerator chunkGenerator, BiomeSource biomeSource, long worldSeed, WorldgenRandom chunkRandom, int chunkX, int chunkZ, Biome biome, ChunkPos chunkPos, NoneFeatureConfiguration featureConfig) { long x = (long) chunkPos.x * (long) chunkPos.x; long z = (long) chunkPos.z * (long) chunkPos.z; if (x + z < 1024L) { @@ -35,7 +35,7 @@ public class EternalPortalStructure extends FeatureBaseStructure { if (chunkGenerator.getBaseHeight((chunkX << 4) | 8, (chunkZ << 4) | 8, Heightmap.Types.WORLD_SURFACE_WG) < 10) { return false; } - return super.shouldStartAt(chunkGenerator, biomeSource, worldSeed, chunkRandom, chunkX, chunkZ, biome, chunkPos, featureConfig); + return super.isFeatureChunk(chunkGenerator, biomeSource, worldSeed, chunkRandom, chunkX, chunkZ, biome, chunkPos, featureConfig); } @Override diff --git a/src/main/java/ru/betterend/world/structures/features/FeatureBaseStructure.java b/src/main/java/ru/betterend/world/structures/features/FeatureBaseStructure.java index a3986e2f..219ec6f5 100644 --- a/src/main/java/ru/betterend/world/structures/features/FeatureBaseStructure.java +++ b/src/main/java/ru/betterend/world/structures/features/FeatureBaseStructure.java @@ -21,7 +21,8 @@ public abstract class FeatureBaseStructure extends StructureFeature= 20; } diff --git a/src/main/resources/assets/betterend/sounds.json b/src/main/resources/assets/betterend/sounds.json index 03913530..97194840 100644 --- a/src/main/resources/assets/betterend/sounds.json +++ b/src/main/resources/assets/betterend/sounds.json @@ -99,6 +99,31 @@ } ] }, + "betterend.music.caves": { + "category": "music", + "sounds": [ + { + "name": "betterend:music/godmode-future_rennaisance", + "volume": 0.1, + "stream": false + }, + { + "name": "betterend:music/futuremono-moonrise", + "volume": 0.1, + "stream": false + }, + { + "name": "betterend:music/emmit_fenn-wander", + "volume": 0.1, + "stream": false + }, + { + "name": "betterend:music/corbyn_kites-orbit", + "volume": 0.1, + "stream": false + } + ] + }, "betterend.ambient.foggy_mushroomland": { "category": "ambient", @@ -184,6 +209,16 @@ } ] }, + "betterend.ambient.caves": { + "category": "ambient", + "sounds": [ + { + "name": "betterend:ambient/caves", + "volume": 0.5, + "stream": false + } + ] + }, "betterend.entity.dragonfly": { "category": "entity", diff --git a/src/main/resources/assets/betterend/sounds/ambient/caves.ogg b/src/main/resources/assets/betterend/sounds/ambient/caves.ogg new file mode 100644 index 00000000..e68412e4 Binary files /dev/null and b/src/main/resources/assets/betterend/sounds/ambient/caves.ogg differ diff --git a/src/main/resources/assets/betterend/sounds/music/corbyn_kites-orbit.ogg b/src/main/resources/assets/betterend/sounds/music/corbyn_kites-orbit.ogg new file mode 100644 index 00000000..6bc10162 Binary files /dev/null and b/src/main/resources/assets/betterend/sounds/music/corbyn_kites-orbit.ogg differ diff --git a/src/main/resources/assets/betterend/sounds/music/emmit_fenn-wander.ogg b/src/main/resources/assets/betterend/sounds/music/emmit_fenn-wander.ogg new file mode 100644 index 00000000..8827bce7 Binary files /dev/null and b/src/main/resources/assets/betterend/sounds/music/emmit_fenn-wander.ogg differ diff --git a/src/main/resources/assets/betterend/sounds/music/futuremono-moonrise.ogg b/src/main/resources/assets/betterend/sounds/music/futuremono-moonrise.ogg new file mode 100644 index 00000000..32f9257c Binary files /dev/null and b/src/main/resources/assets/betterend/sounds/music/futuremono-moonrise.ogg differ diff --git a/src/main/resources/assets/betterend/sounds/music/godmode-future_rennaisance.ogg b/src/main/resources/assets/betterend/sounds/music/godmode-future_rennaisance.ogg new file mode 100644 index 00000000..9936c3a1 Binary files /dev/null and b/src/main/resources/assets/betterend/sounds/music/godmode-future_rennaisance.ogg differ diff --git a/src/main/resources/betterend.mixins.common.json b/src/main/resources/betterend.mixins.common.json index 9fdf89ad..f2385740 100644 --- a/src/main/resources/betterend.mixins.common.json +++ b/src/main/resources/betterend.mixins.common.json @@ -34,6 +34,7 @@ "AnvilMenuMixin", "TagLoaderMixin", "EnderManMixin", + "EndSpikeMixin", "MonsterMixin", "EntityMixin", "PlayerMixin",