aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/EntityWidget.kt10
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/FirmamentReiPlugin.kt31
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/HoveredItemStackProvider.kt19
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/NEUItemEntryRenderer.kt45
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/NEUItemEntrySerializer.kt6
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/REIRecipeLayouter.kt44
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/SBItemEntryDefinition.kt18
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/SkyblockItemIdFocusedStackProvider.kt9
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/GenericREIRecipeCategory.kt4
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBKatRecipe.kt67
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBMobDropRecipe.kt32
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBRecipe.kt4
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBReforgeRecipe.kt26
-rw-r--r--src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBShopRecipe.kt6
-rw-r--r--src/main/kotlin/features/items/recipes/ItemList.kt4
15 files changed, 177 insertions, 148 deletions
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/EntityWidget.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/EntityWidget.kt
index 1097654..cc55fb8 100644
--- a/src/compat/rei/java/moe/nea/firmament/compat/rei/EntityWidget.kt
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/EntityWidget.kt
@@ -5,9 +5,9 @@ import me.shedaniel.math.FloatingDimension
import me.shedaniel.math.Point
import me.shedaniel.math.Rectangle
import me.shedaniel.rei.api.client.gui.widgets.WidgetWithBounds
-import net.minecraft.client.gui.DrawContext
-import net.minecraft.client.gui.Element
-import net.minecraft.entity.LivingEntity
+import net.minecraft.client.gui.GuiGraphics
+import net.minecraft.client.gui.components.events.GuiEventListener
+import net.minecraft.world.entity.LivingEntity
import moe.nea.firmament.gui.entity.EntityRenderer
import moe.nea.firmament.util.ErrorUtil
@@ -17,13 +17,13 @@ class EntityWidget(
val point: Point,
val size: FloatingDimension = FloatingDimension(defaultSize)
) : WidgetWithBounds() {
- override fun children(): List<Element> {
+ override fun children(): List<GuiEventListener> {
return emptyList()
}
var hasErrored = false
- override fun render(context: DrawContext, mouseX: Int, mouseY: Int, delta: Float) {
+ override fun render(context: GuiGraphics, mouseX: Int, mouseY: Int, delta: Float) {
try {
if (!hasErrored) {
EntityRenderer.renderEntity(
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/FirmamentReiPlugin.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/FirmamentReiPlugin.kt
index 1c97738..ad0da89 100644
--- a/src/compat/rei/java/moe/nea/firmament/compat/rei/FirmamentReiPlugin.kt
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/FirmamentReiPlugin.kt
@@ -13,13 +13,14 @@ import me.shedaniel.rei.api.client.registry.transfer.TransferHandler
import me.shedaniel.rei.api.client.registry.transfer.TransferHandlerRegistry
import me.shedaniel.rei.api.common.entry.EntryStack
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes
-import net.minecraft.client.gui.screen.Screen
-import net.minecraft.client.gui.screen.ingame.GenericContainerScreen
-import net.minecraft.client.gui.screen.ingame.HandledScreen
-import net.minecraft.item.ItemStack
-import net.minecraft.text.Text
-import net.minecraft.util.ActionResult
-import net.minecraft.util.Identifier
+import net.minecraft.client.gui.screens.Screen
+import net.minecraft.client.gui.screens.inventory.ContainerScreen
+import net.minecraft.client.gui.screens.inventory.MenuAccess
+import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen
+import net.minecraft.world.item.ItemStack
+import net.minecraft.network.chat.Component
+import net.minecraft.world.InteractionResult
+import net.minecraft.resources.ResourceLocation
import moe.nea.firmament.compat.rei.recipes.GenericREIRecipeCategory
import moe.nea.firmament.compat.rei.recipes.SBKatRecipe
import moe.nea.firmament.compat.rei.recipes.SBMobDropRecipe
@@ -50,7 +51,7 @@ class FirmamentReiPlugin : REIClientPlugin {
return EntryStack.of(VanillaEntryTypes.ITEM, value.asImmutableItemStack())
}
- val SKYBLOCK_ITEM_TYPE_ID = Identifier.of("firmament", "skyblockitems")
+ val SKYBLOCK_ITEM_TYPE_ID = ResourceLocation.fromNamespaceAndPath("firmament", "skyblockitems")
}
@OptIn(ExpensiveItemCacheApi::class)
@@ -66,14 +67,14 @@ class FirmamentReiPlugin : REIClientPlugin {
?: error("Could not find neu item ${recipe.output.itemId} which is used in a recipe output")
val useSuperCraft = context.isStackedCrafting || RepoManager.TConfig.alwaysSuperCraft
if (neuItem.isVanilla && useSuperCraft) return@TransferHandler TransferHandler.Result.createFailed(
- Text.translatable(
+ Component.translatable(
"firmament.recipe.novanilla"
)
)
var shouldReturn = true
if (context.isActuallyCrafting && !useSuperCraft) {
- val craftingScreen = (screen as? GenericContainerScreen)
- ?.takeIf { it.title?.unformattedString == CraftingOverlay.CRAFTING_SCREEN_NAME }
+ val craftingScreen = (screen as? ContainerScreen)
+ ?.takeIf { it.title?.string == CraftingOverlay.CRAFTING_SCREEN_NAME }
if (craftingScreen == null) {
MC.sendCommand("craft")
shouldReturn = false
@@ -107,7 +108,7 @@ class FirmamentReiPlugin : REIClientPlugin {
}
override fun registerExclusionZones(zones: ExclusionZones) {
- zones.register(HandledScreen::class.java) { HandledScreenPushREIEvent.publish(HandledScreenPushREIEvent(it)).rectangles }
+ zones.register(AbstractContainerScreen::class.java) { HandledScreenPushREIEvent.publish(HandledScreenPushREIEvent(it)).rectangles }
zones.register(StorageOverlayScreen::class.java) { it.getBounds() }
}
@@ -143,7 +144,7 @@ class FirmamentReiPlugin : REIClientPlugin {
.forEach { (parent, children) ->
registry.group(
SkyblockId(parent).identifier,
- Text.literal(RepoManager.getNEUItem(SkyblockId(parent))?.displayName ?: parent),
+ Component.literal(RepoManager.getNEUItem(SkyblockId(parent))?.displayName ?: parent),
(children + parent).map { SBItemEntryDefinition.getEntry(SkyblockId(it)) })
}
}
@@ -154,8 +155,8 @@ class FirmamentReiPlugin : REIClientPlugin {
return screen == StorageOverlayScreen::class.java
}
- override fun <R : Screen?> shouldScreenBeOverlaid(screen: R): ActionResult {
- return ActionResult.SUCCESS
+ override fun <R : Screen?> shouldScreenBeOverlaid(screen: R): InteractionResult {
+ return InteractionResult.SUCCESS
}
})
registry.registerFocusedStack(SkyblockItemIdFocusedStackProvider)
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/HoveredItemStackProvider.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/HoveredItemStackProvider.kt
index b917c3e..a19355b 100644
--- a/src/compat/rei/java/moe/nea/firmament/compat/rei/HoveredItemStackProvider.kt
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/HoveredItemStackProvider.kt
@@ -5,17 +5,18 @@ import me.shedaniel.math.impl.PointHelper
import me.shedaniel.rei.api.client.REIRuntime
import me.shedaniel.rei.api.client.gui.widgets.Slot
import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry
-import net.minecraft.client.gui.Element
-import net.minecraft.client.gui.ParentElement
-import net.minecraft.client.gui.screen.ingame.HandledScreen
-import net.minecraft.item.ItemStack
+import net.minecraft.client.gui.components.events.GuiEventListener
+import net.minecraft.client.gui.components.events.ContainerEventHandler
+import net.minecraft.client.gui.screens.Screen
+import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen
+import net.minecraft.world.item.ItemStack
import moe.nea.firmament.util.HoveredItemStackProvider
import moe.nea.firmament.util.compatloader.CompatLoader
@AutoService(HoveredItemStackProvider::class)
@CompatLoader.RequireMod("roughlyenoughitems")
class ScreenRegistryHoveredItemStackProvider : HoveredItemStackProvider {
- override fun provideHoveredItemStack(screen: HandledScreen<*>): ItemStack? {
+ override fun provideHoveredItemStack(screen: Screen): ItemStack? {
val entryStack = ScreenRegistry.getInstance().getFocusedStack(screen, PointHelper.ofMouse())
?: return null
return entryStack.value as? ItemStack ?: entryStack.cheatsAs().value
@@ -25,14 +26,14 @@ class ScreenRegistryHoveredItemStackProvider : HoveredItemStackProvider {
@AutoService(HoveredItemStackProvider::class)
@CompatLoader.RequireMod("roughlyenoughitems")
class OverlayHoveredItemStackProvider : HoveredItemStackProvider {
- override fun provideHoveredItemStack(screen: HandledScreen<*>): ItemStack? {
- var baseElement: Element? = REIRuntime.getInstance().overlay.orElse(null)
+ override fun provideHoveredItemStack(screen: Screen): ItemStack? {
+ var baseElement: GuiEventListener? = REIRuntime.getInstance().overlay.orElse(null)
val mx = PointHelper.getMouseFloatingX()
val my = PointHelper.getMouseFloatingY()
while (true) {
if (baseElement is Slot) return baseElement.currentEntry.cheatsAs().value
- if (baseElement !is ParentElement) return null
- baseElement = baseElement.hoveredElement(mx, my).orElse(null)
+ if (baseElement !is ContainerEventHandler) return null
+ baseElement = baseElement.getChildAt(mx, my).orElse(null)
}
}
}
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/NEUItemEntryRenderer.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/NEUItemEntryRenderer.kt
index e273020..0e24f4e 100644
--- a/src/compat/rei/java/moe/nea/firmament/compat/rei/NEUItemEntryRenderer.kt
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/NEUItemEntryRenderer.kt
@@ -15,12 +15,12 @@ import me.shedaniel.rei.api.client.gui.widgets.Tooltip
import me.shedaniel.rei.api.client.gui.widgets.TooltipContext
import me.shedaniel.rei.api.common.entry.EntryStack
import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback
-import net.minecraft.client.MinecraftClient
-import net.minecraft.client.gui.DrawContext
-import net.minecraft.item.ItemStack
-import net.minecraft.item.Items
-import net.minecraft.item.tooltip.TooltipType
-import net.minecraft.text.Text
+import net.minecraft.client.Minecraft
+import net.minecraft.client.gui.GuiGraphics
+import net.minecraft.world.item.ItemStack
+import net.minecraft.world.item.Items
+import net.minecraft.world.item.TooltipFlag
+import net.minecraft.network.chat.Component
import moe.nea.firmament.events.ItemTooltipEvent
import moe.nea.firmament.repo.ExpensiveItemCacheApi
import moe.nea.firmament.repo.ItemCache
@@ -28,6 +28,7 @@ import moe.nea.firmament.repo.RepoManager
import moe.nea.firmament.repo.SBItemStack
import moe.nea.firmament.util.ErrorUtil
import moe.nea.firmament.util.FirmFormatters
+import moe.nea.firmament.util.MC
import moe.nea.firmament.util.darkGrey
import moe.nea.firmament.util.mc.displayNameAccordingToNbt
import moe.nea.firmament.util.mc.loreAccordingToNbt
@@ -38,7 +39,7 @@ object NEUItemEntryRenderer : EntryRenderer<SBItemStack> {
@OptIn(ExpensiveItemCacheApi::class)
override fun render(
entry: EntryStack<SBItemStack>,
- context: DrawContext,
+ context: GuiGraphics,
bounds: Rectangle,
mouseX: Int,
mouseY: Int,
@@ -52,22 +53,22 @@ object NEUItemEntryRenderer : EntryRenderer<SBItemStack> {
entry.value.asImmutableItemStack()
}
- context.matrices.pushMatrix()
- context.matrices.translate(bounds.centerX.toFloat(), bounds.centerY.toFloat(), )
- context.matrices.scale(bounds.width.toFloat() / 16F, bounds.height.toFloat() / 16F, )
- context.drawItemWithoutEntity(itemToRender, -8, -8)
- context.drawStackOverlay(
- minecraft.textRenderer, itemToRender, -8, -8,
+ context.pose().pushMatrix()
+ context.pose().translate(bounds.centerX.toFloat(), bounds.centerY.toFloat())
+ context.pose().scale(bounds.width.toFloat() / 16F, bounds.height.toFloat() / 16F)
+ context.renderItem(itemToRender, -8, -8)
+ context.renderItemDecorations(
+ MC.font, itemToRender, -8, -8,
if (entry.value.getStackSize() > 1000) FirmFormatters.shortFormat(
entry.value.getStackSize()
.toDouble()
)
else null
)
- context.matrices.popMatrix()
+ context.pose().popMatrix()
}
- val minecraft = MinecraftClient.getInstance()
+ val minecraft = Minecraft.getInstance()
var canUseVanillaTooltipEvents = true
@OptIn(ExpensiveItemCacheApi::class)
@@ -75,9 +76,9 @@ object NEUItemEntryRenderer : EntryRenderer<SBItemStack> {
if (!entry.value.isWarm() && !RepoManager.TConfig.perfectRenders.rendersPerfectText()) {
val neuItem = entry.value.neuItem
if (neuItem != null) {
- val lore = mutableListOf<Text>()
- lore.add(Text.literal(neuItem.displayName))
- neuItem.lore.mapTo(mutableListOf()) { Text.literal(it) }
+ val lore = mutableListOf<Component>()
+ lore.add(Component.literal(neuItem.displayName))
+ neuItem.lore.mapTo(mutableListOf()) { Component.literal(it) }
return Tooltip.create(lore)
}
}
@@ -89,7 +90,7 @@ object NEUItemEntryRenderer : EntryRenderer<SBItemStack> {
if (canUseVanillaTooltipEvents) {
try {
ItemTooltipCallback.EVENT.invoker().getTooltip(
- stack, tooltipContext.vanillaContext(), TooltipType.BASIC, lore
+ stack, tooltipContext.vanillaContext(), TooltipFlag.Default.NORMAL, lore
)
} catch (ex: Exception) {
canUseVanillaTooltipEvents = false
@@ -100,13 +101,13 @@ object NEUItemEntryRenderer : EntryRenderer<SBItemStack> {
ItemTooltipEvent(
stack,
tooltipContext.vanillaContext(),
- TooltipType.BASIC,
+ TooltipFlag.Default.NORMAL,
lore
)
)
}
if (entry.value.getStackSize() > 1000 && lore.isNotEmpty())
- lore.add(1, Text.literal("${entry.value.getStackSize()}x").darkGrey())
+ lore.add(1, Component.literal("${entry.value.getStackSize()}x").darkGrey())
// TODO: tags aren't sent as early now so some tooltip components that use tags will crash the game
// stack.getTooltip(
// Item.TooltipContext.create(
@@ -114,7 +115,7 @@ object NEUItemEntryRenderer : EntryRenderer<SBItemStack> {
// ?: MC.defaultRegistries
// ),
// MC.player,
-// TooltipType.BASIC
+// TooltipFlag.Default.NORMAL
// )
return Tooltip.create(lore)
}
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/NEUItemEntrySerializer.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/NEUItemEntrySerializer.kt
index 724d193..9f32472 100644
--- a/src/compat/rei/java/moe/nea/firmament/compat/rei/NEUItemEntrySerializer.kt
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/NEUItemEntrySerializer.kt
@@ -2,8 +2,8 @@ package moe.nea.firmament.compat.rei
import com.mojang.serialization.Codec
import me.shedaniel.rei.api.common.entry.EntrySerializer
-import net.minecraft.network.RegistryByteBuf
-import net.minecraft.network.codec.PacketCodec
+import net.minecraft.network.RegistryFriendlyByteBuf
+import net.minecraft.network.codec.StreamCodec
import moe.nea.firmament.repo.SBItemStack
object NEUItemEntrySerializer : EntrySerializer<SBItemStack> {
@@ -11,7 +11,7 @@ object NEUItemEntrySerializer : EntrySerializer<SBItemStack> {
return SBItemStack.CODEC
}
- override fun streamCodec(): PacketCodec<RegistryByteBuf, SBItemStack> {
+ override fun streamCodec(): StreamCodec<RegistryFriendlyByteBuf, SBItemStack> {
return SBItemStack.PACKET_CODEC.cast()
}
}
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/REIRecipeLayouter.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/REIRecipeLayouter.kt
index 8e39f28..54bc7f0 100644
--- a/src/compat/rei/java/moe/nea/firmament/compat/rei/REIRecipeLayouter.kt
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/REIRecipeLayouter.kt
@@ -2,11 +2,13 @@ package moe.nea.firmament.compat.rei
import io.github.notenoughupdates.moulconfig.gui.GuiComponent
import me.shedaniel.math.Dimension
+import me.shedaniel.math.FloatingDimension
import me.shedaniel.math.Point
import me.shedaniel.math.Rectangle
import me.shedaniel.rei.api.client.gui.widgets.Widget
import me.shedaniel.rei.api.client.gui.widgets.Widgets
-import net.minecraft.text.Text
+import net.minecraft.network.chat.Component
+import net.minecraft.world.entity.LivingEntity
import moe.nea.firmament.compat.rei.recipes.wrapWidget
import moe.nea.firmament.repo.SBItemStack
import moe.nea.firmament.repo.recipes.RecipeLayouter
@@ -15,15 +17,15 @@ class REIRecipeLayouter : RecipeLayouter {
val container: MutableList<Widget> = mutableListOf()
fun <T: Widget> add(t: T): T = t.also(container::add)
- override fun createItemSlot(
+ override fun createCyclingItemSlot(
x: Int,
y: Int,
- content: SBItemStack?,
+ content: List<SBItemStack>,
slotKind: RecipeLayouter.SlotKind
- ) {
+ ): RecipeLayouter.CyclingItemSlot {
val slot = Widgets.createSlot(Point(x, y))
- if (content != null)
- slot.entry(SBItemEntryDefinition.getEntry(content))
+ if (content.isNotEmpty())
+ slot.entries(content.map { SBItemEntryDefinition.getEntry(it) })
when (slotKind) {
RecipeLayouter.SlotKind.SMALL_INPUT -> slot.markInput()
RecipeLayouter.SlotKind.SMALL_OUTPUT -> slot.markOutput()
@@ -31,16 +33,30 @@ class REIRecipeLayouter : RecipeLayouter {
slot.markOutput().disableBackground()
add(Widgets.createResultSlotBackground(Point(x, y)))
}
+ RecipeLayouter.SlotKind.DISPLAY -> {
+ slot.disableBackground()
+ slot.disableHighlight()
+ }
}
add(slot)
+ return object : RecipeLayouter.CyclingItemSlot {
+ override fun current(): SBItemStack = content.firstOrNull() ?: SBItemStack.EMPTY
+ override fun update(newValue: SBItemStack) {}
+ override fun onUpdate(action: () -> Unit) {}
+ }
}
- override fun createTooltip(rectangle: Rectangle, label: Text) {
- add(Widgets.createTooltip(rectangle, label))
+ override fun createTooltip(rectangle: Rectangle, label: List<Component>) {
+ add(Widgets.createTooltip(rectangle, *label.toTypedArray()))
}
- override fun createLabel(x: Int, y: Int, text: Text) {
- add(Widgets.createLabel(Point(x, y), text))
+ override fun createLabel(x: Int, y: Int, text: Component): RecipeLayouter.Updater<Component> {
+ val label = add(Widgets.createLabel(Point(x, y), text))
+ return object : RecipeLayouter.Updater<Component> {
+ override fun update(newValue: Component) {
+ label.message = newValue
+ }
+ }
}
override fun createArrow(x: Int, y: Int) =
@@ -56,7 +72,11 @@ class REIRecipeLayouter : RecipeLayouter {
add(wrapWidget(Rectangle(Point(x, y), Dimension(w, h)), component))
}
- override fun createFire(ingredientsCenter: Point, animationTicks: Int) {
- add(Widgets.createBurningFire(ingredientsCenter).animationDurationTicks(animationTicks.toDouble()))
+ override fun createFire(point: Point, animationTicks: Int) {
+ add(Widgets.createBurningFire(point).animationDurationTicks(animationTicks.toDouble()))
+ }
+
+ override fun createEntity(rectangle: Rectangle, entity: LivingEntity) {
+ add(EntityWidget(entity, rectangle.location, FloatingDimension(rectangle.size)))
}
}
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/SBItemEntryDefinition.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/SBItemEntryDefinition.kt
index 1027ece..fde3e3d 100644
--- a/src/compat/rei/java/moe/nea/firmament/compat/rei/SBItemEntryDefinition.kt
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/SBItemEntryDefinition.kt
@@ -9,11 +9,11 @@ import me.shedaniel.rei.api.common.entry.comparison.ComparisonContext
import me.shedaniel.rei.api.common.entry.type.EntryDefinition
import me.shedaniel.rei.api.common.entry.type.EntryType
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes
-import net.minecraft.item.ItemConvertible
-import net.minecraft.item.ItemStack
-import net.minecraft.registry.tag.TagKey
-import net.minecraft.text.Text
-import net.minecraft.util.Identifier
+import net.minecraft.world.level.ItemLike
+import net.minecraft.world.item.ItemStack
+import net.minecraft.tags.TagKey
+import net.minecraft.network.chat.Component
+import net.minecraft.resources.ResourceLocation
import moe.nea.firmament.compat.rei.FirmamentReiPlugin.Companion.asItemEntry
import moe.nea.firmament.repo.ExpensiveItemCacheApi
import moe.nea.firmament.repo.RepoManager
@@ -44,12 +44,12 @@ object SBItemEntryDefinition : EntryDefinition<SBItemStack> {
}
@OptIn(ExpensiveItemCacheApi::class)
- override fun asFormattedText(entry: EntryStack<SBItemStack>, value: SBItemStack): Text {
+ override fun asFormattedText(entry: EntryStack<SBItemStack>, value: SBItemStack): Component {
val neuItem = entry.value.neuItem
return if (!RepoManager.TConfig.perfectRenders.rendersPerfectText() || entry.value.isWarm() || neuItem == null) {
VanillaEntryTypes.ITEM.definition.asFormattedText(entry.asItemEntry(), value.asImmutableItemStack())
} else {
- Text.literal(neuItem.displayName)
+ Component.literal(neuItem.displayName)
}
}
@@ -77,7 +77,7 @@ object SBItemEntryDefinition : EntryDefinition<SBItemStack> {
return value.getStackSize() == 0
}
- override fun getIdentifier(entry: EntryStack<SBItemStack>?, value: SBItemStack): Identifier {
+ override fun getIdentifier(entry: EntryStack<SBItemStack>?, value: SBItemStack): ResourceLocation {
return value.skyblockId.identifier
}
@@ -90,7 +90,7 @@ object SBItemEntryDefinition : EntryDefinition<SBItemStack> {
fun getEntry(ingredient: NEUIngredient): EntryStack<SBItemStack> =
getEntry(SkyblockId(ingredient.itemId), count = ingredient.amount.toInt())
- fun getPassthrough(item: ItemConvertible) = getEntry(SBItemStack.passthrough(ItemStack(item.asItem())))
+ fun getPassthrough(item: ItemLike) = getEntry(SBItemStack.passthrough(ItemStack(item.asItem())))
fun getEntry(stack: ItemStack): EntryStack<SBItemStack> =
getEntry(SBItemStack(stack))
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/SkyblockItemIdFocusedStackProvider.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/SkyblockItemIdFocusedStackProvider.kt
index 7e12fb6..1db0376 100644
--- a/src/compat/rei/java/moe/nea/firmament/compat/rei/SkyblockItemIdFocusedStackProvider.kt
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/SkyblockItemIdFocusedStackProvider.kt
@@ -6,15 +6,16 @@ import dev.architectury.event.CompoundEventResult
import me.shedaniel.math.Point
import me.shedaniel.rei.api.client.registry.screen.FocusedStackProvider
import me.shedaniel.rei.api.common.entry.EntryStack
-import net.minecraft.client.gui.screen.Screen
-import net.minecraft.client.gui.screen.ingame.HandledScreen
+import net.minecraft.client.gui.screens.Screen
+import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen
import moe.nea.firmament.mixins.accessor.AccessorHandledScreen
object SkyblockItemIdFocusedStackProvider : FocusedStackProvider {
override fun provide(screen: Screen?, mouse: Point?): CompoundEventResult<EntryStack<*>> {
- if (screen !is HandledScreen<*>) return CompoundEventResult.pass()
+ if (screen !is AbstractContainerScreen<*>) return CompoundEventResult.pass()
+ if (screen !is AccessorHandledScreen) return CompoundEventResult.pass()
val focusedSlot = screen.focusedSlot_Firmament ?: return CompoundEventResult.pass()
- val item = focusedSlot.stack ?: return CompoundEventResult.pass()
+ val item = focusedSlot.item ?: return CompoundEventResult.pass()
return CompoundEventResult.interruptTrue(SBItemEntryDefinition.getEntry(item))
}
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/GenericREIRecipeCategory.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/GenericREIRecipeCategory.kt
index 15cb818..aefb37d 100644
--- a/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/GenericREIRecipeCategory.kt
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/GenericREIRecipeCategory.kt
@@ -9,7 +9,7 @@ import me.shedaniel.rei.api.client.registry.display.DisplayCategory
import me.shedaniel.rei.api.client.registry.display.DisplayRegistry
import me.shedaniel.rei.api.common.category.CategoryIdentifier
import me.shedaniel.rei.api.common.util.EntryStacks
-import net.minecraft.text.Text
+import net.minecraft.network.chat.Component
import moe.nea.firmament.compat.rei.REIRecipeLayouter
import moe.nea.firmament.compat.rei.neuDisplayGeneratorWithItem
import moe.nea.firmament.repo.SBItemStack
@@ -36,7 +36,7 @@ class GenericREIRecipeCategory<T : NEURecipe>(
return renderer.displayHeight
}
- override fun getTitle(): Text? {
+ override fun getTitle(): Component? {
return renderer.title
}
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBKatRecipe.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBKatRecipe.kt
index 5de315c..2ce27a1 100644
--- a/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBKatRecipe.kt
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBKatRecipe.kt
@@ -18,11 +18,12 @@ import me.shedaniel.rei.api.client.gui.widgets.Widgets
import me.shedaniel.rei.api.client.registry.display.DisplayCategory
import me.shedaniel.rei.api.common.category.CategoryIdentifier
import kotlin.time.Duration.Companion.seconds
-import net.minecraft.client.gui.Click
-import net.minecraft.client.gui.DrawContext
-import net.minecraft.client.gui.Element
-import net.minecraft.item.Items
-import net.minecraft.text.Text
+import net.minecraft.client.gui.navigation.ScreenDirection
+import net.minecraft.client.gui.GuiGraphics
+import net.minecraft.client.gui.components.events.GuiEventListener
+import net.minecraft.client.input.MouseButtonEvent
+import net.minecraft.world.item.Items
+import net.minecraft.network.chat.Component
import moe.nea.firmament.Firmament
import moe.nea.firmament.compat.rei.SBItemEntryDefinition
import moe.nea.firmament.repo.PetData
@@ -38,7 +39,7 @@ class SBKatRecipe(override val neuRecipe: NEUKatUpgradeRecipe) : SBRecipe() {
override fun getCategoryIdentifier(): CategoryIdentifier<SBKatRecipe> =
CategoryIdentifier.of(Firmament.MOD_ID, "kat_recipe")
- override fun getTitle(): Text = Text.literal("Kat Pet Upgrade")
+ override fun getTitle(): Component = Component.literal("Kat Pet Upgrade")
override fun getDisplayHeight(): Int {
return 100
}
@@ -55,12 +56,12 @@ class SBKatRecipe(override val neuRecipe: NEUKatUpgradeRecipe) : SBRecipe() {
val inputLevelLabelCenter = Point(bounds.minX + 30 - 18 + 5 + 8, bounds.minY + 25)
val inputLevelLabel = Widgets.createLabel(
inputLevelLabelCenter,
- Text.literal("")
+ Component.literal("")
).centered()
val outputLevelLabelCenter = Point(bounds.maxX - 30 + 8, bounds.minY + 25)
val outputLevelLabel = Widgets.createLabel(
outputLevelLabelCenter,
- Text.literal("")
+ Component.literal("")
).centered()
val coinStack = SBItemStack(SkyblockId.COINS, recipe.coins.toInt())
levelValue.whenChanged { oldValue, newValue ->
@@ -71,14 +72,14 @@ class SBKatRecipe(override val neuRecipe: NEUKatUpgradeRecipe) : SBRecipe() {
val oldOutput = outputStack.getPetData() ?: return@whenChanged
val newOutput = PetData(oldOutput.rarity, oldOutput.petId, newInput.exp)
outputStack.setPetData(newOutput)
- inputLevelLabel.message = Text.literal(newInput.levelData.currentLevel.toString())
+ inputLevelLabel.message = Component.literal(newInput.levelData.currentLevel.toString())
inputLevelLabel.bounds.location = Point(
- inputLevelLabelCenter.x - MC.font.getWidth(inputLevelLabel.message) / 2,
+ inputLevelLabelCenter.x - MC.font.width(inputLevelLabel.message) / 2,
inputLevelLabelCenter.y
)
- outputLevelLabel.message = Text.literal(newOutput.levelData.currentLevel.toString())
+ outputLevelLabel.message = Component.literal(newOutput.levelData.currentLevel.toString())
outputLevelLabel.bounds.location = Point(
- outputLevelLabelCenter.x - MC.font.getWidth(outputLevelLabel.message) / 2,
+ outputLevelLabelCenter.x - MC.font.width(outputLevelLabel.message) / 2,
outputLevelLabelCenter.y
)
coinStack.setStackSize((recipe.coins * (1 - 0.3 * newValue / 100)).toInt())
@@ -99,7 +100,7 @@ class SBKatRecipe(override val neuRecipe: NEUKatUpgradeRecipe) : SBRecipe() {
add(
Widgets.withTooltip(
Widgets.createArrow(Point(bounds.centerX - arrowWidth / 2, bounds.minY + 40)),
- Text.literal("Upgrade time: " + FirmFormatters.formatTimespan(recipe.seconds.seconds))
+ Component.literal("Upgrade time: " + FirmFormatters.formatTimespan(recipe.seconds.seconds))
)
)
@@ -140,13 +141,13 @@ fun wrapWidget(bounds: Rectangle, component: GuiComponent): Widget {
return bounds
}
- override fun children(): List<Element> {
+ override fun children(): List<GuiEventListener> {
return listOf()
}
- override fun render(context: DrawContext, mouseX: Int, mouseY: Int, delta: Float) {
- context.matrices.pushMatrix()
- context.matrices.translate(bounds.minX.toFloat(), bounds.minY.toFloat())
+ override fun render(context: GuiGraphics, mouseX: Int, mouseY: Int, delta: Float) {
+ context.pose().pushMatrix()
+ context.pose().translate(bounds.minX.toFloat(), bounds.minY.toFloat())
component.render(
GuiImmediateContext(
MoulConfigRenderContext(context),
@@ -157,7 +158,7 @@ fun wrapWidget(bounds: Rectangle, component: GuiComponent): Widget {
mouseX.toFloat(), mouseY.toFloat()
)
)
- context.matrices.popMatrix()
+ context.pose().popMatrix()
}
override fun mouseMoved(mouseX: Double, mouseY: Double) {
@@ -176,50 +177,50 @@ fun wrapWidget(bounds: Rectangle, component: GuiComponent): Widget {
)
}
- override fun mouseClicked(click: Click, doubled: Boolean): Boolean {
- val mouseXInt = click.x.toInt()
- val mouseYInt = click.y.toInt()
+ override fun mouseClicked(event: MouseButtonEvent, isDoubleClick: Boolean): Boolean {
+ val mouseXInt = event.x.toInt()
+ val mouseYInt = event.y.toInt()
return component.mouseEvent(
- MouseEvent.Click(click.button(), true),
+ MouseEvent.Click(event.button(), true),
GuiImmediateContext(
IMinecraft.INSTANCE.provideTopLevelRenderContext(),
bounds.minX, bounds.minY,
bounds.width, bounds.height,
mouseXInt - bounds.minX, mouseYInt - bounds.minY,
mouseXInt, mouseYInt,
- click.x.toFloat(), click.y.toFloat()
+ event.x.toFloat(), event.y.toFloat()
)
)
}
- override fun mouseReleased(click: Click): Boolean {
- val mouseXInt = click.x.toInt()
- val mouseYInt = click.y.toInt()
+ override fun mouseReleased(event: MouseButtonEvent): Boolean {
+ val mouseXInt = event.x.toInt()
+ val mouseYInt = event.y.toInt()
return component.mouseEvent(
- MouseEvent.Click(click.button(), false),
+ MouseEvent.Click(event.button(), false),
GuiImmediateContext(
IMinecraft.INSTANCE.provideTopLevelRenderContext(),
bounds.minX, bounds.minY,
bounds.width, bounds.height,
mouseXInt - bounds.minX, mouseYInt - bounds.minY,
mouseXInt, mouseYInt,
- click.x.toFloat(), click.y.toFloat()
+ event.x.toFloat(), event.y.toFloat()
)
)
}
- override fun mouseDragged(click: Click, offsetX: Double, offsetY: Double): Boolean {
- val mouseXInt = click.x.toInt()
- val mouseYInt = click.y.toInt()
+ override fun mouseDragged(event: MouseButtonEvent, mouseX: Double, mouseY: Double): Boolean {
+ val mouseXInt = event.x.toInt()
+ val mouseYInt = event.y.toInt()
return component.mouseEvent(
- MouseEvent.Move(offsetX.toFloat(), offsetY.toFloat()),
+ MouseEvent.Move(0f, 0f),
GuiImmediateContext(
IMinecraft.INSTANCE.provideTopLevelRenderContext(),
bounds.minX, bounds.minY,
bounds.width, bounds.height,
mouseXInt - bounds.minX, mouseYInt - bounds.minY,
mouseXInt, mouseYInt,
- click.x.toFloat(), click.y.toFloat()
+ event.x.toFloat(), event.y.toFloat()
)
)
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBMobDropRecipe.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBMobDropRecipe.kt
index b595c23..927c199 100644
--- a/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBMobDropRecipe.kt
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBMobDropRecipe.kt
@@ -9,9 +9,9 @@ import me.shedaniel.rei.api.client.gui.widgets.Widgets
import me.shedaniel.rei.api.client.registry.display.DisplayCategory
import me.shedaniel.rei.api.common.category.CategoryIdentifier
import me.shedaniel.rei.api.common.util.EntryStacks
-import net.minecraft.item.Items
-import net.minecraft.text.Text
-import net.minecraft.util.Identifier
+import net.minecraft.world.item.Items
+import net.minecraft.network.chat.Component
+import net.minecraft.resources.ResourceLocation
import moe.nea.firmament.Firmament
import moe.nea.firmament.compat.rei.EntityWidget
import moe.nea.firmament.compat.rei.SBItemEntryDefinition
@@ -24,7 +24,7 @@ class SBMobDropRecipe(override val neuRecipe: NEUMobDropRecipe) : SBRecipe() {
override fun getCategoryIdentifier(): CategoryIdentifier<SBMobDropRecipe> =
CategoryIdentifier.of(Firmament.MOD_ID, "mob_drop_recipe")
- override fun getTitle(): Text = Text.literal("Mob Drops")
+ override fun getTitle(): Component = Component.literal("Mob Drops")
override fun getDisplayHeight(): Int {
return 100
}
@@ -35,23 +35,23 @@ class SBMobDropRecipe(override val neuRecipe: NEUMobDropRecipe) : SBRecipe() {
add(Widgets.createRecipeBase(bounds))
val source = display.neuRecipe.render
val entity = if (source.startsWith("@")) {
- EntityRenderer.constructEntity(Identifier.of(source.substring(1)))
+ EntityRenderer.constructEntity(ResourceLocation.parse(source.substring(1)))
} else {
EntityRenderer.applyModifiers(source, listOf())
}
val level = display.neuRecipe.level
val fullMobName =
- if (level > 0) Text.translatable("firmament.recipe.mobs.name", level, display.neuRecipe.name)
- else Text.translatable("firmament.recipe.mobs.name.nolevel", display.neuRecipe.name)
- val tt = mutableListOf<Text>()
+ if (level > 0) Component.translatable("firmament.recipe.mobs.name", level, display.neuRecipe.name)
+ else Component.translatable("firmament.recipe.mobs.name.nolevel", display.neuRecipe.name)
+ val tt = mutableListOf<Component>()
tt.add((fullMobName))
- tt.add(Text.literal(""))
+ tt.add(Component.literal(""))
if (display.neuRecipe.coins > 0) {
- tt.add(Text.stringifiedTranslatable("firmament.recipe.mobs.coins", display.neuRecipe.coins))
+ tt.add(Component.translatable("firmament.recipe.mobs.coins", display.neuRecipe.coins))
}
if (display.neuRecipe.combatExperience > 0) {
tt.add(
- Text.stringifiedTranslatable(
+ Component.translatable(
"firmament.recipe.mobs.combat",
display.neuRecipe.combatExperience
)
@@ -59,14 +59,14 @@ class SBMobDropRecipe(override val neuRecipe: NEUMobDropRecipe) : SBRecipe() {
}
if (display.neuRecipe.enchantingExperience > 0) {
tt.add(
- Text.stringifiedTranslatable(
+ Component.translatable(
"firmament.recipe.mobs.exp",
display.neuRecipe.enchantingExperience
)
)
}
if (display.neuRecipe.extra != null)
- display.neuRecipe.extra.mapTo(tt) { Text.literal(it) }
+ display.neuRecipe.extra.mapTo(tt) { Component.literal(it) }
if (tt.size == 2)
tt.removeAt(1)
add(
@@ -76,15 +76,15 @@ class SBMobDropRecipe(override val neuRecipe: NEUMobDropRecipe) : SBRecipe() {
)
)
add(
- Widgets.createLabel(Point(bounds.minX + 15, bounds.minY + 5), Text.literal(display.neuRecipe.name))
+ Widgets.createLabel(Point(bounds.minX + 15, bounds.minY + 5), Component.literal(display.neuRecipe.name))
.leftAligned()
)
var x = bounds.minX + 60
var y = bounds.minY + 20
for (drop in display.neuRecipe.drops) {
- val lore = drop.extra.mapTo(mutableListOf()) { Text.literal(it) }
+ val lore = drop.extra.mapTo(mutableListOf()) { Component.literal(it) }
if (drop.chance != null) {
- lore += listOf(Text.translatable("firmament.recipe.mobs.drops", drop.chance))
+ lore += listOf(Component.translatable("firmament.recipe.mobs.drops", drop.chance))
}
val item = SBItemEntryDefinition.getEntry(drop.dropItem)
.value.copy(extraLore = lore)
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBRecipe.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBRecipe.kt
index de7779f..d6ca3f6 100644
--- a/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBRecipe.kt
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBRecipe.kt
@@ -6,12 +6,12 @@ import java.util.Optional
import me.shedaniel.rei.api.common.display.Display
import me.shedaniel.rei.api.common.display.DisplaySerializer
import me.shedaniel.rei.api.common.entry.EntryIngredient
-import net.minecraft.util.Identifier
+import net.minecraft.resources.ResourceLocation
import moe.nea.firmament.compat.rei.SBItemEntryDefinition
import moe.nea.firmament.util.SkyblockId
abstract class SBRecipe : Display {
- override fun getDisplayLocation(): Optional<Identifier> {
+ override fun getDisplayLocation(): Optional<ResourceLocation> {
// In theory, we could return a location for the neuRecipe here. (Something along the lines of neurepo:items/item_id.json/0 for the 0th recipe in the items/item_id.json recipes array).
return Optional.empty()
}
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBReforgeRecipe.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBReforgeRecipe.kt
index cc05861..ca69782 100644
--- a/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBReforgeRecipe.kt
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBReforgeRecipe.kt
@@ -19,12 +19,12 @@ import me.shedaniel.rei.api.common.display.Display
import me.shedaniel.rei.api.common.display.DisplaySerializer
import me.shedaniel.rei.api.common.entry.EntryIngredient
import me.shedaniel.rei.api.common.entry.EntryStack
-import net.minecraft.entity.EntityType
-import net.minecraft.entity.SpawnReason
-import net.minecraft.registry.entry.RegistryEntry
-import net.minecraft.text.Text
-import net.minecraft.util.Identifier
-import net.minecraft.village.VillagerProfession
+import net.minecraft.world.entity.EntityType
+import net.minecraft.world.entity.EntitySpawnReason
+import net.minecraft.core.Holder
+import net.minecraft.network.chat.Component
+import net.minecraft.resources.ResourceLocation
+import net.minecraft.world.entity.npc.VillagerProfession
import moe.nea.firmament.Firmament
import moe.nea.firmament.compat.rei.EntityWidget
import moe.nea.firmament.compat.rei.SBItemEntryDefinition
@@ -60,7 +60,7 @@ class SBReforgeRecipe(
return catIdentifier
}
- override fun getTitle(): Text {
+ override fun getTitle(): Component {
return tr("firmament.recipecategory.reforge", "Reforge")
}
@@ -108,10 +108,10 @@ class SBReforgeRecipe(
Rarity.entries.mapNotNull { rarity ->
display.reforge.reforgeCosts?.get(rarity)?.let { rarity to it }
}.map { (rarity, cost) ->
- Text.literal("")
+ Component.literal("")
.append(rarity.text)
.append(": ")
- .append(Text.literal("${FirmFormatters.formatCommas(cost, 0)} Coins").gold())
+ .append(Component.literal("${FirmFormatters.formatCommas(cost, 0)} Coins").gold())
}
))
} else {
@@ -120,8 +120,8 @@ class SBReforgeRecipe(
FloatingDimension(EntityWidget.defaultSize.width * size, EntityWidget.defaultSize.height * size)
list.add(Widgets.withTooltip(
EntityWidget(
- EntityType.VILLAGER.create(EntityRenderer.fakeWorld, SpawnReason.COMMAND)
- ?.also { it.villagerData = it.villagerData.withProfession(MC.currentOrDefaultRegistries.getEntryOrThrow(VillagerProfession.WEAPONSMITH)) },
+ EntityType.VILLAGER.create(EntityRenderer.fakeWorld, EntitySpawnReason.COMMAND)
+ ?.also { it.villagerData = it.villagerData.withProfession(MC.currentOrDefaultRegistries, VillagerProfession.WEAPONSMITH) },
Point(bounds.minX + 10 + 24 + 8 - dimension.width / 2, bounds.centerY - dimension.height / 2),
dimension
),
@@ -207,8 +207,8 @@ class SBReforgeRecipe(
return catIdentifier
}
- override fun getDisplayLocation(): Optional<Identifier> {
- return Optional.empty()
+ override fun getDisplayLocation(): Optional<ResourceLocation> {
+ return Optional.empty<ResourceLocation>()
}
override fun getSerializer(): DisplaySerializer<out Display>? {
diff --git a/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBShopRecipe.kt b/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBShopRecipe.kt
index a252802..87d8bdf 100644
--- a/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBShopRecipe.kt
+++ b/src/compat/rei/java/moe/nea/firmament/compat/rei/recipes/SBShopRecipe.kt
@@ -9,8 +9,8 @@ import me.shedaniel.rei.api.client.gui.widgets.Widgets
import me.shedaniel.rei.api.client.registry.display.DisplayCategory
import me.shedaniel.rei.api.common.category.CategoryIdentifier
import me.shedaniel.rei.api.common.entry.EntryIngredient
-import net.minecraft.item.Items
-import net.minecraft.text.Text
+import net.minecraft.world.item.Items
+import net.minecraft.network.chat.Component
import moe.nea.firmament.Firmament
import moe.nea.firmament.compat.rei.SBItemEntryDefinition
import moe.nea.firmament.util.skyblockId
@@ -26,7 +26,7 @@ class SBShopRecipe(override val neuRecipe: NEUNpcShopRecipe) : SBRecipe() {
val catIdentifier = CategoryIdentifier.of<SBShopRecipe>(Firmament.MOD_ID, "npc_shopping")
override fun getCategoryIdentifier(): CategoryIdentifier<SBShopRecipe> = catIdentifier
- override fun getTitle(): Text = Text.literal("SkyBlock NPC Shopping")
+ override fun getTitle(): Component = Component.literal("SkyBlock NPC Shopping")
override fun getIcon(): Renderer = SBItemEntryDefinition.getPassthrough(Items.EMERALD)
override fun setupDisplay(display: SBShopRecipe, bounds: Rectangle): List<Widget> {
diff --git a/src/main/kotlin/features/items/recipes/ItemList.kt b/src/main/kotlin/features/items/recipes/ItemList.kt
index 9517a0b..340e1c3 100644
--- a/src/main/kotlin/features/items/recipes/ItemList.kt
+++ b/src/main/kotlin/features/items/recipes/ItemList.kt
@@ -206,8 +206,11 @@ object ItemList {
return lastRenderPositions.firstOrNull { it.first.containsPoint(mouseX, mouseY) }
}
+ val isItemListEnabled get() = false
+
@Subscribe
fun onClick(event: HandledScreenClickEvent) {
+ if(!isItemListEnabled)return
val pe = popupElement
val me = MouseButtonEvent(
event.mouseX, event.mouseY,
@@ -235,6 +238,7 @@ object ItemList {
@Subscribe
fun onRender(event: HandledScreenForegroundEvent) {
+ if(!isItemListEnabled) return
lastHoveredItemStack = null
lastRenderPositions = listOf()
val exclusions = collectExclusions(event.screen)