WIP: Reforge Recipes
This commit is contained in:
10
src/main/kotlin/util/AprilFoolsUtil.kt
Normal file
10
src/main/kotlin/util/AprilFoolsUtil.kt
Normal file
@@ -0,0 +1,10 @@
|
||||
package moe.nea.firmament.util
|
||||
|
||||
import java.time.LocalDateTime
|
||||
import java.time.Month
|
||||
|
||||
object AprilFoolsUtil {
|
||||
val isAprilFoolsDay = LocalDateTime.now().let {
|
||||
it.dayOfMonth == 1 && it.month == Month.APRIL
|
||||
}
|
||||
}
|
||||
@@ -15,21 +15,25 @@ import net.minecraft.text.Text
|
||||
|
||||
object FirmFormatters {
|
||||
fun formatCommas(int: Int, segments: Int = 3): String = formatCommas(int.toLong(), segments)
|
||||
fun formatCommas(long: Long, segments: Int = 3): String {
|
||||
fun formatCommas(long: Long, segments: Int = 3, includeSign: Boolean = false): String {
|
||||
if (long < 0 && long != Long.MIN_VALUE) {
|
||||
return "-" + formatCommas(-long, segments, false)
|
||||
}
|
||||
val prefix = if (includeSign) "+" else ""
|
||||
val α = long / 1000
|
||||
if (α != 0L) {
|
||||
return formatCommas(α, segments) + "," + (long - α * 1000).toString().padStart(3, '0')
|
||||
return prefix + formatCommas(α, segments) + "," + (long - α * 1000).toString().padStart(3, '0')
|
||||
}
|
||||
return long.toString()
|
||||
return prefix + long.toString()
|
||||
}
|
||||
|
||||
fun formatCommas(float: Float, fractionalDigits: Int): String = formatCommas(float.toDouble(), fractionalDigits)
|
||||
fun formatCommas(double: Double, fractionalDigits: Int): String {
|
||||
fun formatCommas(double: Double, fractionalDigits: Int, includeSign: Boolean = false): String {
|
||||
val long = double.toLong()
|
||||
val δ = (double - long).absoluteValue
|
||||
val μ = pow(10, fractionalDigits)
|
||||
val digits = (μ * δ).toInt().toString().padStart(fractionalDigits, '0').trimEnd('0')
|
||||
return formatCommas(long) + (if (digits.isEmpty()) "" else ".$digits")
|
||||
return formatCommas(long, includeSign = includeSign) + (if (digits.isEmpty()) "" else ".$digits")
|
||||
}
|
||||
|
||||
fun formatDistance(distance: Double): String {
|
||||
|
||||
@@ -106,7 +106,10 @@ data class HypixelPetInfo(
|
||||
|
||||
private val jsonparser = Json { ignoreUnknownKeys = true }
|
||||
|
||||
val ItemStack.extraAttributes: NbtCompound
|
||||
var ItemStack.extraAttributes: NbtCompound
|
||||
set(value) {
|
||||
set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(value))
|
||||
}
|
||||
get() {
|
||||
val customData = get(DataComponentTypes.CUSTOM_DATA) ?: run {
|
||||
val component = NbtComponent.of(NbtCompound())
|
||||
|
||||
@@ -5,8 +5,8 @@ import net.minecraft.component.type.LoreComponent
|
||||
import net.minecraft.item.ItemStack
|
||||
import net.minecraft.text.Text
|
||||
|
||||
var ItemStack.loreAccordingToNbt
|
||||
get() = get(DataComponentTypes.LORE)?.lines ?: listOf()
|
||||
var ItemStack.loreAccordingToNbt: List<Text>
|
||||
get() = get(DataComponentTypes.LORE)?.lines ?: listOf()
|
||||
set(value) {
|
||||
set(DataComponentTypes.LORE, LoreComponent(value))
|
||||
}
|
||||
|
||||
@@ -8,7 +8,9 @@ import kotlinx.serialization.descriptors.SerialDescriptor
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
import net.minecraft.item.ItemStack
|
||||
import net.minecraft.text.Style
|
||||
import net.minecraft.text.Text
|
||||
import net.minecraft.util.Formatting
|
||||
import moe.nea.firmament.util.StringUtil.words
|
||||
import moe.nea.firmament.util.collections.lastNotNullOfOrNull
|
||||
import moe.nea.firmament.util.mc.loreAccordingToNbt
|
||||
@@ -46,10 +48,23 @@ enum class Rarity(vararg altNames: String) {
|
||||
}
|
||||
|
||||
val names = setOf(name) + altNames
|
||||
|
||||
val text: Text get() = Text.literal(name).setStyle(Style.EMPTY.withColor(colourMap[this]))
|
||||
val neuRepoRarity: RepoRarity? = RepoRarity.entries.find { it.name == name }
|
||||
|
||||
companion object {
|
||||
// TODO: inline those formattings as fields
|
||||
val colourMap = mapOf(
|
||||
Rarity.COMMON to Formatting.WHITE,
|
||||
Rarity.UNCOMMON to Formatting.GREEN,
|
||||
Rarity.RARE to Formatting.BLUE,
|
||||
Rarity.EPIC to Formatting.DARK_PURPLE,
|
||||
Rarity.LEGENDARY to Formatting.GOLD,
|
||||
Rarity.MYTHIC to Formatting.LIGHT_PURPLE,
|
||||
Rarity.DIVINE to Formatting.AQUA,
|
||||
Rarity.SPECIAL to Formatting.RED,
|
||||
Rarity.VERY_SPECIAL to Formatting.RED,
|
||||
Rarity.SUPREME to Formatting.DARK_RED,
|
||||
)
|
||||
val byName = entries.flatMap { en -> en.names.map { it to en } }.toMap()
|
||||
val fromNeuRepo = entries.associateBy { it.neuRepoRarity }
|
||||
|
||||
|
||||
@@ -7,4 +7,5 @@ object SkyBlockItems {
|
||||
val ENCHANTED_DIAMOND = SkyblockId("ENCHANTED_DIAMOND")
|
||||
val DIAMOND = SkyblockId("DIAMOND")
|
||||
val ANCESTRAL_SPADE = SkyblockId("ANCESTRAL_SPADE")
|
||||
val REFORGE_ANVIL = SkyblockId("REFORGE_ANVIL")
|
||||
}
|
||||
|
||||
@@ -133,6 +133,7 @@ fun MutableText.darkGreen() = withColor(Formatting.DARK_GREEN)
|
||||
fun MutableText.purple() = withColor(Formatting.DARK_PURPLE)
|
||||
fun MutableText.pink() = withColor(Formatting.LIGHT_PURPLE)
|
||||
fun MutableText.yellow() = withColor(Formatting.YELLOW)
|
||||
fun MutableText.gold() = withColor(Formatting.GOLD)
|
||||
fun MutableText.grey() = withColor(Formatting.GRAY)
|
||||
fun MutableText.red() = withColor(Formatting.RED)
|
||||
fun MutableText.white() = withColor(Formatting.WHITE)
|
||||
@@ -146,6 +147,11 @@ fun MutableText.clickCommand(command: String): MutableText {
|
||||
}
|
||||
}
|
||||
|
||||
fun MutableText.prepend(text: Text): MutableText {
|
||||
siblings.addFirst(text)
|
||||
return this
|
||||
}
|
||||
|
||||
fun Text.transformEachRecursively(function: (Text) -> Text): Text {
|
||||
val c = this.content
|
||||
if (c is TranslatableTextContent) {
|
||||
|
||||
Reference in New Issue
Block a user