Exopack ender chest access upgrade
This commit is contained in:
parent
912e361693
commit
ed84905627
@ -11,6 +11,7 @@ import ru.dbotthepony.mc.otm.datagen.modLocation
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackBatterySlotTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackGainedCraftingTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackGainedEnderAccessTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackGainedSmeltingTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackObtainedTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackSlotsExpandedTrigger
|
||||
@ -78,6 +79,20 @@ fun addExopackAdvancements(serializer: Consumer<Advancement>, existingFileHelper
|
||||
.addCriterion("smelting", ExopackGainedSmeltingTrigger.instance)
|
||||
.save(serializer, modLocation("exopack/smelting"), existingFileHelper)
|
||||
|
||||
AdvancementBuilder()
|
||||
.parent(obtained)
|
||||
.display(
|
||||
itemStack = ItemStack(Items.ENDER_CHEST),
|
||||
title = translation.add("ender_access", "Ender-ious Access") {
|
||||
russian("Эендер-иумый Доступ")
|
||||
},
|
||||
description = translation.add("ender_access.desc", "Gain direct access to your Ender Chest out of your Exopack") {
|
||||
russian("Получите прямой доступ к содержимому вашего сундука края прямо из Экзопака")
|
||||
},
|
||||
)
|
||||
.addCriterion("ender_access", ExopackGainedEnderAccessTrigger.instance)
|
||||
.save(serializer, modLocation("ender_access/smelting"), existingFileHelper)
|
||||
|
||||
var size = AdvancementBuilder()
|
||||
.parent(obtained)
|
||||
.display(
|
||||
|
@ -77,6 +77,7 @@ fun addItemModels(provider: MatteryItemModelProvider) {
|
||||
provider.generated(MItems.ExopackUpgrades.INVENTORY_UPGRADE_CREATIVE)
|
||||
provider.generated(MItems.ExopackUpgrades.CRAFTING_UPGRADE)
|
||||
provider.generated(MItems.ExopackUpgrades.SMELTING_UPGRADE)
|
||||
provider.generated(MItems.ExopackUpgrades.ENDER_UPGRADE)
|
||||
|
||||
provider.component(MItems.TRITANIUM_DUST)
|
||||
provider.component(MItems.TRITANIUM_INGOT)
|
||||
|
@ -160,6 +160,7 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
gui("exopack_upgrades.slots_upgrade", "Using this will permanently grant %s slots in your Exopack inventory.")
|
||||
gui("exopack_upgrades.crafting_upgrade", "Using this will permanently grant 3x3 crafting grid in your Exopack inventory.")
|
||||
gui("exopack_upgrades.smelting_upgrade", "Using this will permanently grant smelter in your Exopack inventory.")
|
||||
gui("exopack_upgrades.ender_access_upgrade", "Using this will permanently grant Ender Chest access in your Exopack inventory.")
|
||||
|
||||
gui("crude_battery.replace_in_world", "Simplistic nature of this battery allows to replace your energy source in the field without using Android Station.")
|
||||
gui("crude_battery.replace_in_world_warning", "This operation is very unstable and can cause extreme damage to your systems!")
|
||||
@ -171,6 +172,7 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
misc("exopack_upgrades.slots_upgraded", "Your Exopack has permanently gained %s slots")
|
||||
misc("exopack_upgrades.crafting_upgraded", "Your Exopack has permanently gained 3x3 crafting grid")
|
||||
misc("exopack_upgrades.smelting_installed", "Your Exopack has permanently gained smelting module")
|
||||
misc("exopack_upgrades.ender_access_installed", "Your Exopack has permanently gained access to Ender Chest contents")
|
||||
|
||||
misc("exopack.granted1", "As you keep pressing on the fingerprint reader, probe disappears.")
|
||||
misc("exopack.granted2", "After a moment, you are getting pierced into back multiple times...")
|
||||
@ -495,12 +497,13 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_CREATIVE, "Creative Exopack Inventory Upgrade")
|
||||
add(MItems.ExopackUpgrades.CRAFTING_UPGRADE, "Exopack Crafting Upgrade")
|
||||
add(MItems.ExopackUpgrades.SMELTING_UPGRADE, "Exopack Smelting Module")
|
||||
add(MItems.ExopackUpgrades.ENDER_UPGRADE, "Exopack Ender Access Module")
|
||||
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_WITHER, "Superdense Packing Upgrade")
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_WITHER, "description", "Utilizes similar principle that exhibit Nether Stars")
|
||||
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON, "Ender Link Pocket Dimension Upgrade")
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON, "description", "Allows to store items in portable pocket dimension")
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON, "description", "Allows to store items in portable pocket dimension. Also grants access to Ender Chest contents.")
|
||||
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL, "Indescribable Exopack Inventory Upgrade")
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL, "description", "They normally generate in dungeons with appropriate NBT tag attached")
|
||||
|
@ -165,9 +165,10 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
gui("exopack_upgrades.no_exopack", "Данный пазл технологии кажется для вас бесполезным... Или..?!")
|
||||
|
||||
gui("exopack_upgrades.already_activated", "Улучшение уже активно!")
|
||||
gui("exopack_upgrades.slots_upgrade", "Активируя данное улучшение даст %s слотов в вашем экзопаке.")
|
||||
gui("exopack_upgrades.crafting_upgrade", "Активация данного улучшения даст 3x3 сетку создания в вашем экзопаке.")
|
||||
gui("exopack_upgrades.smelting_upgrade", "Активация данного улучшения даст плавильню в вашем экзопаке.")
|
||||
gui("exopack_upgrades.slots_upgrade", "Активируя данное улучшение даст %s слотов в вашем Экзопаке.")
|
||||
gui("exopack_upgrades.crafting_upgrade", "Активация данного улучшения даст 3x3 сетку создания в вашем Экзопаке.")
|
||||
gui("exopack_upgrades.smelting_upgrade", "Активация данного улучшения даст плавильню в вашем Экзопаке.")
|
||||
gui("exopack_upgrades.ender_access_upgrade", "Активация данного улучшения даст доступ к сундуку края в вашем Экзопаке.")
|
||||
|
||||
gui("crude_battery.replace_in_world", "Простота устройства данного аккумулятора позволяет вам заменить .")
|
||||
gui("crude_battery.replace_in_world_warning", "Данная операция крайне рискованная и может нанести огромный урон вашим системам!")
|
||||
@ -176,9 +177,10 @@ private fun misc(provider: MatteryLanguageProvider) {
|
||||
|
||||
misc("battery.single_use", "Единоразовая батарейка, не может быть перезаряжена.")
|
||||
|
||||
misc("exopack_upgrades.slots_upgraded", "Ваш экзопак был расширен на %s слотов")
|
||||
misc("exopack_upgrades.crafting_upgraded", "Ваш экзопак получил 3x3 сетку создания")
|
||||
misc("exopack_upgrades.smelting_installed", "Ваш экзопак получил плавильню")
|
||||
misc("exopack_upgrades.slots_upgraded", "Ваш Экзопак был расширен на %s слотов")
|
||||
misc("exopack_upgrades.crafting_upgraded", "Ваш Экзопак получил 3x3 сетку создания")
|
||||
misc("exopack_upgrades.smelting_installed", "Ваш Экзопак получил плавильню")
|
||||
misc("exopack_upgrades.ender_access_installed", "Ваш Экзопак получил доступ к содержимому сундука края")
|
||||
|
||||
misc("exopack.granted1", "После некоторого времени нажатия на сканер отпечатка, маяк исчезает.")
|
||||
misc("exopack.granted2", "Через мгновение, вашу спину пронзают множество раз...")
|
||||
@ -498,12 +500,13 @@ private fun items(provider: MatteryLanguageProvider) {
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_CREATIVE, "Творческое обновление инвентаря экзопака")
|
||||
add(MItems.ExopackUpgrades.CRAFTING_UPGRADE, "Обновление сетки крафта экзопака")
|
||||
add(MItems.ExopackUpgrades.SMELTING_UPGRADE, "Модуль плавильни экзопака")
|
||||
add(MItems.ExopackUpgrades.ENDER_UPGRADE, "Модуль доступа к сундуку края экзопака")
|
||||
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_WITHER, "Обновление сверхмассивной упаковки")
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_WITHER, "description", "Использует те же принципы, которыми обладают звёзды незера")
|
||||
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON, "Обновление соединения края экзопака")
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON, "description", "Позволяет хранить предметы в карманном измерении")
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON, "description", "Позволяет хранить предметы в карманном измерении. А так же даёт доступ к содержимому сундука края.")
|
||||
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL, "Неописуемое обновление инвентаря экзопака")
|
||||
add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL, "description", "В нормальных условиях, они появляются в сундуках")
|
||||
|
@ -324,6 +324,13 @@ fun addCraftingTableRecipes(consumer: Consumer<FinishedRecipe>) {
|
||||
.row(MItemTags.TRITANIUM_PLATES, Items.FURNACE, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
// апгрейд на эндер сундук
|
||||
MatteryRecipe(MItems.ExopackUpgrades.ENDER_UPGRADE, category = RecipeCategory.TOOLS)
|
||||
.row(MItemTags.ADVANCED_CIRCUIT, MItems.ELECTROMAGNET, MItemTags.ADVANCED_CIRCUIT)
|
||||
.row(MItems.ELECTROMAGNET, Items.ENDER_CHEST, MItems.ELECTROMAGNET)
|
||||
.row(MItemTags.TRITANIUM_PLATES, MItems.ELECTROMAGNET, MItemTags.TRITANIUM_PLATES)
|
||||
.build(consumer)
|
||||
|
||||
// генератор коблы
|
||||
MatteryRecipe(MItems.COBBLESTONE_GENERATOR, category = machinesCategory)
|
||||
.row(MItemTags.HARDENED_GLASS_COLORLESS, MItems.TRITANIUM_PICKAXE, MItemTags.HARDENED_GLASS_COLORLESS)
|
||||
|
@ -5,13 +5,11 @@ import com.mojang.blaze3d.vertex.PoseStack
|
||||
import it.unimi.dsi.fastutil.ints.IntAVLTreeSet
|
||||
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.model.PlayerModel
|
||||
import net.minecraft.client.player.AbstractClientPlayer
|
||||
import net.minecraft.commands.Commands
|
||||
import net.minecraft.commands.arguments.EntityArgument
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.core.particles.ParticleTypes
|
||||
import net.minecraft.nbt.ByteTag
|
||||
import net.minecraft.nbt.CompoundTag
|
||||
import net.minecraft.nbt.IntTag
|
||||
@ -91,11 +89,7 @@ import ru.dbotthepony.mc.otm.core.collect.UUIDIntModifiersMap
|
||||
import ru.dbotthepony.mc.otm.core.collect.filter
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
import ru.dbotthepony.mc.otm.core.math.component1
|
||||
import ru.dbotthepony.mc.otm.core.math.component2
|
||||
import ru.dbotthepony.mc.otm.core.math.component3
|
||||
import ru.dbotthepony.mc.otm.core.math.minus
|
||||
import ru.dbotthepony.mc.otm.core.math.toRadians
|
||||
import ru.dbotthepony.mc.otm.core.nbt.getByteList
|
||||
import ru.dbotthepony.mc.otm.core.nbt.getCompoundList
|
||||
import ru.dbotthepony.mc.otm.core.nbt.getIntList
|
||||
@ -114,6 +108,7 @@ import ru.dbotthepony.mc.otm.network.SmokeParticlesPacket.Companion.makeSmoke
|
||||
import ru.dbotthepony.mc.otm.network.synchronizer.FieldSynchronizer
|
||||
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||
import ru.dbotthepony.mc.otm.triggers.AndroidResearchTrigger
|
||||
@ -123,14 +118,13 @@ import ru.dbotthepony.mc.otm.triggers.BecomeAndroidSleepTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.BecomeAndroidTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.BecomeHumaneTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackGainedCraftingTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackGainedEnderAccessTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackGainedSmeltingTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackObtainedTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackSlotsExpandedTrigger
|
||||
import java.util.*
|
||||
import java.util.stream.Stream
|
||||
import kotlin.collections.ArrayDeque
|
||||
import kotlin.math.cos
|
||||
import kotlin.math.sin
|
||||
import kotlin.reflect.KMutableProperty1
|
||||
|
||||
private fun Player.dropContainer(container: Container, spill: Boolean = true, setThrower: Boolean = false) {
|
||||
@ -236,7 +230,7 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
*/
|
||||
val tickList = TickList()
|
||||
|
||||
private val exoPackSlotModifierMap: MutableMap<UUID, Int> by synchronizer.Map(
|
||||
private val exopackSlotModifierMap: MutableMap<UUID, Int> by synchronizer.Map(
|
||||
keyCodec = UUIDValueCodec,
|
||||
valueCodec = IntValueCodec,
|
||||
backingMap = HashMap(),
|
||||
@ -256,7 +250,7 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
} else {
|
||||
exopackContainer = PlayerMatteryContainer(it)
|
||||
}
|
||||
}, backingMap = this.exoPackSlotModifierMap)
|
||||
}, backingMap = this.exopackSlotModifierMap)
|
||||
|
||||
val regularSlotFilters = immutableList(Inventory.INVENTORY_SIZE) {
|
||||
synchronizer.Field(null, ItemValueCodec.nullable)
|
||||
@ -322,6 +316,17 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
}
|
||||
}).property
|
||||
|
||||
var isExopackEnderAccessInstalled by publicSynchronizer.bool(setter = setter@{ value, access, _ ->
|
||||
if (value != access.readBoolean()) {
|
||||
access.write(value)
|
||||
_exoPackMenu = null
|
||||
|
||||
if (value && ply is ServerPlayer) {
|
||||
ExopackGainedEnderAccessTrigger.trigger(ply)
|
||||
}
|
||||
}
|
||||
}).property
|
||||
|
||||
private var _exoPackMenu: ExopackInventoryMenu? = null
|
||||
set(value) {
|
||||
if (field == ply.containerMenu) { ply.closeContainer() }
|
||||
@ -511,6 +516,7 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
savetables.bool(::hasExopack, "hasExoSuit")
|
||||
savetables.bool(::isExopackVisible, "displayExoSuit")
|
||||
savetables.bool(::isExopackCraftingUpgraded, "isExoSuitCraftingUpgraded")
|
||||
savetables.bool(::isExopackEnderAccessInstalled, "isExopackEnderAccessUpgraded")
|
||||
savetables.int(::nextDischargeHurt)
|
||||
savetables.int(::nextHealTick)
|
||||
|
||||
@ -902,6 +908,10 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
override fun deserializeNBT(tag: CompoundTag) {
|
||||
savetables.deserializeNBT(tag)
|
||||
|
||||
if (MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON.uuid(ItemStack.EMPTY) in exopackSlotModifierMap) {
|
||||
isExopackEnderAccessInstalled = true
|
||||
}
|
||||
|
||||
if (ply is ServerPlayer && hasExopack)
|
||||
ExopackSlotsExpandedTrigger.trigger(ply, 0, exopackContainer.containerSize)
|
||||
|
||||
@ -1473,6 +1483,7 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
|
||||
enum class UpgradeType(val prop: KMutableProperty1<MatteryPlayerCapability, Boolean>) {
|
||||
CRAFTING(MatteryPlayerCapability::isExopackCraftingUpgraded),
|
||||
ENDER_ACCESS(MatteryPlayerCapability::isExopackEnderAccessInstalled),
|
||||
SMELTING(MatteryPlayerCapability::isExopackSmeltingInstalled);
|
||||
}
|
||||
|
||||
|
@ -147,24 +147,28 @@ class ExopackInventoryScreen(menu: ExopackInventoryMenu) : MatteryScreen<Exopack
|
||||
width = craftingCanvas.width - resultPanel.width - craftingSlotsCanvas.width,
|
||||
height = topLine.height, centerSprite = true)
|
||||
|
||||
if (menu.capability.isExopackSmeltingInstalled) {
|
||||
if (menu.capability.isExopackSmeltingInstalled || menu.capability.isExopackEnderAccessInstalled) {
|
||||
val craftingTab = frame.Tab()
|
||||
val furnaceTab = frame.Tab()
|
||||
|
||||
craftingTab.activeIcon = ItemStackIcon(ItemStack(Items.CRAFTING_TABLE))
|
||||
craftingTab.inactiveIcon = craftingTab.activeIcon
|
||||
furnaceTab.activeIcon = ItemStackIcon(ItemStack(Items.FURNACE))
|
||||
furnaceTab.inactiveIcon = furnaceTab.activeIcon
|
||||
|
||||
craftingTab.onOpen = Runnable { craftingCanvas.visible = true }
|
||||
craftingTab.onClose = Runnable { craftingCanvas.visible = false }
|
||||
}
|
||||
|
||||
if (menu.capability.isExopackSmeltingInstalled) {
|
||||
val tab = frame.Tab()
|
||||
|
||||
tab.activeIcon = ItemStackIcon(ItemStack(Items.FURNACE))
|
||||
tab.inactiveIcon = tab.activeIcon
|
||||
|
||||
val furnaceCanvas = EditablePanel(this, topLine, width = 90f)
|
||||
furnaceCanvas.dock = Dock.LEFT
|
||||
furnaceCanvas.visible = false
|
||||
|
||||
furnaceTab.onOpen = Runnable { furnaceCanvas.visible = true; menu.furnaceMenuOpenState.accept(true) }
|
||||
furnaceTab.onClose = Runnable { furnaceCanvas.visible = false; menu.furnaceMenuOpenState.accept(false) }
|
||||
tab.onOpen = Runnable { furnaceCanvas.visible = true; menu.furnaceMenuOpenState.accept(true) }
|
||||
tab.onClose = Runnable { furnaceCanvas.visible = false; menu.furnaceMenuOpenState.accept(false) }
|
||||
|
||||
for (i in menu.capability.smelters.indices) {
|
||||
val row = EditablePanel(this, furnaceCanvas, height = AbstractSlotPanel.SIZE)
|
||||
@ -191,7 +195,47 @@ class ExopackInventoryScreen(menu: ExopackInventoryMenu) : MatteryScreen<Exopack
|
||||
}
|
||||
|
||||
if (menu.furnaceMenuOpenState.get()) {
|
||||
furnaceTab.onClick(InputConstants.MOUSE_BUTTON_LEFT)
|
||||
tab.activate()
|
||||
}
|
||||
}
|
||||
|
||||
if (menu.capability.isExopackEnderAccessInstalled) {
|
||||
val tab = frame.Tab()
|
||||
|
||||
tab.activeIcon = ItemStackIcon(ItemStack(Items.ENDER_CHEST))
|
||||
tab.inactiveIcon = tab.activeIcon
|
||||
|
||||
val enderCanvas = EditablePanel(this, topLine, height = AbstractSlotPanel.SIZE * 3f, width = AbstractSlotPanel.SIZE * 9f)
|
||||
enderCanvas.dock = Dock.LEFT
|
||||
enderCanvas.visible = false
|
||||
enderCanvas.dockTop = 8f
|
||||
enderCanvas.dockLeft = 8f
|
||||
|
||||
tab.onOpen = Runnable {
|
||||
enderCanvas.visible = true
|
||||
equipment.visible = false
|
||||
menu.enderChestOpenState.accept(true)
|
||||
}
|
||||
|
||||
tab.onClose = Runnable {
|
||||
enderCanvas.visible = false
|
||||
equipment.visible = true
|
||||
menu.enderChestOpenState.accept(false)
|
||||
}
|
||||
|
||||
for (row in 0 .. 2) {
|
||||
val rowPanel = EditablePanel(this, enderCanvas, height = AbstractSlotPanel.SIZE)
|
||||
rowPanel.dock = Dock.TOP
|
||||
|
||||
for (column in 0 .. 8) {
|
||||
SlotPanel(this, rowPanel, menu.enderChestSlots[row * 9 + column]).also {
|
||||
it.dock = Dock.LEFT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (menu.enderChestOpenState.get()) {
|
||||
tab.activate()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,6 +34,7 @@ open class FramePanel<out S : Screen>(
|
||||
var inactiveIcon: IGUIRenderable? = null,
|
||||
) : AbstractButtonPanel<S>(this@FramePanel.screen, this@FramePanel, 0f, 0f, 26f, 28f) {
|
||||
var isActive = tabs.isEmpty()
|
||||
protected set
|
||||
|
||||
init {
|
||||
tabs.add(this)
|
||||
@ -117,7 +118,7 @@ open class FramePanel<out S : Screen>(
|
||||
onClose?.run()
|
||||
}
|
||||
|
||||
override fun onClick(mouseButton: Int) {
|
||||
fun activate() {
|
||||
if (!isActive) {
|
||||
for (tab in tabs) {
|
||||
if (tab !== this) {
|
||||
@ -133,6 +134,10 @@ open class FramePanel<out S : Screen>(
|
||||
}
|
||||
}
|
||||
|
||||
override fun onClick(mouseButton: Int) {
|
||||
activate()
|
||||
}
|
||||
|
||||
override fun onRemoved() {
|
||||
super.onRemoved()
|
||||
tabs.remove(this)
|
||||
|
@ -20,6 +20,7 @@ import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.isExplosion
|
||||
import ru.dbotthepony.mc.otm.core.isFire
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.runIfClient
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackSlotsExpandedTrigger
|
||||
import java.util.UUID
|
||||
@ -108,6 +109,10 @@ abstract class AbstractExopackSlotUpgradeItem(properties: Properties = defaultPr
|
||||
|
||||
ExopackSlotsExpandedTrigger.trigger(player, slotCount, matteryPlayer.exopackContainer.containerSize)
|
||||
player.displayClientMessage(TranslatableComponent("otm.exopack_upgrades.slots_upgraded", slotCount).withStyle(ChatFormatting.DARK_GREEN), false)
|
||||
|
||||
if (this === MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON) {
|
||||
MItems.ExopackUpgrades.ENDER_UPGRADE.finishUsingItem(ItemStack(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON), level, player)
|
||||
}
|
||||
}
|
||||
|
||||
return itemStack
|
||||
|
@ -115,6 +115,21 @@ class ExopackInventoryMenu(val capability: MatteryPlayerCapability) : MatteryMen
|
||||
addStorageSlot(furnaceOutputs, condition = furnaceMenuOpenState)
|
||||
}
|
||||
|
||||
val enderChestSlots: List<MatterySlot>
|
||||
val enderChestOpenState = InstantBooleanInput(this)
|
||||
|
||||
init {
|
||||
if (capability.isExopackEnderAccessInstalled) {
|
||||
enderChestSlots = makeSlots(ply.enderChestInventory) { a, b ->
|
||||
MatterySlot(a, b).also {
|
||||
addStorageSlot(it, condition = enderChestOpenState)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
enderChestSlots = listOf()
|
||||
}
|
||||
}
|
||||
|
||||
private var isRemoved = false
|
||||
|
||||
override fun slotsChanged(container: Container) {
|
||||
|
@ -188,6 +188,7 @@ private fun addMainCreativeTabItems(consumer: CreativeModeTab.Output) {
|
||||
accept(MItems.ExopackUpgrades.INVENTORY_UPGRADE_CREATIVE)
|
||||
accept(MItems.ExopackUpgrades.CRAFTING_UPGRADE)
|
||||
accept(MItems.ExopackUpgrades.SMELTING_UPGRADE)
|
||||
accept(MItems.ExopackUpgrades.ENDER_UPGRADE)
|
||||
|
||||
accept(MItems.ExopackUpgrades.INVENTORY_UPGRADE_BIG)
|
||||
accept(MItems.ExopackUpgrades.INVENTORY_UPGRADE_HUGE)
|
||||
|
@ -512,21 +512,22 @@ object MItems {
|
||||
val EXOPACK_PROBE: Item by registry.register(MNames.EXOPACK_PROBE, ::ExopackProbeItem)
|
||||
|
||||
object ExopackUpgrades {
|
||||
val INVENTORY_UPGRADE_CREATIVE: Item by registry.register("exosuit_inventory_upgrade_creative") { ExopackSlotUpgradeItem(null, 27, Rarity.EPIC) }
|
||||
val CRAFTING_UPGRADE: Item by registry.register("exosuit_crafting_upgrade") { ExopackUpgradeItem(MatteryPlayerCapability.UpgradeType.CRAFTING, "crafting_upgrade", "crafting_upgraded") }
|
||||
val SMELTING_UPGRADE: Item by registry.register("exopack_smelting_upgrade") { ExopackUpgradeItem(MatteryPlayerCapability.UpgradeType.SMELTING, "smelting_upgrade", "smelting_installed") }
|
||||
val INVENTORY_UPGRADE_CREATIVE: ExopackSlotUpgradeItem by registry.register("exosuit_inventory_upgrade_creative") { ExopackSlotUpgradeItem(null, 27, Rarity.EPIC) }
|
||||
val CRAFTING_UPGRADE: ExopackUpgradeItem by registry.register("exosuit_crafting_upgrade") { ExopackUpgradeItem(MatteryPlayerCapability.UpgradeType.CRAFTING, "crafting_upgrade", "crafting_upgraded") }
|
||||
val SMELTING_UPGRADE: ExopackUpgradeItem by registry.register("exopack_smelting_upgrade") { ExopackUpgradeItem(MatteryPlayerCapability.UpgradeType.SMELTING, "smelting_upgrade", "smelting_installed") }
|
||||
val ENDER_UPGRADE: ExopackUpgradeItem by registry.register("exopack_ender_upgrade") { ExopackUpgradeItem(MatteryPlayerCapability.UpgradeType.ENDER_ACCESS, "ender_access_upgrade", "ender_access_installed") }
|
||||
|
||||
val INVENTORY_UPGRADES = SupplierList(8) {
|
||||
registry.register("exosuit_inventory_upgrade_$it") { ExopackSlotUpgradeItem(18, Rarity.COMMON) }::get
|
||||
}
|
||||
|
||||
val INVENTORY_UPGRADE_PROCEDURAL: Item by registry.register("exosuit_inventory_upgrade_procedural") { ProceduralExopackSlotUpgradeItem() }
|
||||
val INVENTORY_UPGRADE_PROCEDURAL: ProceduralExopackSlotUpgradeItem by registry.register("exosuit_inventory_upgrade_procedural") { ProceduralExopackSlotUpgradeItem() }
|
||||
|
||||
val INVENTORY_UPGRADE_BIG: Item by registry.register("exosuit_inventory_upgrade_big") { ExopackSlotUpgradeItem(60, Rarity.RARE) }
|
||||
val INVENTORY_UPGRADE_HUGE: Item by registry.register("exosuit_inventory_upgrade_huge") { ExopackSlotUpgradeItem(135, Rarity.RARE) }
|
||||
val INVENTORY_UPGRADE_BIG: ExopackSlotUpgradeItem by registry.register("exosuit_inventory_upgrade_big") { ExopackSlotUpgradeItem(60, Rarity.RARE) }
|
||||
val INVENTORY_UPGRADE_HUGE: ExopackSlotUpgradeItem by registry.register("exosuit_inventory_upgrade_huge") { ExopackSlotUpgradeItem(135, Rarity.RARE) }
|
||||
|
||||
val INVENTORY_UPGRADE_WITHER: Item by registry.register("exosuit_inventory_upgrade_wither") { ExopackSlotUpgradeItem(180, Rarity.RARE, hasDescription = true) }
|
||||
val INVENTORY_UPGRADE_ENDER_DRAGON: Item by registry.register("exosuit_inventory_upgrade_ender_dragon") { ExopackSlotUpgradeItem(180, Rarity.EPIC, hasDescription = true) }
|
||||
val INVENTORY_UPGRADE_WITHER: ExopackSlotUpgradeItem by registry.register("exosuit_inventory_upgrade_wither") { ExopackSlotUpgradeItem(180, Rarity.RARE, hasDescription = true) }
|
||||
val INVENTORY_UPGRADE_ENDER_DRAGON: ExopackSlotUpgradeItem by registry.register("exosuit_inventory_upgrade_ender_dragon") { ExopackSlotUpgradeItem(180, Rarity.EPIC, hasDescription = true) }
|
||||
}
|
||||
|
||||
init {
|
||||
|
@ -55,6 +55,7 @@ import ru.dbotthepony.mc.otm.triggers.BlackHoleTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.EnderTeleporterFallDeathTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackBatterySlotTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackGainedCraftingTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackGainedEnderAccessTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackGainedSmeltingTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackObtainedTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ExopackSlotsExpandedTrigger
|
||||
@ -303,6 +304,7 @@ object MRegistry {
|
||||
CriteriaTriggers.register(ExopackObtainedTrigger)
|
||||
CriteriaTriggers.register(ExopackGainedSmeltingTrigger)
|
||||
CriteriaTriggers.register(ExopackGainedCraftingTrigger)
|
||||
CriteriaTriggers.register(ExopackGainedEnderAccessTrigger)
|
||||
CriteriaTriggers.register(ExopackSlotsExpandedTrigger)
|
||||
CriteriaTriggers.register(ExopackBatterySlotTrigger)
|
||||
CriteriaTriggers.register(TakeItemOutOfReplicatorTrigger)
|
||||
|
@ -17,6 +17,7 @@ import ru.dbotthepony.mc.otm.core.toJsonStrict
|
||||
val ExopackObtainedTrigger = SingletonTrigger(ResourceLocation(OverdriveThatMatters.MOD_ID, "exopack_obtained"))
|
||||
val ExopackGainedCraftingTrigger = SingletonTrigger(ResourceLocation(OverdriveThatMatters.MOD_ID, "exopack_gained_crafting"))
|
||||
val ExopackGainedSmeltingTrigger = SingletonTrigger(ResourceLocation(OverdriveThatMatters.MOD_ID, "exopack_gained_smelting"))
|
||||
val ExopackGainedEnderAccessTrigger = SingletonTrigger(ResourceLocation(OverdriveThatMatters.MOD_ID, "exopack_gained_ender_access"))
|
||||
|
||||
val ExopackBatterySlotTrigger = ItemTrigger(ResourceLocation(OverdriveThatMatters.MOD_ID, "exopack_battery_slot"))
|
||||
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 273 B |
Loading…
Reference in New Issue
Block a user