Skip to content

Commit

Permalink
fix crash in config screen, when no archive exists (#17)
Browse files Browse the repository at this point in the history
* fix crash in config screen, when no archive exists

* bump version to 2.0.1
  • Loading branch information
btwonion authored Sep 23, 2024
1 parent 547dabc commit cb5d19b
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 11 deletions.
4 changes: 2 additions & 2 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
- update build logic to make updating versions easier
- add neoforge support!
- allow more versions of Minecraft in mod metadata
- fix crash when no archive exists in config screen - (https://github.com/btwonion/autodrop/issues/16)[#17] by btwonion and Jonathan
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ mod.id=autodrop
mod.name=autodrop
mod.description=Simply drops specific items after pickup
mod.beta=0
mod.major-version=2.0.0
mod.major-version=2.0.1
mod.mixins=autodrop.mixins.json
mod.supported-loaders=fabric,quilt,neoforge
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import net.minecraft.world.item.Items
import kotlin.math.max
import dev.nyon.autodrop.minecraft as internalMinecraft

class ArchiveItemsWidget(var archive: Archive, private val parent: ArchiveScreen) :
class ArchiveItemsWidget(var archive: Archive?, private val parent: ArchiveScreen) :
ObjectSelectionList<ArchiveItemEntry>(
internalMinecraft, 0, 0, OUTER_PAD, internalMinecraft.font.lineHeight * 3 + 4 * INNER_PAD
) {
Expand Down Expand Up @@ -48,9 +48,10 @@ class ArchiveItemsWidget(var archive: Archive, private val parent: ArchiveScreen
fun refreshEntries() {
scrollAmount = 0.0
clearEntries()
archive.entries.map {
if (archive == null) return
archive!!.entries.map {
ArchiveItemEntry(it, parent) {
archive.entries.remove(it)
archive!!.entries.remove(it)
refreshEntries()
}
}.forEach(::addEntry)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const val INNER_PAD = 5
const val OUTER_PAD = 10

class ArchiveScreen(private val parent: Screen?) : Screen(screenComponent("title")) {
var selected: Archive = config.archives.first()
var selected: Archive? = config.archives.firstOrNull()

private val archivesWidget = ArchivesWidget(this).also {
it.refreshEntries()
Expand All @@ -35,27 +35,37 @@ class ArchiveScreen(private val parent: Screen?) : Screen(screenComponent("title
}.build()

private val setIgnoredSlotsButton = Button.builder(screenComponent("ignored")) {
internalMinecraft.setScreen(IgnoredSlotsScreen(selected, this@ArchiveScreen))
internalMinecraft.setScreen(IgnoredSlotsScreen(selected ?: return@builder, this@ArchiveScreen))
}.build()

private val createArchiveButton = Button.builder(screenComponent("create")) {
internalMinecraft.setScreen(CreateArchiveScreen(this@ArchiveScreen) {
archivesWidget.refreshEntries()
select(it)
setIgnoredSlotsButton.active = true
addIdentifierButton.active = true
deleteArchiveButton.active = true
})
}.build()

private val deleteArchiveButton = Button.builder(screenComponent("delete").withStyle(ChatFormatting.DARK_RED)) {
config.archives.remove(selected)
selected = config.archives.first()
selected = config.archives.firstOrNull()

if (selected == null) {
setIgnoredSlotsButton.active = false
addIdentifierButton.active = false
it.active = true
}

archivesWidget.refreshEntries()
archiveItemsWidget.refreshEntries()
}.build()

private val addIdentifierButton = Button.builder(screenComponent("identifier")) {
val newIdentifier = ItemIdentifier(null, emptyStoredComponents, 1)

selected.entries.add(newIdentifier)
selected?.entries?.add(newIdentifier) ?: return@builder
internalMinecraft.setScreen(
ModifyIdentifierScreen(
this@ArchiveScreen, newIdentifier
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ class ArchivesWidgetEntry(private val archive: Archive, private val archiveScree
isSelected: Boolean,
delta: Float
) {
if (archiveScreen.selected.name == archive.name) guiGraphics.fill(
if ((archiveScreen.selected ?: return).name == archive.name) guiGraphics.fill(
x - 3, y - 2, x + width - 2, y + height + 2, 0xFF404040.toInt()
)

Expand Down

0 comments on commit cb5d19b

Please sign in to comment.