mirror of
https://github.com/5vl/ItemAdder.git
synced 2025-05-24 02:27:00 +00:00
added a fuck ton of shit, idk if it works but im not gonna test rn
This commit is contained in:
parent
31d0e5d305
commit
fb38607d8a
8
src/main/java/me/fivevl/itemadder/AbilityType.kt
Normal file
8
src/main/java/me/fivevl/itemadder/AbilityType.kt
Normal file
@ -0,0 +1,8 @@
|
||||
package me.fivevl.itemadder
|
||||
|
||||
import org.bukkit.event.player.PlayerInteractEvent
|
||||
|
||||
enum class AbilityType(val event: PlayerInteractEvent) {
|
||||
LEFT_CLICK(Utils.interactEvent),
|
||||
RIGHT_CLICK(Utils.interactEvent)
|
||||
}
|
43
src/main/java/me/fivevl/itemadder/InteractListener.kt
Normal file
43
src/main/java/me/fivevl/itemadder/InteractListener.kt
Normal file
@ -0,0 +1,43 @@
|
||||
package me.fivevl.itemadder
|
||||
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.event.EventHandler
|
||||
import org.bukkit.event.Listener
|
||||
import org.bukkit.event.block.Action
|
||||
import org.bukkit.event.inventory.InventoryClickEvent
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent
|
||||
import org.bukkit.event.player.PlayerInteractEvent
|
||||
|
||||
class InteractListener : Listener {
|
||||
@EventHandler
|
||||
fun onInteract(e: PlayerInteractEvent) {
|
||||
if (e.item == null) return
|
||||
for (check in Utils.items.values) {
|
||||
if (check.finalItem == e.item) {
|
||||
for (ability in check.abilities.keys) {
|
||||
if (check.abilities[ability]!! == AbilityType.RIGHT_CLICK && (e.action == Action.RIGHT_CLICK_AIR || e.action == Action.RIGHT_CLICK_BLOCK)) {
|
||||
ability.run()
|
||||
}
|
||||
if (check.abilities[ability]!! == AbilityType.LEFT_CLICK && (e.action == Action.LEFT_CLICK_AIR || e.action == Action.LEFT_CLICK_BLOCK)) {
|
||||
ability.run()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
fun onInvClick(e: InventoryClickEvent) {
|
||||
if (e.whoClicked !is Player) return
|
||||
if (!Utils.inItemsGui.contains(e.whoClicked as Player)) return
|
||||
e.isCancelled = true
|
||||
if (e.currentItem == null) return
|
||||
e.whoClicked.inventory.addItem(e.currentItem!!)
|
||||
e.whoClicked.sendMessage(Utils.color("<green>Added <blue>${e.currentItem!!.itemMeta.displayName()} <green>to your inventory"))
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
fun onInvClose(e: InventoryCloseEvent) {
|
||||
Utils.inItemsGui.remove(e.player)
|
||||
}
|
||||
}
|
@ -4,18 +4,21 @@ import net.kyori.adventure.text.Component
|
||||
import org.bukkit.Material
|
||||
import org.bukkit.inventory.ItemStack
|
||||
|
||||
class Item(uniqueName: String, name: Component, rarity: Rarity, material: Material, type: Type, vararg lore: String) {
|
||||
object Items {
|
||||
val items = HashMap<String, Item>()
|
||||
}
|
||||
|
||||
lateinit var finalItem: ItemStack
|
||||
class Item(uniqueName: String, name: Component, rarity: Rarity, material: Material, type: Type, lore: String) {
|
||||
val finalItem: ItemStack
|
||||
val abilities = HashMap<Runnable, AbilityType>()
|
||||
|
||||
init {
|
||||
val item = ItemStack(material)
|
||||
val meta = item.itemMeta
|
||||
meta.displayName(name)
|
||||
meta.lore(Utils.loreBuilder())
|
||||
Items.items[uniqueName] = this
|
||||
meta.lore(Utils.loreBuilder(lore, "", rarity.formatted + " " + type.type))
|
||||
item.itemMeta = meta
|
||||
finalItem = item
|
||||
Utils.items[uniqueName] = this
|
||||
}
|
||||
|
||||
fun addAbility(type: AbilityType, runnable: Runnable) {
|
||||
abilities[runnable] = type
|
||||
}
|
||||
}
|
22
src/main/java/me/fivevl/itemadder/ItemsCommand.kt
Normal file
22
src/main/java/me/fivevl/itemadder/ItemsCommand.kt
Normal file
@ -0,0 +1,22 @@
|
||||
package me.fivevl.itemadder
|
||||
|
||||
import org.bukkit.command.Command
|
||||
import org.bukkit.command.CommandExecutor
|
||||
import org.bukkit.command.CommandSender
|
||||
import org.bukkit.entity.Player
|
||||
|
||||
class ItemsCommand : CommandExecutor {
|
||||
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>?): Boolean {
|
||||
if (sender !is Player) {
|
||||
sender.sendMessage(Utils.color("<red>Only players can use this command"))
|
||||
return true
|
||||
}
|
||||
val p = sender.player!!
|
||||
if (p.hasPermission("itemadder.items")) {
|
||||
p.openInventory(ItemsGui.getGui())
|
||||
} else {
|
||||
p.sendMessage(Utils.color("<red>You don't have permission to use this command"))
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
14
src/main/java/me/fivevl/itemadder/ItemsGui.kt
Normal file
14
src/main/java/me/fivevl/itemadder/ItemsGui.kt
Normal file
@ -0,0 +1,14 @@
|
||||
package me.fivevl.itemadder
|
||||
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.inventory.Inventory
|
||||
|
||||
object ItemsGui {
|
||||
fun getGui(): Inventory {
|
||||
val gui = Bukkit.createInventory(null, 54, Utils.color("Items"))
|
||||
for (item in Utils.items.values) {
|
||||
gui.addItem(item.finalItem)
|
||||
}
|
||||
return gui
|
||||
}
|
||||
}
|
@ -1,10 +1,17 @@
|
||||
package me.fivevl.itemadder
|
||||
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.Material
|
||||
import org.bukkit.plugin.java.JavaPlugin
|
||||
|
||||
class Main : JavaPlugin() {
|
||||
override fun onEnable() {
|
||||
Bukkit.getPluginManager().registerEvents(InteractListener(), this)
|
||||
getCommand("items")?.setExecutor(ItemsCommand())
|
||||
Item("TEST_ITEM", Utils.color("<blue>Test Item"), Rarity.EPIC, Material.STONE_SWORD, Type.WEAPON, "<red>The most basic testing</red>\n<blue>sword, by 5vl</blue>")
|
||||
Utils.items["TEST_ITEM"]!!.addAbility(AbilityType.RIGHT_CLICK) {
|
||||
val e = AbilityType.RIGHT_CLICK.event
|
||||
e.player.sendMessage(Utils.color("<red>You right clicked the TEST_ITEM!"))
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package me.fivevl.itemadder
|
||||
|
||||
enum class Type(type: String) {
|
||||
enum class Type(val type: String) {
|
||||
WEAPON("WEAPON"),
|
||||
PICKAXE("PICKAXE"),
|
||||
ITEM("ITEM"),
|
||||
|
@ -2,15 +2,26 @@ package me.fivevl.itemadder
|
||||
|
||||
import net.kyori.adventure.text.Component
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.event.player.PlayerInteractEvent
|
||||
|
||||
object Utils {
|
||||
lateinit var interactEvent: PlayerInteractEvent
|
||||
val items = HashMap<String, Item>()
|
||||
val inItemsGui = ArrayList<Player>()
|
||||
fun color(s: String): Component {
|
||||
return MiniMessage.miniMessage().deserialize(s)
|
||||
}
|
||||
fun loreBuilder(vararg arr: String): ArrayList<Component> {
|
||||
val lore = ArrayList<Component>()
|
||||
for (s in arr) {
|
||||
lore.add(color(s))
|
||||
if (s.contains("\n")) {
|
||||
for (ss in s.split("\n")) {
|
||||
lore.add(color(ss))
|
||||
}
|
||||
} else {
|
||||
lore.add(color(s))
|
||||
}
|
||||
}
|
||||
return lore
|
||||
}
|
||||
|
@ -4,3 +4,6 @@ main: me.fivevl.itemadder.Main
|
||||
api-version: 1.18
|
||||
authors: [ 5vl ]
|
||||
description: Create custom items with custom abilities!
|
||||
commands:
|
||||
items:
|
||||
description: Main item GUI.
|
Loading…
x
Reference in New Issue
Block a user