├── .idea └── icon.png ├── common └── src │ └── main │ ├── resources │ ├── assets │ │ └── subtle_effects │ │ │ ├── particles │ │ │ ├── compost.json │ │ │ ├── snoring.json │ │ │ ├── armadillo.json │ │ │ ├── drowning_bubble.json │ │ │ ├── egg_splat.json │ │ │ ├── floating_spark.json │ │ │ ├── long_spark.json │ │ │ ├── metal_spark.json │ │ │ ├── mushroom_spore.json │ │ │ ├── potion_dot.json │ │ │ ├── short_spark.json │ │ │ ├── end_crystal.json │ │ │ ├── end_portal.json │ │ │ ├── experience.json │ │ │ ├── falling_snoring.json │ │ │ ├── geyser_spout.json │ │ │ ├── iron_golem.json │ │ │ ├── potion_cloud.json │ │ │ ├── potion_ring.json │ │ │ ├── slime_trail.json │ │ │ ├── waterfall_mist.json │ │ │ ├── amethyst_sparkle.json │ │ │ ├── chicken_feather.json │ │ │ ├── magma_cube_trail.json │ │ │ ├── vanilla_firefly.json │ │ │ ├── waterfall_droplet.json │ │ │ ├── blue_parrot_feather.json │ │ │ ├── spell_caster_magic.json │ │ │ ├── ender_eye_placed_ring.json │ │ │ ├── green_parrot_feather.json │ │ │ ├── water_splash_droplet.json │ │ │ ├── beacon.json │ │ │ ├── ominous_vault_connection.json │ │ │ ├── item_rarity.json │ │ │ ├── sheep_fluff.json │ │ │ ├── snow.json │ │ │ ├── freezing.json │ │ │ ├── pollen.json │ │ │ ├── steam.json │ │ │ ├── frosty_breath.json │ │ │ ├── heart_pop.json │ │ │ ├── sculk_dust.json │ │ │ ├── command_block.json │ │ │ ├── lava_splash_droplet.json │ │ │ ├── red_blue_parrot_feather.json │ │ │ ├── snowball_trail.json │ │ │ ├── drowning_bubble_pop.json │ │ │ ├── gray_parrot_feather.json │ │ │ ├── lava_ripple.json │ │ │ ├── water_ripple.json │ │ │ ├── allay_magic.json │ │ │ ├── vex_magic.json │ │ │ ├── small_dust_cloud.json │ │ │ ├── sneeze.json │ │ │ ├── yellow_blue_parrot_feather.json │ │ │ ├── potion_poof_cloud.json │ │ │ ├── smoke.json │ │ │ ├── large_dust_cloud.json │ │ │ ├── waterfall_cloud.json │ │ │ ├── lava_splash_ripple.json │ │ │ ├── water_splash_ripple.json │ │ │ ├── geyser_smoke.json │ │ │ ├── lava_splash.json │ │ │ ├── water_splash.json │ │ │ ├── water_splash_overlay.json │ │ │ ├── azalea_petal.json │ │ │ └── firefly.json │ │ │ ├── subtle_effects │ │ │ ├── mob_skull_shaders │ │ │ │ ├── dragon_head.json │ │ │ │ └── creeper_head.json │ │ │ └── spark_providers │ │ │ │ ├── fire.json │ │ │ │ ├── torch.json │ │ │ │ ├── lantern.json │ │ │ │ ├── wall_torch.json │ │ │ │ ├── soul_fire.json │ │ │ │ ├── soul_torch.json │ │ │ │ ├── soul_lantern.json │ │ │ │ ├── soul_wall_torch.json │ │ │ │ ├── furnace.json │ │ │ │ ├── campfire.json │ │ │ │ └── soul_campfire.json │ │ │ ├── textures │ │ │ ├── particle │ │ │ │ ├── snow_0.png │ │ │ │ ├── snow_1.png │ │ │ │ ├── snow_2.png │ │ │ │ ├── spark.png │ │ │ │ ├── beacon_0.png │ │ │ │ ├── beacon_1.png │ │ │ │ ├── pollen_0.png │ │ │ │ ├── pollen_1.png │ │ │ │ ├── pollen_2.png │ │ │ │ ├── pollen_3.png │ │ │ │ ├── ripple_0.png │ │ │ │ ├── ripple_1.png │ │ │ │ ├── ripple_2.png │ │ │ │ ├── ripple_3.png │ │ │ │ ├── ripple_4.png │ │ │ │ ├── ripple_5.png │ │ │ │ ├── smoke_0.png │ │ │ │ ├── smoke_1.png │ │ │ │ ├── smoke_2.png │ │ │ │ ├── smoke_3.png │ │ │ │ ├── smoke_4.png │ │ │ │ ├── smoke_5.png │ │ │ │ ├── smoke_6.png │ │ │ │ ├── smoke_7.png │ │ │ │ ├── smoke_8.png │ │ │ │ ├── snoring.png │ │ │ │ ├── steam_0.png │ │ │ │ ├── steam_1.png │ │ │ │ ├── steam_2.png │ │ │ │ ├── armadillo.png │ │ │ │ ├── egg_splat.png │ │ │ │ ├── end_crystal.png │ │ │ │ ├── end_portal.png │ │ │ │ ├── experience.png │ │ │ │ ├── firefly_0.png │ │ │ │ ├── firefly_1.png │ │ │ │ ├── firefly_10.png │ │ │ │ ├── firefly_2.png │ │ │ │ ├── firefly_3.png │ │ │ │ ├── firefly_4.png │ │ │ │ ├── firefly_5.png │ │ │ │ ├── firefly_6.png │ │ │ │ ├── firefly_7.png │ │ │ │ ├── firefly_8.png │ │ │ │ ├── firefly_9.png │ │ │ │ ├── heart_pop_0.png │ │ │ │ ├── heart_pop_1.png │ │ │ │ ├── heart_pop_2.png │ │ │ │ ├── iron_golem.png │ │ │ │ ├── potion_ring.png │ │ │ │ ├── slime_trail.png │ │ │ │ ├── dust_cloud_0.png │ │ │ │ ├── dust_cloud_1.png │ │ │ │ ├── dust_cloud_2.png │ │ │ │ ├── dust_cloud_3.png │ │ │ │ ├── dust_cloud_4.png │ │ │ │ ├── dust_cloud_5.png │ │ │ │ ├── dust_cloud_6.png │ │ │ │ ├── dust_cloud_7.png │ │ │ │ ├── geyser_spout.png │ │ │ │ ├── item_rarity_0.png │ │ │ │ ├── item_rarity_1.png │ │ │ │ ├── lava_splash_0.png │ │ │ │ ├── lava_splash_1.png │ │ │ │ ├── lava_splash_2.png │ │ │ │ ├── lava_splash_3.png │ │ │ │ ├── lava_splash_4.png │ │ │ │ ├── lava_splash_5.png │ │ │ │ ├── lava_splash_6.png │ │ │ │ ├── lava_splash_7.png │ │ │ │ ├── lava_splash_8.png │ │ │ │ ├── lava_splash_9.png │ │ │ │ ├── potion_cloud.png │ │ │ │ ├── sculk_dust_0.png │ │ │ │ ├── sculk_dust_1.png │ │ │ │ ├── sculk_dust_2.png │ │ │ │ ├── sheep_fluff_0.png │ │ │ │ ├── sheep_fluff_1.png │ │ │ │ ├── amethyst_sparkle.png │ │ │ │ ├── azalea_petal_0.png │ │ │ │ ├── azalea_petal_1.png │ │ │ │ ├── azalea_petal_2.png │ │ │ │ ├── azalea_petal_3.png │ │ │ │ ├── azalea_petal_4.png │ │ │ │ ├── azalea_petal_5.png │ │ │ │ ├── azalea_petal_6.png │ │ │ │ ├── azalea_petal_7.png │ │ │ │ ├── azalea_petal_8.png │ │ │ │ ├── chicken_feather.png │ │ │ │ ├── command_block_0.png │ │ │ │ ├── command_block_1.png │ │ │ │ ├── command_block_2.png │ │ │ │ ├── magma_cube_trail.png │ │ │ │ ├── vanilla_firefly.png │ │ │ │ ├── water_splash_0.png │ │ │ │ ├── water_splash_1.png │ │ │ │ ├── water_splash_2.png │ │ │ │ ├── water_splash_3.png │ │ │ │ ├── water_splash_4.png │ │ │ │ ├── water_splash_5.png │ │ │ │ ├── water_splash_6.png │ │ │ │ ├── water_splash_7.png │ │ │ │ ├── water_splash_8.png │ │ │ │ ├── water_splash_9.png │ │ │ │ ├── waterfall_mist.png │ │ │ │ ├── spell_caster_magic.png │ │ │ │ ├── waterfall_cloud_0.png │ │ │ │ ├── waterfall_cloud_1.png │ │ │ │ ├── waterfall_cloud_2.png │ │ │ │ ├── waterfall_cloud_3.png │ │ │ │ ├── waterfall_cloud_4.png │ │ │ │ ├── waterfall_cloud_5.png │ │ │ │ ├── waterfall_cloud_6.png │ │ │ │ ├── waterfall_cloud_7.png │ │ │ │ ├── waterfall_droplet.png │ │ │ │ ├── blue_parrot_feather.png │ │ │ │ ├── ender_eye_placed_ring.png │ │ │ │ ├── gray_parrot_feather_0.png │ │ │ │ ├── gray_parrot_feather_1.png │ │ │ │ ├── green_parrot_feather.png │ │ │ │ ├── lava_splash_droplet_0.png │ │ │ │ ├── lava_splash_droplet_1.png │ │ │ │ ├── lava_splash_droplet_2.png │ │ │ │ ├── lava_splash_ripple_0.png │ │ │ │ ├── lava_splash_ripple_1.png │ │ │ │ ├── lava_splash_ripple_2.png │ │ │ │ ├── lava_splash_ripple_3.png │ │ │ │ ├── lava_splash_ripple_4.png │ │ │ │ ├── lava_splash_ripple_5.png │ │ │ │ ├── lava_splash_ripple_6.png │ │ │ │ ├── lava_splash_ripple_7.png │ │ │ │ ├── potion_poof_cloud_0.png │ │ │ │ ├── potion_poof_cloud_1.png │ │ │ │ ├── potion_poof_cloud_2.png │ │ │ │ ├── potion_poof_cloud_3.png │ │ │ │ ├── potion_poof_cloud_4.png │ │ │ │ ├── potion_poof_cloud_5.png │ │ │ │ ├── water_splash_droplet.png │ │ │ │ ├── water_splash_ripple_0.png │ │ │ │ ├── water_splash_ripple_1.png │ │ │ │ ├── water_splash_ripple_2.png │ │ │ │ ├── water_splash_ripple_3.png │ │ │ │ ├── water_splash_ripple_4.png │ │ │ │ ├── water_splash_ripple_5.png │ │ │ │ ├── water_splash_ripple_6.png │ │ │ │ ├── water_splash_ripple_7.png │ │ │ │ ├── water_splash_overlay_0.png │ │ │ │ ├── water_splash_overlay_1.png │ │ │ │ ├── water_splash_overlay_2.png │ │ │ │ ├── water_splash_overlay_3.png │ │ │ │ ├── water_splash_overlay_4.png │ │ │ │ ├── water_splash_overlay_5.png │ │ │ │ ├── water_splash_overlay_6.png │ │ │ │ ├── water_splash_overlay_7.png │ │ │ │ ├── water_splash_overlay_8.png │ │ │ │ ├── water_splash_overlay_9.png │ │ │ │ ├── ominous_vault_connection.png │ │ │ │ ├── red_blue_parrot_feather_0.png │ │ │ │ ├── red_blue_parrot_feather_1.png │ │ │ │ ├── yellow_blue_parrot_feather_0.png │ │ │ │ ├── yellow_blue_parrot_feather_1.png │ │ │ │ └── yellow_blue_parrot_feather_2.png │ │ │ ├── entity │ │ │ │ └── party_hat │ │ │ │ │ ├── big_fuzz_0.png │ │ │ │ │ ├── big_fuzz_1.png │ │ │ │ │ ├── big_fuzz_2.png │ │ │ │ │ ├── big_fuzz_3.png │ │ │ │ │ ├── big_fuzz_4.png │ │ │ │ │ ├── small_fuzz_0.png │ │ │ │ │ ├── small_fuzz_1.png │ │ │ │ │ ├── small_fuzz_2.png │ │ │ │ │ ├── small_fuzz_3.png │ │ │ │ │ └── small_fuzz_4.png │ │ │ └── environment │ │ │ │ └── colorless_rain.png │ │ │ └── sounds │ │ │ ├── mob │ │ │ └── villager │ │ │ │ ├── snore1.ogg │ │ │ │ ├── snore2.ogg │ │ │ │ └── snore3.ogg │ │ │ ├── block │ │ │ ├── campfire │ │ │ │ ├── sizzle0.ogg │ │ │ │ └── sizzle1.ogg │ │ │ └── firefly_bush │ │ │ │ ├── firefly_bush1.ogg │ │ │ │ ├── firefly_bush2.ogg │ │ │ │ ├── firefly_bush3.ogg │ │ │ │ ├── firefly_bush4.ogg │ │ │ │ ├── firefly_bush5.ogg │ │ │ │ ├── firefly_bush6.ogg │ │ │ │ ├── firefly_bush7.ogg │ │ │ │ ├── firefly_bush8.ogg │ │ │ │ ├── firefly_bush9.ogg │ │ │ │ ├── firefly_bush10.ogg │ │ │ │ └── firefly_bush11.ogg │ │ │ └── entity │ │ │ └── player │ │ │ ├── snore1.ogg │ │ │ ├── snore2.ogg │ │ │ ├── snore3.ogg │ │ │ ├── heartbeat.ogg │ │ │ └── stomach_growl.ogg │ ├── banner.png │ ├── pack.png │ ├── pack.mcmeta │ └── resourcepacks │ │ └── biome_color_water_particles │ │ ├── pack.png │ │ ├── assets │ │ ├── minecraft │ │ │ └── particles │ │ │ │ ├── bubble.json │ │ │ │ ├── current_down.json │ │ │ │ ├── bubble_column_up.json │ │ │ │ ├── fishing.json │ │ │ │ ├── rain.json │ │ │ │ ├── splash.json │ │ │ │ └── bubble_pop.json │ │ ├── subtle_effects │ │ │ └── particles │ │ │ │ ├── drowning_bubble.json │ │ │ │ └── drowning_bubble_pop.json │ │ └── biome_color_water_particles │ │ │ └── textures │ │ │ └── particle │ │ │ ├── bubble.png │ │ │ ├── splash_0.png │ │ │ ├── splash_1.png │ │ │ ├── splash_2.png │ │ │ ├── splash_3.png │ │ │ ├── bubble_pop_0.png │ │ │ ├── bubble_pop_1.png │ │ │ ├── bubble_pop_2.png │ │ │ ├── bubble_pop_3.png │ │ │ ├── bubble_pop_4.png │ │ │ └── bubble_overlay.png │ │ └── pack.mcmeta │ └── java │ └── einstein │ └── subtle_effects │ ├── util │ ├── HeartParticleAccessor.java │ ├── FrustumGetter.java │ ├── BubbleSetter.java │ ├── CommonEntityAccessor.java │ ├── ChestAccessor.java │ ├── DripParticleAccessor.java │ ├── EntityTickerAccessor.java │ ├── EntityProvider.java │ ├── BlockTickerProvider.java │ ├── ParticleAccessor.java │ ├── MathUtil.java │ ├── Box.java │ └── SparkType.java │ ├── data │ ├── NamedReloadListener.java │ └── package-info.java │ ├── particle │ ├── package-info.java │ ├── emitter │ │ └── package-info.java │ ├── option │ │ └── package-info.java │ ├── provider │ │ ├── package-info.java │ │ ├── SmokeParticleProvider.java │ │ ├── SpellCasterMagicProvider.java │ │ ├── PollenProvider.java │ │ ├── GeyserSmokeParticleProvider.java │ │ ├── PotionPoofCloudProvider.java │ │ ├── MushroomSporeProvider.java │ │ └── AzaleaParticleProvider.java │ ├── GlowingSuspendedParticle.java │ └── SculkDustParticle.java │ ├── client │ ├── model │ │ └── entity │ │ │ └── package-info.java │ └── renderer │ │ └── entity │ │ ├── package-info.java │ │ ├── EinsteinSolarSystemRenderLayerParentImpl.java │ │ └── EinsteinSolarSystemArmorLayer.java │ ├── networking │ └── clientbound │ │ ├── package-info.java │ │ ├── ClientBoundSheepShearPayload.java │ │ ├── ClientBoundDrankPotionPayload.java │ │ ├── ClientBoundXPBottleEffectsPayload.java │ │ ├── ClientBoundMooshroomShearedPayload.java │ │ ├── ClientBoundEntitySpawnSprintingDustCloudsPayload.java │ │ ├── ClientBoundAnimalFedPayload.java │ │ ├── ClientBoundVillagerWorkPayload.java │ │ ├── ClientBoundDispenseBucketPayload.java │ │ ├── ClientBoundSpawnSnoreParticlePayload.java │ │ └── ClientBoundCompostItemPayload.java │ ├── ticking │ └── tickers │ │ ├── Ticker.java │ │ ├── entity │ │ ├── WitchPotionRingTicker.java │ │ ├── SimpleTicker.java │ │ ├── sleeping │ │ │ ├── FoxSleepingTicker.java │ │ │ ├── VillagerSleepingTicker.java │ │ │ ├── BatSleepingTicker.java │ │ │ ├── CatSleepingTicker.java │ │ │ └── PlayerSleepingTicker.java │ │ └── SlimeTrailTicker.java │ │ ├── LevelTicker.java │ │ └── ScheduledTicker.java │ ├── mixin │ ├── client │ │ ├── item │ │ │ └── BucketItemAccessor.java │ │ ├── GameRendererAccessor.java │ │ ├── block │ │ │ ├── AmethystClusterBlockAccessor.java │ │ │ ├── AbstractCauldronBlockAccessor.java │ │ │ ├── entity │ │ │ │ ├── ChestBlockEntityMixin.java │ │ │ │ ├── EnderChestBlockEntityMixin.java │ │ │ │ └── CampfireBlockEntityMixin.java │ │ │ ├── PowderSnowBlockMixin.java │ │ │ ├── ClientComposterBlockMixin.java │ │ │ ├── BaseFireBlockMixin.java │ │ │ ├── CherryLeavesBlockMixin.java │ │ │ ├── AbstractCandleBlockMixin.java │ │ │ ├── TorchBlockMixin.java │ │ │ └── FurnaceBlockMixin.java │ │ ├── entity │ │ │ ├── AbstractHorseAccessor.java │ │ │ ├── BlazeMixin.java │ │ │ ├── MinecartFurnaceMixin.java │ │ │ └── SpellCasterIllagerMixin.java │ │ ├── particle │ │ │ ├── SpriteSetAccessor.java │ │ │ ├── LavaParticleMixin.java │ │ │ ├── ParticleEngineAccessor.java │ │ │ └── bubbles │ │ │ │ └── BubbleParticleProviderMixin.java │ │ ├── ItemBordersConfigAccessor.java │ │ ├── EntityInsideFireHandlerMixin.java │ │ ├── GameRendererMixin.java │ │ └── WaterFluidMixin.java │ └── common │ │ ├── StonecutterMenuAccessor.java │ │ ├── entity │ │ ├── EntityAccessor.java │ │ ├── AnimalMixin.java │ │ └── LlamaMixin.java │ │ ├── item │ │ └── MaceItemMixin.java │ │ └── block │ │ ├── FarmBlockMixin.java │ │ └── LeavesBlockMixin.java │ ├── configs │ ├── ColdSeasonsType.java │ ├── ReplacedParticlesDisplayType.java │ ├── blocks │ │ └── UpdatedSmokeConfigs.java │ ├── CommandBlockSpawnType.java │ ├── entities │ │ ├── ExplosivesConfigs.java │ │ ├── DustCloudsConfig.java │ │ └── SleepingConfigs.java │ ├── SmokeType.java │ └── environment │ │ └── BiomeConfigs.java │ ├── SubtleEffects.java │ ├── platform │ ├── services │ │ ├── ParticleHelper.java │ │ └── RegistryHelper.java │ └── Services.java │ ├── init │ └── ModSpriteSets.java │ └── compat │ └── SereneSeasonsCompat.java ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── fabric └── src │ └── main │ ├── resources │ ├── META-INF │ │ └── services │ │ │ ├── einstein.subtle_effects.platform.services.NetworkHelper │ │ │ ├── einstein.subtle_effects.platform.services.ParticleHelper │ │ │ ├── einstein.subtle_effects.platform.services.RegistryHelper │ │ │ └── einstein.subtle_effects.platform.services.IPlatformHelper │ └── subtle_effects.fabric.mixins.json │ └── java │ └── einstein │ └── subtle_effects │ ├── SubtleEffectsFabric.java │ └── platform │ ├── FabricPlatformHelper.java │ └── FabricParticleHelper.java ├── neoforge └── src │ └── main │ ├── resources │ ├── META-INF │ │ └── services │ │ │ ├── einstein.subtle_effects.platform.services.IPlatformHelper │ │ │ ├── einstein.subtle_effects.platform.services.NetworkHelper │ │ │ ├── einstein.subtle_effects.platform.services.ParticleHelper │ │ │ └── einstein.subtle_effects.platform.services.RegistryHelper │ └── subtle_effects.neoforge.mixins.json │ └── java │ └── einstein │ └── subtle_effects │ ├── platform │ ├── NeoForgeParticleHelper.java │ └── NeoForgePlatformHelper.java │ └── mixin │ └── client │ └── FluidTypeMixin.java ├── .gitignore ├── .gitattributes └── settings.gradle /.idea/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/.idea/icon.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/compost.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [] 3 | } -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/snoring.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:snoring" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/banner.png -------------------------------------------------------------------------------- /common/src/main/resources/pack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/pack.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/armadillo.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:armadillo" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/drowning_bubble.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "minecraft:bubble" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/egg_splat.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:egg_splat" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/floating_spark.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:spark" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/long_spark.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:spark" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/metal_spark.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:spark" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/mushroom_spore.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "minecraft:generic_0" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/potion_dot.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:spark" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/short_spark.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:spark" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/end_crystal.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:end_crystal" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/end_portal.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:end_portal" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/experience.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:experience" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/falling_snoring.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:snoring" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/geyser_spout.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:geyser_spout" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/iron_golem.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:iron_golem" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/potion_cloud.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:potion_cloud" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/potion_ring.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:potion_ring" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/slime_trail.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:slime_trail" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/pack.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "pack": { 3 | "description": "Subtle Effects resources", 4 | "pack_format": 48 5 | } 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/waterfall_mist.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:waterfall_mist" 4 | ] 5 | } -------------------------------------------------------------------------------- /fabric/src/main/resources/META-INF/services/einstein.subtle_effects.platform.services.NetworkHelper: -------------------------------------------------------------------------------- 1 | einstein.subtle_effects.platform.FabricNetworkHelper -------------------------------------------------------------------------------- /fabric/src/main/resources/META-INF/services/einstein.subtle_effects.platform.services.ParticleHelper: -------------------------------------------------------------------------------- 1 | einstein.subtle_effects.platform.FabricParticleHelper -------------------------------------------------------------------------------- /fabric/src/main/resources/META-INF/services/einstein.subtle_effects.platform.services.RegistryHelper: -------------------------------------------------------------------------------- 1 | einstein.subtle_effects.platform.FabricRegistryHelper -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/amethyst_sparkle.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:amethyst_sparkle" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/chicken_feather.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:chicken_feather" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/magma_cube_trail.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:magma_cube_trail" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/vanilla_firefly.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:vanilla_firefly" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/waterfall_droplet.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:waterfall_droplet" 4 | ] 5 | } -------------------------------------------------------------------------------- /fabric/src/main/resources/META-INF/services/einstein.subtle_effects.platform.services.IPlatformHelper: -------------------------------------------------------------------------------- 1 | einstein.subtle_effects.platform.FabricPlatformHelper -------------------------------------------------------------------------------- /neoforge/src/main/resources/META-INF/services/einstein.subtle_effects.platform.services.IPlatformHelper: -------------------------------------------------------------------------------- 1 | einstein.subtle_effects.platform.NeoForgePlatformHelper -------------------------------------------------------------------------------- /neoforge/src/main/resources/META-INF/services/einstein.subtle_effects.platform.services.NetworkHelper: -------------------------------------------------------------------------------- 1 | einstein.subtle_effects.platform.NeoForgeNetworkHelper -------------------------------------------------------------------------------- /neoforge/src/main/resources/META-INF/services/einstein.subtle_effects.platform.services.ParticleHelper: -------------------------------------------------------------------------------- 1 | einstein.subtle_effects.platform.NeoForgeParticleHelper -------------------------------------------------------------------------------- /neoforge/src/main/resources/META-INF/services/einstein.subtle_effects.platform.services.RegistryHelper: -------------------------------------------------------------------------------- 1 | einstein.subtle_effects.platform.NeoForgeRegistryHelper -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/blue_parrot_feather.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:blue_parrot_feather" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/spell_caster_magic.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:spell_caster_magic" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/ender_eye_placed_ring.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:ender_eye_placed_ring" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/green_parrot_feather.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:green_parrot_feather" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/water_splash_droplet.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:water_splash_droplet" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/beacon.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:beacon_0", 4 | "subtle_effects:beacon_1" 5 | ] 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/ominous_vault_connection.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:ominous_vault_connection" 4 | ] 5 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/item_rarity.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:item_rarity_0", 4 | "subtle_effects:item_rarity_1" 5 | ] 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/sheep_fluff.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:sheep_fluff_0", 4 | "subtle_effects:sheep_fluff_1" 5 | ] 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/subtle_effects/mob_skull_shaders/dragon_head.json: -------------------------------------------------------------------------------- 1 | { 2 | "item": { 3 | "id": "minecraft:dragon_head" 4 | }, 5 | "shader": "invert" 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/subtle_effects/mob_skull_shaders/creeper_head.json: -------------------------------------------------------------------------------- 1 | { 2 | "item": { 3 | "id": "minecraft:creeper_head" 4 | }, 5 | "shader": "creeper" 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/snow.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:snow_0", 4 | "subtle_effects:snow_1", 5 | "subtle_effects:snow_2" 6 | ] 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/freezing.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:snow_0", 4 | "subtle_effects:snow_1", 5 | "subtle_effects:snow_2" 6 | ] 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/pollen.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:pollen_0", 4 | "subtle_effects:pollen_1", 5 | "subtle_effects:pollen_2" 6 | ] 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/steam.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:steam_0", 4 | "subtle_effects:steam_1", 5 | "subtle_effects:steam_2" 6 | ] 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/frosty_breath.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:steam_0", 4 | "subtle_effects:steam_1", 5 | "subtle_effects:steam_2" 6 | ] 7 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/util/HeartParticleAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.util; 2 | 3 | public interface HeartParticleAccessor { 4 | 5 | void subtleEffects$setHeart(); 6 | } 7 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/snow_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/snow_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/snow_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/snow_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/snow_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/snow_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/spark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/spark.png -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/pack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/resourcepacks/biome_color_water_particles/pack.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/heart_pop.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:heart_pop_0", 4 | "subtle_effects:heart_pop_1", 5 | "subtle_effects:heart_pop_2" 6 | ] 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/mob/villager/snore1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/mob/villager/snore1.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/mob/villager/snore2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/mob/villager/snore2.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/mob/villager/snore3.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/mob/villager/snore3.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/beacon_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/beacon_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/beacon_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/beacon_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/pollen_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/pollen_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/pollen_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/pollen_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/pollen_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/pollen_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/pollen_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/pollen_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/ripple_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/ripple_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/ripple_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/ripple_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/ripple_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/ripple_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/ripple_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/ripple_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/ripple_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/ripple_4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/ripple_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/ripple_5.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/smoke_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/smoke_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/smoke_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/smoke_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/smoke_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/smoke_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/smoke_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/smoke_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/smoke_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/smoke_4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/smoke_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/smoke_5.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/smoke_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/smoke_6.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/smoke_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/smoke_7.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/smoke_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/smoke_8.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/snoring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/snoring.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/steam_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/steam_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/steam_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/steam_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/steam_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/steam_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/sculk_dust.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:sculk_dust_0", 4 | "subtle_effects:sculk_dust_1", 5 | "subtle_effects:sculk_dust_2" 6 | ] 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/block/campfire/sizzle0.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/block/campfire/sizzle0.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/block/campfire/sizzle1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/block/campfire/sizzle1.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/entity/player/snore1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/entity/player/snore1.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/entity/player/snore2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/entity/player/snore2.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/entity/player/snore3.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/entity/player/snore3.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/armadillo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/armadillo.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/egg_splat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/egg_splat.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/end_crystal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/end_crystal.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/end_portal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/end_portal.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/experience.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/experience.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/firefly_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/firefly_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/firefly_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/firefly_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/firefly_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/firefly_10.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/firefly_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/firefly_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/firefly_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/firefly_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/firefly_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/firefly_4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/firefly_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/firefly_5.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/firefly_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/firefly_6.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/firefly_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/firefly_7.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/firefly_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/firefly_8.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/firefly_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/firefly_9.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/heart_pop_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/heart_pop_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/heart_pop_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/heart_pop_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/heart_pop_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/heart_pop_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/iron_golem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/iron_golem.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/potion_ring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/potion_ring.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/slime_trail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/slime_trail.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/entity/player/heartbeat.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/entity/player/heartbeat.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_5.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_6.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/dust_cloud_7.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/geyser_spout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/geyser_spout.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/item_rarity_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/item_rarity_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/item_rarity_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/item_rarity_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_5.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_6.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_7.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_8.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_9.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/potion_cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/potion_cloud.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/sculk_dust_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/sculk_dust_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/sculk_dust_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/sculk_dust_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/sculk_dust_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/sculk_dust_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/sheep_fluff_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/sheep_fluff_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/sheep_fluff_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/sheep_fluff_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/command_block.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:command_block_0", 4 | "subtle_effects:command_block_1", 5 | "subtle_effects:command_block_2" 6 | ] 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/entity/player/stomach_growl.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/entity/player/stomach_growl.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/amethyst_sparkle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/amethyst_sparkle.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_5.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_6.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_7.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/azalea_petal_8.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/chicken_feather.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/chicken_feather.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/command_block_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/command_block_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/command_block_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/command_block_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/command_block_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/command_block_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/magma_cube_trail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/magma_cube_trail.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/vanilla_firefly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/vanilla_firefly.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_5.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_6.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_7.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_8.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_9.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_mist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_mist.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/subtle_effects/spark_providers/fire.json: -------------------------------------------------------------------------------- 1 | { 2 | "states": [ 3 | { 4 | "name": "minecraft:fire" 5 | } 6 | ], 7 | "options": { 8 | "preset": "fire" 9 | } 10 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/subtle_effects/spark_providers/torch.json: -------------------------------------------------------------------------------- 1 | { 2 | "states": [ 3 | { 4 | "name": "minecraft:torch" 5 | } 6 | ], 7 | "options": { 8 | "preset": "torch" 9 | } 10 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/big_fuzz_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/big_fuzz_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/big_fuzz_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/big_fuzz_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/big_fuzz_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/big_fuzz_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/big_fuzz_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/big_fuzz_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/big_fuzz_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/big_fuzz_4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/environment/colorless_rain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/environment/colorless_rain.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/spell_caster_magic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/spell_caster_magic.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_5.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_6.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_cloud_7.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_droplet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/waterfall_droplet.png -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/minecraft/particles/bubble.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "biome_color_water_particles:bubble", 4 | "biome_color_water_particles:bubble_overlay" 5 | ] 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush1.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush2.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush3.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush3.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush4.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush4.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush5.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush5.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush6.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush6.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush7.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush7.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush8.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush8.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush9.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush9.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/subtle_effects/spark_providers/lantern.json: -------------------------------------------------------------------------------- 1 | { 2 | "states": [ 3 | { 4 | "name": "minecraft:lantern" 5 | } 6 | ], 7 | "options": { 8 | "preset": "lantern" 9 | } 10 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/small_fuzz_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/small_fuzz_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/small_fuzz_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/small_fuzz_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/small_fuzz_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/small_fuzz_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/small_fuzz_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/small_fuzz_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/small_fuzz_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/entity/party_hat/small_fuzz_4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/blue_parrot_feather.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/blue_parrot_feather.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/ender_eye_placed_ring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/ender_eye_placed_ring.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/gray_parrot_feather_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/gray_parrot_feather_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/gray_parrot_feather_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/gray_parrot_feather_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/green_parrot_feather.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/green_parrot_feather.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_droplet_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_droplet_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_droplet_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_droplet_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_droplet_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_droplet_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_5.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_6.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/lava_splash_ripple_7.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/potion_poof_cloud_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/potion_poof_cloud_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/potion_poof_cloud_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/potion_poof_cloud_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/potion_poof_cloud_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/potion_poof_cloud_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/potion_poof_cloud_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/potion_poof_cloud_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/potion_poof_cloud_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/potion_poof_cloud_4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/potion_poof_cloud_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/potion_poof_cloud_5.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_droplet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_droplet.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_5.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_6.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_ripple_7.png -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/minecraft/particles/current_down.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "biome_color_water_particles:bubble", 4 | "biome_color_water_particles:bubble_overlay" 5 | ] 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush10.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush10.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush11.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/sounds/block/firefly_bush/firefly_bush11.ogg -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_2.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_3.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_4.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_5.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_6.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_7.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_8.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/water_splash_overlay_9.png -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/minecraft/particles/bubble_column_up.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "biome_color_water_particles:bubble", 4 | "biome_color_water_particles:bubble_overlay" 5 | ] 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/subtle_effects/spark_providers/wall_torch.json: -------------------------------------------------------------------------------- 1 | { 2 | "states": [ 3 | { 4 | "name": "minecraft:wall_torch" 5 | } 6 | ], 7 | "options": { 8 | "preset": "wall_torch" 9 | } 10 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/ominous_vault_connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/ominous_vault_connection.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/red_blue_parrot_feather_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/red_blue_parrot_feather_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/red_blue_parrot_feather_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/red_blue_parrot_feather_1.png -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/subtle_effects/particles/drowning_bubble.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "biome_color_water_particles:bubble", 4 | "biome_color_water_particles:bubble_overlay" 5 | ] 6 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/lava_splash_droplet.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:lava_splash_droplet_0", 4 | "subtle_effects:lava_splash_droplet_1", 5 | "subtle_effects:lava_splash_droplet_2" 6 | ] 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/yellow_blue_parrot_feather_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/yellow_blue_parrot_feather_0.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/yellow_blue_parrot_feather_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/yellow_blue_parrot_feather_1.png -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/textures/particle/yellow_blue_parrot_feather_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/assets/subtle_effects/textures/particle/yellow_blue_parrot_feather_2.png -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/data/NamedReloadListener.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.data; 2 | 3 | import net.minecraft.resources.ResourceLocation; 4 | 5 | public interface NamedReloadListener { 6 | 7 | ResourceLocation getId(); 8 | } 9 | -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/pack.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "pack": { 3 | "pack_format": 48, 4 | "description": { 5 | "translate": "resourcePack.subtle_effects.biome_water_color_particles.description" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/util/FrustumGetter.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.util; 2 | 3 | import net.minecraft.client.renderer.culling.Frustum; 4 | 5 | public interface FrustumGetter { 6 | 7 | Frustum subtleEffects$getCullingFrustum(); 8 | } 9 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/red_blue_parrot_feather.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:red_blue_parrot_feather_0", 4 | "subtle_effects:red_blue_parrot_feather_0", 5 | "subtle_effects:red_blue_parrot_feather_1" 6 | ] 7 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/snowball_trail.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:snow_0", 4 | "subtle_effects:snow_0", 5 | "subtle_effects:snow_0", 6 | "subtle_effects:snow_1", 7 | "subtle_effects:snow_2" 8 | ] 9 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/subtle_effects/spark_providers/soul_fire.json: -------------------------------------------------------------------------------- 1 | { 2 | "states": [ 3 | { 4 | "name": "minecraft:soul_fire" 5 | } 6 | ], 7 | "options": { 8 | "preset": "fire", 9 | "colors": "soul" 10 | } 11 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/subtle_effects/spark_providers/soul_torch.json: -------------------------------------------------------------------------------- 1 | { 2 | "states": [ 3 | { 4 | "name": "minecraft:soul_torch" 5 | } 6 | ], 7 | "options": { 8 | "preset": "torch", 9 | "colors": "soul" 10 | } 11 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/drowning_bubble_pop.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "minecraft:bubble_pop_0", 4 | "minecraft:bubble_pop_1", 5 | "minecraft:bubble_pop_2", 6 | "minecraft:bubble_pop_3", 7 | "minecraft:bubble_pop_4" 8 | ] 9 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/subtle_effects/spark_providers/soul_lantern.json: -------------------------------------------------------------------------------- 1 | { 2 | "states": [ 3 | { 4 | "name": "minecraft:soul_lantern" 5 | } 6 | ], 7 | "options": { 8 | "preset": "lantern", 9 | "colors": "soul" 10 | } 11 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/util/BubbleSetter.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.util; 2 | 3 | import net.minecraft.client.particle.SpriteSet; 4 | 5 | public interface BubbleSetter { 6 | 7 | void subtleEffects$setupBubble(SpriteSet sprites, boolean playSound); 8 | } 9 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/util/CommonEntityAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.util; 2 | 3 | public interface CommonEntityAccessor { 4 | 5 | boolean subtleEffects$wasTouchingLava(); 6 | 7 | void subtleEffects$setTouchingLava(boolean touchingLava); 8 | } 9 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/subtle_effects/spark_providers/soul_wall_torch.json: -------------------------------------------------------------------------------- 1 | { 2 | "states": [ 3 | { 4 | "name": "minecraft:soul_wall_torch" 5 | } 6 | ], 7 | "options": { 8 | "preset": "wall_torch", 9 | "colors": "soul" 10 | } 11 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/data/package-info.java: -------------------------------------------------------------------------------- 1 | @MethodsReturnNonnullByDefault 2 | @ParametersAreNonnullByDefault 3 | package einstein.subtle_effects.data; 4 | 5 | import net.minecraft.MethodsReturnNonnullByDefault; 6 | 7 | import javax.annotation.ParametersAreNonnullByDefault; -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/util/ChestAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.util; 2 | 3 | import net.minecraft.world.level.block.entity.ChestLidController; 4 | 5 | public interface ChestAccessor { 6 | 7 | ChestLidController subtleEffects$getLidController(); 8 | } 9 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/particle/package-info.java: -------------------------------------------------------------------------------- 1 | @MethodsReturnNonnullByDefault 2 | @ParametersAreNonnullByDefault 3 | package einstein.subtle_effects.particle; 4 | 5 | import net.minecraft.MethodsReturnNonnullByDefault; 6 | 7 | import javax.annotation.ParametersAreNonnullByDefault; -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/gray_parrot_feather.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:gray_parrot_feather_0", 4 | "subtle_effects:gray_parrot_feather_0", 5 | "subtle_effects:gray_parrot_feather_0", 6 | "subtle_effects:gray_parrot_feather_1" 7 | ] 8 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # eclipse 2 | bin 3 | *.launch 4 | .settings 5 | .metadata 6 | .classpath 7 | .project 8 | 9 | # idea 10 | out 11 | *.ipr 12 | *.iws 13 | *.iml 14 | .idea/* 15 | !.idea/scopes 16 | !.idea/icon.png 17 | 18 | # gradle 19 | build 20 | .gradle 21 | 22 | # other 23 | eclipse 24 | run 25 | runs 26 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/subtle_effects/spark_providers/furnace.json: -------------------------------------------------------------------------------- 1 | { 2 | "states": [ 3 | { 4 | "name": "minecraft:furnace", 5 | "properties": { 6 | "lit": "true" 7 | } 8 | } 9 | ], 10 | "options": { 11 | "preset": "furnace" 12 | } 13 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/particle/emitter/package-info.java: -------------------------------------------------------------------------------- 1 | @MethodsReturnNonnullByDefault 2 | @ParametersAreNonnullByDefault 3 | package einstein.subtle_effects.particle.emitter; 4 | 5 | import net.minecraft.MethodsReturnNonnullByDefault; 6 | 7 | import javax.annotation.ParametersAreNonnullByDefault; -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/particle/option/package-info.java: -------------------------------------------------------------------------------- 1 | @MethodsReturnNonnullByDefault 2 | @ParametersAreNonnullByDefault 3 | package einstein.subtle_effects.particle.option; 4 | 5 | import net.minecraft.MethodsReturnNonnullByDefault; 6 | 7 | import javax.annotation.ParametersAreNonnullByDefault; -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/subtle_effects/spark_providers/campfire.json: -------------------------------------------------------------------------------- 1 | { 2 | "states": [ 3 | { 4 | "name": "minecraft:campfire", 5 | "properties": { 6 | "lit": "true" 7 | } 8 | } 9 | ], 10 | "options": { 11 | "preset": "campfire" 12 | } 13 | } -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/particle/provider/package-info.java: -------------------------------------------------------------------------------- 1 | @MethodsReturnNonnullByDefault 2 | @ParametersAreNonnullByDefault 3 | package einstein.subtle_effects.particle.provider; 4 | 5 | import net.minecraft.MethodsReturnNonnullByDefault; 6 | 7 | import javax.annotation.ParametersAreNonnullByDefault; -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/lava_ripple.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:ripple_0", 4 | "subtle_effects:ripple_1", 5 | "subtle_effects:ripple_2", 6 | "subtle_effects:ripple_3", 7 | "subtle_effects:ripple_4", 8 | "subtle_effects:ripple_5" 9 | ] 10 | } -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/bubble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/bubble.png -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/client/model/entity/package-info.java: -------------------------------------------------------------------------------- 1 | @MethodsReturnNonnullByDefault 2 | @ParametersAreNonnullByDefault 3 | package einstein.subtle_effects.client.model.entity; 4 | 5 | import net.minecraft.MethodsReturnNonnullByDefault; 6 | 7 | import javax.annotation.ParametersAreNonnullByDefault; -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/water_ripple.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:ripple_0", 4 | "subtle_effects:ripple_1", 5 | "subtle_effects:ripple_2", 6 | "subtle_effects:ripple_3", 7 | "subtle_effects:ripple_4", 8 | "subtle_effects:ripple_5" 9 | ] 10 | } -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/splash_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/splash_0.png -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/splash_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/splash_1.png -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/splash_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/splash_2.png -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/splash_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/splash_3.png -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/minecraft/particles/fishing.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "biome_color_water_particles:splash_0", 4 | "biome_color_water_particles:splash_1", 5 | "biome_color_water_particles:splash_2", 6 | "biome_color_water_particles:splash_3" 7 | ] 8 | } -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/minecraft/particles/rain.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "biome_color_water_particles:splash_0", 4 | "biome_color_water_particles:splash_1", 5 | "biome_color_water_particles:splash_2", 6 | "biome_color_water_particles:splash_3" 7 | ] 8 | } -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/minecraft/particles/splash.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "biome_color_water_particles:splash_0", 4 | "biome_color_water_particles:splash_1", 5 | "biome_color_water_particles:splash_2", 6 | "biome_color_water_particles:splash_3" 7 | ] 8 | } -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text eol=lf 2 | *.bat text eol=crlf 3 | *.patch text eol=lf 4 | *.java text eol=lf 5 | *.gradle text eol=crlf 6 | *.png binary 7 | *.gif binary 8 | *.exe binary 9 | *.dll binary 10 | *.jar binary 11 | *.lzma binary 12 | *.zip binary 13 | *.pyd binary 14 | *.cfg text eol=lf 15 | *.jks binary 16 | *.ogg binary -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/client/renderer/entity/package-info.java: -------------------------------------------------------------------------------- 1 | @MethodsReturnNonnullByDefault 2 | @ParametersAreNonnullByDefault 3 | package einstein.subtle_effects.client.renderer.entity; 4 | 5 | import net.minecraft.MethodsReturnNonnullByDefault; 6 | 7 | import javax.annotation.ParametersAreNonnullByDefault; -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/networking/clientbound/package-info.java: -------------------------------------------------------------------------------- 1 | @MethodsReturnNonnullByDefault 2 | @ParametersAreNonnullByDefault 3 | package einstein.subtle_effects.networking.clientbound; 4 | 5 | import net.minecraft.MethodsReturnNonnullByDefault; 6 | 7 | import javax.annotation.ParametersAreNonnullByDefault; -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/util/DripParticleAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.util; 2 | 3 | public interface DripParticleAccessor { 4 | 5 | default void subtleEffects$setSilent() { 6 | } 7 | 8 | default boolean subtleEffects$isSilent() { 9 | return false; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/bubble_pop_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/bubble_pop_0.png -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/bubble_pop_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/bubble_pop_1.png -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/bubble_pop_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/bubble_pop_2.png -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/bubble_pop_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/bubble_pop_3.png -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/bubble_pop_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/bubble_pop_4.png -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/bubble_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MincraftEinstein/SubtleEffects/HEAD/common/src/main/resources/resourcepacks/biome_color_water_particles/assets/biome_color_water_particles/textures/particle/bubble_overlay.png -------------------------------------------------------------------------------- /fabric/src/main/java/einstein/subtle_effects/SubtleEffectsFabric.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects; 2 | 3 | import net.fabricmc.api.ModInitializer; 4 | 5 | public class SubtleEffectsFabric implements ModInitializer { 6 | 7 | @Override 8 | public void onInitialize() { 9 | SubtleEffects.init(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/allay_magic.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "minecraft:spell_7", 4 | "minecraft:spell_6", 5 | "minecraft:spell_5", 6 | "minecraft:spell_4", 7 | "minecraft:spell_3", 8 | "minecraft:spell_2", 9 | "minecraft:spell_1", 10 | "minecraft:spell_0" 11 | ] 12 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/vex_magic.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "minecraft:spell_7", 4 | "minecraft:spell_6", 5 | "minecraft:spell_5", 6 | "minecraft:spell_4", 7 | "minecraft:spell_3", 8 | "minecraft:spell_2", 9 | "minecraft:spell_1", 10 | "minecraft:spell_0" 11 | ] 12 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/small_dust_cloud.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:dust_cloud_0", 4 | "subtle_effects:dust_cloud_1", 5 | "subtle_effects:dust_cloud_2", 6 | "subtle_effects:dust_cloud_3", 7 | "subtle_effects:dust_cloud_6", 8 | "subtle_effects:dust_cloud_7" 9 | ] 10 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/subtle_effects/spark_providers/soul_campfire.json: -------------------------------------------------------------------------------- 1 | { 2 | "states": [ 3 | { 4 | "name": "minecraft:soul_campfire", 5 | "properties": { 6 | "lit": "true" 7 | } 8 | } 9 | ], 10 | "options": { 11 | "preset": "campfire", 12 | "colors": "soul" 13 | } 14 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/sneeze.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "minecraft:generic_7", 4 | "minecraft:generic_6", 5 | "minecraft:generic_5", 6 | "minecraft:generic_4", 7 | "minecraft:generic_3", 8 | "minecraft:generic_2", 9 | "minecraft:generic_1", 10 | "minecraft:generic_0" 11 | ] 12 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/util/EntityTickerAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.util; 2 | 3 | import einstein.subtle_effects.ticking.tickers.entity.EntityTicker; 4 | import it.unimi.dsi.fastutil.ints.Int2ObjectMap; 5 | 6 | public interface EntityTickerAccessor { 7 | 8 | Int2ObjectMap> subtleEffects$getTickers(); 9 | } 10 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/yellow_blue_parrot_feather.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:yellow_blue_parrot_feather_0", 4 | "subtle_effects:yellow_blue_parrot_feather_0", 5 | "subtle_effects:yellow_blue_parrot_feather_1", 6 | "subtle_effects:yellow_blue_parrot_feather_1", 7 | "subtle_effects:yellow_blue_parrot_feather_2" 8 | ] 9 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/potion_poof_cloud.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:potion_poof_cloud_0", 4 | "subtle_effects:potion_poof_cloud_1", 5 | "subtle_effects:potion_poof_cloud_2", 6 | "subtle_effects:potion_poof_cloud_3", 7 | "subtle_effects:potion_poof_cloud_4", 8 | "subtle_effects:potion_poof_cloud_5" 9 | ] 10 | } -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/minecraft/particles/bubble_pop.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "biome_color_water_particles:bubble_pop_0", 4 | "biome_color_water_particles:bubble_pop_1", 5 | "biome_color_water_particles:bubble_pop_2", 6 | "biome_color_water_particles:bubble_pop_3", 7 | "biome_color_water_particles:bubble_pop_4" 8 | ] 9 | } -------------------------------------------------------------------------------- /common/src/main/resources/resourcepacks/biome_color_water_particles/assets/subtle_effects/particles/drowning_bubble_pop.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "biome_color_water_particles:bubble_pop_0", 4 | "biome_color_water_particles:bubble_pop_1", 5 | "biome_color_water_particles:bubble_pop_2", 6 | "biome_color_water_particles:bubble_pop_3", 7 | "biome_color_water_particles:bubble_pop_4" 8 | ] 9 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/util/EntityProvider.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.util; 2 | 3 | import net.minecraft.util.RandomSource; 4 | import net.minecraft.world.entity.Entity; 5 | import net.minecraft.world.level.Level; 6 | 7 | @FunctionalInterface 8 | public interface EntityProvider { 9 | 10 | void apply(T entity, Level level, RandomSource random); 11 | } 12 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/smoke.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:smoke_0", 4 | "subtle_effects:smoke_1", 5 | "subtle_effects:smoke_2", 6 | "subtle_effects:smoke_3", 7 | "subtle_effects:smoke_4", 8 | "subtle_effects:smoke_5", 9 | "subtle_effects:smoke_6", 10 | "subtle_effects:smoke_7", 11 | "subtle_effects:smoke_8" 12 | ] 13 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/ticking/tickers/Ticker.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.ticking.tickers; 2 | 3 | public abstract class Ticker { 4 | 5 | private boolean isRemoved; 6 | 7 | public abstract void tick(); 8 | 9 | public void remove() { 10 | isRemoved = true; 11 | } 12 | 13 | public boolean isRemoved() { 14 | return isRemoved; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/large_dust_cloud.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:dust_cloud_0", 4 | "subtle_effects:dust_cloud_1", 5 | "subtle_effects:dust_cloud_2", 6 | "subtle_effects:dust_cloud_3", 7 | "subtle_effects:dust_cloud_4", 8 | "subtle_effects:dust_cloud_5", 9 | "subtle_effects:dust_cloud_6", 10 | "subtle_effects:dust_cloud_7" 11 | ] 12 | } -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/waterfall_cloud.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:waterfall_cloud_0", 4 | "subtle_effects:waterfall_cloud_1", 5 | "subtle_effects:waterfall_cloud_2", 6 | "subtle_effects:waterfall_cloud_3", 7 | "subtle_effects:waterfall_cloud_4", 8 | "subtle_effects:waterfall_cloud_5", 9 | "subtle_effects:waterfall_cloud_6", 10 | "subtle_effects:waterfall_cloud_7" 11 | ] 12 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/util/BlockTickerProvider.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.util; 2 | 3 | import net.minecraft.core.BlockPos; 4 | import net.minecraft.util.RandomSource; 5 | import net.minecraft.world.level.Level; 6 | import net.minecraft.world.level.block.state.BlockState; 7 | 8 | @FunctionalInterface 9 | public interface BlockTickerProvider { 10 | 11 | void apply(BlockState state, Level level, BlockPos pos, RandomSource random); 12 | } 13 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/lava_splash_ripple.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:lava_splash_ripple_0", 4 | "subtle_effects:lava_splash_ripple_1", 5 | "subtle_effects:lava_splash_ripple_2", 6 | "subtle_effects:lava_splash_ripple_3", 7 | "subtle_effects:lava_splash_ripple_4", 8 | "subtle_effects:lava_splash_ripple_5", 9 | "subtle_effects:lava_splash_ripple_6", 10 | "subtle_effects:lava_splash_ripple_7" 11 | ] 12 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/item/BucketItemAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.item; 2 | 3 | import net.minecraft.world.item.BucketItem; 4 | import net.minecraft.world.level.material.Fluid; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | @Mixin(BucketItem.class) 9 | public interface BucketItemAccessor { 10 | 11 | @Accessor("content") 12 | Fluid getContent(); 13 | } 14 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/water_splash_ripple.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:water_splash_ripple_0", 4 | "subtle_effects:water_splash_ripple_1", 5 | "subtle_effects:water_splash_ripple_2", 6 | "subtle_effects:water_splash_ripple_3", 7 | "subtle_effects:water_splash_ripple_4", 8 | "subtle_effects:water_splash_ripple_5", 9 | "subtle_effects:water_splash_ripple_6", 10 | "subtle_effects:water_splash_ripple_7" 11 | ] 12 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/common/StonecutterMenuAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.common; 2 | 3 | import net.minecraft.world.inventory.Slot; 4 | import net.minecraft.world.inventory.StonecutterMenu; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | @Mixin(StonecutterMenu.class) 9 | public interface StonecutterMenuAccessor { 10 | 11 | @Accessor("inputSlot") 12 | Slot getInputSlot(); 13 | } 14 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/geyser_smoke.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "minecraft:big_smoke_0", 4 | "minecraft:big_smoke_1", 5 | "minecraft:big_smoke_2", 6 | "minecraft:big_smoke_3", 7 | "minecraft:big_smoke_4", 8 | "minecraft:big_smoke_5", 9 | "minecraft:big_smoke_6", 10 | "minecraft:big_smoke_7", 11 | "minecraft:big_smoke_8", 12 | "minecraft:big_smoke_9", 13 | "minecraft:big_smoke_10", 14 | "minecraft:big_smoke_11" 15 | ] 16 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/GameRendererAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client; 2 | 3 | import net.minecraft.client.renderer.GameRenderer; 4 | import net.minecraft.resources.ResourceLocation; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Invoker; 7 | 8 | @Mixin(GameRenderer.class) 9 | public interface GameRendererAccessor { 10 | 11 | @Invoker("loadEffect") 12 | void loadShaderEffect(ResourceLocation location); 13 | } 14 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/ticking/tickers/entity/WitchPotionRingTicker.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.ticking.tickers.entity; 2 | 3 | import net.minecraft.world.entity.monster.Witch; 4 | 5 | public class WitchPotionRingTicker extends HumanoidPotionRingTicker { 6 | 7 | public WitchPotionRingTicker(Witch entity) { 8 | super(entity); 9 | } 10 | 11 | @Override 12 | protected boolean isUsingItem() { 13 | return entity.isDrinkingPotion(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/configs/ColdSeasonsType.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.configs; 2 | 3 | import einstein.subtle_effects.init.ModConfigs; 4 | import me.fzzyhmstrs.fzzy_config.util.EnumTranslatable; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | public enum ColdSeasonsType implements EnumTranslatable { 8 | OFF, 9 | DEFAULT, 10 | WINTER_ONLY; 11 | 12 | @Override 13 | public @NotNull String prefix() { 14 | return ModConfigs.BASE_KEY + "coldSeasonsType"; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/lava_splash.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:lava_splash_4", 4 | "subtle_effects:lava_splash_0", 5 | "subtle_effects:lava_splash_1", 6 | "subtle_effects:lava_splash_2", 7 | "subtle_effects:lava_splash_3", 8 | "subtle_effects:lava_splash_4", 9 | "subtle_effects:lava_splash_5", 10 | "subtle_effects:lava_splash_6", 11 | "subtle_effects:lava_splash_7", 12 | "subtle_effects:lava_splash_8", 13 | "subtle_effects:lava_splash_9" 14 | ] 15 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/block/AmethystClusterBlockAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.block; 2 | 3 | import net.minecraft.world.level.block.AmethystClusterBlock; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | @Mixin(AmethystClusterBlock.class) 8 | public interface AmethystClusterBlockAccessor { 9 | 10 | @Accessor("height") 11 | float getHeight(); 12 | 13 | @Accessor("aabbOffset") 14 | float getAABBOffset(); 15 | } 16 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/water_splash.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:water_splash_4", 4 | "subtle_effects:water_splash_0", 5 | "subtle_effects:water_splash_1", 6 | "subtle_effects:water_splash_2", 7 | "subtle_effects:water_splash_3", 8 | "subtle_effects:water_splash_4", 9 | "subtle_effects:water_splash_5", 10 | "subtle_effects:water_splash_6", 11 | "subtle_effects:water_splash_7", 12 | "subtle_effects:water_splash_8", 13 | "subtle_effects:water_splash_9" 14 | ] 15 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/configs/ReplacedParticlesDisplayType.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.configs; 2 | 3 | import einstein.subtle_effects.init.ModConfigs; 4 | import me.fzzyhmstrs.fzzy_config.util.EnumTranslatable; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | public enum ReplacedParticlesDisplayType implements EnumTranslatable { 8 | DEFAULT, 9 | VANILLA, 10 | BOTH; 11 | 12 | @Override 13 | public @NotNull String prefix() { 14 | return ModConfigs.BASE_KEY + "replacedParticlesDisplayType"; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /neoforge/src/main/java/einstein/subtle_effects/platform/NeoForgeParticleHelper.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.platform; 2 | 3 | import einstein.subtle_effects.platform.services.ParticleHelper; 4 | import net.minecraft.network.chat.Style; 5 | import net.minecraft.network.chat.TextColor; 6 | import net.minecraft.world.item.Rarity; 7 | 8 | public class NeoForgeParticleHelper implements ParticleHelper { 9 | 10 | @Override 11 | public TextColor getRarityColor(Rarity rarity) { 12 | return rarity.getStyleModifier().apply(Style.EMPTY).getColor(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/entity/AbstractHorseAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.entity; 2 | 3 | import net.minecraft.sounds.SoundEvent; 4 | import net.minecraft.world.entity.animal.horse.AbstractHorse; 5 | import org.jetbrains.annotations.Nullable; 6 | import org.spongepowered.asm.mixin.Mixin; 7 | import org.spongepowered.asm.mixin.gen.Invoker; 8 | 9 | @Mixin(AbstractHorse.class) 10 | public interface AbstractHorseAccessor { 11 | 12 | @Nullable 13 | @Invoker("getEatingSound") 14 | SoundEvent getEatSound(); 15 | } 16 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/particle/SpriteSetAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.particle; 2 | 3 | import net.minecraft.client.particle.ParticleEngine; 4 | import net.minecraft.client.renderer.texture.TextureAtlasSprite; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | import java.util.List; 9 | 10 | @Mixin(ParticleEngine.MutableSpriteSet.class) 11 | public interface SpriteSetAccessor { 12 | 13 | @Accessor("sprites") 14 | List getSprites(); 15 | } 16 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/ItemBordersConfigAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client; 2 | 3 | import com.anthonyhilyard.itemborders.config.ItemBordersConfig; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | import java.util.Map; 8 | import java.util.function.Supplier; 9 | 10 | @Mixin(value = ItemBordersConfig.class, remap = false) 11 | public interface ItemBordersConfigAccessor { 12 | 13 | @Accessor("manualBorders") 14 | Supplier> getManualBorders(); 15 | } 16 | -------------------------------------------------------------------------------- /neoforge/src/main/resources/subtle_effects.neoforge.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "einstein.subtle_effects.mixin", 5 | "refmap": "subtle_effects.refmap.json", 6 | "compatibilityLevel": "JAVA_17", 7 | "client": [ 8 | "client.FluidTypeMixin", 9 | "client.NeoForgeClientEntityMixin", 10 | "client.NeoForgeMultiPlayerGameModeMixin" 11 | ], 12 | "mixins": [ 13 | "common.NeoForgeShearsDispenseItemBehaviorMixin", 14 | "common.NeoForgeStonecutterMenu$2Mixin" 15 | ], 16 | "injectors": { 17 | "defaultRequire": 1 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /fabric/src/main/resources/subtle_effects.fabric.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "einstein.subtle_effects.mixin", 5 | "refmap": "subtle_effects.refmap.json", 6 | "compatibilityLevel": "JAVA_17", 7 | "client": [ 8 | "client.FabricClientEntityMixin", 9 | "client.FabricLevelRendererMixin", 10 | "client.FabricMultiPlayerGameModeMixin" 11 | ], 12 | "mixins": [ 13 | "common.FabricStonecutterMenu$2Mixin", 14 | "common.block.dispenser.FabricShearsDispenseItemBehaviorMixin" 15 | ], 16 | "injectors": { 17 | "defaultRequire": 1 18 | } 19 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/ticking/tickers/LevelTicker.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.ticking.tickers; 2 | 3 | import net.minecraft.util.RandomSource; 4 | import net.minecraft.world.level.Level; 5 | 6 | public abstract class LevelTicker extends Ticker { 7 | 8 | protected final Level level; 9 | protected final RandomSource random; 10 | 11 | public LevelTicker(Level level, RandomSource random) { 12 | this.level = level; 13 | this.random = random; 14 | } 15 | 16 | public LevelTicker(Level level) { 17 | this(level, RandomSource.create()); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/water_splash_overlay.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:water_splash_overlay_4", 4 | "subtle_effects:water_splash_overlay_0", 5 | "subtle_effects:water_splash_overlay_1", 6 | "subtle_effects:water_splash_overlay_2", 7 | "subtle_effects:water_splash_overlay_3", 8 | "subtle_effects:water_splash_overlay_4", 9 | "subtle_effects:water_splash_overlay_5", 10 | "subtle_effects:water_splash_overlay_6", 11 | "subtle_effects:water_splash_overlay_7", 12 | "subtle_effects:water_splash_overlay_8", 13 | "subtle_effects:water_splash_overlay_9" 14 | ] 15 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/ticking/tickers/ScheduledTicker.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.ticking.tickers; 2 | 3 | public class ScheduledTicker extends Ticker { 4 | 5 | private final int lifeTime; 6 | private final Runnable runnable; 7 | private int age; 8 | 9 | public ScheduledTicker(int lifeTime, Runnable runnable) { 10 | this.lifeTime = lifeTime; 11 | this.runnable = runnable; 12 | } 13 | 14 | @Override 15 | public void tick() { 16 | age++; 17 | 18 | if (age >= lifeTime) { 19 | runnable.run(); 20 | remove(); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/configs/blocks/UpdatedSmokeConfigs.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.configs.blocks; 2 | 3 | import einstein.subtle_effects.init.ModConfigs; 4 | import me.fzzyhmstrs.fzzy_config.annotations.Translation; 5 | import me.fzzyhmstrs.fzzy_config.config.ConfigSection; 6 | 7 | @Translation(prefix = ModConfigs.BASE_KEY + "blocks.updatedSmoke") 8 | public class UpdatedSmokeConfigs extends ConfigSection { 9 | 10 | public boolean candleSmoke = true; 11 | public boolean furnaceSmoke = true; 12 | public boolean fireSmoke = true; 13 | public boolean torchSmoke = true; 14 | public boolean campfireDowseSmoke = true; 15 | } 16 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/azalea_petal.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:azalea_petal_0", 4 | "subtle_effects:azalea_petal_1", 5 | "subtle_effects:azalea_petal_2", 6 | "subtle_effects:azalea_petal_3", 7 | "subtle_effects:azalea_petal_4", 8 | "subtle_effects:azalea_petal_4", 9 | "subtle_effects:azalea_petal_5", 10 | "subtle_effects:azalea_petal_5", 11 | "subtle_effects:azalea_petal_6", 12 | "subtle_effects:azalea_petal_6", 13 | "subtle_effects:azalea_petal_7", 14 | "subtle_effects:azalea_petal_7", 15 | "subtle_effects:azalea_petal_8", 16 | "subtle_effects:azalea_petal_8" 17 | ] 18 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/ticking/tickers/entity/SimpleTicker.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.ticking.tickers.entity; 2 | 3 | import einstein.subtle_effects.util.EntityProvider; 4 | import net.minecraft.world.entity.Entity; 5 | 6 | public class SimpleTicker extends EntityTicker { 7 | 8 | private final EntityProvider provider; 9 | 10 | public SimpleTicker(T entity, EntityProvider provider, boolean checkVisibility) { 11 | super(entity, checkVisibility); 12 | this.provider = provider; 13 | } 14 | 15 | @Override 16 | public void entityTick() { 17 | provider.apply(entity, level, random); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/common/entity/EntityAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.common.entity; 2 | 3 | import net.minecraft.world.entity.Entity; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | import org.spongepowered.asm.mixin.gen.Invoker; 7 | 8 | @Mixin(Entity.class) 9 | public interface EntityAccessor { 10 | 11 | @Invoker("doWaterSplashEffect") 12 | void doWaterSplashingEffects(); 13 | 14 | @Invoker("playEntityOnFireExtinguishedSound") 15 | void playExtinguishedSound(); 16 | 17 | @Accessor("wasTouchingWater") 18 | void subtleEffects$setTouchingWater(boolean touchingWater); 19 | } 20 | -------------------------------------------------------------------------------- /fabric/src/main/java/einstein/subtle_effects/platform/FabricPlatformHelper.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.platform; 2 | 3 | import einstein.subtle_effects.platform.services.IPlatformHelper; 4 | import net.fabricmc.loader.api.FabricLoader; 5 | 6 | public class FabricPlatformHelper implements IPlatformHelper { 7 | 8 | @Override 9 | public Platform getPlatform() { 10 | return Platform.FABRIC; 11 | } 12 | 13 | @Override 14 | public boolean isModLoaded(String modId) { 15 | return FabricLoader.getInstance().isModLoaded(modId); 16 | } 17 | 18 | @Override 19 | public boolean isDevelopmentEnvironment() { 20 | return FabricLoader.getInstance().isDevelopmentEnvironment(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /neoforge/src/main/java/einstein/subtle_effects/platform/NeoForgePlatformHelper.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.platform; 2 | 3 | import einstein.subtle_effects.platform.services.IPlatformHelper; 4 | import net.neoforged.fml.ModList; 5 | import net.neoforged.fml.loading.FMLLoader; 6 | 7 | public class NeoForgePlatformHelper implements IPlatformHelper { 8 | 9 | @Override 10 | public Platform getPlatform() { 11 | return Platform.NEOFORGE; 12 | } 13 | 14 | @Override 15 | public boolean isModLoaded(String modId) { 16 | return ModList.get().isLoaded(modId); 17 | } 18 | 19 | @Override 20 | public boolean isDevelopmentEnvironment() { 21 | return !FMLLoader.isProduction(); 22 | } 23 | } -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | exclusiveContent { 6 | forRepository { 7 | maven { 8 | name = 'Fabric' 9 | url = uri('https://maven.fabricmc.net') 10 | } 11 | } 12 | filter { 13 | includeGroup('net.fabricmc') 14 | includeGroup('fabric-loom') 15 | } 16 | } 17 | } 18 | } 19 | 20 | plugins { 21 | id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0' 22 | } 23 | 24 | rootProject.name = "${mod_name}" 25 | include('common', 'fabric', 'neoforge') 26 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/ticking/tickers/entity/sleeping/FoxSleepingTicker.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.ticking.tickers.entity.sleeping; 2 | 3 | import net.minecraft.world.entity.animal.Fox; 4 | 5 | import static einstein.subtle_effects.init.ModConfigs.ENTITIES; 6 | 7 | public class FoxSleepingTicker extends SleepingTicker { 8 | 9 | public FoxSleepingTicker(Fox entity) { 10 | super(entity); 11 | } 12 | 13 | @Override 14 | protected boolean isSleeping() { 15 | return ENTITIES.sleeping.foxesHaveSleepingZs && super.isSleeping(); 16 | } 17 | 18 | @Override 19 | protected boolean particleConfigEnabled() { 20 | return ENTITIES.sleeping.foxesHaveSleepingZs; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/block/AbstractCauldronBlockAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.block; 2 | 3 | import net.minecraft.core.BlockPos; 4 | import net.minecraft.world.entity.Entity; 5 | import net.minecraft.world.level.block.AbstractCauldronBlock; 6 | import net.minecraft.world.level.block.state.BlockState; 7 | import org.spongepowered.asm.mixin.Mixin; 8 | import org.spongepowered.asm.mixin.gen.Invoker; 9 | 10 | @Mixin(AbstractCauldronBlock.class) 11 | public interface AbstractCauldronBlockAccessor { 12 | 13 | @Invoker("getContentHeight") 14 | double getFillHeight(BlockState state); 15 | 16 | @Invoker("isEntityInsideContent") 17 | boolean isEntityInside(BlockState state, BlockPos pos, Entity entity); 18 | } 19 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/particle/GlowingSuspendedParticle.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.particle; 2 | 3 | import einstein.subtle_effects.util.Util; 4 | import net.minecraft.client.multiplayer.ClientLevel; 5 | import net.minecraft.client.particle.SpriteSet; 6 | import net.minecraft.client.particle.SuspendedParticle; 7 | 8 | public class GlowingSuspendedParticle extends SuspendedParticle { 9 | 10 | public GlowingSuspendedParticle(ClientLevel level, SpriteSet sprites, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { 11 | super(level, sprites, x, y, z, xSpeed, ySpeed, zSpeed); 12 | } 13 | 14 | @Override 15 | protected int getLightColor(float partialTick) { 16 | return Util.PARTICLE_LIGHT_COLOR; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /common/src/main/resources/assets/subtle_effects/particles/firefly.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | "subtle_effects:firefly_0", 4 | "subtle_effects:firefly_1", 5 | "subtle_effects:firefly_2", 6 | "subtle_effects:firefly_3", 7 | "subtle_effects:firefly_4", 8 | "subtle_effects:firefly_5", 9 | "subtle_effects:firefly_6", 10 | "subtle_effects:firefly_7", 11 | "subtle_effects:firefly_8", 12 | "subtle_effects:firefly_9", 13 | "subtle_effects:firefly_10", 14 | "subtle_effects:firefly_9", 15 | "subtle_effects:firefly_8", 16 | "subtle_effects:firefly_7", 17 | "subtle_effects:firefly_6", 18 | "subtle_effects:firefly_5", 19 | "subtle_effects:firefly_4", 20 | "subtle_effects:firefly_3", 21 | "subtle_effects:firefly_2", 22 | "subtle_effects:firefly_1" 23 | ] 24 | } -------------------------------------------------------------------------------- /fabric/src/main/java/einstein/subtle_effects/platform/FabricParticleHelper.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.platform; 2 | 3 | import einstein.subtle_effects.platform.services.ParticleHelper; 4 | import net.fabricmc.fabric.api.client.particle.v1.FabricSpriteProvider; 5 | import net.minecraft.client.particle.SpriteSet; 6 | import net.minecraft.client.renderer.texture.TextureAtlasSprite; 7 | 8 | import java.util.List; 9 | 10 | public class FabricParticleHelper implements ParticleHelper { 11 | 12 | @Override 13 | public List getSpritesFromSet(SpriteSet spriteSet) { 14 | if (spriteSet instanceof FabricSpriteProvider spriteProvider) { 15 | return spriteProvider.getSprites(); 16 | } 17 | return ParticleHelper.super.getSpritesFromSet(spriteSet); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/SubtleEffects.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects; 2 | 3 | import einstein.subtle_effects.init.ModPayloads; 4 | import einstein.subtle_effects.init.ModSounds; 5 | import net.minecraft.resources.ResourceLocation; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | 9 | public class SubtleEffects { 10 | 11 | public static final String MOD_ID = "subtle_effects"; 12 | public static final String MOD_NAME = "Subtle Effects"; 13 | public static final Logger LOGGER = LoggerFactory.getLogger(MOD_NAME); 14 | 15 | public static void init() { 16 | ModSounds.init(); 17 | ModPayloads.init(); 18 | } 19 | 20 | public static ResourceLocation loc(String path) { 21 | return ResourceLocation.fromNamespaceAndPath(MOD_ID, path); 22 | } 23 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/configs/CommandBlockSpawnType.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.configs; 2 | 3 | import me.fzzyhmstrs.fzzy_config.util.EnumTranslatable; 4 | import net.minecraft.client.Minecraft; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | import static einstein.subtle_effects.init.ModConfigs.BASE_KEY; 8 | 9 | public enum CommandBlockSpawnType implements EnumTranslatable { 10 | ON, 11 | OFF, 12 | NOT_CREATIVE; 13 | 14 | public boolean canTick() { 15 | return this == CommandBlockSpawnType.ON 16 | || (this == CommandBlockSpawnType.NOT_CREATIVE && !Minecraft.getInstance().player.isCreative()); 17 | } 18 | 19 | @NotNull 20 | @Override 21 | public String prefix() { 22 | return BASE_KEY + "commandBlockType"; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/block/entity/ChestBlockEntityMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.block.entity; 2 | 3 | import einstein.subtle_effects.util.ChestAccessor; 4 | import net.minecraft.world.level.block.entity.ChestBlockEntity; 5 | import net.minecraft.world.level.block.entity.ChestLidController; 6 | import org.spongepowered.asm.mixin.Final; 7 | import org.spongepowered.asm.mixin.Mixin; 8 | import org.spongepowered.asm.mixin.Shadow; 9 | 10 | @Mixin(ChestBlockEntity.class) 11 | public class ChestBlockEntityMixin implements ChestAccessor { 12 | 13 | @Shadow 14 | @Final 15 | private ChestLidController chestLidController; 16 | 17 | @Override 18 | public ChestLidController subtleEffects$getLidController() { 19 | return chestLidController; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/util/ParticleAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.util; 2 | 3 | public interface ParticleAccessor { 4 | 5 | double getX(); 6 | 7 | double getY(); 8 | 9 | double getZ(); 10 | 11 | double getOldX(); 12 | 13 | double getOldY(); 14 | 15 | double getOldZ(); 16 | 17 | float getAlpha(); 18 | 19 | void setAlpha(float alpha); 20 | 21 | void setGravity(float gravity); 22 | 23 | void setHasPhysics(boolean hasPhysics); 24 | 25 | float getWidth(); 26 | 27 | float getHeight(); 28 | 29 | void setSizes(float width, float height); 30 | 31 | boolean subtleEffects$wasForced(); 32 | 33 | void subtleEffects$force(); 34 | 35 | boolean subtleEffects$shouldIgnoreCulling(); 36 | 37 | void subtleEffects$ignoresCulling(); 38 | } 39 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/configs/entities/ExplosivesConfigs.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.configs.entities; 2 | 3 | import einstein.subtle_effects.configs.SmokeType; 4 | import einstein.subtle_effects.init.ModConfigs; 5 | import me.fzzyhmstrs.fzzy_config.annotations.Translation; 6 | import me.fzzyhmstrs.fzzy_config.config.ConfigSection; 7 | import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; 8 | 9 | @Translation(prefix = ModConfigs.BASE_KEY + "entities.explosives") 10 | public class ExplosivesConfigs extends ConfigSection { 11 | 12 | public boolean tntUpdateSmoke = true; 13 | public ValidatedInt tntFlamesDensity = new ValidatedInt(1, 15, 0); 14 | public boolean tntSparks = true; 15 | public SmokeType creeperSmoke = SmokeType.UPDATED; 16 | public boolean creeperSparks = true; 17 | } 18 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/block/entity/EnderChestBlockEntityMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.block.entity; 2 | 3 | import einstein.subtle_effects.util.ChestAccessor; 4 | import net.minecraft.world.level.block.entity.ChestLidController; 5 | import net.minecraft.world.level.block.entity.EnderChestBlockEntity; 6 | import org.spongepowered.asm.mixin.Final; 7 | import org.spongepowered.asm.mixin.Mixin; 8 | import org.spongepowered.asm.mixin.Shadow; 9 | 10 | @Mixin(EnderChestBlockEntity.class) 11 | public class EnderChestBlockEntityMixin implements ChestAccessor { 12 | 13 | @Shadow 14 | @Final 15 | private ChestLidController chestLidController; 16 | 17 | @Override 18 | public ChestLidController subtleEffects$getLidController() { 19 | return chestLidController; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/platform/services/ParticleHelper.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.platform.services; 2 | 3 | import einstein.subtle_effects.mixin.client.particle.SpriteSetAccessor; 4 | import net.minecraft.client.particle.SpriteSet; 5 | import net.minecraft.client.renderer.texture.TextureAtlasSprite; 6 | import net.minecraft.network.chat.TextColor; 7 | import net.minecraft.world.item.Rarity; 8 | import org.jetbrains.annotations.Nullable; 9 | 10 | import java.util.List; 11 | 12 | public interface ParticleHelper { 13 | 14 | @Nullable 15 | default List getSpritesFromSet(SpriteSet spriteSet) { 16 | return ((SpriteSetAccessor) spriteSet).getSprites(); 17 | } 18 | 19 | default TextColor getRarityColor(Rarity rarity) { 20 | return TextColor.fromLegacyFormat(rarity.color()); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/platform/services/RegistryHelper.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.platform.services; 2 | 3 | import net.minecraft.client.particle.ParticleProvider; 4 | import net.minecraft.client.particle.SpriteSet; 5 | import net.minecraft.core.particles.ParticleOptions; 6 | import net.minecraft.core.particles.ParticleType; 7 | import net.minecraft.sounds.SoundEvent; 8 | 9 | import java.util.function.Function; 10 | import java.util.function.Supplier; 11 | 12 | public interface RegistryHelper { 13 | 14 | > Supplier registerParticle(String name, Supplier particle); 15 | 16 | , V extends ParticleOptions> void registerParticleProvider(Supplier particle, Function> provider); 17 | 18 | Supplier registerSound(String name); 19 | } 20 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/EntityInsideFireHandlerMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client; 2 | 3 | import com.llamalad7.mixinextras.injector.ModifyExpressionValue; 4 | import einstein.subtle_effects.init.ModConfigs; 5 | import fuzs.dyedflames.handler.EntityInsideFireHandler; 6 | import org.spongepowered.asm.mixin.Mixin; 7 | import org.spongepowered.asm.mixin.injection.At; 8 | 9 | @Mixin(value = EntityInsideFireHandler.class, remap = false) 10 | public class EntityInsideFireHandlerMixin { 11 | 12 | @ModifyExpressionValue(method = "onEndEntityTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;displayFireAnimation()Z", remap = true)) 13 | private static boolean cancelFireParticles(boolean original) { 14 | return original && !ModConfigs.ENTITIES.burning.overrideDyedFlamesEffects; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/init/ModSpriteSets.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.init; 2 | 3 | import einstein.subtle_effects.SubtleEffects; 4 | import net.minecraft.client.particle.ParticleEngine; 5 | import net.minecraft.resources.ResourceLocation; 6 | 7 | import java.util.HashMap; 8 | import java.util.Map; 9 | 10 | public class ModSpriteSets { 11 | 12 | public static final Map REGISTERED = new HashMap<>(); 13 | 14 | public static final ParticleEngine.MutableSpriteSet WATER_SPLASH_OVERLAY = register("water_splash_overlay"); 15 | 16 | public static void init() { 17 | } 18 | 19 | private static ParticleEngine.MutableSpriteSet register(String name) { 20 | ParticleEngine.MutableSpriteSet spriteSet = new ParticleEngine.MutableSpriteSet(); 21 | REGISTERED.put(SubtleEffects.loc(name), spriteSet); 22 | return spriteSet; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/particle/provider/SmokeParticleProvider.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.particle.provider; 2 | 3 | import net.minecraft.client.multiplayer.ClientLevel; 4 | import net.minecraft.client.particle.Particle; 5 | import net.minecraft.client.particle.SmokeParticle; 6 | import net.minecraft.client.particle.SpriteSet; 7 | import net.minecraft.core.particles.SimpleParticleType; 8 | 9 | public class SmokeParticleProvider extends SmokeParticle.Provider { 10 | 11 | public SmokeParticleProvider(SpriteSet sprites) { 12 | super(sprites); 13 | } 14 | 15 | @Override 16 | public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { 17 | Particle particle = super.createParticle(type, level, x, y, z, xSpeed, ySpeed, zSpeed); 18 | particle.setColor(1, 1, 1); 19 | return particle; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/ticking/tickers/entity/sleeping/VillagerSleepingTicker.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.ticking.tickers.entity.sleeping; 2 | 3 | import einstein.subtle_effects.init.ModSounds; 4 | import net.minecraft.world.entity.npc.AbstractVillager; 5 | 6 | import static einstein.subtle_effects.init.ModConfigs.ENTITIES; 7 | 8 | public class VillagerSleepingTicker extends SleepingTicker { 9 | 10 | public VillagerSleepingTicker(AbstractVillager villager) { 11 | super(villager, 12 | doesEntitySnore(villager, ENTITIES.sleeping.villagerSnoreChance.get()), 13 | 80, 14 | ModSounds.VILLAGER_SNORE.get(), 15 | ENTITIES.sleeping.villagerSnoreSoundVolume.get() 16 | ); 17 | } 18 | 19 | @Override 20 | protected boolean particleConfigEnabled() { 21 | return ENTITIES.sleeping.villagersHaveSleepingZs; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/util/MathUtil.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.util; 2 | 3 | import net.minecraft.util.Mth; 4 | import net.minecraft.util.RandomSource; 5 | 6 | public class MathUtil { 7 | 8 | public static double nextNonAbsDouble(RandomSource random) { 9 | return random.nextDouble() * nextSign(random); 10 | } 11 | 12 | public static double nextNonAbsDouble(RandomSource random, double max) { 13 | return nextDouble(random, max) * nextSign(random); 14 | } 15 | 16 | public static double nextNonAbsDouble(RandomSource random, double min, double max) { 17 | return Mth.nextDouble(random, min, max) * nextSign(random); 18 | } 19 | 20 | public static double nextDouble(RandomSource random, double max) { 21 | return Mth.nextDouble(random, 0, max); 22 | } 23 | 24 | public static int nextSign(RandomSource random) { 25 | return random.nextBoolean() ? 1 : -1; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/particle/provider/SpellCasterMagicProvider.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.particle.provider; 2 | 3 | import net.minecraft.client.multiplayer.ClientLevel; 4 | import net.minecraft.client.particle.Particle; 5 | import net.minecraft.client.particle.SpellParticle; 6 | import net.minecraft.client.particle.SpriteSet; 7 | import net.minecraft.core.particles.ColorParticleOption; 8 | 9 | public class SpellCasterMagicProvider extends SpellParticle.MobEffectProvider { 10 | 11 | public SpellCasterMagicProvider(SpriteSet sprites) { 12 | super(sprites); 13 | } 14 | 15 | @Override 16 | public Particle createParticle(ColorParticleOption option, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { 17 | Particle particle = super.createParticle(option, level, x, y, z, xSpeed, ySpeed, zSpeed); 18 | particle.scale(1.5F); 19 | return particle; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/util/Box.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.util; 2 | 3 | import com.mojang.serialization.Codec; 4 | import com.mojang.serialization.codecs.RecordCodecBuilder; 5 | import net.minecraft.world.phys.Vec3; 6 | 7 | public record Box(Vec3 min, Vec3 max) { 8 | 9 | public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( 10 | Vec3.CODEC.fieldOf("min").forGetter(Box::min), 11 | Vec3.CODEC.fieldOf("max").forGetter(Box::max) 12 | ).apply(instance, Box::new)); 13 | 14 | public Box(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) { 15 | this(new Vec3(minX, minY, minZ), new Vec3(maxX, maxY, maxZ)); 16 | } 17 | 18 | public Box() { 19 | this(Vec3.ZERO, new Vec3(1, 1, 1)); 20 | } 21 | 22 | public Box add(double x, double y, double z) { 23 | return new Box(min.add(x, y, z), max.add(x, y, z)); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/ticking/tickers/entity/sleeping/BatSleepingTicker.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.ticking.tickers.entity.sleeping; 2 | 3 | import einstein.subtle_effects.init.ModParticles; 4 | import net.minecraft.core.particles.ParticleOptions; 5 | import net.minecraft.world.entity.ambient.Bat; 6 | 7 | import static einstein.subtle_effects.init.ModConfigs.ENTITIES; 8 | 9 | public class BatSleepingTicker extends SleepingTicker { 10 | 11 | public BatSleepingTicker(Bat entity) { 12 | super(entity); 13 | } 14 | 15 | @Override 16 | protected boolean isSleeping() { 17 | return ENTITIES.sleeping.batsHaveSleepingZs && entity.isResting(); 18 | } 19 | 20 | @Override 21 | protected ParticleOptions getParticle() { 22 | return ModParticles.FALLING_SNORING.get(); 23 | } 24 | 25 | @Override 26 | protected boolean particleConfigEnabled() { 27 | return ENTITIES.sleeping.batsHaveSleepingZs; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/client/renderer/entity/EinsteinSolarSystemRenderLayerParentImpl.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.client.renderer.entity; 2 | 3 | import einstein.subtle_effects.client.model.entity.EinsteinSolarSystemModel; 4 | import net.minecraft.client.model.PlayerModel; 5 | import net.minecraft.client.player.AbstractClientPlayer; 6 | import net.minecraft.client.renderer.entity.RenderLayerParent; 7 | import net.minecraft.resources.ResourceLocation; 8 | 9 | public record EinsteinSolarSystemRenderLayerParentImpl>( 10 | EinsteinSolarSystemLayer renderLayer) implements RenderLayerParent> { 11 | 12 | @Override 13 | public EinsteinSolarSystemModel getModel() { 14 | return renderLayer.getModel(); 15 | } 16 | 17 | @Override 18 | public ResourceLocation getTextureLocation(T player) { 19 | return renderLayer.getTextureLocation(player); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/entity/BlazeMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.entity; 2 | 3 | import com.llamalad7.mixinextras.injector.ModifyExpressionValue; 4 | import einstein.subtle_effects.init.ModConfigs; 5 | import einstein.subtle_effects.init.ModParticles; 6 | import net.minecraft.core.particles.SimpleParticleType; 7 | import net.minecraft.world.entity.monster.Blaze; 8 | import org.spongepowered.asm.mixin.Mixin; 9 | import org.spongepowered.asm.mixin.injection.At; 10 | 11 | @Mixin(Blaze.class) 12 | public class BlazeMixin { 13 | 14 | @ModifyExpressionValue(method = "aiStep", at = @At(value = "FIELD", target = "Lnet/minecraft/core/particles/ParticleTypes;LARGE_SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;")) 15 | private SimpleParticleType replaceSmoke(SimpleParticleType original) { 16 | if (ModConfigs.ENTITIES.replaceBlazeSmoke) { 17 | return ModParticles.GEYSER_SMOKE.get(); 18 | } 19 | return original; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/particle/provider/PollenProvider.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.particle.provider; 2 | 3 | import einstein.subtle_effects.util.ParticleAccessor; 4 | import net.minecraft.client.multiplayer.ClientLevel; 5 | import net.minecraft.client.particle.Particle; 6 | import net.minecraft.client.particle.ParticleProvider; 7 | import net.minecraft.client.particle.SpriteSet; 8 | import net.minecraft.client.particle.SuspendedParticle; 9 | import net.minecraft.core.particles.SimpleParticleType; 10 | 11 | public record PollenProvider(SpriteSet sprites) implements ParticleProvider { 12 | 13 | @Override 14 | public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { 15 | SuspendedParticle particle = new SuspendedParticle(level, sprites, x, y, z, xSpeed, -0.8, zSpeed); 16 | ((ParticleAccessor) particle).setGravity(0.01F); 17 | return particle; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/networking/clientbound/ClientBoundSheepShearPayload.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.networking.clientbound; 2 | 3 | import einstein.subtle_effects.SubtleEffects; 4 | import net.minecraft.network.FriendlyByteBuf; 5 | import net.minecraft.network.codec.ByteBufCodecs; 6 | import net.minecraft.network.codec.StreamCodec; 7 | import net.minecraft.network.protocol.common.custom.CustomPacketPayload; 8 | 9 | public record ClientBoundSheepShearPayload(int entityId) implements CustomPacketPayload { 10 | 11 | public static final Type TYPE = new Type<>(SubtleEffects.loc("sheep_shear")); 12 | public static final StreamCodec STREAM_CODEC = StreamCodec.composite( 13 | ByteBufCodecs.INT, ClientBoundSheepShearPayload::entityId, 14 | ClientBoundSheepShearPayload::new 15 | ); 16 | 17 | @Override 18 | public Type type() { 19 | return TYPE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/networking/clientbound/ClientBoundDrankPotionPayload.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.networking.clientbound; 2 | 3 | import einstein.subtle_effects.SubtleEffects; 4 | import net.minecraft.network.FriendlyByteBuf; 5 | import net.minecraft.network.codec.ByteBufCodecs; 6 | import net.minecraft.network.codec.StreamCodec; 7 | import net.minecraft.network.protocol.common.custom.CustomPacketPayload; 8 | 9 | public record ClientBoundDrankPotionPayload(int entityId) implements CustomPacketPayload { 10 | 11 | public static final Type TYPE = new Type<>(SubtleEffects.loc("drank_potion")); 12 | public static final StreamCodec STREAM_CODEC = StreamCodec.composite( 13 | ByteBufCodecs.INT, ClientBoundDrankPotionPayload::entityId, 14 | ClientBoundDrankPotionPayload::new 15 | ); 16 | 17 | @Override 18 | public Type type() { 19 | return TYPE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/common/item/MaceItemMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.common.item; 2 | 3 | import einstein.subtle_effects.networking.clientbound.ClientBoundEntityFellPayload; 4 | import einstein.subtle_effects.util.ParticleSpawnUtil; 5 | import net.minecraft.world.entity.Entity; 6 | import net.minecraft.world.entity.player.Player; 7 | import net.minecraft.world.item.MaceItem; 8 | import net.minecraft.world.level.Level; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | import org.spongepowered.asm.mixin.injection.Inject; 12 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 13 | 14 | @Mixin(MaceItem.class) 15 | public class MaceItemMixin { 16 | 17 | @Inject(method = "knockback", at = @At("HEAD")) 18 | private static void spawnDustClouds(Level level, Player player, Entity entity, CallbackInfo ci) { 19 | ParticleSpawnUtil.spawnFallDustClouds(player, 10, 10, ClientBoundEntityFellPayload.TypeConfig.MACE); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/networking/clientbound/ClientBoundXPBottleEffectsPayload.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.networking.clientbound; 2 | 3 | import einstein.subtle_effects.SubtleEffects; 4 | import net.minecraft.core.BlockPos; 5 | import net.minecraft.network.FriendlyByteBuf; 6 | import net.minecraft.network.codec.StreamCodec; 7 | import net.minecraft.network.protocol.common.custom.CustomPacketPayload; 8 | 9 | public record ClientBoundXPBottleEffectsPayload(BlockPos pos) implements CustomPacketPayload { 10 | 11 | public static final Type TYPE = new Type<>(SubtleEffects.loc("xp_bottle_effects")); 12 | public static final StreamCodec STREAM_CODEC = StreamCodec.composite( 13 | BlockPos.STREAM_CODEC, ClientBoundXPBottleEffectsPayload::pos, 14 | ClientBoundXPBottleEffectsPayload::new 15 | ); 16 | 17 | @Override 18 | public Type type() { 19 | return TYPE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/block/PowderSnowBlockMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.block; 2 | 3 | import com.llamalad7.mixinextras.injector.ModifyExpressionValue; 4 | import einstein.subtle_effects.init.ModConfigs; 5 | import einstein.subtle_effects.init.ModParticles; 6 | import net.minecraft.core.particles.SimpleParticleType; 7 | import net.minecraft.world.level.block.PowderSnowBlock; 8 | import org.spongepowered.asm.mixin.Mixin; 9 | import org.spongepowered.asm.mixin.injection.At; 10 | 11 | @Mixin(PowderSnowBlock.class) 12 | public class PowderSnowBlockMixin { 13 | 14 | @ModifyExpressionValue(method = "entityInside", at = @At(value = "FIELD", target = "Lnet/minecraft/core/particles/ParticleTypes;SNOWFLAKE:Lnet/minecraft/core/particles/SimpleParticleType;")) 15 | private SimpleParticleType replaceSnowflake(SimpleParticleType original) { 16 | if (ModConfigs.BLOCKS.replacePowderSnowFlakes) { 17 | return ModParticles.SNOW.get(); 18 | } 19 | return original; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/ticking/tickers/entity/sleeping/CatSleepingTicker.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.ticking.tickers.entity.sleeping; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import net.minecraft.world.entity.LivingEntity; 5 | import net.minecraft.world.entity.animal.Cat; 6 | 7 | import static einstein.subtle_effects.init.ModConfigs.ENTITIES; 8 | 9 | public class CatSleepingTicker extends SleepingTicker { 10 | 11 | public CatSleepingTicker(Cat cat) { 12 | super(cat); 13 | } 14 | 15 | @Override 16 | protected boolean isSleeping() { 17 | return ENTITIES.sleeping.catsHaveSleepingZs && entity.isLying(); 18 | } 19 | 20 | @Override 21 | protected boolean shouldDelay() { 22 | LivingEntity owner = entity.getOwner(); 23 | return owner != null && owner.equals(Minecraft.getInstance().player) && owner.isSleeping(); 24 | } 25 | 26 | @Override 27 | protected boolean particleConfigEnabled() { 28 | return ENTITIES.sleeping.catsHaveSleepingZs; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/networking/clientbound/ClientBoundMooshroomShearedPayload.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.networking.clientbound; 2 | 3 | import einstein.subtle_effects.SubtleEffects; 4 | import net.minecraft.network.FriendlyByteBuf; 5 | import net.minecraft.network.codec.ByteBufCodecs; 6 | import net.minecraft.network.codec.StreamCodec; 7 | import net.minecraft.network.protocol.common.custom.CustomPacketPayload; 8 | 9 | public record ClientBoundMooshroomShearedPayload(int entityId) implements CustomPacketPayload { 10 | 11 | public static final Type TYPE = new Type<>(SubtleEffects.loc("mooshroom_sheared")); 12 | public static final StreamCodec STREAM_CODEC = StreamCodec.composite( 13 | ByteBufCodecs.INT, ClientBoundMooshroomShearedPayload::entityId, 14 | ClientBoundMooshroomShearedPayload::new 15 | ); 16 | 17 | @Override 18 | public Type type() { 19 | return TYPE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/particle/provider/GeyserSmokeParticleProvider.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.particle.provider; 2 | 3 | import net.minecraft.client.multiplayer.ClientLevel; 4 | import net.minecraft.client.particle.LargeSmokeParticle; 5 | import net.minecraft.client.particle.Particle; 6 | import net.minecraft.client.particle.SpriteSet; 7 | import net.minecraft.core.particles.SimpleParticleType; 8 | 9 | public class GeyserSmokeParticleProvider extends LargeSmokeParticle.Provider { 10 | 11 | public GeyserSmokeParticleProvider(SpriteSet sprites) { 12 | super(sprites); 13 | } 14 | 15 | @Override 16 | public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { 17 | Particle particle = super.createParticle(type, level, x, y, z, xSpeed, ySpeed, zSpeed); 18 | particle.setColor(1, 1, 1); 19 | particle.setLifetime((int) Math.max(1, 8 / (level.random.nextFloat() * 0.8 + 0.2))); 20 | return particle; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/particle/provider/PotionPoofCloudProvider.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.particle.provider; 2 | 3 | import einstein.subtle_effects.util.ParticleAccessor; 4 | import net.minecraft.client.multiplayer.ClientLevel; 5 | import net.minecraft.client.particle.Particle; 6 | import net.minecraft.client.particle.SpellParticle; 7 | import net.minecraft.client.particle.SpriteSet; 8 | import net.minecraft.core.particles.ColorParticleOption; 9 | 10 | public class PotionPoofCloudProvider extends SpellParticle.MobEffectProvider { 11 | 12 | public PotionPoofCloudProvider(SpriteSet sprites) { 13 | super(sprites); 14 | } 15 | 16 | @Override 17 | public Particle createParticle(ColorParticleOption option, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { 18 | Particle particle = super.createParticle(option, level, x, y, z, xSpeed, ySpeed, zSpeed); 19 | particle.scale(3.5F); 20 | ((ParticleAccessor) particle).setHasPhysics(true); 21 | return particle; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/particle/LavaParticleMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.particle; 2 | 3 | import com.llamalad7.mixinextras.injector.wrapoperation.Operation; 4 | import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; 5 | import einstein.subtle_effects.init.ModConfigs; 6 | import einstein.subtle_effects.init.ModParticles; 7 | import net.minecraft.client.particle.LavaParticle; 8 | import net.minecraft.core.particles.SimpleParticleType; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | 12 | @Mixin(LavaParticle.class) 13 | public class LavaParticleMixin { 14 | 15 | @WrapOperation(method = "tick", at = @At(value = "FIELD", target = "Lnet/minecraft/core/particles/ParticleTypes;SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;")) 16 | private SimpleParticleType replaceSmoke(Operation original) { 17 | if (ModConfigs.GENERAL.lavaSparkSmoke) { 18 | return ModParticles.SMOKE.get(); 19 | } 20 | return original.call(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/particle/ParticleEngineAccessor.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.particle; 2 | 3 | import net.minecraft.client.particle.Particle; 4 | import net.minecraft.client.particle.ParticleEngine; 5 | import net.minecraft.client.particle.ParticleRenderType; 6 | import org.spongepowered.asm.mixin.Mixin; 7 | import org.spongepowered.asm.mixin.Mutable; 8 | import org.spongepowered.asm.mixin.gen.Accessor; 9 | 10 | import java.util.List; 11 | import java.util.Map; 12 | import java.util.Queue; 13 | 14 | @Mixin(ParticleEngine.class) 15 | public interface ParticleEngineAccessor { 16 | 17 | @Accessor("RENDER_ORDER") 18 | static List getRenderOrder() { 19 | throw new AssertionError("Mixin did not apply!"); 20 | } 21 | 22 | @Mutable 23 | @Accessor("RENDER_ORDER") 24 | static void setRenderOrder(List renderOrder) { 25 | throw new AssertionError("Mixin did not apply!"); 26 | } 27 | 28 | @Accessor("particles") 29 | Map> getParticles(); 30 | } 31 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/ticking/tickers/entity/sleeping/PlayerSleepingTicker.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.ticking.tickers.entity.sleeping; 2 | 3 | import einstein.subtle_effects.init.ModSounds; 4 | import einstein.subtle_effects.util.Util; 5 | import net.minecraft.world.entity.player.Player; 6 | 7 | import static einstein.subtle_effects.init.ModConfigs.ENTITIES; 8 | 9 | public class PlayerSleepingTicker extends SleepingTicker { 10 | 11 | public PlayerSleepingTicker(Player player) { 12 | super(player, 13 | doesEntitySnore(player, ENTITIES.sleeping.playerSnoreChance.get()), 14 | player.isLocalPlayer() ? 40 : Util.BREATH_DELAY, 15 | ModSounds.PLAYER_SNORE.get(), 16 | ENTITIES.sleeping.playerSnoreSoundVolume.get() 17 | ); 18 | } 19 | 20 | @Override 21 | protected boolean shouldDelay() { 22 | return !entity.isLocalPlayer(); 23 | } 24 | 25 | @Override 26 | protected boolean particleConfigEnabled() { 27 | return ENTITIES.sleeping.playersHaveSleepingZs; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/block/ClientComposterBlockMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.block; 2 | 3 | import einstein.subtle_effects.init.ModConfigs; 4 | import einstein.subtle_effects.init.ModParticles; 5 | import einstein.subtle_effects.util.ParticleSpawnUtil; 6 | import net.minecraft.core.BlockPos; 7 | import net.minecraft.world.level.Level; 8 | import net.minecraft.world.level.block.ComposterBlock; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | import org.spongepowered.asm.mixin.injection.Inject; 12 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 13 | 14 | @Mixin(ComposterBlock.class) 15 | public class ClientComposterBlockMixin { 16 | 17 | @Inject(method = "handleFill", at = @At("TAIL")) 18 | private static void handleFill(Level level, BlockPos pos, boolean success, CallbackInfo ci) { 19 | if (ModConfigs.BLOCKS.compostingCompostParticles) { 20 | ParticleSpawnUtil.spawnCompostParticles(level, pos, ModParticles.COMPOST.get(), 0, 0, 0); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/block/BaseFireBlockMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.block; 2 | 3 | import com.llamalad7.mixinextras.injector.wrapoperation.Operation; 4 | import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; 5 | import einstein.subtle_effects.init.ModConfigs; 6 | import einstein.subtle_effects.init.ModParticles; 7 | import net.minecraft.core.particles.SimpleParticleType; 8 | import net.minecraft.world.level.block.BaseFireBlock; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | 12 | @Mixin(BaseFireBlock.class) 13 | public abstract class BaseFireBlockMixin { 14 | 15 | @WrapOperation(method = "animateTick", at = @At(value = "FIELD", target = "Lnet/minecraft/core/particles/ParticleTypes;LARGE_SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;")) 16 | private SimpleParticleType replaceSmoke(Operation original) { 17 | if (ModConfigs.BLOCKS.updatedSmoke.fireSmoke) { 18 | return ModParticles.SMOKE.get(); 19 | } 20 | return original.call(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/entity/MinecartFurnaceMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.entity; 2 | 3 | import com.llamalad7.mixinextras.injector.wrapoperation.Operation; 4 | import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; 5 | import einstein.subtle_effects.init.ModConfigs; 6 | import einstein.subtle_effects.init.ModParticles; 7 | import net.minecraft.core.particles.SimpleParticleType; 8 | import net.minecraft.world.entity.vehicle.MinecartFurnace; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | 12 | @Mixin(MinecartFurnace.class) 13 | public class MinecartFurnaceMixin { 14 | 15 | @WrapOperation(method = "tick", at = @At(value = "FIELD", target = "Lnet/minecraft/core/particles/ParticleTypes;LARGE_SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;")) 16 | private SimpleParticleType replaceSmoke(Operation original) { 17 | if (ModConfigs.BLOCKS.updatedSmoke.furnaceSmoke) { 18 | return ModParticles.SMOKE.get(); 19 | } 20 | return original.call(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/GameRendererMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client; 2 | 3 | import com.llamalad7.mixinextras.injector.ModifyReturnValue; 4 | import com.llamalad7.mixinextras.sugar.Local; 5 | import net.minecraft.client.renderer.GameRenderer; 6 | import net.minecraft.world.effect.MobEffectInstance; 7 | import org.spongepowered.asm.mixin.Mixin; 8 | import org.spongepowered.asm.mixin.injection.At; 9 | 10 | import static einstein.subtle_effects.init.ModConfigs.GENERAL; 11 | 12 | @Mixin(GameRenderer.class) 13 | public class GameRendererMixin { 14 | 15 | @ModifyReturnValue(method = "getNightVisionScale", at = @At("RETURN")) 16 | private static float getNightVisionScale(float original, @Local MobEffectInstance instance) { 17 | if (GENERAL.nightVisionFading && instance != null) { 18 | float brightness = 1; 19 | int duration = instance.getDuration(); 20 | return !instance.endsWithin(GENERAL.nightVisionFadingTime.get()) ? brightness : duration * (brightness / GENERAL.nightVisionFadingTime.get()); 21 | } 22 | return original; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /neoforge/src/main/java/einstein/subtle_effects/mixin/client/FluidTypeMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client; 2 | 3 | import com.llamalad7.mixinextras.injector.wrapoperation.Operation; 4 | import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; 5 | import einstein.subtle_effects.init.ModConfigs; 6 | import einstein.subtle_effects.init.ModParticles; 7 | import net.minecraft.core.particles.SimpleParticleType; 8 | import net.neoforged.neoforge.fluids.FluidType; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | 12 | @Mixin(value = FluidType.class, remap = false) 13 | public class FluidTypeMixin { 14 | 15 | @WrapOperation(method = "onVaporize", at = @At(value = "FIELD", target = "Lnet/minecraft/core/particles/ParticleTypes;LARGE_SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;"), remap = false) 16 | private SimpleParticleType replaceSmoke(Operation original) { 17 | if (ModConfigs.ITEMS.waterEvaporateFromBucketSteam) { 18 | return ModParticles.STEAM.get(); 19 | } 20 | return original.call(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/block/CherryLeavesBlockMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.block; 2 | 3 | import com.llamalad7.mixinextras.injector.ModifyExpressionValue; 4 | import com.llamalad7.mixinextras.sugar.Local; 5 | import einstein.subtle_effects.init.ModConfigs; 6 | import einstein.subtle_effects.util.Util; 7 | import net.minecraft.core.BlockPos; 8 | import net.minecraft.world.level.Level; 9 | import net.minecraft.world.level.block.CherryLeavesBlock; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.injection.At; 12 | 13 | @Mixin(CherryLeavesBlock.class) 14 | public class CherryLeavesBlockMixin { 15 | 16 | @ModifyExpressionValue(method = "animateTick", at = @At(value = "CONSTANT", args = "intValue=10")) 17 | private int replaceDecayTicks(int original, @Local(argsOnly = true) Level level, @Local(argsOnly = true) BlockPos pos) { 18 | if (ModConfigs.BLOCKS.rainIncreasesLeavesSpawningParticles) { 19 | if (Util.isRainingAt(level, pos)) { 20 | return 5; 21 | } 22 | } 23 | return original; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/particle/provider/MushroomSporeProvider.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.particle.provider; 2 | 3 | import net.minecraft.client.multiplayer.ClientLevel; 4 | import net.minecraft.client.particle.*; 5 | import net.minecraft.core.particles.SimpleParticleType; 6 | import net.minecraft.util.RandomSource; 7 | import org.jetbrains.annotations.Nullable; 8 | 9 | public record MushroomSporeProvider(SpriteSet sprites) implements ParticleProvider { 10 | 11 | @Override 12 | public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { 13 | RandomSource random = level.getRandom(); 14 | xSpeed = random.nextGaussian() * 1.0E-6F; 15 | ySpeed = random.nextGaussian() * 1.0E-4F; 16 | zSpeed = random.nextGaussian() * 1.0E-6F; 17 | SuspendedParticle particle = new SuspendedParticle(level, sprites, x, y, z, xSpeed, ySpeed, zSpeed); 18 | float color = random.nextFloat() * 0.1F + 0.2F; 19 | particle.setColor(color, color, color); 20 | return particle; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/networking/clientbound/ClientBoundEntitySpawnSprintingDustCloudsPayload.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.networking.clientbound; 2 | 3 | import einstein.subtle_effects.SubtleEffects; 4 | import net.minecraft.network.FriendlyByteBuf; 5 | import net.minecraft.network.codec.ByteBufCodecs; 6 | import net.minecraft.network.codec.StreamCodec; 7 | import net.minecraft.network.protocol.common.custom.CustomPacketPayload; 8 | 9 | public record ClientBoundEntitySpawnSprintingDustCloudsPayload(int entityId) implements CustomPacketPayload { 10 | 11 | public static final Type TYPE = new Type<>(SubtleEffects.loc("entity_spawn_sprinting_dust_clouds")); 12 | public static final StreamCodec STREAM_CODEC = StreamCodec.composite( 13 | ByteBufCodecs.INT, ClientBoundEntitySpawnSprintingDustCloudsPayload::entityId, 14 | ClientBoundEntitySpawnSprintingDustCloudsPayload::new 15 | ); 16 | 17 | @Override 18 | public Type type() { 19 | return TYPE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/common/entity/AnimalMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.common.entity; 2 | 3 | import com.llamalad7.mixinextras.injector.wrapoperation.Operation; 4 | import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; 5 | import net.minecraft.core.particles.ParticleOptions; 6 | import net.minecraft.server.level.ServerLevel; 7 | import net.minecraft.world.entity.animal.Animal; 8 | import net.minecraft.world.level.Level; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | 12 | @Mixin(Animal.class) 13 | public abstract class AnimalMixin { 14 | 15 | @WrapOperation(method = "aiStep", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;addParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)V")) 16 | private void fixInLoveHeartParticles(Level level, ParticleOptions options, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed, Operation original) { 17 | if (level instanceof ServerLevel serverLevel) { 18 | serverLevel.sendParticles(options, x, y, z, 1, 0, 0, 0, 0.02); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/networking/clientbound/ClientBoundAnimalFedPayload.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.networking.clientbound; 2 | 3 | import einstein.subtle_effects.SubtleEffects; 4 | import net.minecraft.network.RegistryFriendlyByteBuf; 5 | import net.minecraft.network.codec.ByteBufCodecs; 6 | import net.minecraft.network.codec.StreamCodec; 7 | import net.minecraft.network.protocol.common.custom.CustomPacketPayload; 8 | import net.minecraft.world.item.ItemStack; 9 | 10 | public record ClientBoundAnimalFedPayload(int animalId, ItemStack stack) implements CustomPacketPayload { 11 | 12 | public static final Type TYPE = new Type<>(SubtleEffects.loc("animal_fed")); 13 | public static final StreamCodec STREAM_CODEC = StreamCodec.composite( 14 | ByteBufCodecs.INT, ClientBoundAnimalFedPayload::animalId, 15 | ItemStack.STREAM_CODEC, ClientBoundAnimalFedPayload::stack, 16 | ClientBoundAnimalFedPayload::new 17 | ); 18 | 19 | @Override 20 | public Type type() { 21 | return TYPE; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/networking/clientbound/ClientBoundVillagerWorkPayload.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.networking.clientbound; 2 | 3 | import einstein.subtle_effects.SubtleEffects; 4 | import net.minecraft.core.BlockPos; 5 | import net.minecraft.network.FriendlyByteBuf; 6 | import net.minecraft.network.codec.ByteBufCodecs; 7 | import net.minecraft.network.codec.StreamCodec; 8 | import net.minecraft.network.protocol.common.custom.CustomPacketPayload; 9 | 10 | public record ClientBoundVillagerWorkPayload(int villagerId, BlockPos pos) implements CustomPacketPayload { 11 | 12 | public static final Type TYPE = new Type<>(SubtleEffects.loc("villager_work")); 13 | public static final StreamCodec STREAM_CODEC = StreamCodec.composite( 14 | ByteBufCodecs.INT, ClientBoundVillagerWorkPayload::villagerId, 15 | BlockPos.STREAM_CODEC, ClientBoundVillagerWorkPayload::pos, 16 | ClientBoundVillagerWorkPayload::new 17 | ); 18 | 19 | @Override 20 | public Type type() { 21 | return TYPE; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/block/entity/CampfireBlockEntityMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.block.entity; 2 | 3 | import com.llamalad7.mixinextras.injector.wrapoperation.Operation; 4 | import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; 5 | import einstein.subtle_effects.init.ModConfigs; 6 | import einstein.subtle_effects.init.ModParticles; 7 | import net.minecraft.core.particles.SimpleParticleType; 8 | import net.minecraft.world.level.block.entity.CampfireBlockEntity; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | 12 | @Mixin(CampfireBlockEntity.class) 13 | public class CampfireBlockEntityMixin { 14 | 15 | @WrapOperation(method = "particleTick", at = @At(value = "FIELD", target = "Lnet/minecraft/core/particles/ParticleTypes;SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;")) 16 | private static SimpleParticleType replaceSmoke(Operation original) { 17 | if (ModConfigs.BLOCKS.steam.replaceCampfireFoodSmoke) { 18 | return ModParticles.STEAM.get(); 19 | } 20 | return original.call(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/block/AbstractCandleBlockMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.block; 2 | 3 | import com.llamalad7.mixinextras.injector.wrapoperation.Operation; 4 | import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; 5 | import einstein.subtle_effects.init.ModConfigs; 6 | import einstein.subtle_effects.init.ModParticles; 7 | import net.minecraft.core.particles.SimpleParticleType; 8 | import net.minecraft.world.level.block.AbstractCandleBlock; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | 12 | @Mixin(AbstractCandleBlock.class) 13 | public abstract class AbstractCandleBlockMixin { 14 | 15 | @WrapOperation(method = {"addParticlesAndSound", "extinguish"}, at = @At(value = "FIELD", target = "Lnet/minecraft/core/particles/ParticleTypes;SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;")) 16 | private static SimpleParticleType replaceSmoke(Operation original) { 17 | if (ModConfigs.BLOCKS.updatedSmoke.candleSmoke) { 18 | return ModParticles.SMOKE.get(); 19 | } 20 | return original.call(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/client/renderer/entity/EinsteinSolarSystemArmorLayer.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.client.renderer.entity; 2 | 3 | import net.minecraft.client.model.HumanoidModel; 4 | import net.minecraft.client.renderer.entity.RenderLayerParent; 5 | import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; 6 | import net.minecraft.client.resources.model.ModelManager; 7 | import net.minecraft.world.entity.EquipmentSlot; 8 | import net.minecraft.world.entity.LivingEntity; 9 | 10 | public class EinsteinSolarSystemArmorLayer, A extends HumanoidModel> extends HumanoidArmorLayer { 11 | 12 | public EinsteinSolarSystemArmorLayer(RenderLayerParent renderer, A innerModel, A outerModel, ModelManager modelManager) { 13 | super(renderer, innerModel, outerModel, modelManager); 14 | } 15 | 16 | @Override 17 | protected void setPartVisibility(A model, EquipmentSlot slot) { 18 | model.setAllVisible(false); 19 | 20 | if (slot == EquipmentSlot.HEAD) { 21 | model.head.visible = true; 22 | model.hat.visible = true; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/block/TorchBlockMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.block; 2 | 3 | import com.llamalad7.mixinextras.injector.wrapoperation.Operation; 4 | import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; 5 | import einstein.subtle_effects.init.ModConfigs; 6 | import einstein.subtle_effects.init.ModParticles; 7 | import net.minecraft.core.particles.SimpleParticleType; 8 | import net.minecraft.world.level.block.TorchBlock; 9 | import net.minecraft.world.level.block.WallTorchBlock; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.injection.At; 12 | 13 | @Mixin({TorchBlock.class, WallTorchBlock.class}) 14 | public class TorchBlockMixin { 15 | 16 | @WrapOperation(method = "animateTick", at = @At(value = "FIELD", target = "Lnet/minecraft/core/particles/ParticleTypes;SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;")) 17 | private SimpleParticleType replaceSmoke(Operation original) { 18 | if (ModConfigs.BLOCKS.updatedSmoke.torchSmoke) { 19 | return ModParticles.SMOKE.get(); 20 | } 21 | return original.call(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/networking/clientbound/ClientBoundDispenseBucketPayload.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.networking.clientbound; 2 | 3 | import einstein.subtle_effects.SubtleEffects; 4 | import net.minecraft.core.BlockPos; 5 | import net.minecraft.network.RegistryFriendlyByteBuf; 6 | import net.minecraft.network.codec.StreamCodec; 7 | import net.minecraft.network.protocol.common.custom.CustomPacketPayload; 8 | import net.minecraft.world.item.ItemStack; 9 | 10 | public record ClientBoundDispenseBucketPayload(ItemStack stack, BlockPos pos) implements CustomPacketPayload { 11 | 12 | public static final Type TYPE = new Type<>(SubtleEffects.loc("dispense_bucket")); 13 | public static final StreamCodec STREAM_CODEC = StreamCodec.composite( 14 | ItemStack.STREAM_CODEC, ClientBoundDispenseBucketPayload::stack, 15 | BlockPos.STREAM_CODEC, ClientBoundDispenseBucketPayload::pos, 16 | ClientBoundDispenseBucketPayload::new 17 | ); 18 | 19 | @Override 20 | public Type type() { 21 | return TYPE; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/ticking/tickers/entity/SlimeTrailTicker.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.ticking.tickers.entity; 2 | 3 | import einstein.subtle_effects.particle.option.FloatParticleOptions; 4 | import net.minecraft.core.particles.ParticleType; 5 | import net.minecraft.world.entity.monster.Slime; 6 | 7 | import java.util.function.Supplier; 8 | 9 | public class SlimeTrailTicker extends EntityTicker { 10 | 11 | private final Supplier> type; 12 | private boolean wasInAir; 13 | 14 | public SlimeTrailTicker(T entity, Supplier> type) { 15 | super(entity); 16 | this.type = type; 17 | } 18 | 19 | @Override 20 | public void entityTick() { 21 | if (wasInAir && entity.onGround()) { 22 | level.addParticle(new FloatParticleOptions(type.get(), entity.getSize() * 0.5F), 23 | entity.getX(), 24 | entity.getBlockY() + (random.nextDouble() / 10), 25 | entity.getZ(), 26 | 0, 0, 0 27 | ); 28 | } 29 | wasInAir = !entity.onGround(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/common/entity/LlamaMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.common.entity; 2 | 3 | import com.llamalad7.mixinextras.injector.ModifyExpressionValue; 4 | import einstein.subtle_effects.networking.clientbound.ClientBoundEntityFellPayload; 5 | import einstein.subtle_effects.util.ParticleSpawnUtil; 6 | import net.minecraft.world.entity.animal.horse.Llama; 7 | import org.spongepowered.asm.mixin.Mixin; 8 | import org.spongepowered.asm.mixin.Unique; 9 | import org.spongepowered.asm.mixin.injection.At; 10 | 11 | @Mixin(Llama.class) 12 | public class LlamaMixin { 13 | 14 | @Unique 15 | private final Llama subtleEffects$me = (Llama) (Object) this; 16 | 17 | @ModifyExpressionValue(method = "causeFallDamage", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/animal/horse/Llama;calculateFallDamage(FF)I")) 18 | private int calculateFallDamage(int damage, float distance, float damageMultiplier) { 19 | if (subtleEffects$me.isInvisible()) { 20 | ParticleSpawnUtil.spawnFallDustClouds(subtleEffects$me, damageMultiplier, damage, ClientBoundEntityFellPayload.TypeConfig.ENTITY); 21 | } 22 | return damage; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/particle/provider/AzaleaParticleProvider.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.particle.provider; 2 | 3 | import einstein.subtle_effects.util.ParticleAccessor; 4 | import net.minecraft.client.multiplayer.ClientLevel; 5 | import net.minecraft.client.particle.CherryParticle; 6 | import net.minecraft.client.particle.Particle; 7 | import net.minecraft.client.particle.ParticleProvider; 8 | import net.minecraft.client.particle.SpriteSet; 9 | import net.minecraft.core.particles.SimpleParticleType; 10 | 11 | public record AzaleaParticleProvider(SpriteSet sprites) implements ParticleProvider { 12 | 13 | @Override 14 | public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { 15 | // Cherry particles don't have a provider 16 | CherryParticle particle = new CherryParticle(level, x, y, z, sprites) {}; 17 | particle.scale(2); 18 | 19 | // noinspection all 20 | ParticleAccessor accessor = (ParticleAccessor) particle; 21 | accessor.setSizes(accessor.getWidth() / 4, accessor.getHeight()); 22 | return particle; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/particle/bubbles/BubbleParticleProviderMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.particle.bubbles; 2 | 3 | import com.llamalad7.mixinextras.injector.ModifyReturnValue; 4 | import einstein.subtle_effects.data.BCWPPackManager; 5 | import einstein.subtle_effects.util.BubbleSetter; 6 | import net.minecraft.client.particle.*; 7 | import org.spongepowered.asm.mixin.Final; 8 | import org.spongepowered.asm.mixin.Mixin; 9 | import org.spongepowered.asm.mixin.Shadow; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | 12 | @Mixin(BubbleParticle.Provider.class) 13 | public class BubbleParticleProviderMixin { 14 | 15 | @Shadow 16 | @Final 17 | private SpriteSet sprite; 18 | 19 | @ModifyReturnValue(method = "createParticle(Lnet/minecraft/core/particles/SimpleParticleType;Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDD)Lnet/minecraft/client/particle/Particle;", at = @At("RETURN")) 20 | private Particle createParticle(Particle particle) { 21 | if (particle != null && BCWPPackManager.isPackLoaded()) { 22 | ((BubbleSetter) particle).subtleEffects$setupBubble(sprite, true); 23 | } 24 | return particle; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/platform/Services.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.platform; 2 | 3 | import einstein.subtle_effects.SubtleEffects; 4 | import einstein.subtle_effects.platform.services.IPlatformHelper; 5 | import einstein.subtle_effects.platform.services.NetworkHelper; 6 | import einstein.subtle_effects.platform.services.ParticleHelper; 7 | import einstein.subtle_effects.platform.services.RegistryHelper; 8 | 9 | import java.util.ServiceLoader; 10 | 11 | public class Services { 12 | 13 | public static final IPlatformHelper PLATFORM = load(IPlatformHelper.class); 14 | public static final RegistryHelper REGISTRY = load(RegistryHelper.class); 15 | public static final ParticleHelper PARTICLE_HELPER = load(ParticleHelper.class); 16 | public static final NetworkHelper NETWORK = load(NetworkHelper.class); 17 | 18 | public static T load(Class clazz) { 19 | final T loadedService = ServiceLoader.load(clazz) 20 | .findFirst() 21 | .orElseThrow(() -> new NullPointerException("Failed to load service for " + clazz.getName())); 22 | SubtleEffects.LOGGER.debug("Loaded {} for service {}", loadedService, clazz); 23 | return loadedService; 24 | } 25 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/WaterFluidMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client; 2 | 3 | import einstein.subtle_effects.util.ParticleSpawnUtil; 4 | import net.minecraft.core.BlockPos; 5 | import net.minecraft.util.RandomSource; 6 | import net.minecraft.world.level.Level; 7 | import net.minecraft.world.level.material.FluidState; 8 | import net.minecraft.world.level.material.WaterFluid; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | import org.spongepowered.asm.mixin.injection.Inject; 12 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 13 | 14 | import static einstein.subtle_effects.init.ModConfigs.BLOCKS; 15 | import static net.minecraft.world.level.material.FlowingFluid.FALLING; 16 | 17 | @Mixin(WaterFluid.class) 18 | public class WaterFluidMixin { 19 | 20 | @Inject(method = "animateTick", at = @At("TAIL")) 21 | private void animateTick(Level level, BlockPos pos, FluidState state, RandomSource random, CallbackInfo ci) { 22 | ParticleSpawnUtil.spawnHeatedWaterParticles(level, pos, random, state.getValue(FALLING), 23 | state.getHeight(level, pos), BLOCKS.steam.steamingWater, BLOCKS.steam.boilingWater); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/entity/SpellCasterIllagerMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.entity; 2 | 3 | import com.llamalad7.mixinextras.injector.wrapoperation.Operation; 4 | import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; 5 | import einstein.subtle_effects.init.ModConfigs; 6 | import einstein.subtle_effects.init.ModParticles; 7 | import net.minecraft.core.particles.ColorParticleOption; 8 | import net.minecraft.core.particles.ParticleType; 9 | import net.minecraft.world.entity.monster.SpellcasterIllager; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.injection.At; 12 | 13 | @Mixin(SpellcasterIllager.class) 14 | public class SpellCasterIllagerMixin { 15 | 16 | @WrapOperation(method = "tick", at = @At(value = "FIELD", target = "Lnet/minecraft/core/particles/ParticleTypes;ENTITY_EFFECT:Lnet/minecraft/core/particles/ParticleType;")) 17 | private ParticleType replaceEntityEffect(Operation> original) { 18 | if (ModConfigs.ENTITIES.replaceSpellCasterParticles) { 19 | return ModParticles.SPELL_CASTER_MAGIC.get(); 20 | } 21 | return original.call(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/common/block/FarmBlockMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.common.block; 2 | 3 | import einstein.subtle_effects.networking.clientbound.ClientBoundBlockDestroyEffectsPayload; 4 | import einstein.subtle_effects.platform.Services; 5 | import net.minecraft.core.BlockPos; 6 | import net.minecraft.server.level.ServerLevel; 7 | import net.minecraft.world.entity.Entity; 8 | import net.minecraft.world.level.Level; 9 | import net.minecraft.world.level.block.FarmBlock; 10 | import net.minecraft.world.level.block.state.BlockState; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.injection.At; 13 | import org.spongepowered.asm.mixin.injection.Inject; 14 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 15 | 16 | @Mixin(FarmBlock.class) 17 | public class FarmBlockMixin { 18 | 19 | @Inject(method = "turnToDirt", at = @At("TAIL")) 20 | private static void turnToDirt(Entity entity, BlockState state, Level level, BlockPos pos, CallbackInfo ci) { 21 | Services.NETWORK.sendToClientsTracking((ServerLevel) level, pos, new ClientBoundBlockDestroyEffectsPayload(state, pos, ClientBoundBlockDestroyEffectsPayload.TypeConfig.FARMLAND_DESTROY)); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/networking/clientbound/ClientBoundSpawnSnoreParticlePayload.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.networking.clientbound; 2 | 3 | import einstein.subtle_effects.SubtleEffects; 4 | import net.minecraft.network.FriendlyByteBuf; 5 | import net.minecraft.network.codec.ByteBufCodecs; 6 | import net.minecraft.network.codec.StreamCodec; 7 | import net.minecraft.network.protocol.common.custom.CustomPacketPayload; 8 | 9 | public record ClientBoundSpawnSnoreParticlePayload(double x, double y, double z) implements CustomPacketPayload { 10 | 11 | public static final Type TYPE = new Type<>(SubtleEffects.loc("spawn_snore_particle")); 12 | public static final StreamCodec STREAM_CODEC = StreamCodec.composite( 13 | ByteBufCodecs.DOUBLE, ClientBoundSpawnSnoreParticlePayload::x, 14 | ByteBufCodecs.DOUBLE, ClientBoundSpawnSnoreParticlePayload::y, 15 | ByteBufCodecs.DOUBLE, ClientBoundSpawnSnoreParticlePayload::z, 16 | ClientBoundSpawnSnoreParticlePayload::new 17 | ); 18 | 19 | @Override 20 | public Type type() { 21 | return TYPE; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/configs/SmokeType.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.configs; 2 | 3 | import einstein.subtle_effects.init.ModParticles; 4 | import me.fzzyhmstrs.fzzy_config.util.EnumTranslatable; 5 | import net.minecraft.core.particles.ParticleOptions; 6 | import net.minecraft.core.particles.ParticleTypes; 7 | import org.jetbrains.annotations.NotNull; 8 | import org.jetbrains.annotations.Nullable; 9 | 10 | import java.util.function.Supplier; 11 | 12 | import static einstein.subtle_effects.init.ModConfigs.BASE_KEY; 13 | 14 | public enum SmokeType implements EnumTranslatable { 15 | OFF(null), 16 | DEFAULT(() -> ParticleTypes.SMOKE), 17 | UPDATED(ModParticles.SMOKE); 18 | 19 | @Nullable 20 | private final Supplier particle; 21 | 22 | SmokeType(@Nullable Supplier particle) { 23 | this.particle = particle; 24 | } 25 | 26 | @NotNull 27 | @Override 28 | public String prefix() { 29 | return BASE_KEY + "smokeType"; 30 | } 31 | 32 | public boolean isEnabled() { 33 | return this != OFF; 34 | } 35 | 36 | @Nullable 37 | public Supplier getParticle() { 38 | return particle; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/client/block/FurnaceBlockMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.client.block; 2 | 3 | import com.llamalad7.mixinextras.injector.wrapoperation.Operation; 4 | import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; 5 | import einstein.subtle_effects.init.ModConfigs; 6 | import einstein.subtle_effects.init.ModParticles; 7 | import net.minecraft.core.particles.SimpleParticleType; 8 | import net.minecraft.world.level.block.BlastFurnaceBlock; 9 | import net.minecraft.world.level.block.FurnaceBlock; 10 | import net.minecraft.world.level.block.SmokerBlock; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.injection.At; 13 | 14 | @Mixin({FurnaceBlock.class, BlastFurnaceBlock.class, SmokerBlock.class}) 15 | public class FurnaceBlockMixin { 16 | 17 | @WrapOperation(method = "animateTick", at = @At(value = "FIELD", target = "Lnet/minecraft/core/particles/ParticleTypes;SMOKE:Lnet/minecraft/core/particles/SimpleParticleType;")) 18 | private SimpleParticleType replaceSmoke(Operation original) { 19 | if (ModConfigs.BLOCKS.updatedSmoke.furnaceSmoke) { 20 | return ModParticles.SMOKE.get(); 21 | } 22 | return original.call(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/util/SparkType.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.util; 2 | 3 | import com.mojang.serialization.Codec; 4 | import einstein.subtle_effects.init.ModParticles; 5 | import net.minecraft.core.particles.ColorParticleOption; 6 | import net.minecraft.core.particles.ParticleType; 7 | import net.minecraft.util.StringRepresentable; 8 | 9 | import java.util.function.Supplier; 10 | 11 | public enum SparkType implements StringRepresentable { 12 | SHORT_LIFE("short_life", ModParticles.SHORT_SPARK), 13 | LONG_LIFE("long_life", ModParticles.LONG_SPARK), 14 | FLOATING("floating", ModParticles.FLOATING_SPARK), 15 | METAL("metal", ModParticles.METAL_SPARK); 16 | 17 | public static final Codec CODEC = StringRepresentable.fromEnum(SparkType::values); 18 | 19 | private final String name; 20 | private final Supplier> type; 21 | 22 | SparkType(String name, Supplier> type) { 23 | this.name = name; 24 | this.type = type; 25 | } 26 | 27 | @Override 28 | public String getSerializedName() { 29 | return name; 30 | } 31 | 32 | public Supplier> getType() { 33 | return type; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/compat/SereneSeasonsCompat.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.compat; 2 | 3 | import einstein.subtle_effects.configs.ColdSeasonsType; 4 | import net.minecraft.world.level.Level; 5 | import sereneseasons.api.season.ISeasonState; 6 | import sereneseasons.api.season.Season; 7 | import sereneseasons.api.season.SeasonHelper; 8 | import sereneseasons.init.ModConfig; 9 | 10 | public class SereneSeasonsCompat { 11 | 12 | public static boolean isColdSeason(Level level, ColdSeasonsType seasonsConfig) { 13 | if (seasonsConfig == ColdSeasonsType.OFF) { 14 | return false; 15 | } 16 | 17 | if (!ModConfig.seasons.isDimensionWhitelisted(level.dimension())) { 18 | return false; 19 | } 20 | 21 | ISeasonState seasonState = SeasonHelper.getSeasonState(level); 22 | Season season = seasonState.getSeason(); 23 | 24 | if (season == Season.WINTER) { 25 | return true; 26 | } 27 | 28 | if (seasonsConfig == ColdSeasonsType.DEFAULT) { 29 | Season.SubSeason subSeason = seasonState.getSubSeason(); 30 | return subSeason == Season.SubSeason.LATE_AUTUMN || subSeason == Season.SubSeason.EARLY_SPRING; 31 | } 32 | return false; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/configs/environment/BiomeConfigs.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.configs.environment; 2 | 3 | import einstein.subtle_effects.init.ModConfigs; 4 | import me.fzzyhmstrs.fzzy_config.annotations.Translation; 5 | import me.fzzyhmstrs.fzzy_config.config.ConfigSection; 6 | import me.fzzyhmstrs.fzzy_config.validation.collection.ValidatedList; 7 | import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedInt; 8 | import net.minecraft.resources.ResourceLocation; 9 | 10 | import static einstein.subtle_effects.init.ModConfigs.biomeList; 11 | 12 | @Translation(prefix = ModConfigs.BASE_KEY + "environment.biomes") 13 | public class BiomeConfigs extends ConfigSection { 14 | 15 | public ValidatedInt biomeParticlesRadius = new ValidatedInt(32, 32, 0); 16 | public ValidatedList mushroomSporeBiomes = biomeList("mushroom_fields"); 17 | public ValidatedInt mushroomSporeDensity = new ValidatedInt(10, 100, 0); 18 | public ValidatedList pollenBiomes = biomeList("flower_forest", "sunflower_plains"); 19 | public ValidatedInt pollenDensity = new ValidatedInt(50, 100, 0); 20 | public ValidatedList sculkDustBiomes = biomeList("deep_dark"); 21 | public ValidatedInt sculkDustDensity = new ValidatedInt(5, 100, 0); 22 | } 23 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/mixin/common/block/LeavesBlockMixin.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.mixin.common.block; 2 | 3 | import einstein.subtle_effects.networking.clientbound.ClientBoundBlockDestroyEffectsPayload; 4 | import einstein.subtle_effects.platform.Services; 5 | import net.minecraft.core.BlockPos; 6 | import net.minecraft.server.level.ServerLevel; 7 | import net.minecraft.util.RandomSource; 8 | import net.minecraft.world.level.block.LeavesBlock; 9 | import net.minecraft.world.level.block.state.BlockState; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.injection.At; 12 | import org.spongepowered.asm.mixin.injection.Inject; 13 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 14 | 15 | @Mixin(LeavesBlock.class) 16 | public class LeavesBlockMixin { 17 | 18 | @Inject(method = "randomTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerLevel;removeBlock(Lnet/minecraft/core/BlockPos;Z)Z")) 19 | private void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random, CallbackInfo ci) { 20 | Services.NETWORK.sendToClientsTracking(level, pos, new ClientBoundBlockDestroyEffectsPayload(state, pos, ClientBoundBlockDestroyEffectsPayload.TypeConfig.LEAVES_DECAY)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/particle/SculkDustParticle.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.particle; 2 | 3 | import einstein.subtle_effects.util.MathUtil; 4 | import net.minecraft.client.multiplayer.ClientLevel; 5 | import net.minecraft.client.particle.Particle; 6 | import net.minecraft.client.particle.ParticleProvider; 7 | import net.minecraft.client.particle.SpriteSet; 8 | import net.minecraft.core.particles.SimpleParticleType; 9 | import org.jetbrains.annotations.Nullable; 10 | 11 | public class SculkDustParticle extends GlowingSuspendedParticle { 12 | 13 | public SculkDustParticle(ClientLevel level, SpriteSet sprites, double x, double y, double z) { 14 | super(level, sprites, x, y, z, 0, 0, 0); 15 | xd = MathUtil.nextNonAbsDouble(random, 0.01); 16 | yd = MathUtil.nextNonAbsDouble(random, 0.01); 17 | zd = MathUtil.nextNonAbsDouble(random, 0.01); 18 | lifetime *= 2; 19 | } 20 | 21 | public record Provider(SpriteSet sprites) implements ParticleProvider { 22 | 23 | @Override 24 | public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { 25 | return new SculkDustParticle(level, sprites, x, y, z); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/configs/entities/DustCloudsConfig.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.configs.entities; 2 | 3 | import einstein.subtle_effects.init.ModConfigs; 4 | import me.fzzyhmstrs.fzzy_config.annotations.Translation; 5 | import me.fzzyhmstrs.fzzy_config.config.ConfigGroup; 6 | import me.fzzyhmstrs.fzzy_config.config.ConfigSection; 7 | import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; 8 | 9 | @Translation(prefix = ModConfigs.BASE_KEY + "entities.dustClouds") 10 | public class DustCloudsConfig extends ConfigSection { 11 | 12 | public ValidatedFloat scale = new ValidatedFloat(2, 2, 0.5F); 13 | public ValidatedFloat alpha = new ValidatedFloat(1, 1, 0.3F); 14 | public boolean preventWhenRaining = false; 15 | public boolean flyIntoWall = true; 16 | public boolean lessViewBlocking = false; 17 | 18 | public ConfigGroup fallingGroup = new ConfigGroup("falling"); 19 | public boolean playerFell = true; 20 | public boolean mobFell = true; 21 | @ConfigGroup.Pop 22 | public boolean landMaceAttack = true; 23 | 24 | public ConfigGroup runningGroup = new ConfigGroup("running"); 25 | public boolean playerRunning = true; 26 | public boolean mobRunning = true; 27 | @ConfigGroup.Pop 28 | public boolean playerRunningRequiresSpeed = false; 29 | } 30 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/networking/clientbound/ClientBoundCompostItemPayload.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.networking.clientbound; 2 | 3 | import einstein.subtle_effects.SubtleEffects; 4 | import net.minecraft.core.BlockPos; 5 | import net.minecraft.network.RegistryFriendlyByteBuf; 6 | import net.minecraft.network.codec.ByteBufCodecs; 7 | import net.minecraft.network.codec.StreamCodec; 8 | import net.minecraft.network.protocol.common.custom.CustomPacketPayload; 9 | import net.minecraft.world.item.ItemStack; 10 | 11 | public record ClientBoundCompostItemPayload(ItemStack stack, BlockPos pos, boolean wasFarmer) implements CustomPacketPayload { 12 | 13 | public static final Type TYPE = new Type<>(SubtleEffects.loc("compost_item")); 14 | public static final StreamCodec STREAM_CODEC = StreamCodec.composite( 15 | ItemStack.STREAM_CODEC, ClientBoundCompostItemPayload::stack, 16 | BlockPos.STREAM_CODEC, ClientBoundCompostItemPayload::pos, 17 | ByteBufCodecs.BOOL, ClientBoundCompostItemPayload::wasFarmer, 18 | ClientBoundCompostItemPayload::new 19 | ); 20 | 21 | @Override 22 | public Type type() { 23 | return TYPE; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /common/src/main/java/einstein/subtle_effects/configs/entities/SleepingConfigs.java: -------------------------------------------------------------------------------- 1 | package einstein.subtle_effects.configs.entities; 2 | 3 | import einstein.subtle_effects.init.ModConfigs; 4 | import me.fzzyhmstrs.fzzy_config.annotations.Translation; 5 | import me.fzzyhmstrs.fzzy_config.config.ConfigSection; 6 | import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedDouble; 7 | import me.fzzyhmstrs.fzzy_config.validation.number.ValidatedFloat; 8 | 9 | @Translation(prefix = ModConfigs.BASE_KEY + "entities.sleeping") 10 | public class SleepingConfigs extends ConfigSection { 11 | 12 | public ValidatedDouble playerSnoreChance = new ValidatedDouble(1, 1, 0); 13 | public ValidatedFloat playerSnoreSoundVolume = new ValidatedFloat(1, 1, 0); 14 | public boolean playersHaveSleepingZs = true; 15 | public ValidatedDouble villagerSnoreChance = new ValidatedDouble(1, 1, 0); 16 | public ValidatedFloat villagerSnoreSoundVolume = new ValidatedFloat(1, 1, 0); 17 | public boolean villagersHaveSleepingZs = true; 18 | public boolean foxesHaveSleepingZs = true; 19 | public boolean batsHaveSleepingZs = true; 20 | public boolean catsHaveSleepingZs = true; 21 | public boolean otherMobsHaveSleepingZs = true; 22 | public boolean displaySleepingZsOnlyWhenSnoring = false; 23 | public boolean adjustNameTagWhenSleeping = true; 24 | } 25 | --------------------------------------------------------------------------------