Compare commits

...

16 Commits
v1.3.2 ... main

Author SHA1 Message Date
Ryder Belserion 4b20f61b21
set lore to update timer 2024-03-24 11:25:53 -04:00
Ryder Belserion b8e5d2dd7a
Fix other issue with lore duplicating 2024-03-24 11:24:15 -04:00
Ryder Belserion f79a2eed10
Display items in /ah 2024-03-24 11:22:30 -04:00
Ryder Belserion 56278d3313
[ci-skip] update changelog.md 2024-03-20 13:02:07 -04:00
Ryder Belserion 8f22438d4e
Update plugin.yml 2024-03-20 12:27:47 -04:00
Ryder Belserion 1fa748215c
Update itembuilder with custom model data support 2024-03-20 12:26:42 -04:00
TrueDarkLord 35768c9e34
Sell Sound
Should cover #171
2024-03-09 11:09:42 -07:00
Ryder Belserion fa47a8a089
Update api 2024-03-05 23:48:12 -05:00
Ryder Belserion 54c07b7de9
Update build script 2024-03-05 18:57:10 -05:00
Ryder Belserion 6413bcefd8
Update plugin.yml 2024-03-05 18:57:03 -05:00
Ryder Belserion 39c002faaa
Create config file 2024-03-05 18:56:56 -05:00
Ryder Belserion 44ef839651
Create service classes 2024-03-05 18:56:50 -05:00
Ryder Belserion cced985f58
Add server interface 2024-03-05 18:56:33 -05:00
Ryder Belserion 10eed8d0d1
Download required plugins on startup for dev server 2024-03-05 12:15:11 -05:00
Ryder Belserion 47205145fb
Update build script 2024-03-05 12:08:54 -05:00
Ryder Belserion ee28bda29a
Merge pull request #167 from Crazy-Crew/mc/1.20.3
Add a quick bug fix for 1.3.2 before 1.4
2023-12-06 15:19:19 -05:00
37 changed files with 2236 additions and 464 deletions

16
.gitignore vendored
View File

@ -1,22 +1,22 @@
build
.gradle
.idea
buildSrc/.gradle
buildSrc/build
common/.gradle
common/build
jars
common/build
paper/build
api/build
common/.gradle
api/.gradle
paper/.gradle
paper/run
!paper/run/config
!paper/run/spigot.yml
!paper/run/bukkit.yml
!paper/run/eula.txt
!paper/run/server.properties
!paper/run/plugins
!paper/run/plugins
!paper/run/ops.json

5
CHANGELOG.md Normal file
View File

@ -0,0 +1,5 @@
## Changes
* Updated the item builder, What does this mean?
* Custom Items are finally supported
* The item sections in the config.yml have the same capabilities as our other plugins.
* All lores, display names have placeholder api support.

View File

