Fix the pages not working (I think)
This commit is contained in:
@@ -7,7 +7,7 @@ dependencies {
|
|||||||
compileOnly 'net.kyori:adventure-api:4.10.1'
|
compileOnly 'net.kyori:adventure-api:4.10.1'
|
||||||
compileOnly 'net.essentialsx:EssentialsX:2.19.0'
|
compileOnly 'net.essentialsx:EssentialsX:2.19.0'
|
||||||
compileOnly 'com.github.ben-manes.caffeine:caffeine:3.0.6'
|
compileOnly 'com.github.ben-manes.caffeine:caffeine:3.0.6'
|
||||||
compileOnly 'com.ticxo.modelengine:api:R3.1.4'
|
compileOnly 'com.ticxo.modelengine:api:R3.1.5'
|
||||||
}
|
}
|
||||||
|
|
||||||
build.dependsOn publishToMavenLocal
|
build.dependsOn publishToMavenLocal
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ package com.willfp.ecopets.pets
|
|||||||
import com.willfp.eco.core.config.updating.ConfigUpdater
|
import com.willfp.eco.core.config.updating.ConfigUpdater
|
||||||
import com.willfp.eco.core.gui.menu
|
import com.willfp.eco.core.gui.menu
|
||||||
import com.willfp.eco.core.gui.menu.Menu
|
import com.willfp.eco.core.gui.menu.Menu
|
||||||
|
import com.willfp.eco.core.gui.menu.MenuLayer
|
||||||
|
import com.willfp.eco.core.gui.page.Page
|
||||||
|
import com.willfp.eco.core.gui.page.PageChanger
|
||||||
import com.willfp.eco.core.gui.slot
|
import com.willfp.eco.core.gui.slot
|
||||||
import com.willfp.eco.core.gui.slot.ConfigSlot
|
import com.willfp.eco.core.gui.slot.ConfigSlot
|
||||||
import com.willfp.eco.core.gui.slot.FillerMask
|
import com.willfp.eco.core.gui.slot.FillerMask
|
||||||
@@ -55,14 +58,11 @@ object PetsGUI {
|
|||||||
val petInfoItemBuilder = { player: Player, _: Menu ->
|
val petInfoItemBuilder = { player: Player, _: Menu ->
|
||||||
val pet = player.activePet
|
val pet = player.activePet
|
||||||
|
|
||||||
if (pet == null) {
|
pet?.getPetInfoIcon(player)
|
||||||
ItemStackBuilder(Items.lookup(plugin.configYml.getString("gui.pet-info.no-active.item")))
|
?: ItemStackBuilder(Items.lookup(plugin.configYml.getString("gui.pet-info.no-active.item")))
|
||||||
.setDisplayName(plugin.configYml.getFormattedString("gui.pet-info.no-active.name"))
|
.setDisplayName(plugin.configYml.getFormattedString("gui.pet-info.no-active.name"))
|
||||||
.addLoreLines(plugin.configYml.getFormattedStrings("gui.pet-info.no-active.lore"))
|
.addLoreLines(plugin.configYml.getFormattedStrings("gui.pet-info.no-active.lore"))
|
||||||
.build()
|
.build()
|
||||||
} else {
|
|
||||||
pet.getPetInfoIcon(player)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val petIconBuilder = { player: Player, menu: Menu, index: Int ->
|
val petIconBuilder = { player: Player, menu: Menu, index: Int ->
|
||||||
@@ -79,7 +79,7 @@ object PetsGUI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return menu(plugin.configYml.getInt("gui.rows")) {
|
return menu(plugin.configYml.getInt("gui.rows")) {
|
||||||
setTitle(plugin.langYml.getString("menu.title"))
|
title = plugin.langYml.getString("menu.title")
|
||||||
|
|
||||||
setMask(
|
setMask(
|
||||||
FillerMask(
|
FillerMask(
|
||||||
@@ -88,29 +88,22 @@ object PetsGUI {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
setSlot(
|
onRender { player, menu ->
|
||||||
plugin.configYml.getInt("gui.pet-info.row"),
|
if (menu.getPage(player) > menu.getMaxPage(player)) {
|
||||||
plugin.configYml.getInt("gui.pet-info.column"),
|
menu.setState(player, Page.PAGE_KEY, 1)
|
||||||
slot(petInfoItemBuilder) {
|
|
||||||
onLeftClick { event, _, _ ->
|
|
||||||
val player = event.whoClicked as Player
|
|
||||||
player.activePet?.levelGUI?.open(player)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
|
||||||
|
|
||||||
for ((index, pair) in petAreaSlots.withIndex()) {
|
for ((index, pair) in petAreaSlots.withIndex()) {
|
||||||
val (row, column) = pair
|
val (row, column) = pair
|
||||||
|
setSlot(row, column, slot({ player, menu -> petIconBuilder(player, menu, index) }) {
|
||||||
setSlot(row, column, slot({ p, m -> petIconBuilder(p, m, index) }) {
|
setUpdater { player, menu, _ ->
|
||||||
setUpdater { p, m, _ ->
|
petIconBuilder(player, menu, index)
|
||||||
petIconBuilder(p, m, index)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onLeftClick { event, _, _ ->
|
onLeftClick { event, _, _ ->
|
||||||
val player = event.whoClicked as Player
|
val player = event.whoClicked as Player
|
||||||
|
val page = menu.getPage(player)
|
||||||
val page = getPage(menu, player)
|
|
||||||
|
|
||||||
val unlockedPets = Pets.values()
|
val unlockedPets = Pets.values()
|
||||||
.sortedByDescending { player.getPetLevel(it) }
|
.sortedByDescending { player.getPetLevel(it) }
|
||||||
@@ -135,46 +128,38 @@ object PetsGUI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setSlot(
|
setSlot(
|
||||||
plugin.configYml.getInt("gui.prev-page.location.row"),
|
plugin.configYml.getInt("gui.pet-info.row"),
|
||||||
plugin.configYml.getInt("gui.prev-page.location.column"),
|
plugin.configYml.getInt("gui.pet-info.column"),
|
||||||
slot(
|
slot(petInfoItemBuilder) {
|
||||||
ItemStackBuilder(Items.lookup(plugin.configYml.getString("gui.prev-page.item")))
|
onLeftClick { event, _, _ ->
|
||||||
.setDisplayName(plugin.configYml.getString("gui.prev-page.name"))
|
|
||||||
.build()
|
|
||||||
) {
|
|
||||||
onLeftClick { event, _, menu ->
|
|
||||||
val player = event.whoClicked as Player
|
val player = event.whoClicked as Player
|
||||||
val page = getPage(menu, player)
|
player.activePet?.levelGUI?.open(player)
|
||||||
|
|
||||||
val newPage = max(1, page - 1)
|
|
||||||
|
|
||||||
menu.setState(player, pageKey, newPage)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
setSlot(
|
addComponent(
|
||||||
|
MenuLayer.TOP,
|
||||||
|
plugin.configYml.getInt("gui.prev-page.location.row"),
|
||||||
|
plugin.configYml.getInt("gui.prev-page.location.column"),
|
||||||
|
PageChanger(
|
||||||
|
ItemStackBuilder(Items.lookup(plugin.configYml.getString("gui.prev-page.item")))
|
||||||
|
.setDisplayName(plugin.configYml.getString("gui.prev-page.name"))
|
||||||
|
.build(),
|
||||||
|
PageChanger.Direction.BACKWARDS
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
addComponent(
|
||||||
|
MenuLayer.TOP,
|
||||||
plugin.configYml.getInt("gui.next-page.location.row"),
|
plugin.configYml.getInt("gui.next-page.location.row"),
|
||||||
plugin.configYml.getInt("gui.next-page.location.column"),
|
plugin.configYml.getInt("gui.next-page.location.column"),
|
||||||
slot(
|
PageChanger(
|
||||||
ItemStackBuilder(Items.lookup(plugin.configYml.getString("gui.next-page.item")))
|
ItemStackBuilder(Items.lookup(plugin.configYml.getString("gui.next-page.item")))
|
||||||
.setDisplayName(plugin.configYml.getString("gui.next-page.name"))
|
.setDisplayName(plugin.configYml.getString("gui.next-page.name"))
|
||||||
.build()
|
.build(),
|
||||||
) {
|
PageChanger.Direction.FORWARDS
|
||||||
onLeftClick { event, _, menu ->
|
)
|
||||||
val player = event.whoClicked as Player
|
|
||||||
|
|
||||||
val pages = ceil(Pets.values()
|
|
||||||
.filter { player.getPetLevel(it) > 0 }
|
|
||||||
.size.toDouble() / petAreaSlots.size).toInt()
|
|
||||||
|
|
||||||
val page = getPage(menu, player)
|
|
||||||
|
|
||||||
val newPage = min(pages, page + 1)
|
|
||||||
|
|
||||||
menu.setState(player, pageKey, newPage)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
setSlot(plugin.configYml.getInt("gui.close.location.row"),
|
setSlot(plugin.configYml.getInt("gui.close.location.row"),
|
||||||
@@ -209,6 +194,21 @@ object PetsGUI {
|
|||||||
ConfigSlot(config)
|
ConfigSlot(config)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
maxPages { player ->
|
||||||
|
val unlockedPets = Pets.values()
|
||||||
|
.sortedByDescending { player.getPetLevel(it) }
|
||||||
|
.filter { player.getPetLevel(it) > 0 }
|
||||||
|
|
||||||
|
val perPage = petAreaSlots.size
|
||||||
|
|
||||||
|
val pages = if (unlockedPets.isEmpty()) {
|
||||||
|
0
|
||||||
|
} else {
|
||||||
|
ceil((unlockedPets.size.toDouble() / perPage)).toInt()
|
||||||
|
}
|
||||||
|
pages
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user