diff --git a/.gitignore b/.gitignore
index d8a5b8f..6b38285 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
# User-specific stuff
server/
-.idea/
+# .idea/
.vscode/
.settings/
.factorypath
@@ -131,3 +131,5 @@ run/
/gradle/
resource_pack/raxen/assets/minecraft/
+
+.idea/codeStyles/codeStyleConfig.xml
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..f44e6dd
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,92 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+compiler.xml
+discord.xml
+gradle.xml
+codeStyles/codeStylesConfig.xml
+
+
+
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# AWS User-specific
+.idea/**/aws.xml
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn. Uncomment if using
+# auto-import.
+# .idea/artifacts
+# .idea/compiler.xml
+# .idea/jarRepositories.xml
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# SonarLint plugin
+.idea/sonarlint/
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..e458dba
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+raxen
\ No newline at end of file
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..0c26b77
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,581 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ xmlns:android
+
+ ^$
+
+
+
+
+
+
+
+
+ xmlns:.*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:id
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ style
+
+ ^$
+
+
+
+
+
+
+
+
+ .*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:.*Style
+
+ http://schemas.android.com/apk/res/android
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:layout_width
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:layout_height
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:layout_weight
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:layout_margin
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:layout_marginTop
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:layout_marginBottom
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:layout_marginStart
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:layout_marginEnd
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:layout_marginLeft
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:layout_marginRight
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:layout_.*
+
+ http://schemas.android.com/apk/res/android
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:padding
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:paddingTop
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:paddingBottom
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:paddingStart
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:paddingEnd
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:paddingLeft
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:paddingRight
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*
+ http://schemas.android.com/apk/res/android
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+ http://schemas.android.com/apk/res-auto
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+ http://schemas.android.com/tools
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+ .*
+
+
+ BY_NAME
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..6385772
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..acff71d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..edf799d
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.prettierrc.yml b/.prettierrc.yml
new file mode 100644
index 0000000..739f85c
--- /dev/null
+++ b/.prettierrc.yml
@@ -0,0 +1,10 @@
+# Prettier configuration
+overrides:
+ - files:
+ - "*.java"
+ options:
+ printWidth: 80
+ tabWidth: 4
+ useTabs: false
+ trailingComma: "none"
+ endOfLine: "lf"
\ No newline at end of file
diff --git a/.woodpecker.yml b/.woodpecker.yml
index 8c68956..ac6bb43 100644
--- a/.woodpecker.yml
+++ b/.woodpecker.yml
@@ -28,9 +28,10 @@ pipeline:
- api_key
commands:
- export PRERELEASE=true
+ - cd scripts
- chmod +x git_release.py
- pip install giteapy
- - python git_release.py --token "$API_KEY" --message "${DRONE_COMMIT_MESSAGE}" --prerelease $PRERELEASE --tag "${DRONE_TAG}"
+ - python git_release.py --token "$API_KEY" --message "${CI_COMMIT_MESSAGE}" --prerelease $PRERELEASE --tag "${CI_COMMIT_TAG}"
when:
event: tag
diff --git a/README.md b/README.md
index 17bb82c..1b913d2 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
-# Raxen [![Build Status](https://drone.unurled.me/api/badges/Elixium/Raxen/status.svg)](https://drone.unurled.me/Elixium/Raxen)
+# Raxen [![Build Status](https://ci.unurled.me/api/badges/Elixium/Raxen/status.svg)](https://drone.unurled.me/Elixium/Raxen)
+
Project made by unurled.
Minecraft Plugin that do multiple stuff. (cutsom items, custom mobs...)
@@ -13,14 +14,19 @@ Minecraft Plugin that do multiple stuff. (cutsom items, custom mobs...)
no build and no running info atm.
-to use custom texture for items, modify the custom data model => [Example](https://www.youtube.com/watch?v=XGxn_Mb8VzI)
+to use custom texture for items, modify the custom data
+model => [Example](https://www.youtube.com/watch?v=XGxn_Mb8VzI)
for more info contact me.
@unurled#0149\
or create an [issue](https://git.unurled.me/Elixium/Raxen/issues/new)
-custom Items uses custom model data to work => need to update in model/item/item.json [Example](https://github.com/elBukkit/MagicPlugin/wiki/ResourcePack#customizing)
+
+see [Examples](/Elixium/raxen/docs/examples) for some config examples
+model/item/item.json [Example](https://github.com/elBukkit/MagicPlugin/wiki/ResourcePack#customizing)
+custom Items uses custom model data to work => need to update in
## Developing
-you can see [TODO.md](/Elixium/raxen/src/branch/plugin/docs/TODO.md) in which I did a list of what we must do
\ No newline at end of file
+you can see [TODO.md](/Elixium/raxen/src/branch/plugin/docs/TODO.md) in which I did a list of what
+we must do
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index fd8b58b..c46931c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,6 +7,7 @@ plugins {
apply plugin: "java"
apply plugin: "io.papermc.paperweight.userdev"
+apply plugin: "com.github.johnrengelman.shadow"
repositories {
mavenLocal()
@@ -48,41 +49,48 @@ repositories {
maven {
url = "https://repo.onarandombox.com/content/groups/public/"
}
+ maven {
+ name = "Worldedit"
+ url = 'https://maven.enginehub.org/repo/'
+ }
mavenCentral()
}
dependencies {
// lombok stuff
- implementation 'org.projectlombok:lombok:1.18.24'
- annotationProcessor 'org.projectlombok:lombok:1.18.24'
- testCompileOnly 'org.projectlombok:lombok:1.18.24'
+ implementation 'org.projectlombok:lombok:1.18.26'
+ annotationProcessor 'org.projectlombok:lombok:1.18.26'
+ testCompileOnly 'org.projectlombok:lombok:1.18.26'
+
+ implementation 'org.apache.httpcomponents:httpclient:4.5.13'
+ implementation 'org.apache.httpcomponents:httpmime:4.5.13'
// mongo stuff
- implementation 'org.mongodb:mongodb-driver-sync:4.7.2'
- implementation 'org.mongodb:bson:4.7.2'
- implementation 'org.mongodb:mongodb-driver-core:4.7.2'
+ implementation 'org.mongodb:mongodb-driver-sync:4.9.1'
+ implementation 'org.mongodb:bson:4.9.1'
+ implementation 'org.mongodb:mongodb-driver-core:4.9.1'
+
+ implementation 'redis.clients:jedis:4.3.1'
compileOnly 'io.papermc.paper:paper-api:1.19.4-R0.1-SNAPSHOT'
implementation 'de.tr7zw:item-nbt-api-plugin:2.11.2'
// compileOnly 'de.tr7zw:item-nbt-api:2.11.2'
- compileOnly 'com.comphenix.protocol:ProtocolLib:4.8.0'
- compileOnly 'net.luckperms:api:5.4'
+ compileOnly 'com.comphenix.protocol:ProtocolLib:5.0.0'
compileOnly 'com.github.MilkBowl:VaultAPI:1.7.1'
compileOnly 'net.essentialsx:EssentialsX:2.19.7'
- //compileOnly 'com.fastasyncworldedit:FastAsyncWorldEdit-Core:2.3.0'
- //compileOnly 'com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit:2.3.0'
- compileOnly 'me.clip:placeholderapi:2.11.2'
+ compileOnly 'com.sk89q.worldedit:worldedit-core:7.2.14'
+ compileOnly 'com.sk89q.worldedit:worldedit-bukkit:7.2.14'
+ compileOnly 'me.clip:placeholderapi:2.11.3'
compileOnly('net.citizensnpcs:citizens-main:2.0.31-SNAPSHOT') {
exclude group: '*', module: '*'
}
compileOnly 'com.onarandombox.multiversecore:Multiverse-Core:4.3.1'
-// compileOnly 'me.filoghost.holographicdisplays:holographicdisplays-api:3.0.1'
-// compileOnly fileTree(dir: 'libs', include: '*.jar')
+ implementation 'com.github.decentsoftware-eu:decentholograms:2.8.1'
paperweightDevelopmentBundle("io.papermc.paper:dev-bundle:1.19.4-R0.1-SNAPSHOT")
}
group = 'me.unurled'
-version = '0.5.7'
+version = '0.6.0'
description = 'Raxen'
java {
@@ -91,19 +99,10 @@ java {
}
}
-publishing {
- publications {
- maven(MavenPublication) {
- from(components.java)
- }
- }
-}
-
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
options.release = 17
options.compilerArgs += ["-Xlint:unchecked", "-Xlint:deprecation"]
-
}
tasks {
@@ -119,16 +118,34 @@ shadowJar {
dependencies {
include dependency('de.tr7zw:item-nbt-api-plugin:2.11.2')
include dependency('de.tr7zw:item-nbt-api:2.11.2')
- include dependency('org.mongodb:mongodb-driver-sync:4.7.2')
- include dependency('org.mongodb:bson:4.7.2')
- include dependency('org.mongodb:mongodb-driver-core:4.7.2')
+ include dependency('org.mongodb:mongodb-driver-sync:4.9.1')
+ include dependency('org.mongodb:bson:4.9.1')
+ include dependency('org.mongodb:mongodb-driver-core:4.9.1')
+ include dependency('com.github.decentsoftware-eu:decentholograms:2.8.1')
+ include dependency('org.apache.httpcomponents:httpclient:4.5.13')
+ include dependency('org.apache.httpcomponents:httpmime:4.5.13')
+ include dependency('redis.clients:jedis:4.3.1')
}
relocate("de.tr7zw", "me.unurled.libs.de.tr7zw")
relocate("com.mongodb", 'me.unurled.libs.com.mongodb')
relocate("org.bson", 'me.unurled.libs.org.bson')
+ relocate('eu.decentsoftware', 'me.unurled.libs.eu.decentsoftware')
+ relocate('org.apache', 'me.unurled.libs.org.apache')
+ relocate('redis.clients', 'me.unurled.libs.redis.clients')
processResources {
expand version: project.version
}
minimize()
}
+sourceSets {
+ main {
+ resources {
+ srcDirs = ['src/main/resources']
+ }
+ }
+}
+
+processResources {
+ exclude '**/*.schem'
+}
\ No newline at end of file
diff --git a/docs/FUTURE.md b/docs/FUTURE.md
index e372ada..616582a 100644
--- a/docs/FUTURE.md
+++ b/docs/FUTURE.md
@@ -9,18 +9,25 @@ Some RPG thing :
- Raxen must do :
- some survival and RPG(Class) thing
- need some sort of action => pve, pvp maybe ?
- - need custom mobs => some are made => not definitive need more => ~~juste made the damage system and persistentdatacontainer on entities outside of Player, might consider to switch to persistentdatacontainer on player instead of having an hashmap (ProfileManager.java)~~ already done
+ - need custom mobs => some are made => not definitive need more => ~~juste made the damage
+ system and persistentdatacontainer on entities outside of Player, might consider to switch to
+ persistentdatacontainer on player instead of having an hashmap (ProfileManager.java)~~ already
+ done
- need custom items => partialy made => need custom resource pack support
- can use custom texture pack => in making
- protection and logging feature => coreprotect
- - solo leveling inspired thing with player being mc of his onw world, can do side quest with every1, and can make a party to play, max of 4?:
+ - solo leveling inspired thing with player being mc of his onw world, can do side quest with
+ every1, and can make a party to play, max of 4?, more player means more difficulty:
- Gates:
- power: ranked from F, E, D, C, B, A, S, SS, SSS, world, unbeatable and so on
- Dungunes:
- - differents types => labirynth, graves,abandoned castle, openfiled like jungles, forest, plains => all of them with night variant and many days to complete
+ - differents types => labirynth, graves,abandoned castle, openfiled like jungles,
+ forest, plains => all of them with night variant and many days to complete
- Monster:
- - basic isekai manga sort of monster and also high leveled op monster king of something => bosses
+ - basic isekai manga sort of monster and also high leveled op monster king of
+ something => bosses
- outbreak if gate isn't closed in time
- loots:
- - items of different rarities with multiple purpose => medicinal, combat related types, defensive etc...
+ - items of different rarities with multiple purpose => medicinal, combat related
+ types, defensive etc...
- leveling system for the player
\ No newline at end of file
diff --git a/docs/TODO.md b/docs/TODO.md
index d9480d7..0205832 100644
--- a/docs/TODO.md
+++ b/docs/TODO.md
@@ -1,8 +1,42 @@
-- [x] refactor all abilities to make them compatible between entities and also making it easier to add them.
-- [ ] make custom items (hard coded)
-- [ ] make custom class (hard coded)
-- [ ] make custom abilities (hard coded)
-- [ ] make custom mods (hard coded)
-- [ ] make gates
-- [ ] a map
-- [ ] a leveling system
\ No newline at end of file
+- [x] refactor all abilities to make them compatible between entities and also making it easier to
+ add them.
+- [ ] make custom items (hard coded) / or all in db/json in Raxen plugin folder (like a serialized
+ version of it)
+- [ ] custom items effects (hard coded) / or all in db/json in Raxen plugin (have some sort of
+ serliazed
+ version of it)
+- [ ] make custom class (hard coded) / or all in db/json in Raxen plugin (have some sort of
+ serliazed
+ version of it)
+- [ ] make custom abilities/skills (hard coded) / or all in db/json in Raxen plugin (can't have a
+ separate
+ file, must be in java files)
+- [ ] make custom mods (hard coded) / or all in db/json in Raxen plugin (can have some of the infos
+ in db/json but not all)
+- [ ] make gates (appears randomly in the world)
+- [ ] a map (more wynncrafty than hypixel + dynnmap/bettermap)
+- [ ] a leveling system
+- [ ] spells (hard coded)
+- [-] party
+- [ ] boss monster
+- [ ] guilds
+- [ ] quests (hard coded) and db/json
+- [ ] filter chat
+- [ ] resource pack (host, upload, compress)
+
+## tests
+
+- [ ] party
+- [ ] combat
+- [ ] class
+- [ ] items
+- [ ] item effects
+- [ ] mobs
+- [ ] skills
+- [ ] abilities
+- [ ] gates
+- [ ] leveling system
+- [ ] spells
+- [ ] boss monster
+- [ ] quests
+- [ ] filter chat
diff --git a/docs/examples/Effects.md b/docs/examples/Effects.md
new file mode 100644
index 0000000..dc36f42
--- /dev/null
+++ b/docs/examples/Effects.md
@@ -0,0 +1,17 @@
+# Effects
+
+### Simple Effects
+
+this is an example of a simple effect, it will spawn an armor stand with an item in its hand, for 1
+duration then will change to the second item, after 4 delay it will remove the armor stand
+
+```yaml
+testEffect:
+ type: armor_stand
+ Pose:
+ RightArm: 0, 0, 0
+ effects:
+ - item=testItem_1:0;delay=0;duration=1
+ - item=testItem_2:0;delay=3;duration=1
+ - remove;delay=4
+```
\ No newline at end of file
diff --git a/docs/examples/Glyphs.md b/docs/examples/Glyphs.md
new file mode 100644
index 0000000..8944b2c
--- /dev/null
+++ b/docs/examples/Glyphs.md
@@ -0,0 +1,12 @@
+# Glyphs
+
+this is an example of a simple glyph
+
+```yaml
+testGlyph:
+ Pack:
+ model: raxen/testGlyph
+ texture: raxen/testGlyph
+ char: "\uE000"
+ placeholder: ":test:"
+```
\ No newline at end of file
diff --git a/docs/examples/Items.md b/docs/examples/Items.md
new file mode 100644
index 0000000..cdc1d5c
--- /dev/null
+++ b/docs/examples/Items.md
@@ -0,0 +1,21 @@
+# Items
+
+## Simple Item
+
+see an example of a simple item
+
+```yaml
+testItem:
+ Pack:
+ custom_model_data: 1
+ model: raxen/testItem
+ display_name: 'Test Item'
+ material: DIAMOND
+ lore:
+ - 'Test Item'
+ - 'Custom Model Data: 1'
+ enchantments:
+ - 'DURABILITY:1'
+ effect:
+ - 'testEffect'
+```
\ No newline at end of file
diff --git a/docs/examples/Mobs.md b/docs/examples/Mobs.md
new file mode 100644
index 0000000..fc4ed28
--- /dev/null
+++ b/docs/examples/Mobs.md
@@ -0,0 +1,32 @@
+# Mobs
+
+```yaml
+testMob:
+ type: ZOMBIE
+ display_name: "Test Mob"
+ health: 20
+ speed: 100
+ damage_min: 1
+ damage_max: 2
+ options:
+ show_health: true
+ persistent: true
+ despawn: true
+ prevent_other_drops: true
+ slient: true
+ prevent_sunburn: true
+ AI:
+ target:
+ - "NONE"
+ - "PLAYER"
+ goal:
+ - "NONE"
+ - "MOVE_TO_TARGET"
+ - "ATTACK_TARGET"
+ effect:
+ - model=testModel ~spawn
+ - sound=raxen:raxen.testSound;volume=1.0;pitch=1.0 ~timer:140 0.35
+ - sound=raxen:raxen.testSoundDeath;volume=1.0;pitch=1.0 ~death
+ - skill=testSkillDamage ~damaged
+ - skill=
+```
\ No newline at end of file
diff --git a/docs/examples/README.md b/docs/examples/README.md
new file mode 100644
index 0000000..158181d
--- /dev/null
+++ b/docs/examples/README.md
@@ -0,0 +1,10 @@
+# Exemples
+
+see all the exemples in this folder :
+
+to create any of the following, create a new file in the folder type of your choice (e.g. `
+plugins/Raxen/items/exampleItem.yml`)
+
+- [Effects.md](/Elixium/raxen/src/branch/plugin/docs/examples/Effects.md)
+- [Items.md](/Elixium/raxen/src/branch/plugin/docs/examples/Items.md)
+- [Mobs.md](/Elixium/raxen/src/branch/plugin/docs/examples/Mobs.md)
\ No newline at end of file
diff --git a/scripts/.gitignore b/scripts/.gitignore
new file mode 100644
index 0000000..0901dc0
--- /dev/null
+++ b/scripts/.gitignore
@@ -0,0 +1,3 @@
+node_modules/
+main.js
+package-lock.json
\ No newline at end of file
diff --git a/git_release.py b/scripts/git_release.py
similarity index 93%
rename from git_release.py
rename to scripts/git_release.py
index 38aa546..388c492 100644
--- a/git_release.py
+++ b/scripts/git_release.py
@@ -23,10 +23,10 @@ owner = "Elixium"
repo = "Raxen"
body = giteapy.CreateReleaseOption(body=doc['message'], draft=False, name=doc['tag'], prerelease=doc['prerelease'], tag_name=doc['tag'], target_commitish="string")
attachments = []
-for file in os.listdir(os.getcwd() +"/build/libs"):
+for file in os.listdir(os.getcwd() +"../build/libs"):
if file.endswith('.jar'):
if file.startswith('raxen'):
- attachments.append(os.getcwd() + '/build/libs/' + file)
+ attachments.append(os.getcwd() + '../build/libs/' + file)
print(attachments)
attachment1 = attachments[0]
attachment2 = attachments[1]
diff --git a/scripts/main.ts b/scripts/main.ts
new file mode 100644
index 0000000..6c8eb03
--- /dev/null
+++ b/scripts/main.ts
@@ -0,0 +1,56 @@
+import { giteaApi, CreatePullReviewOptions } from 'gitea-js';
+import fetch from 'cross-fetch'; // You have to use a fetch compatible polyfill like cross-fetch for Node.JS
+import fs = require('fs');
+import path = require('path');
+
+const api = giteaApi('https://git.unurled.me', {
+ token: process.env.TOKEN,
+ customFetch: fetch,
+});
+
+const todo: { [file: string]: string[]} = {};
+
+function searchTodo(file: string): void {
+ let compteur = 0;
+ const lines: string[] = fs.readFileSync(file, 'utf-8').split('\n');
+ for (const line of lines) {
+ compteur += 1;
+ if (line.match(/[\S\s]*\btodo\b/i)) {
+ if (file in todo) {
+ todo[file].push(line.trim() + " (line " + compteur + ")");
+ } else {
+ todo[file] = [line.trim() + " (line " + compteur + ")"];
+ }
+ }
+ }
+
+}
+
+function searchTodoInDir(dir: string): void {
+ fs.readdirSync(dir).forEach(file => {
+ const filePath = path.join(dir, file);
+ if (fs.statSync(filePath).isDirectory()) {
+ searchTodoInDir(filePath);
+ }
+ if (file.endsWith(".java")) {
+ searchTodo(filePath);
+ }
+ });
+}
+
+function searchTodoInProject(): void {
+ const pwd = path.dirname(path.dirname(path.resolve(__filename)));
+ searchTodoInDir(path.join(pwd, "src/main/java/me/unurled/raxen"));
+}
+
+searchTodoInProject();
+
+console.log();
+const index: number = Number.parseInt(process.env.CI_COMMIT_PULL_REQUEST);
+const body: CreatePullReviewOptions = {
+ body: "# TODO that needs to be done by next big release :\n```json\n" + JSON.stringify(todo, null, "\t") + "\n```",
+ commit_id: process.env.CI_COMMIT_SHA,
+};
+
+const pr_review = api.repos.repoCreatePullReview(process.env.CI_REPO_OWNER, process.env.CI_REPO_NAME, index, body, {});
+pr_review.then(res => console.log(res)).catch(err => console.log(err));
diff --git a/scripts/package.json b/scripts/package.json
new file mode 100644
index 0000000..8c9836b
--- /dev/null
+++ b/scripts/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "scripts",
+ "version": "1.0.0",
+ "description": "a script for pull request comment",
+ "main": "main.js",
+ "author": "unurled",
+ "license": "MIT",
+ "scripts": {
+ "build": "tsc",
+ "start": "node main.js"
+ },
+ "dependencies": {
+ "cross-fetch": "^3.1.5",
+ "gitea-js": "^1.19.1"
+ },
+ "devDependencies": {
+ "@types/node": "^18.16.0",
+ "typescript": "^5.0.4"
+ }
+}
diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json
new file mode 100644
index 0000000..bd562e9
--- /dev/null
+++ b/scripts/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "compilerOptions": {
+ "module": "CommonJS"
+ },
+ "files": [
+ "main.ts"
+ ]
+}
\ No newline at end of file
diff --git a/src/main/java/me/unurled/raxen/Raxen.java b/src/main/java/me/unurled/raxen/Raxen.java
index 1335948..5a8264f 100644
--- a/src/main/java/me/unurled/raxen/Raxen.java
+++ b/src/main/java/me/unurled/raxen/Raxen.java
@@ -16,153 +16,167 @@ import org.bukkit.plugin.java.JavaPlugin;
public final class Raxen extends JavaPlugin {
- private static final String prefix =
- "Rx> ";
+ private static final String prefix =
+ "Rx> ";
- @Getter
- private static String version = "0.5.7";
+ @Getter
+ private static String version = "0.6.0";
- private boolean loading = true;
- private final PluginManager pm = getServer().getPluginManager();
+ private boolean loading = true;
+ private final PluginManager pm = getServer().getPluginManager();
- private static Raxen plugin;
+ private static Raxen plugin;
- private static Logger logger;
+ private static Logger logger;
- private static Config config;
+ private static Config config;
- private static PlayerConfig playerConfig;
+ private static PlayerConfig playerConfig;
- @Getter
- private ProtocolManager protocolManager;
+ @Getter
+ private ProtocolManager protocolManager;
- @Getter
- private Manager manager;
+ @Getter
+ private Manager manager;
- /**
- * Method when the server launch the plugin.
- */
- @Override
- public void onEnable() {
- plugin = this;
- logger = getLogger();
+ /**
+ * Method when the server launch the plugin.
+ */
+ @Override
+ public void onEnable() {
+ plugin = this;
+ logger = getLogger();
- version = this.getPluginMeta().getVersion();
+ version = this.getPluginMeta().getVersion();
- manager = new Manager();
- manager.set(plugin);
+ manager = new Manager();
+ manager.set(plugin);
- // Config
- config = new Config(plugin);
+ // Config
+ config = new Config(plugin);
- protocolManager = ProtocolLibrary.getProtocolManager();
+ protocolManager = ProtocolLibrary.getProtocolManager();
- playerConfig = new PlayerConfig(plugin);
+ playerConfig = new PlayerConfig(plugin);
- //register Commands and Events
- registerCommands();
- registerEvents();
+ //register Commands and Events
+ registerCommands();
+ registerEvents();
- Bukkit
- .getConsoleSender()
- .sendMessage(
- colorComp(prefix + "Server Started Successfully!")
- );
+ Bukkit
+ .getConsoleSender()
+ .sendMessage(
+ colorComp(
+ prefix + "Server Started Successfully!"
+ )
+ );
- manager.getListenerManager().getServerPingEvent().setLoading(false);
- loading = false;
- }
-
- /**
- * register the command in the command manager class.
- */
- private void registerCommands() {
- manager.getCommandManager().register();
-
- Bukkit
- .getConsoleSender()
- .sendMessage(colorComp(prefix + "Commands Registered!"));
- }
-
- /**
- * register the events in the event manager class.
- */
- private void registerEvents() {
- manager.getListenerManager().register();
-
- Bukkit
- .getConsoleSender()
- .sendMessage(colorComp(prefix + "Events Registered!"));
- }
-
- /**
- * Method when the server stops the plugin.
- */
- @Override
- public void onDisable() {
- if (!loading) {
- manager.getListenerManager().getServerPingEvent().setLoading(true);
- Reload.kickAll();
-
- playerConfig.close();
+ manager.getListenerManager().getServerPingEvent().setLoading(false);
+ loading = false;
}
- Bukkit
- .getConsoleSender()
- .sendMessage(
- colorComp(prefix + "Server Stopped Successfully!")
- );
- }
+ /**
+ * register the command in the command manager class.
+ */
+ private void registerCommands() {
+ manager.getCommandManager().register();
- /**
- * getter for the logger
- * @return the plugin logger
- */
- public Logger getPluginLogger() {
- return logger;
- }
+ Bukkit
+ .getConsoleSender()
+ .sendMessage(
+ colorComp(prefix + "Commands Registered!")
+ );
+ }
- /**
- * getter for the bukkit's plugin manager
- * @return plugin manager
- */
- public PluginManager getPm() {
- return pm;
- }
+ /**
+ * register the events in the event manager class.
+ */
+ private void registerEvents() {
+ manager.getListenerManager().register();
- /**
- * return the instance which is launched.
- * @return main instance
- */
- public Raxen getPlugin() {
- return plugin;
- }
+ Bukkit
+ .getConsoleSender()
+ .sendMessage(
+ colorComp(prefix + "Events Registered!")
+ );
+ }
- /**
- * getter for the raxen prefix
- * @return string prefix
- */
- public static String getPrefix() {
- return prefix;
- }
+ /**
+ * Method when the server stops the plugin.
+ */
+ @Override
+ public void onDisable() {
+ if (!loading) {
+ manager.getListenerManager().getServerPingEvent().setLoading(true);
+ Reload.kickAll();
- /**
- * getter for the yml's player configs.
- * @return player config instance
- */
- public PlayerConfig getPlayerConfig() {
- return playerConfig;
- }
+ playerConfig.close();
+ }
- /**
- * getter for an instance of the config utility class
- * @return raxen's config
- */
- public Config getConf() {
- return config;
- }
+ // save tutorial state
- public void disable() {
- this.setEnabled(false);
- }
+ Bukkit
+ .getConsoleSender()
+ .sendMessage(
+ colorComp(prefix + "Server Stopped Successfully!")
+ );
+ }
+
+ /**
+ * getter for the logger
+ *
+ * @return the plugin logger
+ */
+ public Logger getPluginLogger() {
+ return logger;
+ }
+
+ /**
+ * getter for the bukkit's plugin manager
+ *
+ * @return plugin manager
+ */
+ public PluginManager getPm() {
+ return pm;
+ }
+
+ /**
+ * return the instance which is launched.
+ *
+ * @return main instance
+ */
+ public Raxen getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * getter for the raxen prefix
+ *
+ * @return string prefix
+ */
+ public static String getPrefix() {
+ return prefix;
+ }
+
+ /**
+ * getter for the yml's player configs.
+ *
+ * @return player config instance
+ */
+ public PlayerConfig getPlayerConfig() {
+ return playerConfig;
+ }
+
+ /**
+ * getter for an instance of the config utility class
+ *
+ * @return raxen's config
+ */
+ public Config getConf() {
+ return config;
+ }
+
+ public void disable() {
+ this.setEnabled(false);
+ }
}
diff --git a/src/main/java/me/unurled/raxen/commands/RaxenCommand.java b/src/main/java/me/unurled/raxen/commands/RaxenCommand.java
index b12bb22..ff6494c 100644
--- a/src/main/java/me/unurled/raxen/commands/RaxenCommand.java
+++ b/src/main/java/me/unurled/raxen/commands/RaxenCommand.java
@@ -1,6 +1,12 @@
package me.unurled.raxen.commands;
-import static me.unurled.raxen.utils.Utils.*;
+import static me.unurled.raxen.utils.Utils.colorComp;
+import static me.unurled.raxen.utils.Utils.colorTextComp;
+import static me.unurled.raxen.utils.Utils.coloredString;
+import static me.unurled.raxen.utils.Utils.debug;
+import static me.unurled.raxen.utils.Utils.msgPlayer;
+import static me.unurled.raxen.utils.Utils.msgSender;
+import static me.unurled.raxen.utils.Utils.stringToComp;
import java.util.List;
import me.unurled.raxen.Raxen;
@@ -16,207 +22,220 @@ import org.jetbrains.annotations.Nullable;
public class RaxenCommand implements TabExecutor {
- private Raxen main;
+ private Raxen main;
- public RaxenCommand(Raxen main) {
- this.main = main;
- }
+ public RaxenCommand(Raxen main) {
+ this.main = main;
+ }
- @Override
- public boolean onCommand(
- @NotNull CommandSender sender,
- @NotNull Command cmd,
- @NotNull String msg,
- @NotNull String[] args
- ) {
- if (sender instanceof Player) {
- Player player = (Player) sender;
- if (!(player.hasPermission("raxen."))) {
- msgPlayer(
- player,
- coloredString(Raxen.getPrefix()) +
- colorTextComp(
- "You can't execute this command. Insufficient permission."
- )
- );
- }
- switch (args.length) {
- case 0 -> msgPl(player, 0);
- case 1 -> {
- switch (args[0]) {
- case "mongodb", "mongo", "MONGODB", "MONGO" -> {
- //print info about connection
- sender.sendMessage(
- stringToComp(
- Raxen.getPrefix() +
- colorTextComp(
- "Printing About Raxen's MongoDB connection..."
- )
- )
- );
- msgPlayer(
- player,
- coloredString(Raxen.getPrefix()) +
- colorTextComp(
- "---------------------------------------------"
- )
- );
- msgPlayer(player, colorTextComp("MONGO DB"));
- msgPlayer(
- player,
- StorageManager
- .getMongodb()
- .getMongoClient()
- .getClusterDescription()
- .toString()
- );
- msgPlayer(
- player,
- StorageManager.getMongodb().getMongoDatabase().getName()
- );
- msgPlayer(
- player,
- StorageManager
- .getMongodb()
- .getMongoCollection()
- .getNamespace()
- .toString()
- );
- msgPlayer(
- player,
- "---------------------------------------------"
- );
+ @Override
+ public boolean onCommand(
+ @NotNull CommandSender sender,
+ @NotNull Command cmd,
+ @NotNull String msg,
+ @NotNull String[] args
+ ) {
+ if (sender instanceof Player) {
+ Player player = (Player) sender;
+ if (!(player.hasPermission("raxen."))) {
+ msgPlayer(
+ player,
+ coloredString(Raxen.getPrefix()) +
+ colorTextComp(
+ "You can't execute this command. Insufficient permission."
+ )
+ );
}
- case "v", "version", "ver" -> {
- msgPlayer(player, Raxen.getVersion());
+ switch (args.length) {
+ case 0 -> msgPl(player, 0);
+ case 1 -> {
+ switch (args[0]) {
+ case "mongodb", "mongo", "MONGODB", "MONGO" -> {
+ //print info about connection
+ sender.sendMessage(
+ stringToComp(
+ Raxen.getPrefix() +
+ colorTextComp(
+ "Printing About Raxen's MongoDB connection..."
+ )
+ )
+ );
+ msgPlayer(
+ player,
+ coloredString(Raxen.getPrefix()) +
+ colorTextComp(
+ "---------------------------------------------"
+ )
+ );
+ msgPlayer(
+ player,
+ colorTextComp("MONGO DB")
+ );
+ msgPlayer(
+ player,
+ StorageManager
+ .getMongodb()
+ .getMongoClient()
+ .getClusterDescription()
+ .toString()
+ );
+ msgPlayer(
+ player,
+ StorageManager
+ .getMongodb()
+ .getMongoDatabase()
+ .getName()
+ );
+ msgPlayer(
+ player,
+ StorageManager
+ .getMongodb()
+ .getMongoCollection()
+ .getNamespace()
+ .toString()
+ );
+ msgPlayer(
+ player,
+ "---------------------------------------------"
+ );
+ }
+ case "v", "version", "ver" -> {
+ msgPlayer(player, Raxen.getVersion());
+ }
+ case "hemlp", "?", "h" -> {
+ //print help
+ }
+ }
+ }
}
- case "hemlp", "?", "h" -> {
- //print help
+ } else {
+ switch (args.length) {
+ case 0 -> {
+ msgSender(
+ sender,
+ Raxen.getPrefix() + "Printing About Raxen...",
+ "---------------------------------------------",
+ " Raxen ",
+ " - Version: " + Raxen.getVersion(),
+ " - Author: Unurled"
+ );
+ TextComponent txt = colorTextComp(
+ " - Website: https://unurled.me"
+ );
+ sender.sendMessage(txt);
+ sender.sendMessage(
+ colorComp(
+ "---------------------------------------------"
+ )
+ );
+ return true;
+ }
+ case 1 -> {
+ switch (args[0]) {
+ case "mongodb", "mongo", "MONGODB", "MONGO" -> {
+ //print info about connection
+ msgSender(
+ sender,
+ Raxen.getPrefix() +
+ "Printing About Raxen's MongoDB connection...",
+ "---------------------------------------------" +
+ "MONGO DB"
+ );
+ sender.sendMessage(
+ stringToComp(
+ StorageManager
+ .getMongodb()
+ .getMongoClient()
+ .getClusterDescription()
+ .toString()
+ )
+ );
+ sender.sendMessage(
+ stringToComp(
+ StorageManager
+ .getMongodb()
+ .getMongoDatabase()
+ .getName()
+ )
+ );
+ sender.sendMessage(
+ stringToComp(
+ StorageManager
+ .getMongodb()
+ .getMongoCollection()
+ .getNamespace()
+ .toString()
+ )
+ );
+ sender.sendMessage(
+ stringToComp(
+ coloredString(
+ "---------------------------------------------"
+ )
+ )
+ );
+ return true;
+ }
+ case "v", "version", "ver" -> {
+ msgSender(
+ sender,
+ Raxen.getPrefix() +
+ "Printing About Raxen...",
+ "---------------------------------------------",
+ " Raxen ",
+ " - Version: " + Raxen.getVersion(),
+ " - Author: Un&eurled"
+ );
+ TextComponent txt = colorTextComp(
+ " - Website: https://unurled.me"
+ );
+ sender.sendMessage(txt);
+ sender.sendMessage(
+ colorComp(
+ "---------------------------------------------"
+ )
+ );
+ return true;
+ }
+ case "hemlp", "?", "h" -> debug(main, "print help"); //print help
+ }
+ }
}
- }
}
- }
- } else {
- switch (args.length) {
- case 0 -> {
- msgSender(
- sender,
- Raxen.getPrefix() + "Printing About Raxen...",
- "---------------------------------------------",
- " Raxen ",
- " - Version: " + Raxen.getVersion(),
- " - Author: Unurled"
- );
- TextComponent txt = colorTextComp(
- " - Website: https://unurled.me"
- );
- sender.sendMessage(txt);
- sender.sendMessage(
- colorComp("---------------------------------------------")
- );
- return true;
- }
- case 1 -> {
- switch (args[0]) {
- case "mongodb", "mongo", "MONGODB", "MONGO" -> {
- //print info about connection
- msgSender(
- sender,
- Raxen.getPrefix() +
- "Printing About Raxen's MongoDB connection...",
- "---------------------------------------------" +
- "MONGO DB"
- );
- sender.sendMessage(
- stringToComp(
- StorageManager
- .getMongodb()
- .getMongoClient()
- .getClusterDescription()
- .toString()
+ return false;
+ }
+
+ public void msgPl(Player player, Integer in) {
+ switch (in) {
+ case 0:
+ msgPlayer(
+ player,
+ Raxen.getPrefix() + "Printing About Raxen...",
+ "---------------------------------------------",
+ " Raxen ",
+ " - Version: " + Raxen.getVersion(),
+ " - Author: Un&eurled"
+ );
+ TextComponent txt = (TextComponent) colorComp(
+ " - Website: https://unurled.me"
)
- );
- sender.sendMessage(
- stringToComp(
- StorageManager.getMongodb().getMongoDatabase().getName()
- )
- );
- sender.sendMessage(
- stringToComp(
- StorageManager
- .getMongodb()
- .getMongoCollection()
- .getNamespace()
- .toString()
- )
- );
- sender.sendMessage(
- stringToComp(
- coloredString(
+ .clickEvent(ClickEvent.openUrl("https://unurled.me"));
+ player.sendMessage(txt);
+ msgPlayer(
+ player,
+ "",
"---------------------------------------------"
- )
- )
- );
- return true;
- }
- case "v", "version", "ver" -> {
- msgSender(
- sender,
- Raxen.getPrefix() + "Printing About Raxen...",
- "---------------------------------------------",
- " Raxen ",
- " - Version: " + Raxen.getVersion(),
- " - Author: Un&eurled"
- );
- TextComponent txt = colorTextComp(
- " - Website: https://unurled.me"
- );
- sender.sendMessage(txt);
- sender.sendMessage(
- colorComp("---------------------------------------------")
- );
- return true;
- }
- case "hemlp", "?", "h" -> //print help
- debug(main, "print help");
- }
+ );
}
- }
}
- return false;
- }
- public void msgPl(Player player, Integer in) {
- switch (in) {
- case 0:
- msgPlayer(
- player,
- Raxen.getPrefix() + "Printing About Raxen...",
- "---------------------------------------------",
- " Raxen ",
- " - Version: " + Raxen.getVersion(),
- " - Author: Un&eurled"
- );
- TextComponent txt = (TextComponent) colorComp(
- " - Website: https://unurled.me"
- )
- .clickEvent(ClickEvent.openUrl("https://unurled.me"));
- player.sendMessage(txt);
- msgPlayer(
- player,
- "",
- "---------------------------------------------"
- );
+ @Override
+ public @Nullable List onTabComplete(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String alias,
+ @NotNull String[] args
+ ) {
+ return null;
}
- }
-
- @Override
- public @Nullable List onTabComplete(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String alias,
- @NotNull String[] args
- ) {
- return null;
- }
}
diff --git a/src/main/java/me/unurled/raxen/commands/admin/BuildCommand.java b/src/main/java/me/unurled/raxen/commands/admin/BuildCommand.java
new file mode 100644
index 0000000..8c8779e
--- /dev/null
+++ b/src/main/java/me/unurled/raxen/commands/admin/BuildCommand.java
@@ -0,0 +1,108 @@
+package me.unurled.raxen.commands.admin;
+
+import java.util.ArrayList;
+import java.util.List;
+import me.unurled.raxen.Raxen;
+import me.unurled.raxen.utils.Utils;
+import org.bukkit.Bukkit;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.TabExecutor;
+import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class BuildCommand implements TabExecutor {
+
+ private Raxen raxen;
+
+ List complete = new ArrayList<>();
+
+ public BuildCommand(Raxen raxen) {
+ this.raxen = raxen;
+ }
+
+ @Override
+ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
+ @NotNull String label, @NotNull String[] args) {
+ if (!(sender instanceof Player)) {
+ Utils.errorConsoleSender(sender);
+ return true;
+ }
+ Player p = (Player) sender;
+ if (args.length == 0) {
+ p.sendMessage(Utils.colorComp(
+ "/build [discard|edit|hide|list|on|remove|save|show|tp]"));
+ return true;
+ }
+ if (args.length == 1) {
+ switch (args[0]) {
+ case "discard":
+ p.sendMessage(Utils.colorComp("Discarded build!"));
+ return true;
+ case "edit":
+ p.sendMessage(Utils.colorComp("Editing build!"));
+ return true;
+ case "hide":
+ p.sendMessage(Utils.colorComp("Hiding build!"));
+ return true;
+ case "list":
+ p.sendMessage(Utils.colorComp("Listing builds!"));
+ return true;
+ case "on":
+ p.sendMessage(Utils.colorComp("Build mode enabled!"));
+ return true;
+ case "remove":
+ p.sendMessage(Utils.colorComp("Removed build!"));
+ return true;
+ case "save":
+ p.sendMessage(Utils.colorComp("Saved build!"));
+ return true;
+ case "show":
+ p.sendMessage(Utils.colorComp("Showing build!"));
+ return true;
+ case "tp":
+ p.sendMessage(Utils.colorComp("Teleporting to build!"));
+ return true;
+ default:
+ p.sendMessage(Utils.colorComp(
+ "/build [discard|edit|hide|list|on|remove|save|show|tp]"));
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public @Nullable List onTabComplete(@NotNull CommandSender sender,
+ @NotNull Command command, @NotNull String label, @NotNull String[] args) {
+ if (complete.isEmpty()) {
+ complete.add("discard");
+ complete.add("edit");
+ complete.add("hide");
+ complete.add("list");
+ complete.add("on");
+ complete.add("remove");
+ complete.add("save");
+ complete.add("show");
+ complete.add("tp");
+ }
+ List result = new ArrayList<>();
+ if (args.length == 1) {
+ for (String s : complete) {
+ if (s.toLowerCase().startsWith(args[0].toLowerCase())) {
+ result.add(s);
+ }
+ }
+ return result;
+ } else if (args.length == 2) {
+ for (Player p : Bukkit.getOnlinePlayers()) {
+ if (p.getName().toLowerCase().startsWith(args[1].toLowerCase())) {
+ result.add(p.getName());
+ }
+ }
+ return result;
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/me/unurled/raxen/commands/admin/CustomModelDataCommand.java b/src/main/java/me/unurled/raxen/commands/admin/CustomModelDataCommand.java
index c070758..4208aae 100644
--- a/src/main/java/me/unurled/raxen/commands/admin/CustomModelDataCommand.java
+++ b/src/main/java/me/unurled/raxen/commands/admin/CustomModelDataCommand.java
@@ -1,7 +1,10 @@
package me.unurled.raxen.commands.admin;
import static me.unurled.raxen.utils.Items.customModelData;
-import static me.unurled.raxen.utils.Utils.*;
+import static me.unurled.raxen.utils.Utils.colorComp;
+import static me.unurled.raxen.utils.Utils.errorConsoleSender;
+import static me.unurled.raxen.utils.Utils.isInt;
+import static me.unurled.raxen.utils.Utils.noPerms;
import java.util.ArrayList;
import java.util.Arrays;
@@ -19,104 +22,109 @@ import org.jetbrains.annotations.Nullable;
public class CustomModelDataCommand implements TabExecutor {
- /**
- * change custom model data of an item
- * @param sender Source of the command
- * @param command Command which was executed
- * @param label Alias of the command which was used
- * @param args Passed command arguments
- * @return
- */
- @Override
- public boolean onCommand(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String label,
- @NotNull String[] args
- ) {
- if (!(sender instanceof Player)) {
- errorConsoleSender(sender);
- return true;
+ /**
+ * change custom model data of an item
+ *
+ * @param sender Source of the command
+ * @param command Command which was executed
+ * @param label Alias of the command which was used
+ * @param args Passed command arguments
+ * @return
+ */
+ @Override
+ public boolean onCommand(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String label,
+ @NotNull String[] args
+ ) {
+ if (!(sender instanceof Player)) {
+ errorConsoleSender(sender);
+ return true;
+ }
+ Player p = (Player) sender;
+ if (!(p.hasPermission("raxen.custommodeldata.cmd"))) {
+ p.sendMessage(noPerms());
+ return true;
+ }
+ ItemStack it = p.getInventory().getItemInMainHand();
+ if (args.length == 0) {
+ p.sendMessage(
+ colorComp(
+ "Usage: /custommodeldata "
+ )
+ );
+ return true;
+ }
+ if (!(isInt(args[0]))) {
+ Material material = Material.getMaterial(args[1]);
+ if (material != null) {
+ it =
+ customModelData(
+ new ItemStack(material),
+ Integer.parseInt(args[0])
+ );
+ p.getInventory().setItemInMainHand(it);
+ p.updateInventory();
+ } else {
+ p.sendMessage(
+ colorComp(
+ "Please specify a valid Item Name or a valid Integer."
+ )
+ );
+ }
+ } else {
+ if (it != null && it.getType() != Material.AIR) { // check if player has an item in hand
+ // has item in hand applying the custom model data
+ it = customModelData(it, Integer.parseInt(args[0]));
+ p.getInventory().setItemInMainHand(it);
+ p.updateInventory();
+ } else {
+ p.sendMessage(
+ colorComp(
+ "Get an item in hand please or specify an item"
+ )
+ );
+ p.sendMessage(
+ colorComp(
+ "Usage: /custommodeldata "
+ )
+ );
+ }
+ }
+ return true;
}
- Player p = (Player) sender;
- if (!(p.hasPermission("raxen.custommodeldata.cmd"))) {
- p.sendMessage(noPerms());
- return true;
- }
- ItemStack it = p.getInventory().getItemInMainHand();
- if (args.length == 0) {
- p.sendMessage(
- colorComp(
- "Usage: /custommodeldata "
- )
- );
- return true;
- }
- if (!(isInt(args[0]))) {
- Material material = Material.getMaterial(args[1]);
- if (material != null) {
- it =
- customModelData(new ItemStack(material), Integer.parseInt(args[0]));
- p.getInventory().setItemInMainHand(it);
- p.updateInventory();
- } else {
- p.sendMessage(
- colorComp(
- "Please specify a valid Item Name or a valid Integer."
- )
- );
- }
- } else {
- if (it != null && it.getType() != Material.AIR) { // check if player has an item in hand
- // has item in hand applying the custom model data
- it = customModelData(it, Integer.parseInt(args[0]));
- p.getInventory().setItemInMainHand(it);
- p.updateInventory();
- } else {
- p.sendMessage(
- colorComp("Get an item in hand please or specify an item")
- );
- p.sendMessage(
- colorComp(
- "Usage: /custommodeldata "
- )
- );
- }
- }
- return true;
- }
- /**
- * @param sender Source of the command. For players tab-completing a
- * command inside of a command block, this will be the player, not
- * the command block.
- * @param command Command which was executed
- * @param label Alias of the command which was used
- * @param args The arguments passed to the command, including final
- * partial argument to be completed
- * @return
- */
- @Override
- public @Nullable List onTabComplete(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String label,
- @NotNull String[] args
- ) {
- final List completions = new ArrayList<>();
+ /**
+ * @param sender Source of the command. For players tab-completing a command inside of a
+ * command block, this will be the player, not the command block.
+ * @param command Command which was executed
+ * @param label Alias of the command which was used
+ * @param args The arguments passed to the command, including final partial argument to be
+ * completed
+ * @return
+ */
+ @Override
+ public @Nullable List onTabComplete(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String label,
+ @NotNull String[] args
+ ) {
+ final List completions = new ArrayList<>();
- List SUB_COMMANDS = new ArrayList<>();
+ List SUB_COMMANDS = new ArrayList<>();
- if (!(isInt(args[0]))) {
- return Arrays.asList("§c" + args[0]);
+ if (!(isInt(args[0]))) {
+ return Arrays.asList("§c" + args[0]);
+ }
+ if (args.length == 2) {
+ for (Material mat : Material.values()) {
+ SUB_COMMANDS.add(mat.name());
+ }
+ StringUtil.copyPartialMatches(args[1], SUB_COMMANDS, completions);
+ Collections.sort(completions);
+ }
+ return completions;
}
- if (args.length == 2) {
- for (Material mat : Material.values()) {
- SUB_COMMANDS.add(mat.name());
- }
- StringUtil.copyPartialMatches(args[1], SUB_COMMANDS, completions);
- Collections.sort(completions);
- }
- return completions;
- }
}
diff --git a/src/main/java/me/unurled/raxen/commands/admin/EntitiyCommand.java b/src/main/java/me/unurled/raxen/commands/admin/EntitiyCommand.java
index 2afc02a..1abb4bf 100644
--- a/src/main/java/me/unurled/raxen/commands/admin/EntitiyCommand.java
+++ b/src/main/java/me/unurled/raxen/commands/admin/EntitiyCommand.java
@@ -9,41 +9,41 @@ import org.jetbrains.annotations.Nullable;
public class EntitiyCommand implements TabExecutor {
- /**
- * Get the egg spawn of a custom entity :)
- * @param sender Source of the command
- * @param command Command which was executed
- * @param label Alias of the command which was used
- * @param args Passed command arguments
- * @return
- */
- @Override
- public boolean onCommand(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String label,
- @NotNull String[] args
- ) {
- return false;
- }
+ /**
+ * Get the egg spawn of a custom entity :)
+ * @param sender Source of the command
+ * @param command Command which was executed
+ * @param label Alias of the command which was used
+ * @param args Passed command arguments
+ * @return
+ */
+ @Override
+ public boolean onCommand(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String label,
+ @NotNull String[] args
+ ) {
+ return false;
+ }
- /**
- * @param sender Source of the command. For players tab-completing a
- * command inside a command block, this will be the player, not
- * the command block.
- * @param command Command which was executed
- * @param label Alias of the command which was used
- * @param args The arguments passed to the command, including final
- * partial argument to be completed
- * @return
- */
- @Override
- public @Nullable List onTabComplete(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String label,
- @NotNull String[] args
- ) {
- return null;
- }
+ /**
+ * @param sender Source of the command. For players tab-completing a
+ * command inside a command block, this will be the player, not
+ * the command block.
+ * @param command Command which was executed
+ * @param label Alias of the command which was used
+ * @param args The arguments passed to the command, including final
+ * partial argument to be completed
+ * @return
+ */
+ @Override
+ public @Nullable List onTabComplete(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String label,
+ @NotNull String[] args
+ ) {
+ return null;
+ }
}
diff --git a/src/main/java/me/unurled/raxen/commands/admin/ItemListCommand.java b/src/main/java/me/unurled/raxen/commands/admin/ItemListCommand.java
index d6b507d..d50c576 100644
--- a/src/main/java/me/unurled/raxen/commands/admin/ItemListCommand.java
+++ b/src/main/java/me/unurled/raxen/commands/admin/ItemListCommand.java
@@ -1,6 +1,8 @@
package me.unurled.raxen.commands.admin;
-import static me.unurled.raxen.utils.Utils.*;
+import static me.unurled.raxen.utils.Utils.colorString;
+import static me.unurled.raxen.utils.Utils.log;
+import static me.unurled.raxen.utils.Utils.msgPlayer;
import java.util.List;
import lombok.Getter;
@@ -15,49 +17,56 @@ import org.jetbrains.annotations.Nullable;
public class ItemListCommand implements TabExecutor {
- private Raxen main;
+ private Raxen main;
- @Getter
- private ItemListGui itemListGui;
+ @Getter
+ private ItemListGui itemListGui;
- public ItemListCommand(Raxen main) {
- this.main = main;
- this.itemListGui = new ItemListGui(this.main);
- }
-
- @Override
- public boolean onCommand(
- @NotNull CommandSender sender,
- @NotNull Command cmd,
- @NotNull String msg,
- @NotNull String[] args
- ) {
- if (!(sender instanceof Player)) {
- log("Console can't execute this command atm.");
- return true;
+ public ItemListCommand(Raxen main) {
+ this.main = main;
+ this.itemListGui = new ItemListGui(this.main);
}
- Player player = (Player) sender;
- if (!(player.hasPermission("raxen.itemlist.cmd"))) {
- msgPlayer(
- player,
- colorString(
- "You'dont have the permission to execute this command."
- )
- );
- return true;
- }
- //openGui logic
- player.openInventory(itemListGui.getInv());
- return false;
- }
- @Override
- public @Nullable List onTabComplete(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String alias,
- @NotNull String[] args
- ) {
- return null;
- }
+ @Override
+ public boolean onCommand(
+ @NotNull CommandSender sender,
+ @NotNull Command cmd,
+ @NotNull String msg,
+ @NotNull String[] args
+ ) {
+ if (!(sender instanceof Player)) {
+ log("Console can't execute this command atm.");
+ return true;
+ }
+ Player player = (Player) sender;
+ if (!(player.hasPermission("raxen.itemlist.cmd"))) {
+ msgPlayer(
+ player,
+ colorString(
+ "You'dont have the permission to execute this command."
+ )
+ );
+ return true;
+ }
+ int page = 1;
+ if (args.length > 0) {
+ try {
+ page = Integer.parseInt(args[0]);
+ } catch (NumberFormatException ignored) {
+ }
+ }
+ //openGui logic
+ itemListGui.openInventory(player, page);
+ return false;
+ }
+
+ @Override
+ public @Nullable List onTabComplete(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String alias,
+ @NotNull String[] args
+ ) {
+ return null;
+ }
}
diff --git a/src/main/java/me/unurled/raxen/commands/admin/ItemTo64Command.java b/src/main/java/me/unurled/raxen/commands/admin/ItemTo64Command.java
index 8638a31..851dee9 100644
--- a/src/main/java/me/unurled/raxen/commands/admin/ItemTo64Command.java
+++ b/src/main/java/me/unurled/raxen/commands/admin/ItemTo64Command.java
@@ -1,7 +1,8 @@
package me.unurled.raxen.commands.admin;
import static me.unurled.raxen.utils.Items.itemTo64;
-import static me.unurled.raxen.utils.Utils.*;
+import static me.unurled.raxen.utils.Utils.errorConsoleSender;
+import static me.unurled.raxen.utils.Utils.msgPlayer;
import java.util.List;
import org.bukkit.command.Command;
@@ -13,46 +14,45 @@ import org.jetbrains.annotations.Nullable;
public class ItemTo64Command implements TabExecutor {
- /**
- * @param sender Source of the command
- * @param command Command which was executed
- * @param label Alias of the command which was used
- * @param args Passed command arguments
- * @return
- */
- @Override
- public boolean onCommand(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String label,
- @NotNull String[] args
- ) {
- if (sender instanceof Player p) {
- msgPlayer(p, itemTo64(p.getInventory().getItemInMainHand()));
- } else {
- errorConsoleSender(sender);
- return true;
+ /**
+ * @param sender Source of the command
+ * @param command Command which was executed
+ * @param label Alias of the command which was used
+ * @param args Passed command arguments
+ * @return
+ */
+ @Override
+ public boolean onCommand(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String label,
+ @NotNull String[] args
+ ) {
+ if (sender instanceof Player p) {
+ msgPlayer(p, itemTo64(p.getInventory().getItemInMainHand()));
+ } else {
+ errorConsoleSender(sender);
+ return true;
+ }
+ return false;
}
- return false;
- }
- /**
- * @param sender Source of the command. For players tab-completing a
- * command inside of a command block, this will be the player, not
- * the command block.
- * @param command Command which was executed
- * @param label Alias of the command which was used
- * @param args The arguments passed to the command, including final
- * partial argument to be completed
- * @return
- */
- @Override
- public @Nullable List onTabComplete(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String label,
- @NotNull String[] args
- ) {
- return null;
- }
+ /**
+ * @param sender Source of the command. For players tab-completing a command inside of a
+ * command block, this will be the player, not the command block.
+ * @param command Command which was executed
+ * @param label Alias of the command which was used
+ * @param args The arguments passed to the command, including final partial argument to be
+ * completed
+ * @return
+ */
+ @Override
+ public @Nullable List onTabComplete(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String label,
+ @NotNull String[] args
+ ) {
+ return null;
+ }
}
diff --git a/src/main/java/me/unurled/raxen/commands/admin/NbtCommand.java b/src/main/java/me/unurled/raxen/commands/admin/NbtCommand.java
index 8267eca..53b3b8b 100644
--- a/src/main/java/me/unurled/raxen/commands/admin/NbtCommand.java
+++ b/src/main/java/me/unurled/raxen/commands/admin/NbtCommand.java
@@ -1,7 +1,11 @@
package me.unurled.raxen.commands.admin;
import static me.unurled.raxen.components.entity.player.PlayerUtils.updateSkills;
-import static me.unurled.raxen.utils.Utils.*;
+import static me.unurled.raxen.utils.Utils.colorString;
+import static me.unurled.raxen.utils.Utils.colorTextComp;
+import static me.unurled.raxen.utils.Utils.debug;
+import static me.unurled.raxen.utils.Utils.error;
+import static me.unurled.raxen.utils.Utils.msgPlayer;
import de.tr7zw.nbtapi.NBTItem;
import java.util.ArrayList;
@@ -17,123 +21,136 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class NbtCommand implements TabExecutor {
- private final Raxen main;
+ private final Raxen main;
- public NbtCommand(Raxen main) {
- this.main = main;
- }
+ public NbtCommand(Raxen main) {
+ this.main = main;
+ }
- @Override
- public boolean onCommand(
- @NotNull CommandSender sender,
- @NotNull Command cmd,
- @NotNull String msg,
- @NotNull String[] args
- ) {
- if (!(sender instanceof Player player)) {
- error(
- (Raxen) Bukkit.getPluginManager().getPlugin("Raxen"),
- colorString("You can't execute this command as the Console!")
- );
- return true;
- }
- if (player.getInventory().getItemInMainHand().getType() == Material.AIR) {
- msgPlayer(player, colorTextComp("You must hold an Item in hand."));
- return true;
- } else {
- player.getInventory().getItemInMainHand();
- }
- switch (args.length) {
- case 0, 1 -> msgPlayer(
- player,
- colorTextComp("You must specify an nbt and an int.")
- );
- case 2 -> {
- debug("'" + args[0] + "'", "'" + args[1] + "'");
- ItemStack it = player.getInventory().getItemInMainHand();
- NBTItem nbti = new NBTItem(it);
- int a = 0;
- if (nbti.hasTag(args[0])) {
- a = nbti.getInteger(args[0]);
+ @Override
+ public boolean onCommand(
+ @NotNull CommandSender sender,
+ @NotNull Command cmd,
+ @NotNull String msg,
+ @NotNull String[] args
+ ) {
+ if (!(sender instanceof Player player)) {
+ error(
+ (Raxen) Bukkit.getPluginManager().getPlugin("Raxen"),
+ colorString(
+ "You can't execute this command as the Console!"
+ )
+ );
+ return true;
}
- List lore = new ArrayList<>();
- // ItemMeta itm = it.getItemMeta();
- // lore.add((Component) itm.lore());
- boolean yes = false;
- boolean ever = false;
- for (Component ct : lore) {
- if (ct != null) {
- if (ct.contains(Component.text("Attributes:"))) {
- yes = true;
- ever = true;
- } else {
- if (yes) {
- //ct.append(Component.text(colorString(attributes(args[0]) + ": " + (Integer.parseInt(args[1]) + a)))); deprecated
- yes = false;
- }
+ if (
+ player.getInventory().getItemInMainHand().getType() == Material.AIR
+ ) {
+ msgPlayer(
+ player,
+ colorTextComp("You must hold an Item in hand.")
+ );
+ return true;
+ } else {
+ player.getInventory().getItemInMainHand();
+ }
+ switch (args.length) {
+ case 0, 1 -> msgPlayer(
+ player,
+ colorTextComp("You must specify an nbt and an int.")
+ );
+ case 2 -> {
+ debug("'" + args[0] + "'", "'" + args[1] + "'");
+ ItemStack it = player.getInventory().getItemInMainHand();
+ NBTItem nbti = new NBTItem(it);
+ String a = "";
+ if (nbti.hasTag(args[0])) {
+ a = nbti.getString(args[0]);
+ }
+ List lore = new ArrayList<>();
+ // ItemMeta itm = it.getItemMeta();
+ // lore.add((Component) itm.lore());
+ boolean yes = false;
+ boolean ever = false;
+ for (Component ct : lore) {
+ if (ct != null) {
+ if (ct.contains(Component.text("Attributes:"))) {
+ yes = true;
+ ever = true;
+ } else {
+ if (yes) {
+ //ct.append(Component.text(colorString(attributes(args[0]) + ": " + (Integer.parseInt(args[1]) + a)))); deprecated
+ yes = false;
+ }
+ }
+ }
+ }
+ if (!ever) {
+ lore.add(colorTextComp("Attributes:"));
+ //lore.add(colorTextComp(attributes(args[0]) + ": " + (Integer.parseInt(args[1]) + a))); deprecated
+ }
+ // itm.lore(lore);
+ // it.setItemMeta(itm);
+ PlayerManager pm =
+ (
+ (Raxen) Objects.requireNonNull(
+ Bukkit.getPluginManager().getPlugin("Raxen")
+ )
+ ).getManager()
+ .getPlayerManager();
+ try {
+ nbti.setInteger(
+ args[0],
+ Integer.parseInt(args[1]) + Integer.parseInt(a)
+ );
+ } catch (NumberFormatException ignored) {
+ nbti.setString(args[0], args[1]);
+ }
+ if (nbti.hasTag("SPEED")) {
+ pm.getSpeed().add(player, nbti.getInteger("SPEED"));
+ }
+ if (nbti.hasTag("HEALTH")) {
+ pm.getHealth().add(player, nbti.getInteger("HEALTH"));
+ }
+ if (nbti.hasTag("DEFENSE")) {
+ pm.getDefense().add(player, nbti.getInteger("DEFENSE"));
+ }
+ if (nbti.hasTag("STRENGTH")) {
+ pm.getStrength().add(player, nbti.getInteger("STRENGTH"));
+ }
+ it = nbti.getItem();
+ msgPlayer(
+ player,
+ colorTextComp(
+ Raxen.getPrefix() +
+ "You successfully added the nbt " +
+ /*attributes(args[0])*/args[0] +
+ "with " +
+ args[1] +
+ "."
+ )
+ );
+ updateSkills(main, player);
+ player
+ .getInventory()
+ .setItem(player.getInventory().getHeldItemSlot(), it);
}
- }
}
- if (!ever) {
- lore.add(colorTextComp("Attributes:"));
- //lore.add(colorTextComp(attributes(args[0]) + ": " + (Integer.parseInt(args[1]) + a))); deprecated
- }
- // itm.lore(lore);
- // it.setItemMeta(itm);
- PlayerManager pm =
- (
- (Raxen) Objects.requireNonNull(
- Bukkit.getPluginManager().getPlugin("Raxen")
- )
- ).getManager()
- .getPlayerManager();
- nbti.setInteger(args[0], Integer.parseInt(args[1]) + a);
- if (nbti.hasTag("SPEED")) {
- pm.getSpeed().add(player, nbti.getInteger("SPEED"));
- }
- if (nbti.hasTag("HEALTH")) {
- pm.getHealth().add(player, nbti.getInteger("HEALTH"));
- }
- if (nbti.hasTag("DEFENSE")) {
- pm.getDefense().add(player, nbti.getInteger("DEFENSE"));
- }
- if (nbti.hasTag("STRENGTH")) {
- pm.getStrength().add(player, nbti.getInteger("STRENGTH"));
- }
- it = nbti.getItem();
- msgPlayer(
- player,
- colorTextComp(
- Raxen.getPrefix() +
- "You successfully added the nbt " +
- /*attributes(args[0])*/args[0] +
- "with " +
- args[1] +
- "."
- )
- );
- updateSkills(main, player);
- player
- .getInventory()
- .setItem(player.getInventory().getHeldItemSlot(), it);
- }
+ return true;
}
- return true;
- }
- @Override
- public @Nullable List onTabComplete(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String alias,
- @NotNull String[] args
- ) {
- return null;
- }
+ @Override
+ public @Nullable List onTabComplete(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String alias,
+ @NotNull String[] args
+ ) {
+ return null;
+ }
}
diff --git a/src/main/java/me/unurled/raxen/commands/admin/ReloadCommand.java b/src/main/java/me/unurled/raxen/commands/admin/ReloadCommand.java
index 89115e3..f7acda5 100644
--- a/src/main/java/me/unurled/raxen/commands/admin/ReloadCommand.java
+++ b/src/main/java/me/unurled/raxen/commands/admin/ReloadCommand.java
@@ -1,6 +1,8 @@
package me.unurled.raxen.commands.admin;
-import static me.unurled.raxen.utils.Utils.*;
+import static me.unurled.raxen.utils.Utils.colorString;
+import static me.unurled.raxen.utils.Utils.log;
+import static me.unurled.raxen.utils.Utils.noPerms;
import java.util.List;
import me.unurled.raxen.utils.Reload;
@@ -9,42 +11,48 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player;
+import org.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class ReloadCommand implements TabExecutor {
- @Override
- public boolean onCommand(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String msg,
- @NotNull String[] args
- ) {
- if (sender instanceof Player) {
- Player player = (Player) sender;
- if (!player.hasPermission("raxen.reload.cmd")) {
- player.sendMessage(noPerms());
- return true;
- }
+ @Override
+ public boolean onCommand(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String msg,
+ @NotNull String[] args
+ ) {
+ if (sender instanceof Player) {
+ Player player = (Player) sender;
+ if (!player.hasPermission("raxen.reload.cmd")) {
+ player.sendMessage(noPerms());
+ return true;
+ }
+ }
+ Reload.kickAll();
+ log(
+ colorString(
+ "Server stopping!\n Using: /rlpl.\n Please wait a little bit."
+ )
+ );
+ new BukkitRunnable() {
+ @Override
+ public void run() {
+ Bukkit.getServer().shutdown();
+ }
+ }.runTaskLater(Bukkit.getPluginManager().getPlugin("Raxen"), 80L);
+ return false;
}
- Reload.kickAll();
- log(
- colorString(
- "Server stopping!\n Using: /rlpl.\n Please wait a little bit."
- )
- );
- Bukkit.getServer().shutdown();
- return false;
- }
- @Override
- public @Nullable List onTabComplete(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String alias,
- @NotNull String[] args
- ) {
- return null;
- }
+ @Override
+ public @Nullable List onTabComplete(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String alias,
+ @NotNull String[] args
+ ) {
+ return null;
+ }
}
diff --git a/src/main/java/me/unurled/raxen/commands/admin/SpawnEntity.java b/src/main/java/me/unurled/raxen/commands/admin/SpawnEntity.java
index 66e6c2f..0141ee0 100644
--- a/src/main/java/me/unurled/raxen/commands/admin/SpawnEntity.java
+++ b/src/main/java/me/unurled/raxen/commands/admin/SpawnEntity.java
@@ -1,13 +1,17 @@
package me.unurled.raxen.commands.admin;
-import static me.unurled.raxen.components.entity.other.EntityUtils.setNameSpacedKeys;
import static me.unurled.raxen.utils.Items.itemFrom64;
-import static me.unurled.raxen.utils.Utils.*;
+import static me.unurled.raxen.utils.Utils.colorTextComp;
+import static me.unurled.raxen.utils.Utils.error;
+import static me.unurled.raxen.utils.Utils.getStringFromArg;
+import static me.unurled.raxen.utils.Utils.log;
+import static me.unurled.raxen.utils.Utils.noPerms;
+import static me.unurled.raxen.utils.Utils.setNullInArgs;
+import static me.unurled.raxen.utils.Utils.validateArgs;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import java.util.Objects;
import me.unurled.raxen.Raxen;
import me.unurled.raxen.components.entity.other.EntityNamespacedKey;
import org.bukkit.Bukkit;
@@ -26,187 +30,190 @@ import org.jetbrains.annotations.Nullable;
public class SpawnEntity implements TabExecutor {
- private Raxen main;
- private EntityNamespacedKey namespacedKey;
+ private Raxen main;
+ private EntityNamespacedKey namespacedKey;
- public SpawnEntity(Raxen main) {
- this.main = main;
- this.namespacedKey = new EntityNamespacedKey(main);
- }
+ public SpawnEntity(Raxen main) {
+ this.main = main;
+ this.namespacedKey = new EntityNamespacedKey(main);
+ }
- @Override
- public boolean onCommand(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String label,
- @NotNull String[] args
- ) {
- if (!(sender instanceof Player)) {
- log(colorTextComp("Console can't execute this command!"));
- try { // /entityspawn ZOMBIE "&cHello folks" x:0 y:0 z:0 level health defense speed strength itemStackBinary64: helmet, chestplate, leggings, boots, main-hand, off-hand
- if (validateArgs(args, 16)) {
- args = setNullInArgs(args);
- } else {
- log(
- colorTextComp(
- "Please use null if you don't want some parameters in the command."
- )
- );
- log(
- colorTextComp(
- "Follow this command: /entityspawn TYPE \"name\" x y z level health defense speed strength " +
- "helmet(itemStackBinary64) chestplate(itemStackBinary64) leggings(itemStackBinary64) boots(itemStackBinary64) main-hand(itemStackBinary64) off-hand(itemStackBinary64)"
- )
- );
- return false;
+ @Override
+ public boolean onCommand(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String label,
+ @NotNull String[] args
+ ) {
+ if (!(sender instanceof Player)) {
+ log(colorTextComp("Console can't execute this command!"));
+ try { // /entityspawn ZOMBIE "&cHello folks" x:0 y:0 z:0 level health defense speed strength itemStackBinary64: helmet, chestplate, leggings, boots, main-hand, off-hand
+ if (validateArgs(args, 16)) {
+ args = setNullInArgs(args);
+ } else {
+ log(
+ colorTextComp(
+ "Please use null if you don't want some parameters in the command."
+ )
+ );
+ log(
+ colorTextComp(
+ "Follow this command: /entityspawn TYPE \"name\" x y z level health defense speed strength "
+ +
+ "helmet(itemStackBinary64) chestplate(itemStackBinary64) leggings(itemStackBinary64) boots(itemStackBinary64) main-hand(itemStackBinary64) off-hand(itemStackBinary64)"
+ )
+ );
+ return false;
+ }
+
+ EntityType types = EntityType.valueOf(args[0]);
+ Location loc = new Location(
+ Bukkit.getWorld("world"),
+ Double.parseDouble(args[2]),
+ Double.parseDouble(args[3]),
+ Double.parseDouble(args[4])
+ );
+ Entity e = loc.getWorld().spawnEntity(loc, types, false);
+ /* setNameSpacedKeys(
+ e,
+ getStringFromArg(args),
+ Integer.parseInt(args[6]),
+ Integer.parseInt(args[7]),
+ 0,
+ Integer.parseInt(args[8]),
+ 0,
+ Integer.parseInt(args[9]),
+ 0,
+ Integer.parseInt(args[10]),
+ 0
+ ); */
+ e.customName(colorTextComp(getStringFromArg(args)));
+ e.setCustomNameVisible(true);
+ if (e instanceof LivingEntity livingEntity) {
+ // livingEntity.getEquipment().set
+ ItemStack helmet = itemFrom64(args[11]);
+ ItemStack chestplate = itemFrom64(args[12]);
+ ItemStack leggins = itemFrom64(args[13]);
+ ItemStack boots = itemFrom64(args[14]);
+ ItemStack mainhand = itemFrom64(args[15]);
+ ItemStack offhand = itemFrom64(args[14]);
+ EntityEquipment equip = livingEntity.getEquipment();
+ equip.setHelmet(helmet);
+ equip.setChestplate(chestplate);
+ equip.setLeggings(leggins);
+ equip.setBoots(boots);
+ equip.setItemInMainHand(mainhand);
+ equip.setItemInOffHand(offhand);
+ }
+
+ System.out.println(e.getName());
+ } catch (IllegalArgumentException e) {
+ error("Something happened near the SpawnEntity command.");
+ throw new RuntimeException(e);
+ } catch (IOException e) {
+ error(
+ "Could not deserialize item from the command EntitySpawn (command launched by "
+ +
+ sender.getName() +
+ ")"
+ );
+ throw new RuntimeException(e);
+ }
+ }
+ for (String arg : args) {
+ log(arg);
+ }
+ Player player = (Player) sender;
+ if (!player.hasPermission("raxen.entityspawn.cmd")) {
+ player.sendMessage(noPerms());
+ return false;
+ }
+ try { // /entityspawn ZOMBIE "&cHello folks" x:0 y:0 z:0 level health defense speed strength itemStackBinary64: helmet, chestplate, leggings, boots, main-hand, off-hand
+ if (validateArgs(args, 16)) {
+ args = setNullInArgs(args);
+ } else {
+ log(
+ colorTextComp(
+ "Please use null if you don't want some parameters in the command."
+ )
+ );
+ log(
+ colorTextComp(
+ "Follow this command: /entityspawn TYPE \"name\" x y z level health defense speed strength "
+ +
+ "helmet(itemStackBinary64) chestplate(itemStackBinary64) leggings(itemStackBinary64) boots(itemStackBinary64) main-hand(itemStackBinary64) off-hand(itemStackBinary64)"
+ )
+ );
+ return false;
+ }
+
+ EntityType types = EntityType.valueOf(args[0]);
+ Location loc = new Location(
+ Bukkit.getWorld("world"),
+ Double.parseDouble(args[2]),
+ Double.parseDouble(args[3]),
+ Double.parseDouble(args[4])
+ );
+ Entity e = loc.getWorld().spawnEntity(loc, types, false);
+ /* setNameSpacedKeys(
+ e,
+ getStringFromArg(args),
+ Integer.parseInt(args[6]),
+ Integer.parseInt(args[7]),
+ 0,
+ Integer.parseInt(args[8]),
+ 0,
+ Integer.parseInt(args[9]),
+ 0,
+ Integer.parseInt(args[10]),
+ 0
+ ); */
+ e.customName(colorTextComp(getStringFromArg(args)));
+ e.setCustomNameVisible(true);
+ if (e instanceof LivingEntity livingEntity) {
+ // livingEntity.getEquipment().set
+ ItemStack helmet = itemFrom64(args[11]);
+ ItemStack chestplate = itemFrom64(args[12]);
+ ItemStack leggins = itemFrom64(args[13]);
+ ItemStack boots = itemFrom64(args[14]);
+ ItemStack mainhand = itemFrom64(args[15]);
+ ItemStack offhand = itemFrom64(args[14]);
+ EntityEquipment equip = livingEntity.getEquipment();
+ equip.setHelmet(helmet);
+ equip.setChestplate(chestplate);
+ equip.setLeggings(leggins);
+ equip.setBoots(boots);
+ equip.setItemInMainHand(mainhand);
+ equip.setItemInOffHand(offhand);
+ }
+
+ System.out.println(e.getName());
+ } catch (IllegalArgumentException e) {
+ error("Something happened near the SpawnEntity command.");
+ throw new RuntimeException(e);
+ } catch (IOException e) {
+ error(
+ "Could not deserialize item from the command EntitySpawn (command launched by " +
+ sender.getName() +
+ ")"
+ );
+ throw new RuntimeException(e);
}
- EntityType types = EntityType.valueOf(args[0]);
- Location loc = new Location(
- Bukkit.getWorld("world"),
- Double.parseDouble(args[2]),
- Double.parseDouble(args[3]),
- Double.parseDouble(args[4])
- );
- Entity e = loc.getWorld().spawnEntity(loc, types, false);
- setNameSpacedKeys(
- e,
- getStringFromArg(args),
- Integer.parseInt(args[6]),
- Integer.parseInt(args[7]),
- 0,
- Integer.parseInt(args[8]),
- 0,
- Integer.parseInt(args[9]),
- 0,
- Integer.parseInt(args[10]),
- 0
- );
- e.customName(colorTextComp(getStringFromArg(args)));
- e.setCustomNameVisible(true);
- if (e instanceof LivingEntity livingEntity) {
- // livingEntity.getEquipment().set
- ItemStack helmet = itemFrom64(args[11]);
- ItemStack chestplate = itemFrom64(args[12]);
- ItemStack leggins = itemFrom64(args[13]);
- ItemStack boots = itemFrom64(args[14]);
- ItemStack mainhand = itemFrom64(args[15]);
- ItemStack offhand = itemFrom64(args[14]);
- EntityEquipment equip = livingEntity.getEquipment();
- equip.setHelmet(helmet);
- equip.setChestplate(chestplate);
- equip.setLeggings(leggins);
- equip.setBoots(boots);
- equip.setItemInMainHand(mainhand);
- equip.setItemInOffHand(offhand);
- }
-
- System.out.println(e.getName());
- } catch (IllegalArgumentException e) {
- error("Something happened near the SpawnEntity command.");
- throw new RuntimeException(e);
- } catch (IOException e) {
- error(
- "Could not deserialize item from the command EntitySpawn (command launched by " +
- sender.getName() +
- ")"
- );
- throw new RuntimeException(e);
- }
- }
- for (String arg : args) {
- log(arg);
- }
- Player player = (Player) sender;
- if (!player.hasPermission("raxen.entityspawn.cmd")) {
- player.sendMessage(noPerms());
- return false;
- }
- try { // /entityspawn ZOMBIE "&cHello folks" x:0 y:0 z:0 level health defense speed strength itemStackBinary64: helmet, chestplate, leggings, boots, main-hand, off-hand
- if (validateArgs(args, 16)) {
- args = setNullInArgs(args);
- } else {
- log(
- colorTextComp(
- "Please use null if you don't want some parameters in the command."
- )
- );
- log(
- colorTextComp(
- "Follow this command: /entityspawn TYPE \"name\" x y z level health defense speed strength " +
- "helmet(itemStackBinary64) chestplate(itemStackBinary64) leggings(itemStackBinary64) boots(itemStackBinary64) main-hand(itemStackBinary64) off-hand(itemStackBinary64)"
- )
- );
return false;
- }
-
- EntityType types = EntityType.valueOf(args[0]);
- Location loc = new Location(
- Bukkit.getWorld("world"),
- Double.parseDouble(args[2]),
- Double.parseDouble(args[3]),
- Double.parseDouble(args[4])
- );
- Entity e = loc.getWorld().spawnEntity(loc, types, false);
- setNameSpacedKeys(
- e,
- getStringFromArg(args),
- Integer.parseInt(args[6]),
- Integer.parseInt(args[7]),
- 0,
- Integer.parseInt(args[8]),
- 0,
- Integer.parseInt(args[9]),
- 0,
- Integer.parseInt(args[10]),
- 0
- );
- e.customName(colorTextComp(getStringFromArg(args)));
- e.setCustomNameVisible(true);
- if (e instanceof LivingEntity livingEntity) {
- // livingEntity.getEquipment().set
- ItemStack helmet = itemFrom64(args[11]);
- ItemStack chestplate = itemFrom64(args[12]);
- ItemStack leggins = itemFrom64(args[13]);
- ItemStack boots = itemFrom64(args[14]);
- ItemStack mainhand = itemFrom64(args[15]);
- ItemStack offhand = itemFrom64(args[14]);
- EntityEquipment equip = livingEntity.getEquipment();
- equip.setHelmet(helmet);
- equip.setChestplate(chestplate);
- equip.setLeggings(leggins);
- equip.setBoots(boots);
- equip.setItemInMainHand(mainhand);
- equip.setItemInOffHand(offhand);
- }
-
- System.out.println(e.getName());
- } catch (IllegalArgumentException e) {
- error("Something happened near the SpawnEntity command.");
- throw new RuntimeException(e);
- } catch (IOException e) {
- error(
- "Could not deserialize item from the command EntitySpawn (command launched by " +
- sender.getName() +
- ")"
- );
- throw new RuntimeException(e);
}
- return false;
- }
-
- @Override
- public @Nullable List onTabComplete(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String alias,
- @NotNull String[] args
- ) {
- List list = new ArrayList<>();
- for (EntityType types : EntityType.values()) {
- list.add(types.name());
+ @Override
+ public @Nullable List onTabComplete(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String alias,
+ @NotNull String[] args
+ ) {
+ List list = new ArrayList<>();
+ for (EntityType types : EntityType.values()) {
+ list.add(types.name());
+ }
+ return list;
}
- return list;
- }
}
diff --git a/src/main/java/me/unurled/raxen/commands/admin/TestGuiCommand.java b/src/main/java/me/unurled/raxen/commands/admin/TestGuiCommand.java
index 83c3b42..5548867 100644
--- a/src/main/java/me/unurled/raxen/commands/admin/TestGuiCommand.java
+++ b/src/main/java/me/unurled/raxen/commands/admin/TestGuiCommand.java
@@ -14,34 +14,34 @@ import org.jetbrains.annotations.Nullable;
public class TestGuiCommand implements TabExecutor {
- @Override
- public boolean onCommand(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String label,
- @NotNull String[] args
- ) {
- if (sender instanceof Player) {
- Player player = (Player) sender;
- if (player.hasPermission("raxen.test.gui.cmd")) {
- player.openInventory(
- Bukkit.createInventory(null, 54, colorTextComp(args[0]))
- );
- }
- } else {
- log("The console can't execute this Command!");
- return true;
+ @Override
+ public boolean onCommand(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String label,
+ @NotNull String[] args
+ ) {
+ if (sender instanceof Player) {
+ Player player = (Player) sender;
+ if (player.hasPermission("raxen.test.gui.cmd")) {
+ player.openInventory(
+ Bukkit.createInventory(null, 54, colorTextComp(args[0]))
+ );
+ }
+ } else {
+ log("The console can't execute this Command!");
+ return true;
+ }
+ return false;
}
- return false;
- }
- @Override
- public @Nullable List onTabComplete(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String alias,
- @NotNull String[] args
- ) {
- return null;
- }
+ @Override
+ public @Nullable List onTabComplete(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String alias,
+ @NotNull String[] args
+ ) {
+ return null;
+ }
}
diff --git a/src/main/java/me/unurled/raxen/commands/admin/TutorialManagerCommand.java b/src/main/java/me/unurled/raxen/commands/admin/TutorialManagerCommand.java
new file mode 100644
index 0000000..c402510
--- /dev/null
+++ b/src/main/java/me/unurled/raxen/commands/admin/TutorialManagerCommand.java
@@ -0,0 +1,149 @@
+package me.unurled.raxen.commands.admin;
+
+import static me.unurled.raxen.utils.Utils.colorTextComp;
+import static me.unurled.raxen.utils.Utils.msgPlayer;
+import static me.unurled.raxen.utils.Utils.noPerms;
+
+import java.util.ArrayList;
+import java.util.List;
+import me.unurled.raxen.Raxen;
+import me.unurled.raxen.components.tutorial.Tutorial;
+import me.unurled.raxen.manager.server.TutorialManager;
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.TabExecutor;
+import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class TutorialManagerCommand implements TabExecutor {
+
+ Raxen main;
+ List complete = new ArrayList<>();
+
+ public TutorialManagerCommand(Raxen main) {
+ this.main = main;
+ }
+
+ @Override
+ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
+ @NotNull String label, @NotNull String[] args) {
+ if (!sender.hasPermission("raxen.tutorial.cmd")) {
+ sender.sendMessage(noPerms());
+ return true;
+ }
+ if (args.length == 0) {
+ // help
+ return true;
+ } else {
+ TutorialManager tutorialManager = main.getManager().getTutorialManager();
+ if (args.length == 1) {
+ if (args[0].equalsIgnoreCase("start")) {
+ // start tutorial for sender (if sender is a player)
+ if (sender instanceof Player player) {
+ Location loc = tutorialManager
+ .generateTutorial(player);
+ tutorialManager.getTutorial(player.getUniqueId())
+ .startTutorial(player, loc);
+ return true;
+ }
+ } else if (sender instanceof Player player) {
+ if (args[0].equalsIgnoreCase("stop")) {
+ // stop tutorial for sender
+ tutorialManager.getTutorial(player.getUniqueId())
+ .stopTutorial();
+ tutorialManager.removeTutorial(player.getUniqueId());
+ return true;
+ } else if (args[0].equalsIgnoreCase("next")) {
+ // next step for sender
+ tutorialManager.getTutorial(player.getUniqueId())
+ .nextStep();
+ return true;
+ } else if (args[0].equalsIgnoreCase("prev")) {
+ // prev step for sender
+ tutorialManager.getTutorial(player.getUniqueId())
+ .previousStep();
+ return true;
+ } else if (args[0].equalsIgnoreCase("status")) {
+ // status of tutorial for sender
+ Tutorial tutorial = tutorialManager.getTutorial(player.getUniqueId());
+ msgPlayer(player, colorTextComp(
+ "Tutorial status for player " + player.getName() + ": "
+ + tutorial.getStep()));
+ return true;
+ }
+ }
+ } else if (args.length == 2) {
+ Player player = Bukkit.getPlayer(args[1]);
+ if (player != null) {
+ if (player.isOnline()) {
+ if (args[0].equalsIgnoreCase("start")) {
+ // start tutorial for player
+ Location loc = tutorialManager
+ .generateTutorial(player);
+ tutorialManager.getTutorial(player.getUniqueId())
+ .startTutorial(player, loc);
+ } else if (args[0].equalsIgnoreCase("stop")) {
+ // stop tutorial for sender
+ tutorialManager.getTutorial(player.getUniqueId())
+ .stopTutorial();
+ tutorialManager.removeTutorial(player.getUniqueId());
+ return true;
+ } else if (args[0].equalsIgnoreCase("next")) {
+ // next step for sender
+ tutorialManager.getTutorial(player.getUniqueId())
+ .nextStep();
+ return true;
+ } else if (args[0].equalsIgnoreCase("prev")) {
+ // prev step for sender
+ tutorialManager.getTutorial(player.getUniqueId())
+ .previousStep();
+ return true;
+ } else if (args[0].equalsIgnoreCase("status")) {
+ // status of tutorial for sender
+ Tutorial tutorial = tutorialManager.getTutorial(player.getUniqueId());
+ msgPlayer(player, colorTextComp(
+ "Tutorial status for player " + player.getName() + ": "
+ + tutorial.getStep()));
+ return true;
+ }
+ return true;
+ }
+ }
+
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public @Nullable List onTabComplete(@NotNull CommandSender sender,
+ @NotNull Command command, @NotNull String label, @NotNull String[] args) {
+ if (complete.isEmpty()) {
+ complete.add("start");
+ complete.add("stop");
+ complete.add("next");
+ complete.add("prev");
+ complete.add("status");
+ }
+ List result = new ArrayList<>();
+ if (args.length == 1) {
+ for (String s : complete) {
+ if (s.toLowerCase().startsWith(args[0].toLowerCase())) {
+ result.add(s);
+ }
+ }
+ return result;
+ } else if (args.length == 2) {
+ for (Player p : Bukkit.getOnlinePlayers()) {
+ if (p.getName().toLowerCase().startsWith(args[1].toLowerCase())) {
+ result.add(p.getName());
+ }
+ }
+ return result;
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/me/unurled/raxen/commands/player/ClassCommand.java b/src/main/java/me/unurled/raxen/commands/player/ClassCommand.java
index 47900ed..a152a39 100644
--- a/src/main/java/me/unurled/raxen/commands/player/ClassCommand.java
+++ b/src/main/java/me/unurled/raxen/commands/player/ClassCommand.java
@@ -19,64 +19,64 @@ import org.jetbrains.annotations.Nullable;
public class ClassCommand implements TabExecutor {
- private Raxen main;
+ private Raxen main;
- /**
- * the Command to choose the class
- * @param main
- */
- public ClassCommand(Raxen main) {
- this.main = main;
- }
-
- @Override
- public boolean onCommand(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String label,
- @NotNull String[] args
- ) {
- if (!(sender instanceof Player)) {
- error(
- (Raxen) Bukkit.getPluginManager().getPlugin("Raxen"),
- "The console can't execute this Command!"
- );
- return true;
+ /**
+ * the Command to choose the class
+ * @param main
+ */
+ public ClassCommand(Raxen main) {
+ this.main = main;
}
- Player player = (Player) sender;
- Inventory inv = Bukkit.createInventory(
- null,
- 9,
- colorTextComp("Choose your class")
- );
- HashMap classes = main
- .getManager()
- .getPlayerManager()
- .getClasses();
- if (classes.size() > 10) {
- if (classes.size() > 55) {
- inv =
- Bukkit.createInventory(
+
+ @Override
+ public boolean onCommand(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String label,
+ @NotNull String[] args
+ ) {
+ if (!(sender instanceof Player)) {
+ error(
+ (Raxen) Bukkit.getPluginManager().getPlugin("Raxen"),
+ "The console can't execute this Command!"
+ );
+ return true;
+ }
+ Player player = (Player) sender;
+ Inventory inv = Bukkit.createInventory(
null,
- classes.size(),
+ 9,
colorTextComp("Choose your class")
- );
- }
+ );
+ HashMap classes = main
+ .getManager()
+ .getPlayerManager()
+ .getClasses();
+ if (classes.size() > 10) {
+ if (classes.size() > 55) {
+ inv =
+ Bukkit.createInventory(
+ null,
+ classes.size(),
+ colorTextComp("Choose your class")
+ );
+ }
+ }
+ for (Class clas : classes.values()) {
+ ItemStack item = clas.getPlaceHolder();
+ inv.addItem(item);
+ }
+ return false;
}
- for (Class clas : classes.values()) {
- ItemStack item = clas.getPlaceHolder();
- inv.addItem(item);
- }
- return false;
- }
- @Override
- public @Nullable List onTabComplete(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String alias,
- @NotNull String[] args
- ) {
- return null;
- }
+ @Override
+ public @Nullable List onTabComplete(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String alias,
+ @NotNull String[] args
+ ) {
+ return null;
+ }
}
diff --git a/src/main/java/me/unurled/raxen/commands/player/MainGuiCommand.java b/src/main/java/me/unurled/raxen/commands/player/MainGuiCommand.java
index 694c2f9..c8784ef 100644
--- a/src/main/java/me/unurled/raxen/commands/player/MainGuiCommand.java
+++ b/src/main/java/me/unurled/raxen/commands/player/MainGuiCommand.java
@@ -16,57 +16,57 @@ import org.jetbrains.annotations.Nullable;
public class MainGuiCommand implements TabExecutor {
- private Raxen main;
+ private Raxen main;
- public MainGuiCommand(Raxen main) {
- this.main = main;
- }
-
- /**
- * @param sender Source of the command
- * @param command Command which was executed
- * @param label Alias of the command which was used
- * @param args Passed command arguments
- * @return
- */
- @Override
- public boolean onCommand(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String label,
- @NotNull String[] args
- ) {
- if (!(sender instanceof Player)) {
- errorConsoleSender(sender);
- return true;
+ public MainGuiCommand(Raxen main) {
+ this.main = main;
}
- Player p = (Player) sender;
- if (!(p.hasPermission("raxen.maingui.cmd"))) {
- sender.sendMessage(noPerms());
- return true;
- }
- Inventory inv = MainGui.build(p);
- p.openInventory(inv);
- return true;
- }
- /**
- * @param sender Source of the command. For players tab-completing a
- * command inside of a command block, this will be the player, not
- * the command block.
- * @param command Command which was executed
- * @param label Alias of the command which was used
- * @param args The arguments passed to the command, including final
- * partial argument to be completed
- * @return
- */
- @Override
- public @Nullable List onTabComplete(
- @NotNull CommandSender sender,
- @NotNull Command command,
- @NotNull String label,
- @NotNull String[] args
- ) {
- return null;
- }
+ /**
+ * @param sender Source of the command
+ * @param command Command which was executed
+ * @param label Alias of the command which was used
+ * @param args Passed command arguments
+ * @return
+ */
+ @Override
+ public boolean onCommand(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String label,
+ @NotNull String[] args
+ ) {
+ if (!(sender instanceof Player)) {
+ errorConsoleSender(sender);
+ return true;
+ }
+ Player p = (Player) sender;
+ if (!(p.hasPermission("raxen.maingui.cmd"))) {
+ sender.sendMessage(noPerms());
+ return true;
+ }
+ Inventory inv = MainGui.build(p);
+ p.openInventory(inv);
+ return true;
+ }
+
+ /**
+ * @param sender Source of the command. For players tab-completing a
+ * command inside of a command block, this will be the player, not
+ * the command block.
+ * @param command Command which was executed
+ * @param label Alias of the command which was used
+ * @param args The arguments passed to the command, including final
+ * partial argument to be completed
+ * @return
+ */
+ @Override
+ public @Nullable List onTabComplete(
+ @NotNull CommandSender sender,
+ @NotNull Command command,
+ @NotNull String label,
+ @NotNull String[] args
+ ) {
+ return null;
+ }
}
diff --git a/src/main/java/me/unurled/raxen/commands/player/PartyCommand.java b/src/main/java/me/unurled/raxen/commands/player/PartyCommand.java
new file mode 100644
index 0000000..37391fd
--- /dev/null
+++ b/src/main/java/me/unurled/raxen/commands/player/PartyCommand.java
@@ -0,0 +1,224 @@
+package me.unurled.raxen.commands.player;
+
+import java.util.ArrayList;
+import java.util.List;
+import me.unurled.raxen.Raxen;
+import me.unurled.raxen.components.entity.player.RaxenPlayer;
+import me.unurled.raxen.utils.Utils;
+import org.bukkit.Bukkit;
+import org.bukkit.Sound;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.TabExecutor;
+import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class PartyCommand implements TabExecutor {
+
+ Raxen main;
+
+ List complete = new ArrayList<>();
+
+ public PartyCommand(Raxen main) {
+ this.main = main;
+ }
+
+ @Override
+ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
+ @NotNull String label, @NotNull String[] args) {
+ if (!(sender instanceof Player)) {
+ Utils.errorConsoleSender(sender);
+ return true;
+ }
+ Player player = (Player) sender;
+ if (player.getWorld().getName().equalsIgnoreCase("tutorial")) {
+ player.sendMessage(Utils.colorComp(
+ "> Sorry, you can't use this command in the tutorial!"));
+ player.sendMessage(Utils.colorComp(
+ "> Please finish the tutorial first. Feel free to ask for help!"));
+ return true;
+ }
+ RaxenPlayer rx = main.getManager().getPlayerManager()
+ .getRaxenPlayer(player);
+ if (args.length == 0) {
+ player.sendMessage(
+ Utils.colorComp("/party help to view all infos on party"));
+ return true;
+ }
+ if (args[0].equalsIgnoreCase("help")) {
+ player.sendMessage(
+ Utils.colorComp("/party help to view all infos on party"));
+ player.sendMessage(Utils.colorComp("/party create to create a party"));
+ player.sendMessage(Utils.colorComp(
+ "/party invite to invite a player to your party"));
+ player.sendMessage(Utils.colorComp("/party leave to leave your party"));
+ player.sendMessage(Utils.colorComp(
+ "/party kick to kick a player from your party"));
+ player.sendMessage(
+ Utils.colorComp("/party disband to disband your party"));
+ player.sendMessage(
+ Utils.colorComp("/party accept to accept a party invite"));
+ player.sendMessage(
+ Utils.colorComp("/party decline to deny a party invite"));
+ player.sendMessage(
+ Utils.colorComp("/party list to list all members of your party"));
+ player.sendMessage(
+ Utils.colorComp("\\ before every message to send it to your party"));
+ return true;
+ } else if (args[0].equalsIgnoreCase("create")) {
+ main.getManager().getPartyManager().createParty(player, rx);
+ return true;
+ } else if (args[0].equalsIgnoreCase("invite")) {
+ if (rx.getParty() != null) {
+ if (args.length != 2) {
+ player.sendMessage(Utils.colorComp(
+ "> Usage: /party invite "));
+ return true;
+ } else {
+ String name = args[1];
+ Player target = main.getServer().getPlayer(name);
+ RaxenPlayer rx2 = main.getManager().getPlayerManager()
+ .getRaxenPlayer(target);
+ if (rx2 == null || target == null || !target.isOnline()) {
+ player.sendMessage(Utils.colorComp(
+ "> Player not found!"));
+ return true;
+ }
+ if (rx.getParty().isFull()) {
+ player.sendMessage(Utils.colorComp(
+ "> Your party is full!"));
+ return true;
+ } else {
+ rx.getParty().sendInvite(target, rx2, player);
+ }
+ }
+ } else {
+ player.sendMessage(Utils.colorComp(
+ "> You are not in a party!"));
+ return true;
+ }
+ } else if (args[0].equalsIgnoreCase("accept")) {
+ if (rx.getInvitedParty() == null) {
+ player.sendMessage(Utils.colorComp(
+ "> You have no pending party invites!"));
+ return true;
+ } else {
+ rx.getInvitedParty().addPlayer(player);
+ rx.setParty(rx.getInvitedParty());
+ rx.setInvitedParty(null);
+ return true;
+ }
+ } else if (args[0].equalsIgnoreCase("decline")) {
+ if (rx.getInvitedParty() != null) {
+ rx.getInvitedParty().sendMessage(Utils.colorComp(
+ "> " + player.getName() + " has declined the party invite!"));
+ }
+ rx.setInvitedParty(null);
+ player.sendMessage(Utils.colorComp(
+ "> You have declined the party invite!"));
+ } else if (args[0].equalsIgnoreCase("leave")) {
+ if (rx.getParty() == null) {
+ player.sendMessage(Utils.colorComp(
+ "> You are not in a party!"));
+ return true;
+ } else {
+ rx.getParty().leavePlayer(player.getUniqueId(), player.getName());
+ rx.setParty(null);
+ return true;
+ }
+ } else if (args[0].equalsIgnoreCase("kick")) {
+ if (rx.getParty() == null) {
+ player.sendMessage(Utils.colorComp(
+ "> You are not in a party!"));
+ return true;
+ } else {
+ if (!rx.getParty().isLeader(player)) {
+ player.sendMessage(Utils.colorComp(
+ "> You are not the party leader!"));
+ return true;
+ } else {
+ if (args.length != 2) {
+ player.sendMessage(Utils.colorComp(
+ "> Usage: /party kick "));
+ return true;
+ } else {
+ String name = args[1];
+ Player target = main.getServer().getPlayer(name);
+ RaxenPlayer rx2 = main.getManager().getPlayerManager()
+ .getRaxenPlayer(target);
+ if (rx2 == null || target == null || !target.isOnline()) {
+ player.sendMessage(Utils.colorComp(
+ ">