@ -1,9 +1,9 @@
<br />
[![crazyauctions](https://raw.githubusercontent.com/RyderBelserion/Assets/main/crazycrew/webp/CrazyAuctionsBanner.webp)](https://modrinth.com/plugin/crazyauctions)
<div align="center">
[![CrazyAuctions](https://raw.githubusercontent.com/RyderBelserion/Assets/main/crazycrew/webp/CrazyAuctionsBanner.webp)](https://modrinth.com/plugin/crazyauctions)
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
@ -16,14 +16,14 @@
![Purpur](https://cdn.jsdelivr.net/gh/intergrav/devins-badges/assets/compact/supported/purpur_vector.svg)
<p align="center">
Auction off your items in style!
A crates plugin that offers quality crates with ease!
<br />
<a href="https://github.com/Crazy-Crew/CrazyAuctions/wiki"><strong>Explore the docs »</strong></a>
<a href="https://docs.crazycrew.us/crazyauctions/home"><strong>Explore the docs »</strong></a>
<br />
<br />
<a href="https://github.com/Crazy-Crew/CrazyAuctions/issues">Report Bug</a>
<a href="https://github.com/Crazy-Crew/CrazyAuctions/issues/new?assignees=ryderbelserion&labels=bug&projects=&template=bugs.yml&title=%5BBug+Report%5D%3A+">Report Bug</a>
·
<a href="https://github.com/Crazy-Crew/CrazyAuctions/discussions/categories/feature-requests">Request Feature</a>
<a href="https://github.com/Crazy-Crew/CrazyAuctions/issues/new?assignees=&labels=feature&template=feature_request.md&title=%5BFeature%5D+">Request Feature</a>
·
<a href="https://discord.gg/badbones-s-live-chat-182615261403283459">Get Support</a>
</p>
@ -47,54 +47,45 @@
</ol>
</details>
## Resource Page
### Beta Builds
All beta builds will be on Modrinth marked as beta.<br>
<a href="https://modrinth.com/plugin/crazyauctions">![Modrinth](https://raw.githubusercontent.com/intergrav/devins-badges/v3/assets/cozy/available/modrinth_64h.png)</a>
### Resource Page
[![Hangar](https://raw.githubusercontent.com/intergrav/devins-badges/v3/assets/compact/available/hangar_46h.png)](https://hangar.papermc.io/CrazyCrew/CrazyAuctions)
[![Modrinth](https://raw.githubusercontent.com/intergrav/devins-badges/v3/assets/compact/available/modrinth_46h.png)](https://modrinth.com/user/plugin/CrazyAuctions)
## Getting Started
How to get started with contributing / maintaining your own version of CrazyAuctions!
### Prerequisites
A list of things necessary to make sure you can build CrazyAuctions properly.
* Intellij IDEA
* > https://www.jetbrains.com/idea/download/
* Gradle
### Installation
1. Clone the repo
```sh
git clone https://github.com/Crazy-Crew/CrazyAuctions.git
```
2. Open the repository using Intellij IDEA & wait until it finishes downloading/indexing.
3. Run the assemble task.
3. Run the clean assemble task.
```gradle
./gradlew assemble
./gradlew clean assemble
```
## Roadmap
Check our public [trello board](https://trello.com/b/CcPYmsBt) for our current plans, any bugs and general tracking of the project progress.
Check our public [trello board](https://trello.com/b/bzQ5TwXo) for our current plans, any bugs and general tracking of the project progress.
## Contributing
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/yourfeature`)
3. Commit your Changes (`git commit -m 'your amazing feature.'`)
4. Push to the Branch (`git push`)
5. Open a Pull Request to the dev branch to add your feature/fix.
5. Open a Pull Request to the `main` branch to add your feature/fix.
## License
Distributed under the MIT License. See [`LICENSE`](/LICENSE) for more information.
[discord-shield]: https://img.shields.io/discord/182615261403283459.svg?style=flat&logo=appveyor
[discord-url]: https://discord.gg/crazycrew
[discord-url]: https://discord.gg/badbones-s-live-chat-182615261403283459
[contributors-shield]: https://img.shields.io/github/contributors/Crazy-Crew/CrazyAuctions.svg?style=flat&logo=appveyor
[contributors-url]: https://github.com/Crazy-Crew/CrazyAuctions/graphs/contributors

View File

@ -1,59 +0,0 @@
plugins {
id 'java-library'
}
defaultTasks 'build'
assemble {
subprojects.forEach { project -> dependsOn ":${project.name}:build" }
doLast {
File dir = new File(rootDir, "jars")
if (dir.exists()) dir.delete()
dir.mkdirs()
copy {
from(project("paper").layout.buildDirectory.file("libs/${rootProject.name}-${rootProject.version}.jar").get())
into(dir)
}
}
}
subprojects {
apply plugin: 'java-library'
repositories {
maven { url = 'https://repo.crazycrew.us/releases' }
maven { url = 'https://jitpack.io' }
mavenCentral()
}
if (name == "paper") {
repositories {
maven { url = 'https://repo.extendedclip.com/content/repositories/placeholderapi/' }
}
}
compileJava {
options.encoding = 'UTF-8'
options.release.set(17)
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
javadoc {
options.encoding = 'UTF-8'
}
processResources {
filteringCharset = 'UTF-8'
}
}

40
build.gradle.kts Normal file
View File

@ -0,0 +1,40 @@
import org.gradle.kotlin.dsl.support.uppercaseFirstChar
plugins {
`root-plugin`
}
tasks {
assemble {
val jarsDir = File("$rootDir/jars")
doFirst {
delete(jarsDir)
jarsDir.mkdirs()
}
subprojects.filter { it.name == "paper" || it.name == "fabric" }.forEach { project ->
dependsOn(":${project.name}:build")
doLast {
runCatching {
val file = File("$jarsDir/${project.name.uppercaseFirstChar().lowercase()}")
file.mkdirs()
copy {
from(project.layout.buildDirectory.file("libs/${rootProject.name}-${project.version}.jar"))
into(file)
}
}.onSuccess {
// Delete to save space on jenkins.
delete(project.layout.buildDirectory.get())
delete(rootProject.layout.buildDirectory.get())
}.onFailure {
println("Failed to copy file out of build folder into jars directory: Likely does not exist.")
}
}
}
}
}

14
buildSrc/build.gradle.kts Normal file
View File

@ -0,0 +1,14 @@
plugins {
`kotlin-dsl`
}
repositories {
gradlePluginPortal()
mavenCentral()
}
dependencies {
implementation(libs.paperweight.userdev)
implementation(libs.publishing.modrinth)
implementation(libs.publishing.hangar)
}

View File

@ -0,0 +1,9 @@
dependencyResolutionManagement {
versionCatalogs {
create("libs") {
from(files("../gradle/libs.versions.toml"))
}
}
}
rootProject.name = "buildSrc"

View File

@ -0,0 +1,14 @@
plugins {
id("root-plugin")
}
val mcVersion = providers.gradleProperty("mcVersion").get()
val fabricVersion = providers.gradleProperty("version").get()
project.version = if (System.getenv("BUILD_NUMBER") != null) "$fabricVersion-${System.getenv("BUILD_NUMBER")}" else fabricVersion
tasks {
modrinth {
loaders.addAll("fabric")
}
}

View File

@ -0,0 +1,27 @@
plugins {
id("root-plugin")
}
repositories {
maven("https://repo.extendedclip.com/content/repositories/placeholderapi/")
maven("https://repo.papermc.io/repository/maven-public/")
maven("https://repo.codemc.io/repository/maven-public/")
maven("https://repo.triumphteam.dev/snapshots/")
maven("https://repo.fancyplugins.de/releases/")
flatDir { dirs("libs") }
}
val mcVersion = providers.gradleProperty("mcVersion").get()
project.version = if (System.getenv("BUILD_NUMBER") != null) "${rootProject.version}-${System.getenv("BUILD_NUMBER")}" else rootProject.version
tasks {
modrinth {
loaders.addAll("paper", "purpur")
}
}

View File

@ -0,0 +1,93 @@
import io.papermc.hangarpublishplugin.model.Platforms
plugins {
id("io.papermc.hangar-publish-plugin")
id("com.modrinth.minotaur")
`java-library`
`maven-publish`
}
base {
archivesName.set(rootProject.name)
}
repositories {
maven("https://repo.crazycrew.us/snapshots/")
maven("https://repo.crazycrew.us/releases/")
maven("https://jitpack.io/")
mavenCentral()
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of("17"))
}
tasks {
compileJava {
options.encoding = Charsets.UTF_8.name()
options.release.set(17)
}
javadoc {
options.encoding = Charsets.UTF_8.name()
}
processResources {
filteringCharset = Charsets.UTF_8.name()
}
val directory = File("$rootDir/jars/${project.name.lowercase()}")
val mcVersion = providers.gradleProperty("mcVersion").get()
val isBeta: Boolean = providers.gradleProperty("isBeta").get().toBoolean()
val type = if (isBeta) "Beta" else "Release"
// Publish to hangar.papermc.io.
hangarPublish {
publications.register("plugin") {
version.set("${project.version}")
id.set(rootProject.name)
channel.set(type)
changelog.set(rootProject.file("CHANGELOG.md").readText(Charsets.UTF_8))
apiKey.set(System.getenv("hangar_key"))
platforms {
register(Platforms.PAPER) {
jar.set(file("$directory/${rootProject.name}-${project.version}.jar"))
platformVersions.set(listOf(mcVersion))
}
}
}
}
modrinth {
versionType.set(type.lowercase())
autoAddDependsOn.set(false)
token.set(System.getenv("modrinth_token"))
projectId.set(rootProject.name.lowercase())
changelog.set(rootProject.file("CHANGELOG.md").readText(Charsets.UTF_8))
versionName.set("${rootProject.name} ${project.version}")
versionNumber.set("${project.version}")
uploadFile.set("$directory/${rootProject.name}-${project.version}.jar")
gameVersions.add(mcVersion)
}
}

13
common/build.gradle.kts Normal file
View File

@ -0,0 +1,13 @@
plugins {
id("root-plugin")
}
dependencies {
compileOnlyApi(libs.bundles.adventure)
compileOnly(libs.cluster.api)
api(libs.configme) {
exclude(group = "org.yaml", module = "snakeyaml")
}
}

View File

@ -0,0 +1,53 @@
package com.ryderbelserion.crazyauctions;
import ch.jalu.configme.SettingsManager;
import ch.jalu.configme.SettingsManagerBuilder;
import ch.jalu.configme.resource.YamlFileResourceOptions;
import com.ryderbelserion.crazyauctions.platform.impl.Config;
import com.ryderbelserion.crazyauctions.platform.Server;
import java.io.File;
public class CrazyAuctions {
private final Server server;
private final SettingsManager config;
public CrazyAuctions(Server server) {
this.server = server;
// Create config files
YamlFileResourceOptions builder = YamlFileResourceOptions.builder().indentationSize(2).build();
this.config = SettingsManagerBuilder
.withYamlFile(new File(server.getFolder(), "config.yml"), builder)
.useDefaultMigrationService()
.configurationData(Config.class)
.create();
// Register provider.
CrazyProvider.register(this);
}
public void reload() {
// Reload the config.
this.config.reload();
}
public void disable() {
// Save the config.
this.config.save();
// Unregister provider.
CrazyProvider.unregister();
}
public Server getServer() {
return this.server;
}
public SettingsManager getConfig() {
return this.config;
}
}

View File

@ -0,0 +1,30 @@
package com.ryderbelserion.crazyauctions;
public final class CrazyProvider {
private static CrazyAuctions instance;
private CrazyProvider() {
throw new UnsupportedOperationException("This class cannot be instantiated");
}
public static CrazyAuctions get() {
if (instance == null) {
throw new IllegalStateException("CrazyAuctions is not loaded.");
}
return instance;
}
static void register(final CrazyAuctions instance) {
if (get() != null) {
return;
}
CrazyProvider.instance = instance;
}
static void unregister() {
CrazyProvider.instance = null;
}
}

View File

@ -0,0 +1,9 @@
package com.ryderbelserion.crazyauctions.platform;
import java.io.File;
public interface Server {
File getFolder();
}

View File

@ -0,0 +1,41 @@
package com.ryderbelserion.crazyauctions.platform.impl;
import ch.jalu.configme.Comment;
import ch.jalu.configme.SettingsHolder;
import ch.jalu.configme.configurationdata.CommentsConfiguration;
import ch.jalu.configme.properties.Property;
import org.jetbrains.annotations.NotNull;
import static ch.jalu.configme.properties.PropertyInitializer.newProperty;
public class Config implements SettingsHolder {
@Override
public void registerComments(@NotNull CommentsConfiguration conf) {
String[] header = {
"Support: https://discord.gg/badbones-s-live-chat-182615261403283459",
"Github: https://github.com/Crazy-Crew",
"",
"Issues: https://github.com/Crazy-Crew/CrazyAuctions/issues",
"Features: https://github.com/Crazy-Crew/CrazyAuctions/issues",
"",
"Sounds: https://jd.papermc.io/paper/1.20/org/bukkit/Sound.html",
"Enchantments: https://jd.papermc.io/paper/1.20/org/bukkit/enchantments/Enchantment.html"
};
conf.setComment("root", header);
}
@Comment("Whether you want CrazyAuctions to shut up or not.")
public static final Property<Boolean> verbose_logging = newProperty("root.verbose_logging", true);
@Comment({
"Sends anonymous statistics about how the plugin is used to bstats.org.",
"bstats is a service for plugin developers to find out how the plugin being used,",
"This information helps us figure out how to better improve the plugin."
})
public static final Property<Boolean> toggle_metrics = newProperty("root.toggle_metrics", true);
@Comment("The prefix that appears in front of messages.")
public static final Property<String> prefix = newProperty("root.prefix", "<dark_gray>[<blue>CrazyAuctions<dark_gray>]: ");
}

View File

@ -1,5 +1,6 @@
org.gradle.jvmargs = '-Xmx3G'
org.gradle.parallel = false
org.gradle.caching = true
org.gradle.parallel = true
org.gradle.warning.mode = all
authors = ["Ryderbelserion, Badbones69"]
@ -9,8 +10,8 @@ issues = https://github.com/Crazy-Crew/CrazyAuctions/issues
group = com.badbones69.crazyauctions
description = Auction off items in style.
version = 1.3.2
version = 1.4
apiVersion = 1.20
minecraftVersion = 1.20.2
mcVersion = 1.20.4
isBeta = true

View File

@ -1,35 +1,41 @@
[versions]
kyori_version = "4.14.0"
cluster_version = "3.1"
[plugins]
hangar = { id = "io.papermc.hangar-publish-plugin", version = "0.1.0" }
modrinth = { id = "com.modrinth.minotaur", version = "2.8.4" }
run-paper = { id = "xyz.jpenilla.run-paper", version = "2.2.3" }
shadow = { id = "com.github.johnrengelman.shadow", version = "8.1.1" }
paperweight = { id = "io.papermc.paperweight.userdev", version = "1.5.9" }
runpaper = { id = "xyz.jpenilla.run-paper", version = "2.2.2" }
shadowjar = { id = "com.github.johnrengelman.shadow", version = "8.1.1" }
[versions]
kyori = "4.16.0"
bundle = "1.20.4-R0.1-SNAPSHOT"
cluster = "1.0-SNAPSHOT"
[libraries]
adventure = { module = "net.kyori:adventure-api", version.ref = "kyori_version" }
minimessage = { module = "net.kyori:adventure-text-minimessage", version.ref = "kyori_version" }
simple-yaml = { group = "com.github.Carleslc.Simple-YAML", name = "Simple-Yaml", version = "1.8.4" }
cluster_paper = { module = "com.ryderbelserion.cluster.paper:cluster-paper", version.ref = "cluster_version" }
cluster_api = { module = "com.ryderbelserion.cluster.api:cluster-api", version.ref = "cluster_version" }
minimessage-api = { group = "net.kyori", name = "adventure-text-minimessage", version.ref = "kyori" }
adventure-api = { group = "net.kyori", name = "adventure-api", version.ref = "kyori" }
vault = { module = "com.github.MilkBowl:VaultAPI", version = "1.7.1" }
itemsadder-api = { group = "com.github.LoneDev6", name = "api-itemsadder", version = "3.6.1" }
oraxen-api = { group = "io.th0rgal", name = "oraxen", version = "1.171.0" }
placeholder-api = { group = "me.clip", name = "placeholderapi", version = "2.11.5" }
head-database-api = { group = "com.arcaniax", name = "HeadDatabase-API", version = "1.3.1" }
triumph_cmds = { module = "dev.triumphteam:triumph-cmd-bukkit", version = "2.0.0-SNAPSHOT" }
paperweight-userdev = { group = "io.papermc.paperweight.userdev", name = "io.papermc.paperweight.userdev.gradle.plugin", version = "1.5.11" }
publishing-modrinth = { group = "com.modrinth.minotaur", name = "Minotaur", version = "2.8.7" }
publishing-hangar = { group = "io.papermc", name = "hangar-publish-plugin", version = "0.1.2" }
config_me = { module = "ch.jalu:configme", version = "1.4.1" }
cluster-api = { group = "com.ryderbelserion.cluster", name = "api", version.ref = "cluster" }
cluster-paper = { group = "com.ryderbelserion.cluster", name = "paper", version.ref = "cluster" }
metrics = { module = "org.bstats:bstats-bukkit", version = "3.0.2" }
fancy-holograms = { group = "de.oliver", name = "FancyHolograms", version = "2.0.6" }
decent-holograms = { group = "com.github.decentsoftware-eu", name = "decentholograms", version = "2.8.6" }
itemsadder = { module = "com.github.LoneDev6:api-itemsadder", version = "3.6.1" }
oraxen = { module = "io.th0rgal:oraxen", version = "1.164.0" }
triumph-cmds = { group = "dev.triumphteam", name = "triumph-cmd-bukkit", version = "2.0.0-ALPHA-9" }
triumph-gui = { group = "dev.triumphteam", name = "triumph-gui", version = "3.1.7" }
holographicdisplays = { module = "me.filoghost.holographicdisplays:holographicdisplays-api", version = "3.0.0" }
decentholograms = { module = "com.github.decentsoftware-eu:decentholograms", version = "2.8.4" }
vault = { group = "com.github.MilkBowl", name = "VaultAPI", version = "1.7.1" }
metrics = { group = "org.bstats", name = "bstats-bukkit", version = "3.0.2" }
config-me = { group = "ch.jalu", name = "configme", version = "1.4.1" }
placeholderapi = { module = "me.clip:placeholderapi", version = "2.11.4" }
[bundles]
adventure = ["minimessage-api", "adventure-api"]
holograms = ["fancy-holograms", "decent-holograms"]
triumph = ["triumph-cmds", "triumph-gui"]

Binary file not shown.

View File

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME

View File

@ -1,127 +0,0 @@
import io.papermc.hangarpublishplugin.model.Platforms
plugins {
alias(libs.plugins.paperweight)
alias(libs.plugins.shadowjar)
alias(libs.plugins.modrinth)
alias(libs.plugins.runpaper)
alias(libs.plugins.hangar)
}
base {
archivesName = "${rootProject.name}"
}
dependencies {
implementation(libs.metrics)
compileOnly(libs.vault)
paperweightDevelopmentBundle("io.papermc.paper:dev-bundle:$minecraftVersion-R0.1-SNAPSHOT")
}
String type = isBeta ? "Beta" : "Release"
String description = """
## Fixes:
* Fix not being able to buy items
* Fix an issue where it would scream about tasks needing to be run sync
## Other:
* [Feature Requests](https://github.com/Crazy-Crew/${rootProject.name}/issues)
* [Bug Reports](https://github.com/Crazy-Crew/${rootProject.name}/issues)
"""
File file = project.layout.buildDirectory.file("libs/${rootProject.name}-${rootProject.version}.jar").get().asFile
tasks {
runServer {
// Publish to hangar.papermc.io.
hangarPublish {
publications.register("plugin") {
version.set("$rootProject.version")
id.set(rootProject.name)
channel.set(type)
changelog.set(description)
apiKey.set(System.getenv("hangar_key"))
platforms {
register(Platforms.PAPER) {
jar.set(file)
platformVersions.set(["$minecraftVersion"])
}
}
}
}
// Publish to modrinth.
modrinth {
setAutoAddDependsOn(false)
token.set(System.getenv("modrinth_token"))
projectId.set(rootProject.name.toLowerCase())
versionName.set("${rootProject.name} ${rootProject.version}")
versionNumber.set("${rootProject.version}")
versionType.set(type.toLowerCase())
uploadFile.set(file)
gameVersions.add(minecraftVersion)
changelog.set(description)
loaders.addAll("paper", "purpur")
}
jvmArgs("-Dnet.kyori.ansi.colorLevel=truecolor")
minecraftVersion(minecraftVersion)
}
assemble {
dependsOn(reobfJar)
}
shadowJar {
mergeServiceFiles()
exclude("META-INF/**")
List.of(
"org.bstats"
).forEach {
relocate(it, "libs.$it")
}
}
processResources {
Map<String, String> props = new HashMap<>()
props.put("name", rootProject.name)
props.put("version", "$rootProject.version")
props.put("group", "$project.group")
props.put("description", rootProject.description)
props.put("apiVersion", apiVersion)
props.put("authors", authors)
props.put("website", website)
inputs.properties(props)
filesMatching("plugin.yml") {
expand(props)
}
}
}

77
paper/build.gradle.kts Normal file
View File

@ -0,0 +1,77 @@
plugins {
`paper-plugin`
id("io.papermc.paperweight.userdev")
alias(libs.plugins.run.paper)
alias(libs.plugins.shadow)
}
repositories {
maven("https://repo.oraxen.com/releases/")
}
dependencies {
paperweight.paperDevBundle(libs.versions.bundle)
implementation(libs.metrics)
compileOnly(libs.placeholder.api)
compileOnly(libs.oraxen.api)
compileOnly(libs.vault)
compileOnly(fileTree("libs").include("*.jar"))
}
tasks {
assemble {
dependsOn(reobfJar)
}
runServer {
jvmArgs("-Dnet.kyori.ansi.colorLevel=truecolor")
defaultCharacterEncoding = Charsets.UTF_8.name()
downloadPlugins {
url("https://github.com/EssentialsX/Essentials/releases/download/2.20.1/EssentialsX-2.20.1.jar")
url("https://ci.lucko.me/job/TinyVault/lastSuccessfulBuild/artifact/build/libs/Vault.jar")
url("https://download.luckperms.net/1532/bukkit/loader/LuckPerms-Bukkit-5.4.119.jar")
}
minecraftVersion("1.20.4")
}
shadowJar {
listOf(
//"com.ryderbelserion.cluster",
//"dev.triumphteam.cmd",
//"dev.triumphteam.gui",
"org.bstats"
).forEach {
relocate(it, "libs.$it")
}
}
processResources {
val properties = hashMapOf(
"name" to rootProject.name,
"version" to project.version,
"group" to rootProject.group,
"description" to rootProject.description,
"apiVersion" to providers.gradleProperty("apiVersion").get(),
"authors" to providers.gradleProperty("authors").get(),
"website" to providers.gradleProperty("website").get()
)
inputs.properties(properties)
filesMatching("plugin.yml") {
expand(properties)
}
}
}

BIN
paper/libs/Cluster-6.5.jar Normal file

Binary file not shown.

View File

@ -122,6 +122,7 @@ unsupported-settings:
allow-headless-pistons: false
allow-permanent-block-break-exploits: false
allow-piston-duplication: false
allow-unsafe-end-portal-teleportation: false
compression-format: ZLIB
perform-username-validation: true
watchdog:

View File

@ -72,6 +72,9 @@ collisions:
fix-climbing-bypassing-cramming-rule: false
max-entity-collisions: 8
only-players-collide: false
command-blocks:
force-follow-perm-level: true
permissions-level: 2
entities:
armor-stands:
do-collision-entity-lookups: true
@ -196,6 +199,14 @@ entities:
underground_water_creature: -1
water_ambient: -1
water_creature: -1
ticks-per-spawn:
ambient: -1
axolotls: -1
creature: -1
monster: -1
underground_water_creature: -1
water_ambient: -1
water_creature: -1
wandering-trader:
spawn-chance-failure-increment: 25
spawn-chance-max: 75
@ -225,6 +236,8 @@ environment:
min: 20
enabled: true
generate-flat-bedrock: false
max-block-ticks: 65536
max-fluid-ticks: 65536
nether-ceiling-void-damage-height: disabled
optimize-explosions: false
portal-create-radius: 16
@ -299,4 +312,5 @@ tick-rates:
secondarypoisensor: 40
wet-farmland: 1
unsupported-settings:
disable-world-ticking-when-empty: false
fix-invulnerable-end-crystal-exploit: true

View File

@ -1,5 +1,5 @@
#Minecraft server properties
#Wed Dec 06 14:58:01 EST 2023
#Sun Mar 24 11:23:50 EDT 2024
enable-jmx-monitoring=false
rcon.port=25575
level-seed=
@ -32,6 +32,7 @@ allow-nether=false
server-port=25565
enable-rcon=false
sync-chunk-writes=false
resource-pack-id=
op-permission-level=4
prevent-proxy-connections=false
hide-online-players=false

View File

@ -59,6 +59,7 @@ players:
disable-saving: false
world-settings:
default:
seed-trialchambers: 94251327
below-zero-generation-in-existing-chunks: true
hanging-tick-frequency: 100
dragon-death-sound-radius: 0

View File

@ -43,145 +43,6 @@ public class Methods {
public static String removeColor(String msg) {
return ChatColor.stripColor(msg);
}
public static ItemStack makeItem(String type, int amount) {
int ty = 0;
if (type.contains(":")) {
String[] b = type.split(":");
type = b[0];
ty = Integer.parseInt(b[1]);
}
Material m = Material.matchMaterial(type);
ItemStack item;
try {
item = new ItemStack(m, amount, (short) ty);
} catch (Exception e) {
item = new ItemStack(Material.RED_TERRACOTTA);
}
return item;
}
public static ItemStack makeItem(String type, int amount, String name) {
int ty = 0;
if (type.contains(":")) {
String[] b = type.split(":");
type = b[0];
ty = Integer.parseInt(b[1]);
}
Material m = Material.matchMaterial(type);
ItemStack item;
try {
item = new ItemStack(m, amount, (short) ty);
} catch (Exception e) {
item = new ItemStack(Material.RED_TERRACOTTA);
}
ItemMeta me = item.getItemMeta();
me.setDisplayName(color(name));
item.setItemMeta(me);
return item;
}
public static ItemStack makeItem(String type, int amount, String name, List<String> lore) {
ArrayList<String> l = new ArrayList<>();
int ty = 0;
if (type.contains(":")) {
String[] b = type.split(":");
type = b[0];
ty = Integer.parseInt(b[1]);
}
Material m = Material.matchMaterial(type);
ItemStack item;
try {
item = new ItemStack(m, amount, (short) ty);
} catch (Exception e) {
item = new ItemStack(Material.RED_TERRACOTTA);
}
ItemMeta me = item.getItemMeta();
me.setDisplayName(color(name));
for (String L : lore) l.add(color(L));
me.setLore(l);
item.setItemMeta(me);
return item;
}
public static ItemStack makeItem(Material material, int amount, int type, String name) {
ItemStack item = new ItemStack(material, amount, (short) type);
ItemMeta m = item.getItemMeta();
m.setDisplayName(color(name));
item.setItemMeta(m);
return item;
}
public static ItemStack makeItem(Material material, int amount, int type, String name, List<String> lore) {
ArrayList<String> l = new ArrayList<>();
ItemStack item = new ItemStack(material, amount, (short) type);
ItemMeta m = item.getItemMeta();
m.setDisplayName(color(name));
for (String L : lore) l.add(color(L));
m.setLore(l);
item.setItemMeta(m);
return item;
}
public static ItemStack makeItem(Material material, int amount, int type, String name, List<String> lore, Map<Enchantment, Integer> enchants) {
ItemStack item = new ItemStack(material, amount, (short) type);
ItemMeta m = item.getItemMeta();
m.setDisplayName(name);
m.setLore(lore);
item.setItemMeta(m);
item.addUnsafeEnchantments(enchants);
return item;
}
public static ItemStack addLore(ItemStack item, String i) {
ArrayList<String> lore = new ArrayList<>();
ItemMeta m = item.getItemMeta();
if (item.getItemMeta().hasLore()) {
lore.addAll(item.getItemMeta().getLore());
}
lore.add(i);
m.setLore(lore);
item.setItemMeta(m);
return item;
}
public static ItemStack addLore(ItemStack item, List<String> list) {
if (item != null && item.getType() != Material.AIR) {
ArrayList<String> lore = new ArrayList<>();
ItemMeta m = item.getItemMeta();
if (item.hasItemMeta() && item.getItemMeta().hasLore()) {
lore.addAll(item.getItemMeta().getLore());
}
for (String i : list) lore.add(color(i));
m.setLore(lore);
item.setItemMeta(m);
}
return item;
}
public static ItemStack getItemInHand(Player player) {
return player.getInventory().getItemInMainHand();

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,7 @@ public enum ShopType {
/**
* @param name name of the Shop Type.
*/
private ShopType(String name) {
ShopType(String name) {
this.name = name;
}
@ -23,6 +23,7 @@ public enum ShopType {
return type;
}
}
return null;
}

View File

@ -1,6 +1,7 @@
package com.badbones69.crazyauctions.api.support;
import com.badbones69.crazyauctions.CrazyAuctions;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
public enum PluginSupport {
@ -15,8 +16,7 @@ public enum PluginSupport {
private final String name;
@NotNull
private final CrazyAuctions plugin = CrazyAuctions.get();
private final @NotNull CrazyAuctions plugin = JavaPlugin.getPlugin(CrazyAuctions.class);
PluginSupport(String name) {
this.name = name;

View File

@ -0,0 +1,189 @@
package com.badbones69.crazyauctions.api.support;
import com.badbones69.crazyauctions.CrazyAuctions;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Skull;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Base64;
import java.util.UUID;
/**
* A library for the Bukkit API to create player skulls
* from names, base64 strings, and texture URLs.
* Does not use any NMS code, and should work across all versions.
*
* @author Dean B on 12/28/2016.
*/
public class SkullCreator {
private static final @NotNull CrazyAuctions plugin = JavaPlugin.getPlugin(CrazyAuctions.class);
/**
* Creates a player skull with a UUID. 1.13 only.
*
* @param id The Player's UUID
* @return The head of the Player
*/
public static ItemStack itemFromUuid(UUID id) {
ItemStack item = getPlayerSkullItem();
return itemWithUuid(item, id);
}
/**
* Creates a player skull based on a UUID. 1.13 only.
*
* @param item The item to apply the name to
* @param id The Player's UUID
* @return The head of the Player
*/
public static ItemStack itemWithUuid(ItemStack item, UUID id) {
notNull(item, "item");
notNull(id, "id");
SkullMeta meta = (SkullMeta) item.getItemMeta();
meta.setOwningPlayer(plugin.getServer().getOfflinePlayer(id));
item.setItemMeta(meta);
return item;
}
/**
* Creates a player skull based on a Mojang server URL.
*
* @param url The URL of the Mojang skin
* @return The head associated with the URL
*/
public static ItemStack itemFromUrl(String url) {
ItemStack item = getPlayerSkullItem();
return itemWithUrl(item, url);
}
/**
* Creates a player skull based on a Mojang server URL.
*
* @param item The item to apply the skin to
* @param url The URL of the Mojang skin
* @return The head associated with the URL
*/
public static ItemStack itemWithUrl(ItemStack item, String url) {
notNull(item, "item");
notNull(url, "url");
return itemWithBase64(item, urlToBase64(url));
}
/**
* Creates a player skull based on a base64 string containing the link to the skin.
*
* @param base64 The base64 string containing the texture
* @return The head with a custom texture
*/
public static ItemStack itemFromBase64(String base64) {
ItemStack item = getPlayerSkullItem();
return itemWithBase64(item, base64);
}
/**
* Applies the base64 string to the ItemStack.
*
* @param item The ItemStack to put the base64 onto
* @param base64 The base64 string containing the texture
* @return The head with a custom texture
*/
public static ItemStack itemWithBase64(ItemStack item, String base64) {
notNull(item, "item");
notNull(base64, "base64");
UUID hashAsId = new UUID(base64.hashCode(), base64.hashCode());
return plugin.getServer().getUnsafe().modifyItemStack(item,
"{SkullOwner:{Id:\"" + hashAsId + "\",Properties:{textures:[{Value:\"" + base64 + "\"}]}}}"
);
}
/**
* Sets the block to a skull with the given UUID.
*
* @param block The block to set
* @param id The player to set it to
*/
public static void blockWithUuid(Block block, UUID id) {
notNull(block, "block");
notNull(id, "id");
setBlockType(block);
((Skull) block.getState()).setOwningPlayer(Bukkit.getOfflinePlayer(id));
}
/**
* Sets the block to a skull with the given UUID.
*
* @param block The block to set
* @param url The mojang URL to set it to use
*/
public static void blockWithUrl(Block block, String url) {
notNull(block, "block");
notNull(url, "url");
blockWithBase64(block, urlToBase64(url));
}
/**
* Sets the block to a skull with the given UUID.
*
* @param block The block to set
* @param base64 The base64 to set it to use
*/
public static void blockWithBase64(Block block, String base64) {
notNull(block, "block");
notNull(base64, "base64");
UUID hashAsId = new UUID(base64.hashCode(), base64.hashCode());
String args = String.format(
"%d %d %d %s",
block.getX(),
block.getY(),
block.getZ(),
"{Owner:{Id:\"" + hashAsId + "\",Properties:{textures:[{Value:\"" + base64 + "\"}]}}}"
);
plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), "data merge block " + args);
}
private static ItemStack getPlayerSkullItem() {
return new ItemStack(Material.PLAYER_HEAD);
}
private static void setBlockType(Block block) {
block.setType(Material.PLAYER_HEAD, false);
}
private static void notNull(Object instance, String name) {
if (instance == null) {
throw new NullPointerException(name + " should not be null!");
}
}
private static String urlToBase64(String url) {
URI actualUrl;
try {
actualUrl = new URI(url);
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
String toEncode = "{\"textures\":{\"SKIN\":{\"url\":\"" + actualUrl + "\"}}}";
return Base64.getEncoder().encodeToString(toEncode.getBytes());
}
}

View File

@ -346,11 +346,9 @@ public class AuctionCommand implements CommandExecutor {
}
}
for (String id : config.getStringList("Settings.BlackList")) {
if (item.getType() == Methods.makeItem(id, 1).getType()) {
player.sendMessage(Messages.ITEM_BLACKLISTED.getMessage());
return true;
}
if (config.getStringList("Settings.BlackList").contains(item.getType().getKey().getKey())) {
player.sendMessage(Messages.ITEM_BLACKLISTED.getMessage());
return true;
}
if (!config.getBoolean("Settings.Allow-Damaged-Items")) {

View File

@ -4,6 +4,7 @@ import com.badbones69.crazyauctions.CrazyAuctions;
import com.badbones69.crazyauctions.Methods;
import com.badbones69.crazyauctions.api.*;
import com.badbones69.crazyauctions.api.FileManager.Files;
import com.badbones69.crazyauctions.api.builders.ItemBuilder;
import com.badbones69.crazyauctions.api.enums.Category;
import com.badbones69.crazyauctions.api.enums.Reaons;
import com.badbones69.crazyauctions.api.enums.Messages;
@ -12,6 +13,7 @@ import com.badbones69.crazyauctions.api.events.AuctionBuyEvent;
import com.badbones69.crazyauctions.api.events.AuctionCancelledEvent;
import com.badbones69.crazyauctions.api.events.AuctionNewBidEvent;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.SoundCategory;
import org.bukkit.configuration.file.FileConfiguration;
@ -23,6 +25,7 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -70,7 +73,13 @@ public class GuiListener implements Listener {
for (String l : config.getStringList("Settings.GUISettings.Bidding")) {
lore.add(l.replace("%TopBid%", Methods.getPrice(i, false)).replace("%topbid%", Methods.getPrice(i, false)).replace("%Seller%", seller).replace("%seller%", seller).replace("%TopBidder%", topbidder).replace("%topbidder%", topbidder).replace("%Time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))).replace("%time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))));
}
items.add(Methods.addLore(data.getItemStack("Items." + i + ".Item").clone(), lore));
ItemBuilder itemBuilder = ItemBuilder.convertItemStack(data.getItemStack("Items." + i + ".Item"));
itemBuilder.setLore(lore);
items.add(itemBuilder.build());
ID.add(data.getInt("Items." + i + ".StoreID"));
}
} else {
@ -78,7 +87,15 @@ public class GuiListener implements Listener {
for (String l : config.getStringList("Settings.GUISettings.SellingItemLore")) {
lore.add(l.replace("%Price%", String.format(Locale.ENGLISH, "%,d", Long.parseLong(Methods.getPrice(i, false)))).replace("%price%", String.format(Locale.ENGLISH, "%,d", Long.parseLong(Methods.getPrice(i, false)))).replace("%Seller%", data.getString("Items." + i + ".Seller")).replace("%seller%", data.getString("Items." + i + ".Seller")).replace("%Time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))).replace("%time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))));
}
items.add(Methods.addLore(data.getItemStack("Items." + i + ".Item").clone(), lore));
ItemBuilder itemBuilder = ItemBuilder.convertItemStack(data.getItemStack("Items." + i + ".Item"));
if (itemBuilder.getUpdatedLore().isEmpty()) {
lore.forEach(itemBuilder::addLore);
}
items.add(itemBuilder.build());
ID.add(data.getInt("Items." + i + ".StoreID"));
}
}
@ -133,13 +150,16 @@ public class GuiListener implements Listener {
int slot = config.getInt("Settings.GUISettings.OtherSettings." + o + ".Slot");
String cName = Methods.color(config.getString("Settings.GUISettings.Category-Settings." + shopCategory.get(player.getUniqueId()).getName() + ".Name"));
ItemBuilder itemBuilder = new ItemBuilder().setMaterial(id).setName(name).setAmount(1);
if (config.contains("Settings.GUISettings.OtherSettings." + o + ".Lore")) {
for (String l : config.getStringList("Settings.GUISettings.OtherSettings." + o + ".Lore")) {
lore.add(l.replace("%Category%", cName).replace("%category%", cName));
}
inv.setItem(slot - 1, Methods.makeItem(id, 1, name, lore));
inv.setItem(slot - 1, itemBuilder.setLore(lore).build());
} else {
inv.setItem(slot - 1, Methods.makeItem(id, 1, name));
inv.setItem(slot - 1, itemBuilder.setLore(lore).build());
}
}
@ -181,11 +201,14 @@ public class GuiListener implements Listener {
String id = config.getString("Settings.GUISettings." + o + ".Item");
String name = config.getString("Settings.GUISettings." + o + ".Name");
int slot = config.getInt("Settings.GUISettings." + o + ".Slot");
ItemBuilder itemBuilder = new ItemBuilder().setMaterial(id).setName(name).setAmount(1);
if (config.contains("Settings.GUISettings." + o + ".Lore")) {
inv.setItem(slot - 1, Methods.makeItem(id, 1, name, config.getStringList("Settings.GUISettings." + o + ".Lore")));
} else {
inv.setItem(slot - 1, Methods.makeItem(id, 1, name));
itemBuilder.setLore(config.getStringList("Settings.GUISettings." + o + ".Lore"));
}
inv.setItem(slot - 1, itemBuilder.build());
}
shopType.put(player.getUniqueId(), shop);
@ -215,11 +238,14 @@ public class GuiListener implements Listener {
String id = config.getString("Settings.GUISettings.OtherSettings." + o + ".Item");
String name = config.getString("Settings.GUISettings.OtherSettings." + o + ".Name");
int slot = config.getInt("Settings.GUISettings.OtherSettings." + o + ".Slot");
ItemBuilder itemBuilder = new ItemBuilder().setMaterial(id).setName(name).setAmount(1);
if (config.contains("Settings.GUISettings.OtherSettings." + o + ".Lore")) {
inv.setItem(slot - 1, Methods.makeItem(id, 1, name, config.getStringList("Settings.GUISettings.OtherSettings." + o + ".Lore")));
} else {
inv.setItem(slot - 1, Methods.makeItem(id, 1, name));
itemBuilder.setLore(config.getStringList("Settings.GUISettings.OtherSettings." + o + ".Lore"));
}
inv.setItem(slot - 1, itemBuilder.build());
}
if (data.contains("Items")) {
@ -229,7 +255,13 @@ public class GuiListener implements Listener {
for (String l : config.getStringList("Settings.GUISettings.CurrentLore")) {
lore.add(l.replace("%Price%", Methods.getPrice(i, false)).replace("%price%", Methods.getPrice(i, false)).replace("%Time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))).replace("%time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))));
}
items.add(Methods.addLore(data.getItemStack("Items." + i + ".Item").clone(), lore));
ItemBuilder itemBuilder = ItemBuilder.convertItemStack(data.getItemStack("Items." + i + ".Item"));
lore.forEach(itemBuilder::addLore);
items.add(itemBuilder.build());
ID.add(data.getInt("Items." + i + ".StoreID"));
}
}
@ -260,7 +292,13 @@ public class GuiListener implements Listener {
for (String l : config.getStringList("Settings.GUISettings.Cancelled/ExpiredLore")) {
lore.add(l.replace("%Price%", Methods.getPrice(i, true)).replace("%price%", Methods.getPrice(i, true)).replace("%Time%", Methods.convertToTime(data.getLong("OutOfTime/Cancelled." + i + ".Full-Time"))).replace("%time%", Methods.convertToTime(data.getLong("OutOfTime/Cancelled." + i + ".Full-Time"))));
}
items.add(Methods.addLore(data.getItemStack("OutOfTime/Cancelled." + i + ".Item").clone(), lore));
ItemBuilder itemBuilder = ItemBuilder.convertItemStack(data.getItemStack("OutOfTime/Cancelled." + i + ".Item"));
lore.forEach(itemBuilder::addLore);
items.add(itemBuilder.build());
ID.add(data.getInt("OutOfTime/Cancelled." + i + ".StoreID"));
}
}
@ -289,11 +327,14 @@ public class GuiListener implements Listener {
String id = config.getString("Settings.GUISettings.OtherSettings." + o + ".Item");
String name = config.getString("Settings.GUISettings.OtherSettings." + o + ".Name");
int slot = config.getInt("Settings.GUISettings.OtherSettings." + o + ".Slot");
ItemBuilder itemBuilder = new ItemBuilder().setMaterial(id).setName(name).setAmount(1);
if (config.contains("Settings.GUISettings.OtherSettings." + o + ".Lore")) {
inv.setItem(slot - 1, Methods.makeItem(id, 1, name, config.getStringList("Settings.GUISettings.OtherSettings." + o + ".Lore")));
} else {
inv.setItem(slot - 1, Methods.makeItem(id, 1, name));
itemBuilder.setLore(config.getStringList("Settings.GUISettings.OtherSettings." + o + ".Lore"));
}
inv.setItem(slot - 1, itemBuilder.build());
}
for (ItemStack item : Methods.getPage(items, page)) {
@ -329,12 +370,14 @@ public class GuiListener implements Listener {
String name = config.getString("Settings.GUISettings.OtherSettings." + o + ".Name");
ItemStack item;
ItemBuilder itemBuilder = new ItemBuilder().setMaterial(id).setName(name).setAmount(1);
if (config.contains("Settings.GUISettings.OtherSettings." + o + ".Lore")) {
item = Methods.makeItem(id, 1, name, config.getStringList("Settings.GUISettings.OtherSettings." + o + ".Lore"));
} else {
item = Methods.makeItem(id, 1, name);
itemBuilder.setLore(config.getStringList("Settings.GUISettings.OtherSettings." + o + ".Lore")).build();
}
item = itemBuilder.build();
if (o.equals("Confirm")) {
inv.setItem(0, item);
inv.setItem(1, item);
@ -356,7 +399,12 @@ public class GuiListener implements Listener {
lore.add(l.replace("%Price%", Methods.getPrice(ID, false)).replace("%price%", Methods.getPrice(ID, false)).replace("%Seller%", data.getString("Items." + ID + ".Seller")).replace("%seller%", data.getString("Items." + ID + ".Seller")).replace("%Time%", Methods.convertToTime(data.getLong("Items." + l + ".Time-Till-Expire"))).replace("%time%", Methods.convertToTime(data.getLong("Items." + l + ".Time-Till-Expire"))));
}
inv.setItem(4, Methods.addLore(item.clone(), lore));
ItemBuilder itemBuilder = ItemBuilder.convertItemStack(item);
lore.forEach(itemBuilder::addLore);
inv.setItem(4, itemBuilder.build());
IDs.put(player.getUniqueId(), ID);
player.openInventory(inv);
}
@ -375,19 +423,21 @@ public class GuiListener implements Listener {
Inventory inv = plugin.getServer().createInventory(null, 27, Methods.color(config.getString("Settings.Bidding-On-Item")));
if (!bidding.containsKey(player.getUniqueId())) bidding.put(player.getUniqueId(), 0);
inv.setItem(9, Methods.makeItem("LIME_STAINED_GLASS_PANE", 1, "&a+1"));
inv.setItem(10, Methods.makeItem("LIME_STAINED_GLASS_PANE", 1, "&a+10"));
inv.setItem(11, Methods.makeItem("LIME_STAINED_GLASS_PANE", 1, "&a+100"));
inv.setItem(12, Methods.makeItem("LIME_STAINED_GLASS_PANE", 1, "&a+1000"));
inv.setItem(14, Methods.makeItem("RED_STAINED_GLASS_PANE", 1, "&c-1000"));
inv.setItem(15, Methods.makeItem("RED_STAINED_GLASS_PANE", 1, "&c-100"));
inv.setItem(16, Methods.makeItem("RED_STAINED_GLASS_PANE", 1, "&c-10"));
inv.setItem(17, Methods.makeItem("RED_STAINED_GLASS_PANE", 1, "&c-1"));
inv.setItem(9, new ItemBuilder().setMaterial(Material.LIME_STAINED_GLASS_PANE).setName("&a+1").setAmount(1).build());
inv.setItem(10, new ItemBuilder().setMaterial(Material.LIME_STAINED_GLASS_PANE).setName("&a+10").setAmount(1).build());
inv.setItem(11, new ItemBuilder().setMaterial(Material.LIME_STAINED_GLASS_PANE).setName("&a+100").setAmount(1).build());
inv.setItem(12, new ItemBuilder().setMaterial(Material.LIME_STAINED_GLASS_PANE).setName("&a+1000").setAmount(1).build());
inv.setItem(14, new ItemBuilder().setMaterial(Material.LIME_STAINED_GLASS_PANE).setName("&c-1000").setAmount(1).build());
inv.setItem(15, new ItemBuilder().setMaterial(Material.LIME_STAINED_GLASS_PANE).setName("&c-100").setAmount(1).build());
inv.setItem(16, new ItemBuilder().setMaterial(Material.LIME_STAINED_GLASS_PANE).setName("&c-10").setAmount(1).build());
inv.setItem(17, new ItemBuilder().setMaterial(Material.LIME_STAINED_GLASS_PANE).setName("&c-1").setAmount(1).build());
inv.setItem(13, getBiddingGlass(player, ID));
inv.setItem(22, Methods.makeItem(config.getString("Settings.GUISettings.OtherSettings.Bid.Item"), 1, config.getString("Settings.GUISettings.OtherSettings.Bid.Name"), config.getStringList("Settings.GUISettings.OtherSettings.Bid.Lore")));
inv.setItem(22, new ItemBuilder().setMaterial(config.getString("Settings.GUISettings.OtherSettings.Bid.Item")).setAmount(1)
.setName("Settings.GUISettings.OtherSettings.Bid.Name").setLore(config.getStringList("Settings.GUISettings.OtherSettings.Bid.Lore")).build());
inv.setItem(4, getBiddingItem(ID));
player.openInventory(inv);
}
@ -419,7 +469,13 @@ public class GuiListener implements Listener {
lore.add(l.replace("%Price%", Methods.getPrice(i, false)).replace("%price%", Methods.getPrice(i, false)).replace("%Seller%", data.getString("Items." + i + ".Seller")).replace("%seller%", data.getString("Items." + i + ".Seller")).replace("%Time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))).replace("%time%", Methods.convertToTime(data.getLong("Items." + i + ".Time-Till-Expire"))));
}
}
items.add(Methods.addLore(data.getItemStack("Items." + i + ".Item").clone(), lore));
ItemBuilder itemBuilder = ItemBuilder.convertItemStack(data.getItemStack("Items." + i + ".Item"));
lore.forEach(itemBuilder::addLore);
items.add(itemBuilder.build());
ID.add(data.getInt("Items." + i + ".StoreID"));
}
}
@ -444,11 +500,13 @@ public class GuiListener implements Listener {
String name = config.getString("Settings.GUISettings.OtherSettings." + o + ".Name");
int slot = config.getInt("Settings.GUISettings.OtherSettings." + o + ".Slot");
ItemBuilder itemBuilder = new ItemBuilder().setMaterial(id).setName(name).setAmount(1);
if (config.contains("Settings.GUISettings.OtherSettings." + o + ".Lore")) {
inv.setItem(slot - 1, Methods.makeItem(id, 1, name, config.getStringList("Settings.GUISettings.OtherSettings." + o + ".Lore")));
} else {
inv.setItem(slot - 1, Methods.makeItem(id, 1, name));
itemBuilder.setLore(config.getStringList("Settings.GUISettings.OtherSettings." + o + ".Lore"));
}
inv.setItem(slot - 1, itemBuilder.build());
}
for (ItemStack item : Methods.getPage(items, page)) {
@ -465,7 +523,8 @@ public class GuiListener implements Listener {
String id = config.getString("Settings.GUISettings.OtherSettings.Bidding.Item");
String name = config.getString("Settings.GUISettings.OtherSettings.Bidding.Name");
ItemStack item;
ItemBuilder itemBuilder = new ItemBuilder().setMaterial(id).setName(name).setAmount(1);
int bid = bidding.get(player.getUniqueId());
@ -474,12 +533,11 @@ public class GuiListener implements Listener {
for (String l : config.getStringList("Settings.GUISettings.OtherSettings.Bidding.Lore")) {
lore.add(l.replace("%Bid%", bid + "").replace("%bid%", bid + "").replace("%TopBid%", Methods.getPrice(ID, false)).replace("%topbid%", Methods.getPrice(ID, false)));
}
item = Methods.makeItem(id, 1, name, lore);
} else {
item = Methods.makeItem(id, 1, name);
itemBuilder.setLore(lore);
}
return item;
return itemBuilder.build();
}
private static ItemStack getBiddingItem(String ID) {
@ -494,7 +552,11 @@ public class GuiListener implements Listener {
lore.add(l.replace("%TopBid%", Methods.getPrice(ID, false)).replace("%topbid%", Methods.getPrice(ID, false)).replace("%Seller%", seller).replace("%seller%", seller).replace("%TopBidder%", topbidder).replace("%topbidder%", topbidder).replace("%Time%", Methods.convertToTime(data.getLong("Items." + ID + ".Time-Till-Expire"))).replace("%time%", Methods.convertToTime(data.getLong("Items." + ID + ".Time-Till-Expire"))));
}
return Methods.addLore(item.clone(), lore);
ItemBuilder itemBuilder = ItemBuilder.convertItemStack(item);
lore.forEach(itemBuilder::addLore);
return itemBuilder.build();
}
private static void playClick(Player player) {
@ -510,6 +572,16 @@ public class GuiListener implements Listener {
}
}
}
private void playSoldSound(@NotNull Player player) {
FileConfiguration config = Files.CONFIG.getFile();
String sound = config.getString("Settings.Sold-Item-Sound", "");
if (sound.isEmpty()) return;
try {
player.playSound(player.getLocation(), Sound.valueOf(sound), 1, 1);
} catch (Exception ignored) {}
}
@EventHandler
public void onInvClose(InventoryCloseEvent e) {
@ -757,17 +829,16 @@ public class GuiListener implements Listener {
final Runnable runnable = () -> inv.setItem(slot, item);
if (data.getString("Items." + i + ".Seller").equalsIgnoreCase(player.getName())) {
String it = config.getString("Settings.GUISettings.OtherSettings.Your-Item.Item");
String itemName = config.getString("Settings.GUISettings.OtherSettings.Your-Item.Item");
String name = config.getString("Settings.GUISettings.OtherSettings.Your-Item.Name");
ItemStack I;
ItemBuilder itemBuilder = new ItemBuilder().setMaterial(itemName).setName(name).setAmount(1);
if (config.contains("Settings.GUISettings.OtherSettings.Your-Item.Lore")) {
I = Methods.makeItem(it, 1, name, config.getStringList("Settings.GUISettings.OtherSettings.Your-Item.Lore"));
} else {
I = Methods.makeItem(it, 1, name);
itemBuilder.setLore(config.getStringList("Settings.GUISettings.OtherSettings.Your-Item.Lore"));
}
inv.setItem(slot, I);
inv.setItem(slot, itemBuilder.build());
playClick(player);
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, runnable, 3 * 20);
return;
@ -776,17 +847,16 @@ public class GuiListener implements Listener {
long cost = data.getLong("Items." + i + ".Price");
if (plugin.getSupport().getMoney(player) < cost) {
String it = config.getString("Settings.GUISettings.OtherSettings.Cant-Afford.Item");
String itemName = config.getString("Settings.GUISettings.OtherSettings.Cant-Afford.Item");
String name = config.getString("Settings.GUISettings.OtherSettings.Cant-Afford.Name");
ItemStack I;
ItemBuilder itemBuilder = new ItemBuilder().setMaterial(itemName).setName(name).setAmount(1);
if (config.contains("Settings.GUISettings.OtherSettings.Cant-Afford.Lore")) {
I = Methods.makeItem(it, 1, name, config.getStringList("Settings.GUISettings.OtherSettings.Cant-Afford.Lore"));
} else {
I = Methods.makeItem(it, 1, name);
itemBuilder.setLore(config.getStringList("Settings.GUISettings.OtherSettings.Cant-Afford.Lore"));
}
inv.setItem(slot, I);
inv.setItem(slot, itemBuilder.build());
playClick(player);
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, runnable, 3 * 20);
return;
@ -794,17 +864,16 @@ public class GuiListener implements Listener {
if (data.getBoolean("Items." + i + ".Biddable")) {
if (player.getName().equalsIgnoreCase(data.getString("Items." + i + ".TopBidder"))) {
String it = config.getString("Settings.GUISettings.OtherSettings.Top-Bidder.Item");
String itemName = config.getString("Settings.GUISettings.OtherSettings.Top-Bidder.Item");
String name = config.getString("Settings.GUISettings.OtherSettings.Top-Bidder.Name");
ItemStack I;
ItemBuilder itemBuilder = new ItemBuilder().setMaterial(itemName).setName(name).setAmount(1);
if (config.contains("Settings.GUISettings.OtherSettings.Top-Bidder.Lore")) {
I = Methods.makeItem(it, 1, name, config.getStringList("Settings.GUISettings.OtherSettings.Top-Bidder.Lore"));
} else {
I = Methods.makeItem(it, 1, name);
itemBuilder.setLore( config.getStringList("Settings.GUISettings.OtherSettings.Top-Bidder.Lore"));
}
inv.setItem(slot, I);
inv.setItem(slot, itemBuilder.build());
playClick(player);
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, runnable, 3 * 20);
return;
@ -889,6 +958,7 @@ public class GuiListener implements Listener {
if (Methods.isOnline(seller) && Methods.getPlayer(seller) != null) {
Player sell = Methods.getPlayer(seller);
sell.sendMessage(Messages.PLAYER_BOUGHT_ITEM.getMessage(placeholders));
playSoldSound(sell);
}
player.getInventory().addItem(i);

View File

@ -24,6 +24,7 @@ Settings:
Sounds:
Toggle: false #Disable the clicking sound.
Sound: 'CLICK' #Make sure if you use 1.8 or lower you use the 1.8 sound and 1.9 and up use 1.9 sounds. The default sound is 1.8.
Sold-Item-Sound: 'CLICK'
#Sounds are found here: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Sound.html
GUISettings: #Settings for things in the gui.
SellingItemLore: #The lore on items that are being sold.

View File

@ -1,5 +1,5 @@
name: '${name}'
main: '${group}.${name}'
main: '${group}.CrazyAuctions'
authors: ${authors}
@ -50,4 +50,4 @@ permissions:
children:
crazyauctions.test: true
crazyauctions.reload: true
crazyauctions.bypass: true
crazyauctions.bypass: true

View File

@ -1,13 +0,0 @@
pluginManagement {
repositories {
maven { url = 'https://repo.papermc.io/repository/maven-public/' }
gradlePluginPortal()
mavenCentral()
}
}
rootProject.name = 'CrazyAuctions'
include 'paper'

14
settings.gradle.kts Normal file
View File

@ -0,0 +1,14 @@
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
pluginManagement {
repositories {
maven("https://repo.papermc.io/repository/maven-public/")
gradlePluginPortal()
mavenCentral()
}
}
rootProject.name = "CrazyAuctions"
include(":paper")