mirror of
https://github.com/5vl/ItemAdder.git
synced 2025-05-24 08: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.Material
|
||||||
import org.bukkit.inventory.ItemStack
|
import org.bukkit.inventory.ItemStack
|
||||||
|
|
||||||
class Item(uniqueName: String, name: Component, rarity: Rarity, material: Material, type: Type, vararg lore: String) {
|
class Item(uniqueName: String, name: Component, rarity: Rarity, material: Material, type: Type, lore: String) {
|
||||||
object Items {
|
val finalItem: ItemStack
|
||||||
val items = HashMap<String, Item>()
|
val abilities = HashMap<Runnable, AbilityType>()
|
||||||
}
|
|
||||||
|
|
||||||
lateinit var finalItem: ItemStack
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
val item = ItemStack(material)
|
val item = ItemStack(material)
|
||||||
val meta = item.itemMeta
|
val meta = item.itemMeta
|
||||||
meta.displayName(name)
|
meta.displayName(name)
|
||||||
meta.lore(Utils.loreBuilder())
|
meta.lore(Utils.loreBuilder(lore, "", rarity.formatted + " " + type.type))
|
||||||
Items.items[uniqueName] = this
|
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
|
package me.fivevl.itemadder
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit
|
||||||
import org.bukkit.Material
|
import org.bukkit.Material
|
||||||
import org.bukkit.plugin.java.JavaPlugin
|
import org.bukkit.plugin.java.JavaPlugin
|
||||||
|
|
||||||
class Main : JavaPlugin() {
|
class Main : JavaPlugin() {
|
||||||
override fun onEnable() {
|
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>")
|
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
|
package me.fivevl.itemadder
|
||||||
|
|
||||||
enum class Type(type: String) {
|
enum class Type(val type: String) {
|
||||||
WEAPON("WEAPON"),
|
WEAPON("WEAPON"),
|
||||||
PICKAXE("PICKAXE"),
|
PICKAXE("PICKAXE"),
|
||||||
ITEM("ITEM"),
|
ITEM("ITEM"),
|
||||||
|
@ -2,15 +2,26 @@ package me.fivevl.itemadder
|
|||||||
|
|
||||||
import net.kyori.adventure.text.Component
|
import net.kyori.adventure.text.Component
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage
|
import net.kyori.adventure.text.minimessage.MiniMessage
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent
|
||||||
|
|
||||||
object Utils {
|
object Utils {
|
||||||
|
lateinit var interactEvent: PlayerInteractEvent
|
||||||
|
val items = HashMap<String, Item>()
|
||||||
|
val inItemsGui = ArrayList<Player>()
|
||||||
fun color(s: String): Component {
|
fun color(s: String): Component {
|
||||||
return MiniMessage.miniMessage().deserialize(s)
|
return MiniMessage.miniMessage().deserialize(s)
|
||||||
}
|
}
|
||||||
fun loreBuilder(vararg arr: String): ArrayList<Component> {
|
fun loreBuilder(vararg arr: String): ArrayList<Component> {
|
||||||
val lore = ArrayList<Component>()
|
val lore = ArrayList<Component>()
|
||||||
for (s in arr) {
|
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
|
return lore
|
||||||
}
|
}
|
||||||
|
@ -4,3 +4,6 @@ main: me.fivevl.itemadder.Main
|
|||||||
api-version: 1.18
|
api-version: 1.18
|
||||||
authors: [ 5vl ]
|
authors: [ 5vl ]
|
||||||
description: Create custom items with custom abilities!
|
description: Create custom items with custom abilities!
|
||||||
|
commands:
|
||||||
|
items:
|
||||||
|
description: Main item GUI.
|
Loading…
x
Reference in New Issue
Block a user