Update essence capsule
This commit is contained in:
parent
4a66015d78
commit
e513bb8a8f
@ -10,7 +10,7 @@ import net.minecraft.world.entity.ExperienceOrb
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.player.Player
|
||||
import net.minecraft.world.item.*
|
||||
import net.minecraft.world.item.alchemy.PotionUtils
|
||||
import net.minecraft.world.item.alchemy.PotionContents
|
||||
import net.minecraft.world.item.alchemy.Potions
|
||||
import net.minecraft.world.level.Level
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
@ -18,13 +18,18 @@ import ru.dbotthepony.mc.otm.client.isShiftDown
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||
import ru.dbotthepony.mc.otm.core.tagNotNull
|
||||
import ru.dbotthepony.mc.otm.core.util.getLevelFromXp
|
||||
import ru.dbotthepony.mc.otm.registry.MDataComponentTypes
|
||||
import ru.dbotthepony.mc.otm.runIfClient
|
||||
|
||||
class EssenceCapsuleItem(private val digital: Boolean) : MatteryItem(Properties().stacksTo(1).rarity(Rarity.UNCOMMON)) {
|
||||
override fun appendHoverText(itemStack: ItemStack, level: Level?, components: MutableList<Component>, tooltipType: TooltipFlag) {
|
||||
super.appendHoverText(itemStack, level, components, tooltipType)
|
||||
override fun appendHoverText(
|
||||
itemStack: ItemStack,
|
||||
context: TooltipContext,
|
||||
components: MutableList<Component>,
|
||||
tooltipType: TooltipFlag
|
||||
) {
|
||||
super.appendHoverText(itemStack, context, components, tooltipType)
|
||||
components.add(TranslatableComponent("otm.gui.essence_capsule").withStyle(ChatFormatting.DARK_GRAY))
|
||||
components.add(TranslatableComponent("otm.gui.essence_capsule2").withStyle(ChatFormatting.DARK_GRAY))
|
||||
|
||||
@ -35,9 +40,9 @@ class EssenceCapsuleItem(private val digital: Boolean) : MatteryItem(Properties(
|
||||
}
|
||||
|
||||
if (runIfClient(false) { minecraft.window.isShiftDown }) {
|
||||
components.add(TranslatableComponent("otm.gui.experience", experienceStored(itemStack)).withStyle(ChatFormatting.GRAY))
|
||||
components.add(TranslatableComponent("otm.gui.experience", itemStack.getOrDefault(MDataComponentTypes.EXPERIENCE, 0L)).withStyle(ChatFormatting.GRAY))
|
||||
} else {
|
||||
components.add(TranslatableComponent("otm.gui.experience_levels", getLevelFromXp(experienceStored(itemStack))).withStyle(ChatFormatting.GRAY))
|
||||
components.add(TranslatableComponent("otm.gui.experience_levels", getLevelFromXp(itemStack.getOrDefault(MDataComponentTypes.EXPERIENCE, 0L))).withStyle(ChatFormatting.GRAY))
|
||||
}
|
||||
}
|
||||
|
||||
@ -45,12 +50,12 @@ class EssenceCapsuleItem(private val digital: Boolean) : MatteryItem(Properties(
|
||||
return if (digital) UseAnim.BOW else UseAnim.BRUSH
|
||||
}
|
||||
|
||||
override fun getUseDuration(itemStack: ItemStack): Int {
|
||||
override fun getUseDuration(itemStack: ItemStack, p_344979_: LivingEntity): Int {
|
||||
return if (digital) 20 else 30
|
||||
}
|
||||
|
||||
override fun use(level: Level, player: Player, hand: InteractionHand): InteractionResultHolder<ItemStack> {
|
||||
if (!digital || player.matteryPlayer?.isAndroid == true) {
|
||||
if (!digital || player.matteryPlayer.isAndroid) {
|
||||
player.startUsingItem(hand)
|
||||
|
||||
return InteractionResultHolder.consume(player.getItemInHand(hand))
|
||||
@ -62,9 +67,10 @@ class EssenceCapsuleItem(private val digital: Boolean) : MatteryItem(Properties(
|
||||
override fun finishUsingItem(itemStack: ItemStack, level: Level, player: LivingEntity): ItemStack {
|
||||
if (player !is Player) return super.finishUsingItem(itemStack, level, player)
|
||||
|
||||
val exp = experienceStored(itemStack) / itemStack.count
|
||||
val exp = itemStack.getOrDefault(MDataComponentTypes.EXPERIENCE, 0L) / itemStack.count
|
||||
|
||||
if (digital) {
|
||||
val mattery = player.matteryPlayer ?: return super.finishUsingItem(itemStack, level, player)
|
||||
val mattery = player.matteryPlayer
|
||||
if (!mattery.isAndroid) return super.finishUsingItem(itemStack, level, player)
|
||||
|
||||
if (player is ServerPlayer) {
|
||||
@ -72,7 +78,7 @@ class EssenceCapsuleItem(private val digital: Boolean) : MatteryItem(Properties(
|
||||
}
|
||||
} else {
|
||||
if (level is ServerLevel) {
|
||||
level.levelEvent(2002, player.blockPosition(), PotionUtils.getColor(Potions.WATER))
|
||||
level.levelEvent(2002, player.blockPosition(), PotionContents.getColor(Potions.WATER))
|
||||
ExperienceOrb.award(level, player.position(), (exp * (.5 + level.random.nextFloat() * .25)).toInt())
|
||||
}
|
||||
}
|
||||
@ -86,19 +92,7 @@ class EssenceCapsuleItem(private val digital: Boolean) : MatteryItem(Properties(
|
||||
|
||||
fun make(experience: Long): ItemStack {
|
||||
return ItemStack(this, 1).also {
|
||||
setExperience(it, experience)
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun setExperience(itemStack: ItemStack, experience: Long) {
|
||||
itemStack.tagNotNull["experience"] = experience
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun experienceStored(itemStack: ItemStack): Long {
|
||||
return (itemStack.tag?.getLong("experience") ?: 0L) * itemStack.count
|
||||
it[MDataComponentTypes.EXPERIENCE] = experience
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -56,6 +56,8 @@ object MDataComponentTypes {
|
||||
val PATTERNS: DataComponentType<List<PatternState>> by registry.register("patterns") { DataComponentType.builder<List<PatternState>>().persistent(Codec.list(PatternState.CODEC)).build() }
|
||||
val ITEM_FILTER: DataComponentType<ItemFilter> by registry.register("item_filter") { DataComponentType.builder<ItemFilter>().persistent(ItemFilter.CODEC).build() }
|
||||
|
||||
val EXPERIENCE: DataComponentType<Long> by registry.register("experience") { DataComponentType.builder<Long>().persistent(Codec.LONG).networkSynchronized(StreamCodecs.LONG).build() }
|
||||
|
||||
val PRIMED by registry.register("primed") {
|
||||
object : DataComponentType<Boolean> {
|
||||
override fun codec(): Codec<Boolean> {
|
||||
|
Loading…
Reference in New Issue
Block a user