Merge remote-tracking branch 'origin/master' into master
# Conflicts: # src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt # src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/Russian.kt
This commit is contained in:
commit
dc50a79b20
@ -193,7 +193,7 @@ dependencies {
|
||||
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("curse.maven:jade-324717:${jade_id}"))
|
||||
implementation(fg.deobf("curse.maven:jade-324717:${jade_id}"))
|
||||
//runtimeOnly(fg.deobf("curse.maven:configured-457570:${configured_id}"))
|
||||
|
||||
compileOnly(fg.deobf("curse.maven:resourceful-lib-570073:${resourceful_lib_id}"))
|
||||
|
@ -17,7 +17,7 @@ jei_mc_version=1.20
|
||||
curios_mc_version=1.20
|
||||
|
||||
forge_gradle_version=[6.0,6.2)
|
||||
forge_version=47.0.19
|
||||
forge_version=47.1.0
|
||||
mixingradle_version=0.7.33
|
||||
mixin_version=0.8.5
|
||||
|
||||
@ -30,7 +30,7 @@ ad_astra_id=4594155
|
||||
botarium_id=4594094
|
||||
resourceful_lib_id=4598948
|
||||
resourceful_config_id=4576455
|
||||
jade_id=4573193
|
||||
jade_id=4614153
|
||||
configured_id=4462894
|
||||
|
||||
kotlin_for_forge_version=3.1.0
|
||||
|
@ -146,6 +146,7 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
gui("exopack.toggle_glow", "Glows in dark")
|
||||
gui("exopack.change_color", "Customize color")
|
||||
gui("exopack.change_color2", "Remove color")
|
||||
gui("exopack.go_curios", "Open Curios inventory")
|
||||
|
||||
gui("exopack.probe1", "This little device feels unnatural to touch, it is almost certainly resilient to any possible attempt to break it open.")
|
||||
gui("exopack.probe2", "There is fingerprint reader built into one of sides which gently glow when touched.")
|
||||
@ -799,6 +800,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) {
|
||||
decoratives(provider)
|
||||
sounds(provider)
|
||||
@ -813,6 +829,8 @@ fun AddEnglishLanguage(provider: MatteryLanguageProvider) {
|
||||
research(provider)
|
||||
gui(provider)
|
||||
|
||||
jade(provider)
|
||||
|
||||
with(provider.english) {
|
||||
add("itemGroup.otm", "Overdrive That Matters")
|
||||
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.AndroidResearchType
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock
|
||||
|
||||
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: 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) {
|
||||
val path = "$path."
|
||||
constructor(vararg path: String) : this(path.joinToString("."))
|
||||
|
@ -154,6 +154,7 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
gui("exopack.toggle_glow", "Свечение в темноте")
|
||||
gui("exopack.change_color", "Изменить окраску")
|
||||
gui("exopack.change_color2", "Убрать окраску")
|
||||
gui("exopack.go_curios", "Открыть инвентарь Curios")
|
||||
|
||||
gui("exopack.probe1", "Данное маленькое устройство необычно на ощупь, а так же неприступно для любых попыток вскрыть.")
|
||||
gui("exopack.probe2", "На одной из сторон данного устройства находится сканер отпечатка, который тускло загорается при касании.")
|
||||
@ -800,6 +801,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) {
|
||||
decoratives(provider)
|
||||
blocks(provider)
|
||||
@ -811,4 +827,5 @@ fun AddRussianLanguage(provider: MatteryLanguageProvider) {
|
||||
research(provider)
|
||||
death(provider)
|
||||
androidFeatures(provider)
|
||||
jade(provider)
|
||||
}
|
||||
|
@ -126,6 +126,8 @@ class MatterCapacitorBankBlockEntity(p_155229_: BlockPos, p_155230_: BlockState)
|
||||
capacitorStatus[slot].boolean = new.getCapability(MatteryCapability.MATTER).isPresent
|
||||
gaugeLevel = (storedMatter / maxStoredMatter).toFloat()
|
||||
}
|
||||
|
||||
override fun getMaxStackSize(): Int = 1
|
||||
}.also(::addDroppableContainer)
|
||||
|
||||
val itemConfig = ConfigurableItemHandler(inputOutput = container.handler(object : HandlerFilter {
|
||||
|
@ -54,9 +54,7 @@ class PatternStorageBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) :
|
||||
super.setChanged(slot, new, old)
|
||||
}
|
||||
|
||||
override fun getMaxStackSize(): Int {
|
||||
return 1
|
||||
}
|
||||
override fun getMaxStackSize(): Int = 1
|
||||
}.also(::addDroppableContainer)
|
||||
|
||||
private fun updateBlockstate() {
|
||||
|
@ -35,6 +35,8 @@ class BatteryBankBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : Matte
|
||||
batteryStatus[slot].boolean = new.getCapability(ForgeCapabilities.ENERGY).isPresent
|
||||
gaugeLevel = batteryLevel.percentage(maxBatteryLevel)
|
||||
}
|
||||
|
||||
override fun getMaxStackSize(): Int = 1
|
||||
}.also(::addDroppableContainer)
|
||||
|
||||
val batteryStatus = immutableList(CAPACITY) {
|
||||
|
@ -51,6 +51,7 @@ object Widgets18 {
|
||||
val CROSS = miscGrid.next()
|
||||
val FORWARD_SLASH = miscGrid.next()
|
||||
val RETURN_ARROW_LEFT = miscGrid.next()
|
||||
val CURIOS_INVENTORY = miscGrid.next()
|
||||
|
||||
private val slotBgGrid = WidgetLocation.SLOT_BACKGROUNDS.grid(4, 4)
|
||||
|
||||
|
@ -23,6 +23,8 @@ import ru.dbotthepony.mc.otm.client.screen.widget.ProgressGaugePanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.widget.TallHorizontalProfiledPowerGaugePanel
|
||||
import ru.dbotthepony.mc.otm.client.setMousePos
|
||||
import ru.dbotthepony.mc.otm.client.shouldOpenVanillaInventory
|
||||
import ru.dbotthepony.mc.otm.compat.curios.isCuriosLoaded
|
||||
import ru.dbotthepony.mc.otm.compat.curios.openCuriosScreen
|
||||
import ru.dbotthepony.mc.otm.core.math.integerDivisionDown
|
||||
import ru.dbotthepony.mc.otm.menu.ExoPackInventoryMenu
|
||||
import ru.dbotthepony.mc.otm.network.ExoPackMenuOpen
|
||||
@ -235,7 +237,7 @@ class ExoPackInventoryScreen(menu: ExoPackInventoryMenu) : MatteryScreen<ExoPack
|
||||
scrollPanel.dock = Dock.RIGHT
|
||||
scrollPanel.setDockMargin(right = 3f)
|
||||
|
||||
LargeRectangleButtonPanel(this, frame, x = frame.width - 2f - LargeRectangleButtonPanel.SIZE, y = -LargeRectangleButtonPanel.SIZE - 2f, skinElement = Widgets18.RETURN_ARROW_LEFT, onPress = {
|
||||
val closeButtonPanel = LargeRectangleButtonPanel(this, frame, x = frame.width - 2f - LargeRectangleButtonPanel.SIZE, y = -LargeRectangleButtonPanel.SIZE - 2f, skinElement = Widgets18.RETURN_ARROW_LEFT, onPress = {
|
||||
shouldOpenVanillaInventory = true
|
||||
val minecraft = minecraft!!
|
||||
|
||||
@ -247,6 +249,12 @@ class ExoPackInventoryScreen(menu: ExoPackInventoryMenu) : MatteryScreen<ExoPack
|
||||
setMousePos(mouseX, mouseY)
|
||||
}).also { it.tooltips.add(TranslatableComponent("otm.gui.exopack.go_back")) }
|
||||
|
||||
if (isCuriosLoaded) {
|
||||
LargeRectangleButtonPanel(this, frame, x = closeButtonPanel.x - 2f - LargeRectangleButtonPanel.SIZE, y = closeButtonPanel.y, skinElement = Widgets18.CURIOS_INVENTORY, onPress = {
|
||||
openCuriosScreen(minecraft!!.player!!.containerMenu.carried)
|
||||
}).also { it.tooltips.add(TranslatableComponent("otm.gui.exopack.go_curios")) }
|
||||
}
|
||||
|
||||
makeInventoryRowsControls(frame, frame.width + 2f, frame.height.coerceAtMost(95f)) { movePixels ->
|
||||
frame.y += movePixels
|
||||
moveMousePosScaled(y = movePixels)
|
||||
|
@ -4,7 +4,10 @@ import com.google.common.collect.Streams
|
||||
import net.minecraft.world.entity.player.Player
|
||||
import net.minecraft.world.inventory.Slot
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraftforge.api.distmarker.Dist
|
||||
import net.minecraftforge.fml.ModList
|
||||
import net.minecraftforge.fml.loading.FMLEnvironment
|
||||
import net.minecraftforge.network.PacketDistributor
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.container.awareStream
|
||||
@ -16,6 +19,8 @@ import top.theillusivec4.curios.api.CuriosApi
|
||||
import top.theillusivec4.curios.api.event.SlotModifiersUpdatedEvent
|
||||
import top.theillusivec4.curios.common.inventory.CosmeticCurioSlot
|
||||
import top.theillusivec4.curios.common.inventory.CurioSlot
|
||||
import top.theillusivec4.curios.common.network.NetworkHandler
|
||||
import top.theillusivec4.curios.common.network.client.CPacketOpenCurios
|
||||
import java.util.stream.Stream
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
@ -28,6 +33,10 @@ fun onCuriosSlotModifiersUpdated(event: SlotModifiersUpdatedEvent) {
|
||||
event.entity.matteryPlayer?.recreateExoPackMenu()
|
||||
}
|
||||
|
||||
fun openCuriosScreen(carriedStack: ItemStack = ItemStack.EMPTY) {
|
||||
if (FMLEnvironment.dist.isClient) NetworkHandler.INSTANCE.send(PacketDistributor.SERVER.noArg(), CPacketOpenCurios(carriedStack))
|
||||
}
|
||||
|
||||
private fun Player.getCuriosSlotsImpl(): List<PlayerSlot<Slot, Slot>> {
|
||||
val handler = getCapability(MatteryCapability.CURIOS_INVENTORY).orNull() ?: return listOf()
|
||||
|
||||
|
@ -0,0 +1,29 @@
|
||||
package ru.dbotthepony.mc.otm.compat.jade
|
||||
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters.loc
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
|
||||
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"
|
||||
}
|
||||
|
||||
object JadeColors {
|
||||
val ENERGY_COLOR = RGBAColor(231, 232, 0)
|
||||
val ENERGY_COLOR2 = RGBAColor(192, 193, 0)
|
||||
val MATTER_COLOR = RGBAColor(71, 255, 187)
|
||||
}
|
@ -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,64 @@
|
||||
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.JadeColors
|
||||
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(JadeColors.MATTER_COLOR.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,62 @@
|
||||
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.JadeColors
|
||||
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(JadeColors.ENERGY_COLOR.toARGB(), JadeColors.ENERGY_COLOR2.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
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -15,6 +15,8 @@ import net.minecraftforge.common.capabilities.ICapabilityProvider
|
||||
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
||||
import ru.dbotthepony.mc.otm.capability.energy.ItemEnergyStorageImpl
|
||||
import ru.dbotthepony.mc.otm.capability.energy.batteryLevel
|
||||
import ru.dbotthepony.mc.otm.capability.energy.getBarColor
|
||||
import ru.dbotthepony.mc.otm.capability.energy.getBarWidth
|
||||
import ru.dbotthepony.mc.otm.capability.matteryEnergy
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
@ -47,6 +49,18 @@ class ProceduralBatteryItem : Item(Properties().stacksTo(1)) {
|
||||
get() = maxBatteryLevel
|
||||
}
|
||||
|
||||
override fun isBarVisible(p_150899_: ItemStack): Boolean {
|
||||
return p_150899_.matteryEnergy != null
|
||||
}
|
||||
|
||||
override fun getBarWidth(p_150900_: ItemStack): Int {
|
||||
return p_150900_.matteryEnergy?.getBarWidth() ?: super.getBarWidth(p_150900_)
|
||||
}
|
||||
|
||||
override fun getBarColor(p_150901_: ItemStack): Int {
|
||||
return p_150901_.matteryEnergy?.getBarColor() ?: super.getBarColor(p_150901_)
|
||||
}
|
||||
|
||||
override fun appendHoverText(p_41421_: ItemStack, p_41422_: Level?, p_41423_: MutableList<Component>, p_41424_: TooltipFlag) {
|
||||
super.appendHoverText(p_41421_, p_41422_, p_41423_, p_41424_)
|
||||
|
||||
|
@ -43,7 +43,7 @@ Matter. Energy. Combined.
|
||||
# Does this dependency have to exist - if not, ordering below must be specified
|
||||
mandatory=true #mandatory
|
||||
# The version range of the dependency
|
||||
versionRange="[47.0.1,)" #mandatory
|
||||
versionRange="[47.1.0,)" #mandatory
|
||||
# An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory
|
||||
ordering="NONE"
|
||||
# Side this dependency is applied on - BOTH, CLIENT or SERVER
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 815 B After Width: | Height: | Size: 826 B |
Binary file not shown.
Loading…
Reference in New Issue
Block a user