diff --git a/src/main/java/ru/betterend/mixin/common/MinecraftServerMixin.java b/src/main/java/ru/betterend/mixin/common/MinecraftServerMixin.java new file mode 100644 index 00000000..9e7dac59 --- /dev/null +++ b/src/main/java/ru/betterend/mixin/common/MinecraftServerMixin.java @@ -0,0 +1,39 @@ +package ru.betterend.mixin.common; + +import java.util.Collection; +import java.util.concurrent.CompletableFuture; + +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.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.resource.ServerResourceManager; +import net.minecraft.server.MinecraftServer; +import ru.betterend.recipe.EndRecipeManager; + +@Mixin(MinecraftServer.class) +public class MinecraftServerMixin { + @Shadow + private ServerResourceManager serverResourceManager; + + @Inject(method = "reloadResources", at = @At(value = "RETURN"), cancellable = true) + private void onReload(Collection collection, CallbackInfoReturnable> info) { + injectRecipes(); + } + + @Inject(method = "loadWorld", at = @At(value = "RETURN"), cancellable = true) + private void onLoadWorld(CallbackInfo info) { + injectRecipes(); + } + + private void injectRecipes() { + if (FabricLoader.getInstance().isModLoaded("kubejs")) { + RecipeManagerAccessor accessor = (RecipeManagerAccessor) serverResourceManager.getRecipeManager(); + accessor.setRecipes(EndRecipeManager.getMap(accessor.getRecipes())); + } + } +} diff --git a/src/main/java/ru/betterend/mixin/common/RecipeManagerAccessor.java b/src/main/java/ru/betterend/mixin/common/RecipeManagerAccessor.java new file mode 100644 index 00000000..deaa0d66 --- /dev/null +++ b/src/main/java/ru/betterend/mixin/common/RecipeManagerAccessor.java @@ -0,0 +1,20 @@ +package ru.betterend.mixin.common; + +import java.util.Map; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.RecipeManager; +import net.minecraft.recipe.RecipeType; +import net.minecraft.util.Identifier; + +@Mixin(RecipeManager.class) +public interface RecipeManagerAccessor { + @Accessor("recipes") + Map, Map>> getRecipes(); + + @Accessor("recipes") + void setRecipes(Map, Map>> recipes); +} \ No newline at end of file diff --git a/src/main/java/ru/betterend/registry/SoundRegistry.java b/src/main/java/ru/betterend/registry/SoundRegistry.java index c192106d..d831a332 100644 --- a/src/main/java/ru/betterend/registry/SoundRegistry.java +++ b/src/main/java/ru/betterend/registry/SoundRegistry.java @@ -8,9 +8,11 @@ public class SoundRegistry { // Music public static final SoundEvent MUSIC_FOGGY_MUSHROOMLAND = register("music", "foggy_mushroomland"); + public static final SoundEvent MUSIC_CHORUS_FOREST = register("music", "chorus_forest"); // Ambient public static final SoundEvent AMBIENT_FOGGY_MUSHROOMLAND = register("ambient", "foggy_mushroomland"); + public static final SoundEvent AMBIENT_CHORUS_FOREST = register("ambient", "chorus_forest"); // Entity public static final SoundEvent ENTITY_DRAGONFLY = register("entity", "dragonfly"); diff --git a/src/main/java/ru/betterend/world/biome/BiomeChorusForest.java b/src/main/java/ru/betterend/world/biome/BiomeChorusForest.java index f4d4a810..964ee007 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeChorusForest.java +++ b/src/main/java/ru/betterend/world/biome/BiomeChorusForest.java @@ -7,6 +7,7 @@ import net.minecraft.world.gen.feature.ConfiguredFeatures; import ru.betterend.registry.BlockRegistry; import ru.betterend.registry.EntityRegistry; import ru.betterend.registry.FeatureRegistry; +import ru.betterend.registry.SoundRegistry; public class BiomeChorusForest extends EndBiome { public BiomeChorusForest() { @@ -14,9 +15,9 @@ public class BiomeChorusForest extends EndBiome { .setFogColor(87, 26, 87) .setFogDensity(1.5F) .setSurface(BlockRegistry.CHORUS_NYLIUM) - .setParticles(ParticleTypes.PORTAL, 0.001F) - //.setLoop(SoundRegistry.AMBIENT_FOGGY_MUSHROOMLAND) - //.setMusic(SoundRegistry.MUSIC_FOGGY_MUSHROOMLAND) + .setParticles(ParticleTypes.PORTAL, 0.01F) + .setLoop(SoundRegistry.AMBIENT_CHORUS_FOREST) + .setMusic(SoundRegistry.MUSIC_CHORUS_FOREST) .addFeature(FeatureRegistry.ENDER_ORE) .addFeature(FeatureRegistry.RARE_END_LAKE) .addFeature(FeatureRegistry.PYTHADENDRON_TREE) diff --git a/src/main/resources/assets/betterend/sounds.json b/src/main/resources/assets/betterend/sounds.json index c8bc291b..5ebbf909 100644 --- a/src/main/resources/assets/betterend/sounds.json +++ b/src/main/resources/assets/betterend/sounds.json @@ -3,12 +3,27 @@ "category": "music", "sounds": [ { - "name": "betterend:music/dan_henig_eternal_garden", + "name": "betterend:music/dan_henig-eternal_garden", "volume": 0.1, "stream": false }, { - "name": "betterend:music/dan_henig_nebular_focus", + "name": "betterend:music/dan_henig-nebular_focus", + "volume": 0.1, + "stream": false + } + ] + }, + "betterend.music.chorus_forest": { + "category": "music", + "sounds": [ + { + "name": "betterend:music/emmit_fenn-creep", + "volume": 0.1, + "stream": false + }, + { + "name": "betterend:music/jesse_gallagher-the_anunnaki_return", "volume": 0.1, "stream": false } @@ -24,6 +39,15 @@ } ] }, + "betterend.ambient.chorus_forest": { + "category": "ambient", + "sounds": [ + { + "name": "betterend:ambient/chorus_forest", + "stream": false + } + ] + }, "betterend.entity.dragonfly": { "category": "entity", diff --git a/src/main/resources/assets/betterend/sounds/ambient/chorus_forest.ogg b/src/main/resources/assets/betterend/sounds/ambient/chorus_forest.ogg new file mode 100644 index 00000000..b9c646af Binary files /dev/null and b/src/main/resources/assets/betterend/sounds/ambient/chorus_forest.ogg differ diff --git a/src/main/resources/assets/betterend/sounds/music/dan_henig_eternal_garden.ogg b/src/main/resources/assets/betterend/sounds/music/dan_henig-eternal_garden.ogg similarity index 100% rename from src/main/resources/assets/betterend/sounds/music/dan_henig_eternal_garden.ogg rename to src/main/resources/assets/betterend/sounds/music/dan_henig-eternal_garden.ogg diff --git a/src/main/resources/assets/betterend/sounds/music/dan_henig_nebular_focus.ogg b/src/main/resources/assets/betterend/sounds/music/dan_henig-nebular_focus.ogg similarity index 100% rename from src/main/resources/assets/betterend/sounds/music/dan_henig_nebular_focus.ogg rename to src/main/resources/assets/betterend/sounds/music/dan_henig-nebular_focus.ogg diff --git a/src/main/resources/assets/betterend/sounds/music/emmit_fenn-creep.ogg b/src/main/resources/assets/betterend/sounds/music/emmit_fenn-creep.ogg new file mode 100644 index 00000000..d38a8967 Binary files /dev/null and b/src/main/resources/assets/betterend/sounds/music/emmit_fenn-creep.ogg differ diff --git a/src/main/resources/assets/betterend/sounds/music/jesse_gallagher-the_anunnaki_return.ogg b/src/main/resources/assets/betterend/sounds/music/jesse_gallagher-the_anunnaki_return.ogg new file mode 100644 index 00000000..c82086a6 Binary files /dev/null and b/src/main/resources/assets/betterend/sounds/music/jesse_gallagher-the_anunnaki_return.ogg differ diff --git a/src/main/resources/betterend.mixins.common.json b/src/main/resources/betterend.mixins.common.json index 4162c4e2..02e32bc3 100644 --- a/src/main/resources/betterend.mixins.common.json +++ b/src/main/resources/betterend.mixins.common.json @@ -12,6 +12,8 @@ "ChorusPlantFeatureMixin", "ChorusFlowerBlockMixin", "ChorusPlantBlockMixin", + "RecipeManagerAccessor", + "MinecraftServerMixin", "TagGroupLoaderMixin", "EndermanEntityMixin", "LocateCommandMixin",