Add enhanced explosions support
This commit is contained in:
@@ -14,6 +14,7 @@ import moe.nea.firmament.features.debug.DebugView
|
||||
import moe.nea.firmament.features.debug.DeveloperFeatures
|
||||
import moe.nea.firmament.features.debug.MinorTrolling
|
||||
import moe.nea.firmament.features.debug.PowerUserTools
|
||||
import moe.nea.firmament.features.fixes.CompatibliltyFeatures
|
||||
import moe.nea.firmament.features.fixes.Fixes
|
||||
import moe.nea.firmament.features.inventory.CraftingOverlay
|
||||
import moe.nea.firmament.features.inventory.PriceData
|
||||
@@ -51,6 +52,7 @@ object FeatureManager : DataHolder<FeatureManager.Config>(serializer(), "feature
|
||||
loadFeature(CraftingOverlay)
|
||||
loadFeature(PowerUserTools)
|
||||
loadFeature(ChatLinks)
|
||||
loadFeature(CompatibliltyFeatures)
|
||||
loadFeature(SaveCursorPosition)
|
||||
loadFeature(CustomSkyBlockTextures)
|
||||
loadFeature(PriceData)
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2023 Linnea Gräf <nea@nea.moe>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package moe.nea.firmament.features.fixes
|
||||
|
||||
import net.fabricmc.loader.api.FabricLoader
|
||||
import net.superkat.explosiveenhancement.api.ExplosiveApi
|
||||
import net.minecraft.particle.ParticleTypes
|
||||
import net.minecraft.util.math.Vec3d
|
||||
import moe.nea.firmament.events.ParticleSpawnEvent
|
||||
import moe.nea.firmament.features.FirmamentFeature
|
||||
import moe.nea.firmament.gui.config.ManagedConfig
|
||||
import moe.nea.firmament.util.MC
|
||||
|
||||
object CompatibliltyFeatures : FirmamentFeature {
|
||||
override val identifier: String
|
||||
get() = "compatibility"
|
||||
|
||||
object TConfig : ManagedConfig(identifier) {
|
||||
val enhancedExplosions by toggle("explosion-enabled") { false }
|
||||
val explosionSize by integer("explosion-power", 10, 50) { 1 }
|
||||
}
|
||||
|
||||
override val config: ManagedConfig?
|
||||
get() = TConfig
|
||||
|
||||
interface ExplosiveApiWrapper {
|
||||
fun spawnParticle(vec3d: Vec3d, power: Float)
|
||||
}
|
||||
|
||||
class ExplosiveApiWrapperImpl : ExplosiveApiWrapper {
|
||||
override fun spawnParticle(vec3d: Vec3d, power: Float) {
|
||||
ExplosiveApi.spawnParticles(MC.world, vec3d.x, vec3d.y, vec3d.z, TConfig.explosionSize / 10F)
|
||||
}
|
||||
}
|
||||
|
||||
val explosiveApiWrapper = if (FabricLoader.getInstance().isModLoaded("explosiveenhancement")) {
|
||||
ExplosiveApiWrapperImpl()
|
||||
} else null
|
||||
|
||||
override fun onLoad() {
|
||||
ParticleSpawnEvent.subscribe {
|
||||
if (TConfig.enhancedExplosions &&
|
||||
it.particleEffect.type == ParticleTypes.EXPLOSION_EMITTER &&
|
||||
explosiveApiWrapper != null
|
||||
) {
|
||||
it.cancel()
|
||||
explosiveApiWrapper.spawnParticle(it.position, 2F)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user