jade compat
DBot — Сегодня, в 6:21 Не думай.
This commit is contained in:
parent
027d6ef65f
commit
f2e4c80d31
@ -193,7 +193,7 @@ dependencies {
|
|||||||
compileOnly(fg.deobf("mezz.jei:jei-${jei_mc_version}-forge-api:${jei_version}"))
|
compileOnly(fg.deobf("mezz.jei:jei-${jei_mc_version}-forge-api:${jei_version}"))
|
||||||
//runtimeOnly(fg.deobf("mezz.jei:jei-${jei_mc_version}-forge:${jei_version}"))
|
//runtimeOnly(fg.deobf("mezz.jei:jei-${jei_mc_version}-forge:${jei_version}"))
|
||||||
|
|
||||||
//runtimeOnly(fg.deobf("curse.maven:jade-324717:${jade_id}"))
|
implementation(fg.deobf("curse.maven:jade-324717:${jade_id}"))
|
||||||
//runtimeOnly(fg.deobf("curse.maven:configured-457570:${configured_id}"))
|
//runtimeOnly(fg.deobf("curse.maven:configured-457570:${configured_id}"))
|
||||||
|
|
||||||
compileOnly(fg.deobf("curse.maven:resourceful-lib-570073:${resourceful_lib_id}"))
|
compileOnly(fg.deobf("curse.maven:resourceful-lib-570073:${resourceful_lib_id}"))
|
||||||
|
@ -30,7 +30,7 @@ ad_astra_id=4594155
|
|||||||
botarium_id=4594094
|
botarium_id=4594094
|
||||||
resourceful_lib_id=4598948
|
resourceful_lib_id=4598948
|
||||||
resourceful_config_id=4576455
|
resourceful_config_id=4576455
|
||||||
jade_id=4573193
|
jade_id=4614153
|
||||||
configured_id=4462894
|
configured_id=4462894
|
||||||
|
|
||||||
kotlin_for_forge_version=3.1.0
|
kotlin_for_forge_version=3.1.0
|
||||||
|
@ -777,6 +777,21 @@ private fun gui(provider: MatteryLanguageProvider) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun jade(provider: MatteryLanguageProvider) {
|
||||||
|
with(provider.english) {
|
||||||
|
jadeloc("matter_storage", "Matter Storage")
|
||||||
|
jadeloc("mattery_energy", "Energy Storage")
|
||||||
|
jadeloc("mattery_worker", "Machine Job Progress")
|
||||||
|
jadeloc("matter_bottler", "Matter Bottler Mode")
|
||||||
|
jadeloc("matter_reconstructor", "Matter Reconstructor Progress")
|
||||||
|
|
||||||
|
jade("mode", "Mode: %s")
|
||||||
|
|
||||||
|
jade("matter_bottler.mode.fill", "Filling")
|
||||||
|
jade("matter_bottler.mode.drain", "Emptying")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun AddEnglishLanguage(provider: MatteryLanguageProvider) {
|
fun AddEnglishLanguage(provider: MatteryLanguageProvider) {
|
||||||
decoratives(provider)
|
decoratives(provider)
|
||||||
sounds(provider)
|
sounds(provider)
|
||||||
@ -791,6 +806,8 @@ fun AddEnglishLanguage(provider: MatteryLanguageProvider) {
|
|||||||
research(provider)
|
research(provider)
|
||||||
gui(provider)
|
gui(provider)
|
||||||
|
|
||||||
|
jade(provider)
|
||||||
|
|
||||||
with(provider.english) {
|
with(provider.english) {
|
||||||
add("itemGroup.otm", "Overdrive That Matters")
|
add("itemGroup.otm", "Overdrive That Matters")
|
||||||
add("itemGroup.otm_decorative", "Overdrive That Matters Decorative")
|
add("itemGroup.otm_decorative", "Overdrive That Matters Decorative")
|
||||||
|
@ -21,6 +21,7 @@ import ru.dbotthepony.mc.otm.android.AndroidFeatureType
|
|||||||
import ru.dbotthepony.mc.otm.android.AndroidResearch
|
import ru.dbotthepony.mc.otm.android.AndroidResearch
|
||||||
import ru.dbotthepony.mc.otm.android.AndroidResearchType
|
import ru.dbotthepony.mc.otm.android.AndroidResearchType
|
||||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||||
|
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||||
import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock
|
import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock
|
||||||
|
|
||||||
private fun researchString(key: AndroidResearchType): String {
|
private fun researchString(key: AndroidResearchType): String {
|
||||||
@ -104,6 +105,9 @@ class MatteryLanguageProvider(private val gen: DataGenerator) {
|
|||||||
fun sound(key: String, value: String) = slave.add("otm.sound.$key", value)
|
fun sound(key: String, value: String) = slave.add("otm.sound.$key", value)
|
||||||
fun sound(key: SoundEvent, value: String) = slave.add("otm.sound.${key.location.path}", value)
|
fun sound(key: SoundEvent, value: String) = slave.add("otm.sound.${key.location.path}", value)
|
||||||
|
|
||||||
|
fun jade(key: String, value: String) = slave.add("otm.jade.$key", value)
|
||||||
|
fun jadeloc(key: String, value: String) = slave.add("config.jade.plugin_${DataGen.MOD_ID}.$key", value)
|
||||||
|
|
||||||
inner class Prepended(path: String) {
|
inner class Prepended(path: String) {
|
||||||
val path = "$path."
|
val path = "$path."
|
||||||
constructor(vararg path: String) : this(path.joinToString("."))
|
constructor(vararg path: String) : this(path.joinToString("."))
|
||||||
|
@ -778,6 +778,21 @@ private fun gui(provider: MatteryLanguageProvider) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun jade(provider: MatteryLanguageProvider) {
|
||||||
|
with(provider.russian) {
|
||||||
|
jadeloc("matter_storage", "Хранилище материи")
|
||||||
|
jadeloc("mattery_energy", "Хранилище энергии")
|
||||||
|
jadeloc("mattery_worker", "Прогресс работы механизма")
|
||||||
|
jadeloc("matter_bottler", "Режим бутилировщика материи")
|
||||||
|
jadeloc("matter_reconstructor", "Прогресс материального реконструктора")
|
||||||
|
|
||||||
|
jade("mode", "Режим: %s")
|
||||||
|
|
||||||
|
jade("matter_bottler.mode.fill", "Заполнение")
|
||||||
|
jade("matter_bottler.mode.drain", "Опустошение")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun AddRussianLanguage(provider: MatteryLanguageProvider) {
|
fun AddRussianLanguage(provider: MatteryLanguageProvider) {
|
||||||
decoratives(provider)
|
decoratives(provider)
|
||||||
blocks(provider)
|
blocks(provider)
|
||||||
@ -789,4 +804,5 @@ fun AddRussianLanguage(provider: MatteryLanguageProvider) {
|
|||||||
research(provider)
|
research(provider)
|
||||||
death(provider)
|
death(provider)
|
||||||
androidFeatures(provider)
|
androidFeatures(provider)
|
||||||
|
jade(provider)
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
package ru.dbotthepony.mc.otm.compat.jade
|
||||||
|
|
||||||
|
import net.minecraft.resources.ResourceLocation
|
||||||
|
import ru.dbotthepony.mc.otm.OverdriveThatMatters.loc
|
||||||
|
|
||||||
|
object JadeUids {
|
||||||
|
val MATTERY_ENERGY: ResourceLocation = loc("mattery_energy")
|
||||||
|
val MATTER_STORAGE: ResourceLocation = loc("matter_storage")
|
||||||
|
val MATTERY_WORKER: ResourceLocation = loc("mattery_worker")
|
||||||
|
|
||||||
|
val MATTER_BOTTLER: ResourceLocation = loc("matter_bottler")
|
||||||
|
val MATTER_RECONSTRUCTOR: ResourceLocation = loc("matter_reconstructor")
|
||||||
|
}
|
||||||
|
|
||||||
|
object JadeTagKeys {
|
||||||
|
val MATTERY_ENERGY_DATA = "otmJadeMatteryEnergyData"
|
||||||
|
val MATTER_STORAGE_DATA = "otmJadeMatterStorageData"
|
||||||
|
val MATTERY_WORKER_DATA = "otmJadeMatteryWorkerData"
|
||||||
|
|
||||||
|
val MATTER_BOTTLER_DATA = "otmJadeMatterBottlerData"
|
||||||
|
val MATTER_RECONSTRUCTOR_DATA = "otmJadeMatterReconstructorData"
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package ru.dbotthepony.mc.otm.compat.jade
|
||||||
|
|
||||||
|
import net.minecraft.world.level.block.Block
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity
|
||||||
|
import ru.dbotthepony.mc.otm.block.MatteryBlock
|
||||||
|
import ru.dbotthepony.mc.otm.block.entity.MatteryWorkerBlockEntity
|
||||||
|
import ru.dbotthepony.mc.otm.block.entity.matter.MatterBottlerBlockEntity
|
||||||
|
import ru.dbotthepony.mc.otm.block.entity.matter.MatterReconstructorBlockEntity
|
||||||
|
import ru.dbotthepony.mc.otm.block.entity.matter.MatterReplicatorBlockEntity
|
||||||
|
import ru.dbotthepony.mc.otm.block.entity.matter.MatterScannerBlockEntity
|
||||||
|
import ru.dbotthepony.mc.otm.block.matter.MatterBottlerBlock
|
||||||
|
import ru.dbotthepony.mc.otm.block.matter.MatterReconstructorBlock
|
||||||
|
import ru.dbotthepony.mc.otm.block.matter.MatterReplicatorBlock
|
||||||
|
import ru.dbotthepony.mc.otm.block.matter.MatterScannerBlock
|
||||||
|
import ru.dbotthepony.mc.otm.compat.jade.providers.*
|
||||||
|
import snownee.jade.api.IWailaClientRegistration
|
||||||
|
import snownee.jade.api.IWailaCommonRegistration
|
||||||
|
import snownee.jade.api.IWailaPlugin
|
||||||
|
import snownee.jade.api.WailaPlugin
|
||||||
|
|
||||||
|
@WailaPlugin
|
||||||
|
class JadePlugin : IWailaPlugin {
|
||||||
|
override fun register(reg: IWailaCommonRegistration) {
|
||||||
|
reg.registerBlockDataProvider(MatterStorageProvider, BlockEntity::class.java)
|
||||||
|
reg.registerBlockDataProvider(MatteryEnergyProvider, BlockEntity::class.java)
|
||||||
|
reg.registerBlockDataProvider(MatteryWorkerProvider, MatteryWorkerBlockEntity::class.java)
|
||||||
|
reg.registerBlockDataProvider(MatterBottlerProvider, MatterBottlerBlockEntity::class.java)
|
||||||
|
reg.registerBlockDataProvider(MatterReconstructorProvider, MatterReconstructorBlockEntity::class.java)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun registerClient(reg: IWailaClientRegistration) {
|
||||||
|
reg.registerBlockComponent(MatteryEnergyProvider, Block::class.java)
|
||||||
|
reg.registerBlockComponent(MatterStorageProvider, Block::class.java)
|
||||||
|
reg.registerBlockComponent(MatteryWorkerProvider, MatteryBlock::class.java)
|
||||||
|
reg.registerBlockComponent(MatterBottlerProvider, MatterBottlerBlock::class.java)
|
||||||
|
reg.registerBlockComponent(MatterReconstructorProvider, MatterReconstructorBlock::class.java)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,67 @@
|
|||||||
|
package ru.dbotthepony.mc.otm.compat.jade.providers
|
||||||
|
|
||||||
|
import net.minecraft.nbt.CompoundTag
|
||||||
|
import net.minecraft.resources.ResourceLocation
|
||||||
|
import ru.dbotthepony.mc.otm.block.entity.WorkerState
|
||||||
|
import ru.dbotthepony.mc.otm.block.entity.matter.MatterBottlerBlockEntity
|
||||||
|
import ru.dbotthepony.mc.otm.compat.jade.JadeTagKeys
|
||||||
|
import ru.dbotthepony.mc.otm.compat.jade.JadeUids
|
||||||
|
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||||
|
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||||
|
import snownee.jade.api.BlockAccessor
|
||||||
|
import snownee.jade.api.IBlockComponentProvider
|
||||||
|
import snownee.jade.api.IServerDataProvider
|
||||||
|
import snownee.jade.api.ITooltip
|
||||||
|
import snownee.jade.api.config.IPluginConfig
|
||||||
|
import snownee.jade.api.ui.BoxStyle
|
||||||
|
|
||||||
|
object MatterBottlerProvider : IBlockComponentProvider, IServerDataProvider<BlockAccessor> {
|
||||||
|
override fun getUid(): ResourceLocation = JadeUids.MATTER_BOTTLER
|
||||||
|
|
||||||
|
override fun appendServerData(data: CompoundTag, accessor: BlockAccessor) {
|
||||||
|
if (accessor.blockEntity is MatterBottlerBlockEntity) {
|
||||||
|
val bottler = accessor.blockEntity as MatterBottlerBlockEntity
|
||||||
|
|
||||||
|
val bottlerData = CompoundTag()
|
||||||
|
bottlerData.putBoolean("isBottling", bottler.isBottling)
|
||||||
|
bottlerData.putBoolean("isIdling", accessor.blockState.getValue(WorkerState.SEMI_WORKER_STATE) !== WorkerState.WORKING)
|
||||||
|
bottlerData.putFloat("workProgress", bottler.getWorkProgress())
|
||||||
|
data.put(JadeTagKeys.MATTER_BOTTLER_DATA, bottlerData)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun appendTooltip(tooltip: ITooltip, accessor: BlockAccessor, config: IPluginConfig) {
|
||||||
|
val data = accessor.serverData
|
||||||
|
|
||||||
|
if (!data.contains(JadeTagKeys.MATTER_BOTTLER_DATA)) return
|
||||||
|
val bottlerData = data.getCompound(JadeTagKeys.MATTER_BOTTLER_DATA)
|
||||||
|
|
||||||
|
val elementHelper = tooltip.elementHelper
|
||||||
|
tooltip.add(
|
||||||
|
elementHelper.text(
|
||||||
|
TranslatableComponent(
|
||||||
|
"otm.jade.mode",
|
||||||
|
if (bottlerData.getBoolean("isBottling"))
|
||||||
|
TranslatableComponent("otm.jade.matter_bottler.mode.fill")
|
||||||
|
else
|
||||||
|
TranslatableComponent("otm.jade.matter_bottler.mode.drain")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if (!data.getBoolean("isIdling")) {
|
||||||
|
val workProgress = data.getFloat("workProgress")
|
||||||
|
val style = elementHelper.progressStyle().color(RGBAColor.WHITE.toARGB())
|
||||||
|
|
||||||
|
tooltip.add(
|
||||||
|
elementHelper.progress(
|
||||||
|
workProgress,
|
||||||
|
null,
|
||||||
|
style,
|
||||||
|
BoxStyle.DEFAULT,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
package ru.dbotthepony.mc.otm.compat.jade.providers
|
||||||
|
|
||||||
|
import net.minecraft.nbt.CompoundTag
|
||||||
|
import net.minecraft.resources.ResourceLocation
|
||||||
|
import ru.dbotthepony.mc.otm.block.entity.matter.MatterReconstructorBlockEntity
|
||||||
|
import ru.dbotthepony.mc.otm.compat.jade.JadeTagKeys
|
||||||
|
import ru.dbotthepony.mc.otm.compat.jade.JadeUids
|
||||||
|
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||||
|
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||||
|
import snownee.jade.api.BlockAccessor
|
||||||
|
import snownee.jade.api.IBlockComponentProvider
|
||||||
|
import snownee.jade.api.IServerDataProvider
|
||||||
|
import snownee.jade.api.ITooltip
|
||||||
|
import snownee.jade.api.config.IPluginConfig
|
||||||
|
import snownee.jade.api.ui.BoxStyle
|
||||||
|
|
||||||
|
object MatterReconstructorProvider : IBlockComponentProvider, IServerDataProvider<BlockAccessor> {
|
||||||
|
override fun getUid(): ResourceLocation = JadeUids.MATTER_RECONSTRUCTOR
|
||||||
|
|
||||||
|
override fun appendServerData(data: CompoundTag, accessor: BlockAccessor) {
|
||||||
|
if (accessor.blockEntity is MatterReconstructorBlockEntity) {
|
||||||
|
val reconstructor = accessor.blockEntity as MatterReconstructorBlockEntity
|
||||||
|
|
||||||
|
val item = reconstructor.repairContainer.get(0)
|
||||||
|
|
||||||
|
if (!item.isEmpty && item.isDamageableItem && item.maxDamage != 0) {
|
||||||
|
val reconstructorData = CompoundTag()
|
||||||
|
|
||||||
|
reconstructorData.putInt("damage", item.maxDamage - item.damageValue)
|
||||||
|
reconstructorData.putInt("maxDamage", item.maxDamage)
|
||||||
|
|
||||||
|
data.put(JadeTagKeys.MATTER_RECONSTRUCTOR_DATA, reconstructorData)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun appendTooltip(tooltip: ITooltip, accessor: BlockAccessor, config: IPluginConfig) {
|
||||||
|
val data = accessor.serverData
|
||||||
|
|
||||||
|
if (!data.contains(JadeTagKeys.MATTER_RECONSTRUCTOR_DATA)) return
|
||||||
|
val reconstructorData = data.getCompound(JadeTagKeys.MATTER_RECONSTRUCTOR_DATA)
|
||||||
|
|
||||||
|
val damage = reconstructorData.getInt("damage")
|
||||||
|
val maxDamage = reconstructorData.getInt("maxDamage")
|
||||||
|
|
||||||
|
val ratio = damage.toFloat() / maxDamage.toFloat()
|
||||||
|
|
||||||
|
tooltip.add(
|
||||||
|
tooltip.elementHelper.progress(
|
||||||
|
ratio,
|
||||||
|
TranslatableComponent(
|
||||||
|
"item.durability",
|
||||||
|
damage,
|
||||||
|
maxDamage
|
||||||
|
),
|
||||||
|
tooltip.elementHelper.progressStyle().color(RGBAColor.DARK_GREEN.toARGB()).textColor(RGBAColor.WHITE.toARGB()),
|
||||||
|
BoxStyle.DEFAULT,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
package ru.dbotthepony.mc.otm.compat.jade.providers
|
||||||
|
|
||||||
|
import net.minecraft.nbt.CompoundTag
|
||||||
|
import net.minecraft.resources.ResourceLocation
|
||||||
|
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||||
|
import ru.dbotthepony.mc.otm.compat.jade.JadeTagKeys
|
||||||
|
import ru.dbotthepony.mc.otm.compat.jade.JadeUids
|
||||||
|
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||||
|
import ru.dbotthepony.mc.otm.core.ifPresentK
|
||||||
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
|
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||||
|
import ru.dbotthepony.mc.otm.core.math.getDecimal
|
||||||
|
import ru.dbotthepony.mc.otm.core.math.putDecimal
|
||||||
|
import ru.dbotthepony.mc.otm.core.util.formatMatter
|
||||||
|
import snownee.jade.api.BlockAccessor
|
||||||
|
import snownee.jade.api.IBlockComponentProvider
|
||||||
|
import snownee.jade.api.IServerDataProvider
|
||||||
|
import snownee.jade.api.ITooltip
|
||||||
|
import snownee.jade.api.config.IPluginConfig
|
||||||
|
import snownee.jade.api.ui.BoxStyle
|
||||||
|
|
||||||
|
object MatterStorageProvider : IBlockComponentProvider, IServerDataProvider<BlockAccessor> {
|
||||||
|
override fun getUid(): ResourceLocation = JadeUids.MATTER_STORAGE
|
||||||
|
|
||||||
|
override fun appendServerData(data: CompoundTag, accessor: BlockAccessor) {
|
||||||
|
accessor.blockEntity?.getCapability(MatteryCapability.MATTER)?.ifPresentK {
|
||||||
|
val matterData = CompoundTag()
|
||||||
|
|
||||||
|
matterData.putDecimal("storedMatter", it.storedMatter)
|
||||||
|
matterData.putDecimal("maxStoredMatter", it.maxStoredMatter)
|
||||||
|
|
||||||
|
data.put(JadeTagKeys.MATTER_STORAGE_DATA, matterData)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun appendTooltip(tooltip: ITooltip, accessor: BlockAccessor, config: IPluginConfig) {
|
||||||
|
val data = accessor.serverData
|
||||||
|
if (!data.contains(JadeTagKeys.MATTER_STORAGE_DATA)) return
|
||||||
|
|
||||||
|
val matterData = data.getCompound(JadeTagKeys.MATTER_STORAGE_DATA)
|
||||||
|
val storedMatter = matterData.getDecimal("storedMatter")
|
||||||
|
val maxStoredMatter = matterData.getDecimal("maxStoredMatter")
|
||||||
|
|
||||||
|
val ratio = if (maxStoredMatter.isZero) 0f else (storedMatter / maxStoredMatter).coerceIn(Decimal.ZERO, Decimal.ONE).toFloat()
|
||||||
|
val style = tooltip.elementHelper.progressStyle()
|
||||||
|
.color(RGBAColor.LOW_MATTER.linearInterpolation(ratio, RGBAColor.FULL_MATTER).toARGB())
|
||||||
|
.textColor(RGBAColor.WHITE.toARGB())
|
||||||
|
|
||||||
|
tooltip.add(
|
||||||
|
tooltip.elementHelper.progress(
|
||||||
|
ratio,
|
||||||
|
TranslatableComponent(
|
||||||
|
"otm.gui.level",
|
||||||
|
storedMatter.formatMatter(),
|
||||||
|
maxStoredMatter.formatMatter()
|
||||||
|
),
|
||||||
|
style,
|
||||||
|
BoxStyle.DEFAULT,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
package ru.dbotthepony.mc.otm.compat.jade.providers
|
||||||
|
|
||||||
|
import net.minecraft.nbt.CompoundTag
|
||||||
|
import net.minecraft.resources.ResourceLocation
|
||||||
|
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||||
|
import ru.dbotthepony.mc.otm.compat.jade.JadeTagKeys
|
||||||
|
import ru.dbotthepony.mc.otm.compat.jade.JadeUids
|
||||||
|
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||||
|
import ru.dbotthepony.mc.otm.core.ifPresentK
|
||||||
|
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||||
|
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||||
|
import ru.dbotthepony.mc.otm.core.math.getDecimal
|
||||||
|
import ru.dbotthepony.mc.otm.core.math.putDecimal
|
||||||
|
import ru.dbotthepony.mc.otm.core.util.formatPower
|
||||||
|
import snownee.jade.api.*
|
||||||
|
import snownee.jade.api.config.IPluginConfig
|
||||||
|
import snownee.jade.api.ui.BoxStyle
|
||||||
|
|
||||||
|
object MatteryEnergyProvider : IBlockComponentProvider, IServerDataProvider<BlockAccessor> {
|
||||||
|
override fun getUid(): ResourceLocation = JadeUids.MATTERY_ENERGY
|
||||||
|
|
||||||
|
override fun appendServerData(data: CompoundTag, accessor: BlockAccessor) {
|
||||||
|
accessor.blockEntity?.getCapability(MatteryCapability.ENERGY)?.ifPresentK {
|
||||||
|
val energyData = CompoundTag()
|
||||||
|
|
||||||
|
energyData.putDecimal("batteryLevel", it.batteryLevel)
|
||||||
|
energyData.putDecimal("maxBatteryLevel", it.maxBatteryLevel)
|
||||||
|
|
||||||
|
data.put(JadeTagKeys.MATTERY_ENERGY_DATA, energyData)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun appendTooltip(tooltip: ITooltip, accessor: BlockAccessor, config: IPluginConfig) {
|
||||||
|
val data = accessor.serverData
|
||||||
|
|
||||||
|
if (!data.contains(JadeTagKeys.MATTERY_ENERGY_DATA)) return
|
||||||
|
val energyData = data.getCompound(JadeTagKeys.MATTERY_ENERGY_DATA)
|
||||||
|
|
||||||
|
val batteryLevel = energyData.getDecimal("batteryLevel")
|
||||||
|
val maxBatteryLevel = energyData.getDecimal("maxBatteryLevel")
|
||||||
|
|
||||||
|
val ratio = if (maxBatteryLevel.isZero) 0f else (batteryLevel / maxBatteryLevel).coerceIn(Decimal.ZERO, Decimal.ONE).toFloat()
|
||||||
|
val style = tooltip.elementHelper.progressStyle()
|
||||||
|
.color(RGBAColor.LOW_POWER.linearInterpolation(ratio, RGBAColor.FULL_POWER).toARGB())
|
||||||
|
.textColor(RGBAColor.WHITE.toARGB())
|
||||||
|
|
||||||
|
tooltip.add(
|
||||||
|
tooltip.elementHelper.progress(
|
||||||
|
ratio,
|
||||||
|
TranslatableComponent(
|
||||||
|
"otm.gui.level",
|
||||||
|
batteryLevel.formatPower(),
|
||||||
|
maxBatteryLevel.formatPower()
|
||||||
|
),
|
||||||
|
style,
|
||||||
|
BoxStyle.DEFAULT,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,84 @@
|
|||||||
|
package ru.dbotthepony.mc.otm.compat.jade.providers
|
||||||
|
|
||||||
|
import net.minecraft.nbt.CompoundTag
|
||||||
|
import net.minecraft.nbt.ListTag
|
||||||
|
import net.minecraft.resources.ResourceLocation
|
||||||
|
import ru.dbotthepony.mc.otm.block.entity.MachineItemJob
|
||||||
|
import ru.dbotthepony.mc.otm.block.entity.MatteryWorkerBlockEntity
|
||||||
|
import ru.dbotthepony.mc.otm.compat.jade.JadeTagKeys
|
||||||
|
import ru.dbotthepony.mc.otm.compat.jade.JadeUids
|
||||||
|
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||||
|
import ru.dbotthepony.mc.otm.core.nbt.getCompoundList
|
||||||
|
import ru.dbotthepony.mc.otm.core.nbt.getItemStack
|
||||||
|
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||||
|
import snownee.jade.api.BlockAccessor
|
||||||
|
import snownee.jade.api.IBlockComponentProvider
|
||||||
|
import snownee.jade.api.IServerDataProvider
|
||||||
|
import snownee.jade.api.ITooltip
|
||||||
|
import snownee.jade.api.config.IPluginConfig
|
||||||
|
import snownee.jade.api.ui.BoxStyle
|
||||||
|
|
||||||
|
object MatteryWorkerProvider : IBlockComponentProvider, IServerDataProvider<BlockAccessor> {
|
||||||
|
override fun getUid(): ResourceLocation = JadeUids.MATTERY_WORKER
|
||||||
|
|
||||||
|
override fun appendServerData(data: CompoundTag, accessor: BlockAccessor) {
|
||||||
|
if (accessor.blockEntity is MatteryWorkerBlockEntity<*>) {
|
||||||
|
val worker = accessor.blockEntity as MatteryWorkerBlockEntity<*>
|
||||||
|
|
||||||
|
val workerData = CompoundTag()
|
||||||
|
|
||||||
|
workerData["jobs"] = ListTag().also {
|
||||||
|
for (job in worker.jobEventLoops) {
|
||||||
|
val jobData = CompoundTag()
|
||||||
|
jobData.putFloat("workProgress", job.workProgress)
|
||||||
|
jobData.putBoolean("isIdling", job.isIdling)
|
||||||
|
jobData.putBoolean("isUnableToProcess", job.isUnableToProcess)
|
||||||
|
|
||||||
|
if (job.currentJob is MachineItemJob) {
|
||||||
|
val currentJob = job.currentJob as MachineItemJob
|
||||||
|
jobData.put("itemStack", currentJob.itemStack.serializeNBT())
|
||||||
|
}
|
||||||
|
|
||||||
|
it.add(jobData)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data.put(JadeTagKeys.MATTERY_WORKER_DATA, workerData)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun appendTooltip(tooltip: ITooltip, accessor: BlockAccessor, config: IPluginConfig) {
|
||||||
|
val data = accessor.serverData
|
||||||
|
|
||||||
|
if (!data.contains(JadeTagKeys.MATTERY_WORKER_DATA)) return
|
||||||
|
val workerData = data.getCompound(JadeTagKeys.MATTERY_WORKER_DATA)
|
||||||
|
|
||||||
|
val elementHelper = tooltip.elementHelper
|
||||||
|
val style = elementHelper.progressStyle().color(RGBAColor.WHITE.toARGB())
|
||||||
|
val styleError = elementHelper.progressStyle().color(RGBAColor.REDDISH.toARGB())
|
||||||
|
|
||||||
|
for (job in workerData.getCompoundList("jobs")) {
|
||||||
|
val progress = job.getFloat("workProgress")
|
||||||
|
val isIdling = job.getBoolean("isIdling")
|
||||||
|
val isUnableToProcess = job.getBoolean("isUnableToProcess")
|
||||||
|
val itemStack = job.getItemStack("itemStack")
|
||||||
|
|
||||||
|
if (!isIdling) {
|
||||||
|
if (!itemStack.isEmpty) {
|
||||||
|
tooltip.add(elementHelper.smallItem(itemStack))
|
||||||
|
tooltip.append(elementHelper.text(itemStack.hoverName))
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip.add(
|
||||||
|
elementHelper.progress(
|
||||||
|
progress,
|
||||||
|
null,
|
||||||
|
if (isUnableToProcess) styleError else style,
|
||||||
|
BoxStyle.DEFAULT,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user