Skip to content

Commit

Permalink
Bug fixed for various details #major
Browse files Browse the repository at this point in the history
  • Loading branch information
devinfritz committed May 28, 2024
1 parent 5b0e750 commit 4a55261
Show file tree
Hide file tree
Showing 32 changed files with 179 additions and 222 deletions.
13 changes: 7 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,15 @@ FROM openjdk:20-slim as serverBuilder

WORKDIR /app

COPY entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh

ADD https://api.papermc.io/v2/projects/paper/versions/1.20.4/builds/496/downloads/paper-1.20.4-496.jar server/paper.jar
RUN echo 'eula=true' > server/eula.txt

COPY --from=build /app/build/libs/KIA-*-all.jar server/plugins/app.jar

EXPOSE 22565
VOLUME /server
COPY --from=build /app/build/libs/KIA-*-all.jar /app/tmp/app.jar

ENTRYPOINT ["/app/entrypoint.sh"]

WORKDIR /app/server
CMD ["java", "-jar", "paper.jar"]
EXPOSE 22565
EXPOSE 5005
4 changes: 2 additions & 2 deletions Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ tasks:
- ./gradlew build
run:
cmds:
- docker compose up --build
- docker compose up --build -d
restart:
cmds:
- docker compose down
- docker compose up --build
- docker compose up --build -d
3 changes: 1 addition & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ plugins {
}

group = 'de.staticred.kia'
version = '1.1.9'
version = '0.1.9'

