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:
YuRaNnNzZZ 2023-10-23 05:51:07 +03:00
parent 294a402447
commit 74f8e316b7
Signed by: YuRaNnNzZZ
GPG Key ID: 5F71738C85A6006D
4 changed files with 67 additions and 7 deletions

View File

@ -857,6 +857,8 @@ private fun gui(provider: MatteryLanguageProvider) {
gui("essence_capsule", "(Almost) Everything you ever knew is within") gui("essence_capsule", "(Almost) Everything you ever knew is within")
gui("essence_capsule2", "This item can be recycled at Essence Servo") 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.filtered", "This slot is filtered for automation")
gui("slot_filter.forbidden", "This slot is forbidden for automation mechanisms") gui("slot_filter.forbidden", "This slot is forbidden for automation mechanisms")

View File

@ -856,6 +856,8 @@ private fun gui(provider: MatteryLanguageProvider) {
gui("essence_capsule", "(Почти) Всё, что вы знали, хранится внутри") gui("essence_capsule", "(Почти) Всё, что вы знали, хранится внутри")
gui("essence_capsule2", "Данный предмет может быть переработан внутри хранилища эссенции") gui("essence_capsule2", "Данный предмет может быть переработан внутри хранилища эссенции")
gui("essence_capsule3", "Используйте, чтобы высвободить большую часть хранящихся внутри знаний")
gui("essence_capsule.digital", "Используйте, чтобы вернуть ваши воспоминания")
gui("slot_filter.filtered", "Данный слот отфильтрован для автоматизации") gui("slot_filter.filtered", "Данный слот отфильтрован для автоматизации")
gui("slot_filter.forbidden", "Данный слот запрещён для взаимодействия средствами автоматизации") gui("slot_filter.forbidden", "Данный слот запрещён для взаимодействия средствами автоматизации")

View File

@ -2,11 +2,18 @@ package ru.dbotthepony.mc.otm.item
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.world.item.Item import net.minecraft.server.level.ServerLevel
import net.minecraft.world.item.ItemStack import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.item.Rarity import net.minecraft.world.InteractionHand
import net.minecraft.world.item.TooltipFlag 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 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.isShiftDown
import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.client.minecraft
import ru.dbotthepony.mc.otm.core.TranslatableComponent 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.core.util.getLevelFromXp
import ru.dbotthepony.mc.otm.runIfClient 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) { override fun appendHoverText(pStack: ItemStack, pLevel: Level?, pTooltipComponents: MutableList<Component>, pIsAdvanced: TooltipFlag) {
super.appendHoverText(pStack, pLevel, pTooltipComponents, pIsAdvanced) super.appendHoverText(pStack, pLevel, pTooltipComponents, pIsAdvanced)
pTooltipComponents.add(TranslatableComponent("otm.gui.essence_capsule").withStyle(ChatFormatting.DARK_GRAY)) pTooltipComponents.add(TranslatableComponent("otm.gui.essence_capsule").withStyle(ChatFormatting.DARK_GRAY))
pTooltipComponents.add(TranslatableComponent("otm.gui.essence_capsule2").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 }) { if (runIfClient(false) { minecraft.window.isShiftDown }) {
pTooltipComponents.add(TranslatableComponent("otm.gui.experience", experienceStored(pStack)).withStyle(ChatFormatting.GRAY)) pTooltipComponents.add(TranslatableComponent("otm.gui.experience", experienceStored(pStack)).withStyle(ChatFormatting.GRAY))
} else { } 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 { fun make(experience: Long): ItemStack {
return ItemStack(this, 1).also { return ItemStack(this, 1).also {
setExperience(it, experience) setExperience(it, experience)

View File

@ -230,8 +230,8 @@ object MItems {
val TRITANIUM_BARS: BlockItem by registry.register(MNames.TRITANIUM_BARS) { BlockItem(MBlocks.TRITANIUM_BARS, DEFAULT_PROPERTIES) } 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_SERVO: EssenceServoItem by registry.register("essence_servo") { EssenceServoItem() }
val ESSENCE_CAPSULE: EssenceCapsuleItem by registry.register("essence_capsule") { EssenceCapsuleItem() } val ESSENCE_CAPSULE: EssenceCapsuleItem by registry.register("essence_capsule") { EssenceCapsuleItem(false) }
val ESSENCE_DRIVE: EssenceCapsuleItem by registry.register("essence_drive") { EssenceCapsuleItem() } 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_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) } val FLUID_TANK: FluidTankItem by registry.register(MNames.FLUID_TANK) { FluidTankItem(MBlocks.FLUID_TANK, Item.Properties().stacksTo(1), ItemsConfig::FLUID_TANK_CAPACITY) }