Initial commit with basic config file implementation and /shop
commit
f2a5f9dc6f
@ -0,0 +1,6 @@
|
|||||||
|
.gradle/
|
||||||
|
.idea/
|
||||||
|
gradle/
|
||||||
|
gradlew
|
||||||
|
gradlew.bat
|
||||||
|
build/
|
@ -0,0 +1,31 @@
|
|||||||
|
plugins {
|
||||||
|
id 'org.jetbrains.kotlin.jvm' version '1.3.61'
|
||||||
|
id 'com.github.johnrengelman.shadow' version '4.0.4'
|
||||||
|
}
|
||||||
|
|
||||||
|
group 'pw.hamzantal'
|
||||||
|
version '1.0-SNAPSHOT'
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
jcenter()
|
||||||
|
maven { url "https://hub.spigotmc.org/nexus/content/groups/public" }
|
||||||
|
maven { url "https://jitpack.io" }
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
|
||||||
|
implementation "com.github.hazae41:mc-kutils:master-SNAPSHOT"
|
||||||
|
compileOnly "org.spigotmc:spigot-api:1.8.8-R0.1-SNAPSHOT"
|
||||||
|
}
|
||||||
|
|
||||||
|
shadowJar {
|
||||||
|
baseName = "ShopReborn"
|
||||||
|
}
|
||||||
|
|
||||||
|
compileKotlin {
|
||||||
|
kotlinOptions.jvmTarget = "1.8"
|
||||||
|
}
|
||||||
|
compileTestKotlin {
|
||||||
|
kotlinOptions.jvmTarget = "1.8"
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
kotlin.code.style=official
|
@ -0,0 +1,2 @@
|
|||||||
|
rootProject.name = 'ShopReborn'
|
||||||
|
|
@ -0,0 +1,21 @@
|
|||||||
|
package pw.hamzantal.shopreborn
|
||||||
|
|
||||||
|
import hazae41.minecraft.kutils.bukkit.msg
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent
|
||||||
|
|
||||||
|
fun baseListener(e: InventoryClickEvent) {
|
||||||
|
if (e.inventory == Configurations.main.inventory) {
|
||||||
|
mainClick(e)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mainClick(e: InventoryClickEvent) {
|
||||||
|
val main = Configurations.main
|
||||||
|
e.isCancelled = true;
|
||||||
|
if (e.rawSlot > e.inventory.size) return
|
||||||
|
|
||||||
|
e.whoClicked.msg(e.rawSlot.toString())
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
package pw.hamzantal.shopreborn
|
||||||
|
|
||||||
|
import hazae41.minecraft.kutils.bukkit.ConfigFile
|
||||||
|
import hazae41.minecraft.kutils.bukkit.keys
|
||||||
|
import org.bukkit.Bukkit
|
||||||
|
import org.bukkit.Material
|
||||||
|
import org.bukkit.configuration.ConfigurationSection
|
||||||
|
import org.bukkit.inventory.ItemStack
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
object Configurations {
|
||||||
|
lateinit var main: MainConfig
|
||||||
|
val shops = mutableListOf<ConfigFile>()
|
||||||
|
}
|
||||||
|
|
||||||
|
class MainConfig(file: File) : ConfigFile(file) {
|
||||||
|
data class Block(val item: ItemStack, val slot: Int, val commands: List<String>)
|
||||||
|
|
||||||
|
var shops by section("shops")
|
||||||
|
|
||||||
|
var size by int("startGUI.size")
|
||||||
|
var title by string("startGUI.title")
|
||||||
|
var blocksRaw by section("shopGUI.blocks")
|
||||||
|
|
||||||
|
val blocks = blocksRaw?.keys
|
||||||
|
?.map { blocksRaw!!.getConfigurationSection(it) }
|
||||||
|
?.map {
|
||||||
|
Block(
|
||||||
|
it.asItem(),
|
||||||
|
it.getInt("slot"),
|
||||||
|
it.getStringList("commands")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
?: listOf()
|
||||||
|
|
||||||
|
val inventory by lazy {
|
||||||
|
val inv = Bukkit.createInventory(null, size, title.c)
|
||||||
|
blocks.forEach {
|
||||||
|
inv.setItem(it.slot, it.item)
|
||||||
|
}
|
||||||
|
inv
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ConfigurationSection.asItem(): ItemStack {
|
||||||
|
val material = Material.valueOf(getString("material").toUpperCase())
|
||||||
|
val item = ItemStack(material, getInt("quantity", 1), getInt("data", 0).toShort())
|
||||||
|
item.itemMeta.apply {
|
||||||
|
displayName = getString("name", "")
|
||||||
|
lore = getStringList("lore").map { it.c }
|
||||||
|
}
|
||||||
|
return item
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package pw.hamzantal.shopreborn
|
||||||
|
|
||||||
|
import hazae41.minecraft.kutils.bukkit.command
|
||||||
|
import hazae41.minecraft.kutils.bukkit.listen
|
||||||
|
import hazae41.minecraft.kutils.get
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin
|
||||||
|
|
||||||
|
class ShopReborn : JavaPlugin() {
|
||||||
|
|
||||||
|
override fun onEnable() {
|
||||||
|
saveDefaultConfig()
|
||||||
|
|
||||||
|
Configurations.main =
|
||||||
|
MainConfig(dataFolder["config.yml"])
|
||||||
|
listen<InventoryClickEvent>(callback = ::baseListener)
|
||||||
|
|
||||||
|
command("shop") { sender, args ->
|
||||||
|
if (sender !is Player) return@command
|
||||||
|
|
||||||
|
if (args.isEmpty())
|
||||||
|
sender.openInventory(Configurations.main.inventory)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
package pw.hamzantal.shopreborn
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor
|
||||||
|
|
||||||
|
val String.c
|
||||||
|
get() = ChatColor.translateAlternateColorCodes('&', this)
|
@ -0,0 +1,16 @@
|
|||||||
|
shops:
|
||||||
|
blocks: "blocks.yml"
|
||||||
|
|
||||||
|
|
||||||
|
startGUI:
|
||||||
|
size: 18
|
||||||
|
title: "&2Select a shop"
|
||||||
|
blocks:
|
||||||
|
1:
|
||||||
|
slot: 0
|
||||||
|
commands:
|
||||||
|
- "shop blocks"
|
||||||
|
item:
|
||||||
|
material: GRASS
|
||||||
|
amount: 1 # Default can leave blank if 1
|
||||||
|
name: "&cBlocks"
|
@ -0,0 +1,8 @@
|
|||||||
|
name: ShopReborn
|
||||||
|
version: 1.0.0
|
||||||
|
description: Custom Shop GUI Plugin created for Premiere Setups
|
||||||
|
author: hhhapz
|
||||||
|
main: pw.hamzantal.shopreborn.ShopReborn
|
||||||
|
commands:
|
||||||
|
shop:
|
||||||
|
description: "Shop GUI Basic command"
|
Loading…
Reference in New Issue