repositories {
mavenCentral()
Expand Down Expand Up @@ -45,7 +45,6 @@ subprojects {
dependencies {
compileOnly "io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT"
shadow "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
implementation "de.tr7zw:item-nbt-api:2.12.2"
}

java {
Expand Down
6 changes: 5 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,9 @@ services:
dockerfile: "./Dockerfile"
ports:
- "25565:25565"
- "5005:5005"
volumes:
- /server/
- kia-server:/app/server
volumes:
kia-server:
external: true
6 changes: 6 additions & 0 deletions entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash

mkdir -p /app/server/plugins
cp /app/tmp/app.jar /app/server/plugins/kia.jar
cd /app/server
exec java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 paper.jar
4 changes: 0 additions & 4 deletions src/main/kotlin/de/staticred/kia/KIA.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package de.staticred.kia

import de.staticred.kia.events.InventoryClickListener
import de.staticred.kia.events.InventoryDragItemListener
import de.staticred.kia.events.InventoryMoveItemListener
import de.staticred.kia.events.InventoryOpenCloseListener
import de.staticred.kia.example.InventoryExample
import org.bukkit.Bukkit
Expand Down Expand Up @@ -37,9 +36,6 @@ class KIA: JavaPlugin() {
private fun hookIntoEvents() {
server.pluginManager.registerEvents(InventoryClickListener(), this)
server.pluginManager.registerEvents(InventoryOpenCloseListener(), this)
server.pluginManager.registerEvents(InventoryMoveItemListener(), this)
server.pluginManager.registerEvents(InventoryDragItemListener(), this)
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,10 @@ import de.staticred.kia.inventory.item.DraggingMode
import de.staticred.kia.inventory.item.ItemManager
import de.staticred.kia.inventory.item.KItem
import de.staticred.kia.inventory.item.KItemImpl
import de.tr7zw.changeme.nbtapi.NBT
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.inventory.InventoryClickEvent
import java.util.*

/**
* Util class to listen to the bukkit inventory click event
Expand All @@ -28,7 +26,7 @@ class InventoryClickListener: Listener {
if (holder !is KInventoryHolder) {
return
}

val inventoryID = holder.getUUID()

if (!InventoryManager.isInventory(inventoryID)) {
Expand All @@ -46,14 +44,16 @@ class InventoryClickListener: Listener {
val kItem = ItemManager.getItem(uuid)
val clicker = event.whoClicked as Player
// at this point the item is valid
val slot = event.slot

if (kItem.getDraggingMode() == DraggingMode.NONE) {
if (kItem.draggingMode == DraggingMode.NONE) {
event.isCancelled = true
}

if (kInventory.isAnimating()) {
if (kInventory.itemsClickableWhileAnimating()) {
if (kInventory.itemClickableWhileAnimating) {
itemClicked(kItem, clicker, kInventory, event.slot)
event.isCancelled = true
}
} else {
itemClicked(kItem, clicker, kInventory, event.slot)
Expand All @@ -63,7 +63,7 @@ class InventoryClickListener: Listener {

private fun itemClicked(kItem: KItem, player: Player, kInventory: KInventory, slot: Int) {
kItem.slot = slot
kItem.clicked(player)
kItem.clicked(player, kInventory)
val kRow = kInventory.getRowForItem(kItem)
kRow?.let {
it.index = (slot / 9)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package de.staticred.kia.events

import de.staticred.kia.inventory.AbstractContentContainer
import de.staticred.kia.inventory.extensions.toKInventory
import de.staticred.kia.inventory.item.DraggingMode
import de.staticred.kia.inventory.item.ItemManager
import de.staticred.kia.inventory.item.KItem
import de.staticred.kia.inventory.item.KItemImpl
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.inventory.InventoryDragEvent
Expand All @@ -17,27 +18,27 @@ class InventoryDragItemListener: Listener {

@EventHandler
public fun onInventoryDrag(event: InventoryDragEvent) {
val player = event.whoClicked as Player
val inventory = event.inventory

val kInventory = inventory.toKInventory() ?: return

for ((slot, item) in event.newItems) {

val uuid = KItemImpl.readUUIDFromNBT(item) ?: error("None KItem dragged in KInventory")
if (!ItemManager.hasItem(uuid)) error("KItem clicked which is not registered in ItemManager")

val kItem = ItemManager.getItem(uuid)
val initSlot = kInventory.getSlotForItem(kItem)

when (kItem.getDraggingMode()) {
DraggingMode.IN_INVENTORY
-> run {
if (slot > inventory.size - 1) event.isCancelled = true
}
DraggingMode.IN_ROW
-> run {
TODO()
}

val contentContainer = kInventory as AbstractContentContainer
val rowLength = contentContainer.rowLength

println(slot)
println(kInventory.size - 1)

when (kItem.draggingMode) {
DraggingMode.NONE -> event.isCancelled = true
else -> {}
}
}
Expand Down

This file was deleted.

65 changes: 12 additions & 53 deletions src/main/kotlin/de/staticred/kia/example/InventoryExample.kt
Original file line number Diff line number Diff line change
@@ -1,77 +1,36 @@
package de.staticred.kia.example

import de.staticred.kia.inventory.builder.*
import de.staticred.kia.inventory.builder.kInventory
import de.staticred.kia.inventory.builder.kItem
import de.staticred.kia.inventory.extensions.openInventory
import de.staticred.kia.util.ShiftDirection
import de.staticred.kia.inventory.item.DraggingMode
import de.staticred.kia.util.rows
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.TextColor
import net.kyori.adventure.text.format.TextDecoration
import org.bukkit.Material
import org.bukkit.command.Command
import org.bukkit.command.CommandExecutor
import org.bukkit.command.CommandSender
import org.bukkit.enchantments.Enchantment
import org.bukkit.entity.Player
import org.bukkit.event.inventory.InventoryType
import java.util.concurrent.TimeUnit

class InventoryExample: Command("kia") {


override fun execute(sender: CommandSender, p1: String, p2: Array<out String>?): Boolean {
if (sender !is Player) return false


val inventory = kInventory(sender, 5.rows, InventoryType.CHEST) {
setItem(1, 4, kItem(Material.DIAMOND_PICKAXE) {
onClick { kItem, player -> player.sendMessage("Cool you just clicked ${kItem.slot}") }
})
}

sender.openInventory(inventory)

val defaultHeader = kPageController {
nextBtn = kItem(Material.PAPER, 1) {
setDisplayName(Component.text("Next Page ->"))
}
previousBtn = kItem(Material.PAPER, 1) {
setDisplayName(Component.text("<- Previous Page"))
}
placeholderItem = kItem(Material.BLACK_STAINED_GLASS_PANE, 1) {
setDisplayName(Component.text("'"))
}
builder = { nextBtn, previousBtn, placeholder -> run {
kRow {
setItem(0..1, placeholder!!)
setItem(2, previousBtn!!)
setItem(3..5, placeholder)
setItem(6, nextBtn!!)
setItem(7..8, placeholder)
}
}}
}

val pageInventory = kPageInventory(sender, 5.rows) {
looping = true
title = Component.text("Paging Inventory")

mainPage {
this.title = Component.text("This is the main page")
header = defaultHeader
}

addPage {
this.title = Component.text("Page 2")
header = defaultHeader
}

addPage {
this.title = Component.text("Page 3")
header = defaultHeader
title = Component.text("This is working")
for (i in 0..8) {
setItem(i, kItem(Material.DIAMOND) {
draggingMode = DraggingMode.GLOBAL
onClick { kItem, player ->
player.sendMessage(Component.text(kItem.uuid.toString()))
}
} )
}
}

sender.openInventory(inventory)
return true
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,12 @@ import de.staticred.kia.util.AIR_ITEM
* Basic representation of a content container with simple item managements
* @see InventoryContentContainer
* @property rowLength the length of a row in the inventory
* @property size of the content container, should be a multiple of the rowLength
*
* @author Devin
* @since 1.0.0
*/
abstract class AbstractContentContainer(val rowLength: Int) : InventoryContentContainer {
abstract class AbstractContentContainer(val rowLength: Int, val size: Int) : InventoryContentContainer {

override val content: MutableMap<Int, KItem> = mutableMapOf()

Expand Down
24 changes: 6 additions & 18 deletions src/main/kotlin/de/staticred/kia/inventory/BaseKInventory.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,11 @@ import java.util.*
/**
* Example implementation of a generic inventory
* @param owner holder of the inventory
*
* @author Devin
* @since 1.0.0
*/
abstract class BaseKInventory(owner: InventoryHolder?, title: Component?): KInventory, AbstractContentContainer(9) {

/**
* Size of the inventory
*/
var size = 3.rows
protected set

abstract class BaseKInventory(owner: InventoryHolder?, title: Component?): KInventory, AbstractContentContainer(9, 3.rows) {
override var title: Component? = title
set(newTitle) {
field = newTitle
Expand All @@ -52,7 +48,7 @@ abstract class BaseKInventory(owner: InventoryHolder?, title: Component?): KInve
* Holder of the inventory
*/
protected lateinit var holder: KInventoryHolder
private var itemsClickableWhileAnimating = false
override var itemClickableWhileAnimating: Boolean = false

private var uuid: UUID? = null

Expand All @@ -70,7 +66,7 @@ abstract class BaseKInventory(owner: InventoryHolder?, title: Component?): KInve
}

private fun setItemForSlot(slot: Int, item: KItem) {
item.setParent(this)
item.parent = this
if (slot > size - 1) throw IllegalArgumentException("Slot must be lower than size. Slot: $slot Size: $size ")

bukkitInventory.setItem(slot, item.toItemStack())
Expand Down Expand Up @@ -161,10 +157,6 @@ abstract class BaseKInventory(owner: InventoryHolder?, title: Component?): KInve
closingListener.forEach { it(this) }
}

override fun setItemsClickableWhileAnimating(value: Boolean) {
itemsClickableWhileAnimating = value
}

override fun isAnimating(): Boolean {
return animations.values.any { it.isRunning() }
}
Expand All @@ -178,10 +170,6 @@ abstract class BaseKInventory(owner: InventoryHolder?, title: Component?): KInve
startAnimation(animation)
}

override fun itemsClickableWhileAnimating(): Boolean {
return itemsClickableWhileAnimating
}

override fun isOpened(): Boolean {
return isOpen
}
Expand Down
Loading

0 comments on commit 4a55261

Please sign in to comment.