DBot — 30.05.2023 9:49
Да Но всё равно Нравится ли тебе капсула опыта Как концепт YuRaNnNzZZ — 30.05.2023 9:50 да только one small issue DBot — 30.05.2023 9:50 Я не про версию игры YuRaNnNzZZ — 30.05.2023 9:50 она гейтит возврат опыта за танком опыта
This commit is contained in:
parent
294a402447
commit
74f8e316b7
@ -857,6 +857,8 @@ private fun gui(provider: MatteryLanguageProvider) {
|
||||
|
||||
gui("essence_capsule", "(Almost) Everything you ever knew is within")
|
||||
gui("essence_capsule2", "This item can be recycled at Essence Servo")
|
||||
gui("essence_capsule3", "Use to break free most of stored knowledge")
|
||||
gui("essence_capsule.digital", "Use to scan memories stored within")
|
||||
|
||||
gui("slot_filter.filtered", "This slot is filtered for automation")
|
||||
gui("slot_filter.forbidden", "This slot is forbidden for automation mechanisms")
|
||||
|
@ -856,6 +856,8 @@ private fun gui(provider: MatteryLanguageProvider) {
|
||||
|
||||
gui("essence_capsule", "(Почти) Всё, что вы знали, хранится внутри")
|
||||
gui("essence_capsule2", "Данный предмет может быть переработан внутри хранилища эссенции")
|
||||
gui("essence_capsule3", "Используйте, чтобы высвободить большую часть хранящихся внутри знаний")
|
||||
gui("essence_capsule.digital", "Используйте, чтобы вернуть ваши воспоминания")
|
||||
|
||||
gui("slot_filter.filtered", "Данный слот отфильтрован для автоматизации")
|
||||
gui("slot_filter.forbidden", "Данный слот запрещён для взаимодействия средствами автоматизации")
|
||||
|
@ -2,11 +2,18 @@ package ru.dbotthepony.mc.otm.item
|
||||
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.world.item.Item
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.Rarity
|
||||
import net.minecraft.world.item.TooltipFlag
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.world.InteractionHand
|
||||
import net.minecraft.world.InteractionResultHolder
|
||||
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.Potions
|
||||
import net.minecraft.world.level.Level
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.client.isShiftDown
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
@ -15,12 +22,18 @@ import ru.dbotthepony.mc.otm.core.tagNotNull
|
||||
import ru.dbotthepony.mc.otm.core.util.getLevelFromXp
|
||||
import ru.dbotthepony.mc.otm.runIfClient
|
||||
|
||||
class EssenceCapsuleItem : Item(Properties().stacksTo(1).rarity(Rarity.UNCOMMON)) {
|
||||
class EssenceCapsuleItem(private val digital: Boolean) : Item(Properties().stacksTo(1).rarity(Rarity.UNCOMMON)) {
|
||||
override fun appendHoverText(pStack: ItemStack, pLevel: Level?, pTooltipComponents: MutableList<Component>, pIsAdvanced: TooltipFlag) {
|
||||
super.appendHoverText(pStack, pLevel, pTooltipComponents, pIsAdvanced)
|
||||
pTooltipComponents.add(TranslatableComponent("otm.gui.essence_capsule").withStyle(ChatFormatting.DARK_GRAY))
|
||||
pTooltipComponents.add(TranslatableComponent("otm.gui.essence_capsule2").withStyle(ChatFormatting.DARK_GRAY))
|
||||
|
||||
if (!digital) {
|
||||
pTooltipComponents.add(TranslatableComponent("otm.gui.essence_capsule3").withStyle(ChatFormatting.DARK_GRAY))
|
||||
} else if (runIfClient(false) { minecraft.player?.matteryPlayer?.isAndroid ?: false }) {
|
||||
pTooltipComponents.add(TranslatableComponent("otm.gui.essence_capsule.digital").withStyle(ChatFormatting.DARK_GRAY))
|
||||
}
|
||||
|
||||
if (runIfClient(false) { minecraft.window.isShiftDown }) {
|
||||
pTooltipComponents.add(TranslatableComponent("otm.gui.experience", experienceStored(pStack)).withStyle(ChatFormatting.GRAY))
|
||||
} else {
|
||||
@ -28,6 +41,49 @@ class EssenceCapsuleItem : Item(Properties().stacksTo(1).rarity(Rarity.UNCOMMON)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getUseAnimation(itemStack: ItemStack): UseAnim {
|
||||
return if (digital) UseAnim.BOW else UseAnim.BRUSH
|
||||
}
|
||||
|
||||
override fun getUseDuration(itemStack: ItemStack): Int {
|
||||
return if (digital) 20 else 30
|
||||
}
|
||||
|
||||
override fun use(level: Level, player: Player, hand: InteractionHand): InteractionResultHolder<ItemStack> {
|
||||
if (!digital || player.matteryPlayer?.isAndroid == true) {
|
||||
player.startUsingItem(hand)
|
||||
|
||||
return InteractionResultHolder.consume(player.getItemInHand(hand))
|
||||
}
|
||||
|
||||
return super.use(level, player, hand)
|
||||
}
|
||||
|
||||
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
|
||||
if (digital) {
|
||||
val mattery = player.matteryPlayer ?: return super.finishUsingItem(itemStack, level, player)
|
||||
if (!mattery.isAndroid) return super.finishUsingItem(itemStack, level, player)
|
||||
|
||||
if (player is ServerPlayer) {
|
||||
player.giveExperiencePoints(exp.toInt())
|
||||
}
|
||||
} else {
|
||||
if (level is ServerLevel) {
|
||||
level.levelEvent(2002, player.blockPosition(), PotionUtils.getColor(Potions.WATER))
|
||||
ExperienceOrb.award(level, player.position(), (exp * (.5 + level.random.nextFloat() * .25)).toInt())
|
||||
}
|
||||
}
|
||||
|
||||
if (!level.isClientSide && !player.abilities.instabuild) {
|
||||
itemStack.shrink(1)
|
||||
}
|
||||
|
||||
return itemStack
|
||||
}
|
||||
|
||||
fun make(experience: Long): ItemStack {
|
||||
return ItemStack(this, 1).also {
|
||||
setExperience(it, experience)
|
||||
|
@ -230,8 +230,8 @@ object MItems {
|
||||
val TRITANIUM_BARS: BlockItem by registry.register(MNames.TRITANIUM_BARS) { BlockItem(MBlocks.TRITANIUM_BARS, DEFAULT_PROPERTIES) }
|
||||
|
||||
val ESSENCE_SERVO: EssenceServoItem by registry.register("essence_servo") { EssenceServoItem() }
|
||||
val ESSENCE_CAPSULE: EssenceCapsuleItem by registry.register("essence_capsule") { EssenceCapsuleItem() }
|
||||
val ESSENCE_DRIVE: EssenceCapsuleItem by registry.register("essence_drive") { EssenceCapsuleItem() }
|
||||
val ESSENCE_CAPSULE: EssenceCapsuleItem by registry.register("essence_capsule") { EssenceCapsuleItem(false) }
|
||||
val ESSENCE_DRIVE: EssenceCapsuleItem by registry.register("essence_drive") { EssenceCapsuleItem(true) }
|
||||
|
||||
val FLUID_CAPSULE: FluidCapsuleItem by registry.register("fluid_capsule") { FluidCapsuleItem(ItemsConfig::FLUID_CAPSULE_CAPACITY) }
|
||||
val FLUID_TANK: FluidTankItem by registry.register(MNames.FLUID_TANK) { FluidTankItem(MBlocks.FLUID_TANK, Item.Properties().stacksTo(1), ItemsConfig::FLUID_TANK_CAPACITY) }
|
||||
|
Loading…
Reference in New Issue
Block a user