1
0
mirror of https://github.com/mcMMO-Dev/mcMMO.git synced 2026-02-20 18:53:11 +01:00

Compare commits

...

160 Commits

Author SHA1 Message Date
Shane Freeder
21b4bcc21f Fix onLoad, restore WG support 2020-03-05 01:12:02 +00:00
Shane Freeder
f96ba1b4b5 Actually use the BukkitMetadataStore 2020-03-04 23:23:20 +00:00
Shane Freeder
5ba410f4cf Implement BukkitMetadataStore, fix legacy setMetadata calls 2020-03-04 23:19:11 +00:00
Shane Freeder
88767fd0a9 Complete BukkitRunnable migration 2020-03-04 16:04:48 +00:00
Shane Freeder
a2c88d657c It compiles
running is a different matter, however...
2020-02-29 05:05:49 +00:00
Shane Freeder
a26216b0d0 Merge branch 'configurable' into api 2020-02-29 01:01:26 +00:00
Shane Freeder
33e0b40e19 Merge remote-tracking branch 'origin/master' into configurable 2020-02-29 00:21:37 +00:00
nossr50
31a98791f3 dev mode 2020-02-28 15:48:48 -08:00
nossr50
c2bbe33fe8 2.1.118 2020-02-28 15:44:22 -08:00
nossr50
12abd68add Rupture fires a FakeEntityDamageByEntityEvent fixes #4122 2020-02-28 15:43:32 -08:00
nossr50
326ff1cd70 Update blast mining info in /mining 2020-02-28 15:27:57 -08:00
nossr50
9f0fe26778 Blast Mining Tweaks 2020-02-27 12:45:35 -08:00
nossr50
0a59b79ef9 Dev mode 2020-02-27 10:50:56 -08:00
nossr50
441125dbd1 2.1.117 2020-02-27 07:36:41 -08:00
nossr50
27b1c6b094 null check on player debug command 2020-02-24 17:08:23 -08:00
nossr50
d661a77c82 Merge branch 'configurable' of github.com:mcMMO-Dev/mcmmo into api 2020-02-24 16:06:38 -08:00
nossr50
db70d56493 Merge branch 'master' of github.com:mcMMO-Dev/mcmmo into configurable 2020-02-24 16:05:34 -08:00
nossr50
eff1ce102f Merge branch 'master' of github.com:mcMMO-Dev/mcmmo 2020-02-24 16:01:18 -08:00
nossr50
705b57a30b dev mode 2020-02-24 16:01:10 -08:00
Shane Freeder
d4ba9d7605 Reduce mojang profile API call limit (Fixes #4121) 2020-02-22 11:12:52 +00:00
nossr50
f50b368b60 Merge branch 'configurable' of github.com:mcMMO-Dev/mcmmo into api 2020-02-20 17:44:46 -08:00
nossr50
3b3396ce2c Merge branch 'master' of github.com:mcMMO-Dev/mcmmo into configurable 2020-02-20 17:43:58 -08:00
nossr50
4cd91350db 2.1.116 2020-02-20 17:35:33 -08:00
nossr50
1204b9a94c merge configurable into api, don't hurt me 2020-02-20 16:36:52 -08:00
nossr50
b3bea7833f Merge me daddy 2020-02-20 16:22:46 -08:00
nossr50
b0c7e0368a merge master + singleton removal on ParticleEffectUtils 2020-02-20 16:15:38 -08:00
nossr50
4e895b7361 Some kyori/text stuff 2020-02-20 15:23:58 -08:00
nossr50
6168309ec9 2.1.115 2020-02-19 17:41:47 -08:00
nossr50
95c403a467 More tweaks to GT 2020-02-19 17:31:00 -08:00
nossr50
a598796c99 More tweaks to GT 2020-02-19 17:20:05 -08:00
nossr50
a333f36fd8 Fix sneak check on GT 2020-02-19 16:19:19 -08:00
nossr50
7c6d5c476d Green Thumb requires a hoe, sneak to break with a hoe 2020-02-19 16:14:21 -08:00
nossr50
e2073ff9f7 Immature crop replanting, green thumb tweaks, replant accidental break
protection
2020-02-19 15:58:53 -08:00
nossr50
8f26544188 Immature plants will be replanted if weilding a hoe 2020-02-19 13:51:10 -08:00
nossr50
4e21f1a200 tweak and fix salvage result chance 2020-02-19 13:27:21 -08:00
nossr50
ab6dbe306d Fix potential NPE for salvage 2020-02-19 11:38:48 -08:00
nossr50
19a4c0238f add sonatype 2020-02-17 19:34:10 -08:00
nossr50
c071471bdf update for text libs 2020-02-17 19:27:21 -08:00
nossr50
85550c5750 Add kashike's text lib to dependencies 2020-02-17 18:46:48 -08:00
nossr50
3c382a11ed Add showtags subcommand to nbttools 2020-02-17 18:30:09 -08:00
nossr50
f45c70b694 More work on ACF integration 2020-02-12 15:20:21 -08:00
Shane Freeder
38d64f207d Fix default permission for Critical Strikes 2020-02-12 02:06:49 +00:00
nossr50
2d342f8a3d Missing default tag 2020-02-11 15:44:52 -08:00
nossr50
3b276b59cf Merge branch 'nbt' of github.com:mcMMO-Dev/mcmmo into configurable 2020-02-10 13:20:05 -08:00
nossr50
4ff4def56a Optimize imports 2020-02-10 13:19:14 -08:00
nossr50
63de093ebb Remove debug on swing 2020-02-10 13:18:42 -08:00
nossr50
b34f0d62d6 Fixing shadow dependencies (I hope) 2020-02-10 13:13:29 -08:00
nossr50
a74f33c96d Latest changes 2020-02-09 16:06:28 -08:00
Shane Freeder
8e8024e3e1 update changelog 2020-02-09 22:50:28 +00:00
Shane Freeder
4f161812aa Use minimum level of salvagable properly 2020-02-09 22:47:20 +00:00
nossr50
24ba3b1a01 New command 'nbttools' also integrating ACF 2020-02-07 15:06:00 -08:00
nossr50
359e3e34ad Unused import 2020-02-07 13:28:17 -08:00
nossr50
ab0fc06dc2 Merge branch 'configurable' of github.com:mcMMO-Dev/mcmmo into nbt 2020-02-07 11:32:26 -08:00
Shane Freeder
11ca0d9ff1 Fix 1.13.x archery compat 2020-02-04 23:36:54 +00:00
Shane Freeder
4eef4a3e41 Fix CCE from spectral arrows (Fixes #4114) 2020-02-04 23:29:51 +00:00
Shane Freeder
c2bbbdf24f More API work 2020-02-04 23:03:42 +00:00
Shane Freeder
c916070cd1 Create BukkitPlatformScheduler 2020-02-01 02:29:02 +00:00
Shane Freeder
48e547e51f More API refactoring work 2020-01-31 01:48:19 +00:00
Shane Freeder
4ee86bf6a6 Merge branch 'configurable' into api 2020-01-30 10:24:18 +00:00
Shane Freeder
816b64cb70 Track spectral arrows for combat 2020-01-28 16:37:02 +00:00
Shane Freeder
dceee5554d Fix CombatUtils NPE due to arrows from unloaded players 2020-01-28 16:33:30 +00:00
nossr50
e3edc9a18f Fix faulty WG logic 2020-01-27 20:38:52 -08:00
nossr50
aaffafb88b No more Standard or Retro, use cosmetic scale modifier setting instead 2020-01-27 20:13:36 -08:00
nossr50
2e5a12a72b Add new Cosmetic Level Scaling setting to the leveling config 2020-01-27 19:11:00 -08:00
nossr50
769a26a911 Merge branch 'master' of github.com:mcMMO-Dev/mcmmo into configurable 2020-01-27 19:03:24 -08:00
nossr50
8094be46c8 Dev mode 2020-01-27 19:01:08 -08:00
nossr50
2525ce9abe 2.1.114 2020-01-27 18:53:39 -08:00
nossr50
47bcd1223b Merge branch 'master' of github.com:mcMMO-Dev/mcmmo into configurable 2020-01-27 18:47:06 -08:00
nossr50
ea70c937f2 Fix rank for new versions of MySQL 2020-01-27 18:45:19 -08:00
nossr50
3eb160a794 Missed a few merges 2020-01-27 18:40:46 -08:00
nossr50
4b6e2c35b2 Merge branch 'master' of github.com:mcMMO-Dev/mcmmo into configurable 2020-01-27 18:36:32 -08:00
Shane Freeder
550a3df616 place SnowGolemExcavation exploit fix under the correct section 2020-01-28 00:12:50 +00:00
apachezy
657abb76a7 "EndermanEndermiteFarms" does not work. (#4111)
This error causes the "ExploitFix.EndermanEndermiteFarms" option in ExperienceConfig to not work.
2020-01-28 00:11:57 +00:00
Shane Freeder
0ffcff53b3 Further address locale issues (Targets #4083) 2020-01-26 17:48:14 +00:00
nossr50
33f4ac14b5 Add toggle for snow golem exploit to experience.yml - SnowGolemExcavation 2020-01-24 18:28:41 -08:00
nossr50
15d3119627 Berserk now breaks a soft block if it was used to activate it 2020-01-24 01:25:55 -08:00
nossr50
4fd94bfe29 2.1.113 2020-01-24 01:11:23 -08:00
nossr50
ac731258c7 Berserk now breaks glass and makes noise when doing so 2020-01-24 01:09:19 -08:00
nossr50
7b8c90d362 BlockCracker fix for infested stone bricks 2020-01-24 00:56:16 -08:00
nossr50
055391e908 Hacky fix for spigot bug 2020-01-24 00:43:18 -08:00
nossr50
cd6ce5a19d Correct changelog 2020-01-23 20:34:54 -08:00
nossr50
7441d2d8d6 Merge branch 'master' of github.com:mcMMO-Dev/mcmmo 2020-01-23 20:34:13 -08:00
nossr50
7b941baa1c Update changelog 2020-01-23 20:34:00 -08:00
Shane Freeder
21a0a05683 Current progress on data accessors
Pushing because I started on stuff and don't wanna lose it...
2020-01-20 21:52:52 +00:00
Lane
0c1fa07079 Fixed typo in config for potato (#4096) 2020-01-17 07:23:28 +00:00
andrewkm
539cd7290e Retro mode documentation. (#4104)
This commit will save lives, believe me.
2020-01-17 07:21:31 +00:00
Shane Freeder
406429f4e3 Use ThreadedLocalRandom for RNG utils 2020-01-16 18:21:35 +00:00
Shane Freeder
ec58a0e81f Merge branch 'configurable' into api 2020-01-16 09:49:49 +00:00
Shane Freeder
40802e6bae Merge branch 'master' into configurable 2020-01-16 04:50:50 +00:00
t00thpick1
421a394f68 Another check for PTP exploit 2020-01-15 13:49:11 -08:00
t00thpick1
d4adb490e2 Fixing PTP exploit 2020-01-15 13:32:10 -08:00
nossr50
de5a8babc5 dev mode 2020-01-15 13:21:33 -08:00
nossr50
d892bfe83a 2.1.112 2020-01-14 20:10:33 -08:00
nossr50
ceaff0c862 SkillShot tweaks 2020-01-14 20:09:41 -08:00
nossr50
a118d8465e Sweet Berry Bush nerf 2020-01-14 19:57:38 -08:00
nossr50
7c156319be Skill Shot is now multiplicative instead of additive 2020-01-14 19:53:37 -08:00
nossr50
24b3bf1100 NPE fix for combat on unloaded profiles 2020-01-14 19:44:17 -08:00
nossr50
41bdca948a Update POM for 1.15.1 2020-01-13 19:28:28 -08:00
Shane Freeder
5441a7eb96 Add doTranslation script for easing repetative migrations 2020-01-11 16:56:39 +00:00
Shane Freeder
c45f2ce406 Merge branch 'master' into configurable 2020-01-11 16:51:38 +00:00
Shane Freeder
3cbbf1bee0 Move valid check higher up, no need to set additional metadata 2019-12-31 12:17:03 +00:00
Shane Freeder
8fd1af4cbf Don't cache mob infomation in the updater task 2019-12-31 12:16:12 +00:00
Shane Freeder
601297799f Enforce locale usage for enums to ensure correct casing (Fixes #4086) 2019-12-16 01:05:47 +00:00
nossr50
da98be88ad Update changelog 2019-12-10 21:51:41 -08:00
nossr50
1104f48ad5 2.1.111 2019-12-10 21:46:09 -08:00
nossr50
af50699de1 1.15 changes 2019-12-10 21:35:44 -08:00
Shane Freeder
1c71f1daf5 Update changelog 2019-11-13 19:56:07 +00:00
Shane Freeder
b7dd491c01 Prevent nesting of bleed damage
This commit prevents the nesting of damage event processing in general in
regards to bleed, health related stuff will need a further glance over down
the line, however; This will fix a major problematic area
2019-11-13 19:53:02 +00:00
nossr50
3ce0d7b972 dev mode 2019-11-10 19:51:47 -08:00
Robert Alan Chapton
9dcbccb010 Merge pull request #4078 from Ineusia/master
Missing Section Error Messages (Repair & Salvage Config)
2019-11-10 18:18:12 -08:00
Ineusia
c5cbab39b6 Update RepairConfig.java
Removed accidental whitespace
2019-11-10 11:56:32 -06:00
Ineusia
ca1906fbc5 Added error message for missing Salvageables section (rather than throw NPE) 2019-11-08 01:15:32 -06:00
Ineusia
7eab20ef56 Added error message for missing Repairables section (rather than throw NPE) 2019-11-08 01:11:29 -06:00
nossr50
25a9c75a5a Flesh out NBT types 2019-10-31 20:15:36 -07:00
nossr50
9911c406f8 Refactor some Type names and javadocs 2019-10-30 14:56:30 -07:00
nossr50
fdb900ec5d PlatformManager to manage the platform adapters 2019-10-30 14:38:02 -07:00
nossr50
bf94073935 Work on NBT adapters 2019-10-29 19:00:16 -07:00
nossr50
bfcc167862 Flesh out NBT types 2019-10-29 12:23:39 -07:00
nossr50
2a606b1ed1 Our own basic NBT types 2019-10-28 19:47:38 -07:00
nossr50
edc8701e35 Some JavaDocs 2019-10-22 16:13:53 -07:00
nossr50
188b0f9813 2.1.110 2019-10-18 15:48:53 -07:00
nossr50
e6c9cc6fdd Actually fixed BlockCracker + One more type of block can be cracked 2019-10-18 15:48:12 -07:00
nossr50
76ca7cc88f Additional dupe failsafes 2019-10-18 15:37:36 -07:00
nossr50
335d708848 Bump version 2019-10-18 15:24:46 -07:00
nossr50
b4179cb9a6 Fixed a dupe bug 2019-10-18 15:23:15 -07:00
Robert Alan Chapton
8bbf95e9da Merge pull request #4065 from Vyciokazz/master
locale_lt_LT.properties
2019-10-18 01:10:09 -07:00
nossr50
dc805825de 2.1.109 2019-10-17 20:16:01 -07:00
Robert Alan Chapton
871ca744d9 Merge pull request #4070 from Fabrimat/patch-4
Update locale_it.properties
2019-10-17 10:01:26 -07:00
Fabrizio La Rosa
1b091bdbd5 Update locale_it.properties
Fixed definetly /mctop and fixed special characters.
2019-10-17 13:37:00 +02:00
Shane Freeder
f8a14a7ab3 Merge remote-tracking branch 'origin/configurable' into api 2019-10-09 21:54:48 +01:00
Shane Freeder
eee09d8d76 [WIP] Start breakout of mcmmo plugin
This commit starts work on the seperation of mcmmo and platform logic,
there is still a fair amount of work to go before this will compile,
down the line (potentially much further), bukkit logic will be stripped
out of -core
2019-10-09 21:53:04 +01:00
Robert Alan Chapton
31dc7bf03f Update build.gradle.kts 2019-10-09 12:46:04 -07:00
Shane Freeder
1fbcf698c6 Merge branch 'configurable' into api 2019-10-06 01:34:55 +01:00
Shane Freeder
7be849da2a Fix compilation warnings 2019-10-06 01:16:27 +01:00
Shane Freeder
b572494c9c Remove the other deprecated PlayerProfile constructor 2019-10-06 01:07:01 +01:00
Shane Freeder
143714c9eb Remove deprecated PlayerProfile constructor 2019-10-06 01:03:07 +01:00
Shane Freeder
a84a9e9c38 Create api module, McMMOPlayer -> BukkitMMOPlayer 2019-10-05 02:55:03 +01:00
Robert Alan Chapton
110d9a633b Update FUNDING.yml 2019-10-02 13:26:34 -07:00
Robert Alan Chapton
584859318b Create FUNDING.yml 2019-10-02 13:06:56 -07:00
nossr50
4bff07bd2b Target the tag compound 2019-10-01 16:52:35 -07:00
nossr50
365938f351 ItemMeta needed? 2019-10-01 16:33:31 -07:00
nossr50
7f6bbadc1c Less error prone Kappa 2019-10-01 16:28:46 -07:00
nossr50
ec1fdea40d Progress??? 2019-10-01 16:23:59 -07:00
nossr50
8febe2d0bd Progress?? 2019-10-01 16:19:15 -07:00
nossr50
6e0f8f99fa Progress? 2019-10-01 15:44:58 -07:00
Robert A. C
1eb2c7b2d7 Merge pull request #4068 from ethernetcat/master
Update locale_ja_JP.properties
2019-10-01 14:37:21 -04:00
SNAKE
3310a12a95 Update locale_ja_JP.properties 2019-10-02 01:43:51 +09:00
nossr50
433f6d085d Time for a break 2019-09-30 17:53:57 -07:00
nossr50
0509f4f63e Starting work on reading NBT 2019-09-30 16:47:47 -07:00
nossr50
d2028321d4 Fixing SuperAbility strings 2019-09-30 16:11:06 -07:00
nossr50
4437f419cb Fix our TamingSummon serializer 2019-09-30 15:44:22 -07:00
nossr50
a58d875d74 Cleaning up more runtime errors during load 2019-09-30 15:28:51 -07:00
nossr50
154d0a8d50 Completely disable all Repair code pending rewrite
Repair code will be handled in a sep branch, this is being done so the
configurable branch can compile and be semi-playable for testing
important in development features.
2019-09-30 15:10:59 -07:00
nossr50
9e01a07542 Removing the hocon package 2019-09-30 14:34:38 -07:00
nossr50
f13364eb04 You missed some stuff catboy :) 2019-09-30 14:18:59 -07:00
nossr50
b763a56d75 Ignore bash scripts + Update Changelog 2019-09-30 13:59:38 -07:00
Shane Freeder
c7d2631a79 Add maven central repo 2019-09-30 21:37:33 +01:00
Shane Freeder
0cea66a084 Set version back to 2.2.0-SNAPSHOT 2019-09-30 21:26:30 +01:00
Shane Freeder
6125b3fbd2 Don't spam incompatible WG error 2019-09-27 18:57:25 +01:00
Vyciokazz
1b889b8177 locale_lt_LT.properties
I translated in Lithuanian language manny required info for player and player skils, in time i update this translation.
2019-09-18 00:14:14 +03:00
495 changed files with 7850 additions and 3945 deletions

1
.gitattributes vendored
View File

@@ -2,3 +2,4 @@
*.png binary *.png binary
*.wav binary *.wav binary
p

12
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: [nossr50] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: nossr50 # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: https://paypal.me/nossr50 # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

4
.gitignore vendored
View File

@@ -9,6 +9,10 @@ dist/
nbdist/ nbdist/
.nb-gradle/ .nb-gradle/
### Bash Scripts
*.sh
!mcmmo-core/src/main/resources/com/gmail/nossr50/locale/doTranslation.sh
### JetBrains template ### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

View File

@@ -5,6 +5,9 @@ Version 2.2.0
!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!
mcMMO's config system has been rewritten mcMMO's config system has been rewritten
Retro and Standard mode have been removed, now levels are based around 1-1000 and are changed based on a new setting
Added Cosmetic Level Scaling setting to the leveling config, you can use this to for example, make the max level 100 instead of 1000
mcMMO build management is now handled by Gradle (KTS) instead of Maven
Nearly every config setting has been renamed and most have brand new comments Nearly every config setting has been renamed and most have brand new comments
You can now add an unlimited number of custom XP perks with custom defined XP boosts You can now add an unlimited number of custom XP perks with custom defined XP boosts
Added new subskill to Fishing named 'Inner Peace' Added new subskill to Fishing named 'Inner Peace'
@@ -199,8 +202,86 @@ Version 2.2.0
Added API method to grab the level cap of a skill by its PrimarySkillType ENUM definition Added API method to grab the level cap of a skill by its PrimarySkillType ENUM definition
Added API method to check if a skill was being level capped Added API method to check if a skill was being level capped
Added 'UndefinedSkillBehaviour' for trying to use a method that has no behaviour defined for the provided skill Added 'UndefinedSkillBehaviour' for trying to use a method that has no behaviour defined for the provided skill
Version 2.1.118
Fixed another dupe bug
Blast Mining no longer reduces debris from explosions due to some issues with the Bukkit API
Modified locale string 'Mining.Blast.Effect' to remove debris reduction mention
Rupture now fires a FakeEntityDamageByEntityEvent before damaging its victims (cancelling it will be ignored)
Version 2.1.117
Fixed a rare http error when polling Mojang for UUIDs
Fixed a bug that allowed duping
Version 2.1.116
Fixed directional plants not maintaining their direction when replanted
Version 2.1.115
Green Thumb now requires a hoe to activate
Hoes no longer give free replants
You can sneak to break plants with a hoe in your hand (or just put the hoe away)
Using a hoe on non-fully grown crops will replant them as a convenience feature
New sound option in sounds.yml called 'ITEM_CONSUMED', plays when eating seeds for Green Thumb
Cocoa plants now require GT of at least 2 to start at the second stage of growth
Green Terra now boosts growth on Green Thumb by 1 stage (doesn't go above the maximum value though)
There is now a feature in place to prevent breaking a newly automatically replanted (via green thumb) crop from being breakable for a few seconds after it appears
Fixed a bug where Salvage always gave the best results
Fixed an issue with arrows causing exceptions with players not yet having data loaded
Spectral arrows are now tracked by mcMMO
Use minimum level of salvageable properly
Fix Axes Critical Strikes default permissions ( new fixed permission: mcmmo.ability.axes.criticalstrikes )
Fix potential null pointer exception for salvage
Updated locale entry 'Herbalism.SubSkill.GreenTerra.Description'
Version 2.1.114
Fix some more locale usages, should aim to further prevent issues with oddball locales
Fixed a bug where newer versions of MySQL did not like our rank command
Added a new setting to turn off the Snow Golem Exploit prevention to experience.yml next to the other exploit fixes
Fixed a bug which stopped the optional Endermite XP exploit fix from working
Version 2.1.113
Activating Berserk on a soft block (glass, snow, dirts) will break that material right away instead of only breaking subsequent blocks hit by the player
Berserk will now break glass and glass pane blocks
Hitting glass with berserk readied will activate it
Added GLASS settings to sounds.yml for Berserk
Fixed bug where BlockCracker didn't work on infested_stone_bricks
Fixed a bug where beacons could be duplicated
Check player's PTP world permissions before executing a party teleport
Improved how mcMMO handles randomness
Version 2.1.112
Correct locale usage for enum access, now enforces using the english locale to prevent issues with oddball locales for configs/commands
Fixed a NPE that can occur if a player engages in combat with specific skills before their profile is loaded
mcMMO is now more compatible with certain mob stacking plugins
Improved behaviour for mob health bars
Archery's Skill Shot bonus damage is now multiplicative instead of additive (nerfing early game skill shot ranks)
Sweet Berry Bush's default Herbalism XP is now 50 instead of 300 (Update your experience.yml or delete it to generate a new one)
Version 2.1.111
mcMMO is compatible with the following versions of MC: 1.15 / 1.14.4 / 1.14.3 / 1.14.2 / 1.14.1 / 1.14 / 1.13.2
Further prevent nesting of bleed damage calls
Warn about reparable/salvage configs with missing sections
Added Bee combat experience modifier to experience.yml (Update your experience.yml file, see notes)
Breaking a Bee Nest will result in Herbalism XP (Update your experience.yml file, see notes)
Breeding bees will now result in Taming XP (Update your experience.yml file, see notes)
NOTES:
You will need to update your experience.yml by hand or delete it to get XP from new things in 1.15
The default version of mcMMO's experience.yml looks like this: https://paste.gg/p/anonymous/15c34df6e60d45d9a3508b379a5e6514
You'll want to add Bee to combat XP section, and Bee_Nest to Herbalism XP, and Bee to Taming XP section.
Version 2.1.110
Fixed a dupe bug
Actually fixed Block Cracker
You can now crack Infested Stone Bricks with Block Cracker
Added Lithuanian locale (thanks Vyciokazz)
Version 2.1.109 Version 2.1.109
Block Cracker will now correctly crack stone_bricks during Berserk again
Added Lily_Of_The_Valley to the Bonus Drops list in config.yml (you'll probably want to add this manually) which enables it to double drop
Added missing 1.14 blocks to ability/tool activation blacklists Added missing 1.14 blocks to ability/tool activation blacklists
Fixed spamming of incompatible worldguard version message
Updated Italian locale (thanks Fabrimat)
Version 2.1.108 Version 2.1.108
Fixed an amusing exploit for easy leveling in Acrobatics Fixed an amusing exploit for easy leveling in Acrobatics

View File

@@ -5,11 +5,15 @@ subprojects {
repositories { repositories {
mavenLocal() mavenLocal()
mavenCentral()
maven("https://oss.sonatype.org/content/groups/public/")
maven("https://repo.spongepowered.org/maven") maven("https://repo.spongepowered.org/maven")
maven("https://hub.spigotmc.org/nexus/content/repositories/snapshoits") maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots")
maven("https://repo.codemc.org/repository/maven-public") maven("https://repo.codemc.org/repository/maven-public")
maven("https://maven.sk89q.com/repo") maven("https://maven.sk89q.com/repo")
maven("https://mvnrepository.com/artifact/org.jetbrains/annotations") maven("https://mvnrepository.com/artifact/org.jetbrains/annotations")
maven("https://repo.aikar.co/content/groups/aikar/")
maven("https://hub.spigotmc.org/nexus/content/groups/public/")
} }
tasks { tasks {
@@ -23,4 +27,4 @@ subprojects {
sourceCompatibility = JavaVersion.VERSION_1_8 sourceCompatibility = JavaVersion.VERSION_1_8
} }
} }

View File

@@ -1,4 +1,4 @@
version=2.3.0-SNAPSHOT version=2.2.0-SNAPSHOT
group=com.gmail.nossr50.mcMMO group=com.gmail.nossr50.mcMMO
artifactId=mcMMO artifactId=mcMMO
name=mcMMO name=mcMMO

View File

@@ -0,0 +1,9 @@
plugins {
`java-library`
}
dependencies {
api("org.jetbrains:annotations:17.0.0")
api("co.aikar:acf-core:0.5.0-SNAPSHOT") //Don't change without updating the artifacts for its dependencies (see the other comments)
}

View File

@@ -0,0 +1,4 @@
package com.gmail.nossr50.mcmmo.api;
public interface McMMOApi {
}

View File

@@ -0,0 +1,6 @@
package com.gmail.nossr50.mcmmo.api.data;
public interface MMOEntity<N> {
N getNative();
}

View File

@@ -0,0 +1,5 @@
package com.gmail.nossr50.mcmmo.api.data;
public interface MMOPlayer<N> extends MMOEntity<N> {
}

View File

@@ -0,0 +1,65 @@
package com.gmail.nossr50.mcmmo.api.platform;
import com.gmail.nossr50.mcmmo.api.data.MMOEntity;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.PlatformScheduler;
import com.gmail.nossr50.mcmmo.api.platform.util.MetadataStore;
import com.gmail.nossr50.mcmmo.api.platform.util.MobHealthBarManager;
import java.io.File;
import java.util.UUID;
import java.util.logging.Logger;
import co.aikar.commands.CommandIssuer;
import co.aikar.commands.CommandManager;
import co.aikar.commands.CommandOperationContext;
public interface PlatformProvider<E> {
Logger getLogger();
void tearDown();
MetadataStore getMetadataStore();
File getDataFolder();
String getVersion();
void earlyInit();
boolean isSupported(boolean print);
default boolean isSupported() {
return isSupported(false);
};
ServerSoftwareType getServerType();
void onLoad();
void printUnsupported();
PlatformScheduler getScheduler();
void checkMetrics();
MobHealthBarManager getHealthBarManager();
@Deprecated
void registerCustomRecipes();
CommandManager getCommandManager();
// EVIL - EVILNESS FROM BEYOND THIS POINT - EVIL
// THOU HAST BEEN WARNED
@Deprecated
MMOEntity<?> getEntity(UUID uniqueId);
@Deprecated
MMOEntity<?> getEntity(E uniqueId);
@Deprecated
Object getChimaeraWing();
}

View File

@@ -0,0 +1,18 @@
package com.gmail.nossr50.mcmmo.api.platform;
public enum ServerSoftwareType {
PAPER("Paper"),
SPIGOT("Spigot"),
CRAFTBUKKIT("CraftBukkit");
private final String friendlyName;
ServerSoftwareType(String friendlyName) {
this.friendlyName = friendlyName;
}
public String getFriendlyName() {
return friendlyName;
}
}

View File

@@ -0,0 +1,63 @@
package com.gmail.nossr50.mcmmo.api.platform.scheduler;
import java.util.function.Consumer;
public interface PlatformScheduler {
TaskBuilder getTaskBuilder();
Task scheduleTask(TaskBuilder taskBuilder);
abstract class TaskBuilder {
Long delay;
Long repeatTime;
public boolean isAsync() {
return isAsync;
}
public TaskBuilder setAsync(boolean async) {
isAsync = async;
return this;
}
boolean isAsync = false;
Consumer<Task> task;
public Long getDelay() {
return delay;
}
public TaskBuilder setDelay(Long delay) {
this.delay = delay;
return this;
}
public Long getRepeatTime() {
return repeatTime;
}
public TaskBuilder setRepeatTime(Long repeatTime) {
this.repeatTime = repeatTime;
return this;
}
public Consumer<Task> getTask() {
return task;
}
public TaskBuilder setTask(Consumer<Task> task) {
this.task = task;
return this;
}
@Deprecated
public TaskBuilder setTask(Runnable runnableTask) {
this.setTask(task -> runnableTask.run());
return this;
}
public abstract Task schedule();
}
}

View File

@@ -0,0 +1,9 @@
package com.gmail.nossr50.mcmmo.api.platform.scheduler;
public interface Task {
void cancel();
void run();
}

View File

@@ -0,0 +1,17 @@
package com.gmail.nossr50.mcmmo.api.platform.util;
import org.jetbrains.annotations.NotNull;
public class MetadataKey<V> {
private final String key;
public MetadataKey(@NotNull String key) {
this.key = key;
}
@NotNull
public String getKey() {
return key;
}
}

View File

@@ -0,0 +1,36 @@
package com.gmail.nossr50.mcmmo.api.platform.util;
import com.gmail.nossr50.mcmmo.api.data.MMOEntity;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public interface MetadataStore<E extends MMOEntity<?>> {
/**
* @param holder holder of the metadata
* @param key key for the metdata
* @param <V> value type
* @return the metadata value or null
*/
@Nullable
<V> V getMetadata(@NotNull E holder, @NotNull MetadataKey<V> key);
/**
* @param holder holder of the metdata
* @param key metadata key
* @param value metadata value
* @param <V> value type
*/
<V> void setMetadata(@NotNull E holder, @NotNull MetadataKey<V> key, @NotNull V value);
/**
* @param holder holder of the metadata
* @param key metadata key
* @param <V> value type
* @return the removed metadata key
*/
@Nullable
<V> V removeMetadata(@NotNull E holder, @NotNull MetadataKey<V> key);
}

View File

@@ -0,0 +1,27 @@
package com.gmail.nossr50.mcmmo.api.platform.util;
import com.gmail.nossr50.mcmmo.api.data.MMOEntity;
import com.gmail.nossr50.mcmmo.api.data.MMOPlayer;
@Deprecated // Not really deprecated, just /really/ needs a do-over...
public interface MobHealthBarManager<PT, ET> {
/**
* Fix issues with death messages caused by the mob healthbars.
*
* @param deathMessage The original death message
* @param player The player who died
* @return the fixed death message
*/
public String fixDeathMessage(String deathMessage, MMOPlayer<PT> player);
/**
* Handle the creation of mob healthbars.
*
* @param target the targetted entity
* @param damage damage done by the attack triggering this
*/
public void handleMobHealthbars(MMOEntity<ET> target, double damage);
}

View File

@@ -0,0 +1,49 @@
import org.apache.tools.ant.filters.ReplaceTokens
plugins {
`java-library`
id("com.github.johnrengelman.shadow") version "5.1.0"
}
tasks {
build {
dependsOn(shadowJar)
}
shadowJar {
/*
dependencies {
include(dependency("org.bstats:bstats-bukkit"))
include(project(":mcmmo-api"))
include(project(":mcmmo-core"))
include(project(":mcmmo-bukkit"))
}
*/
relocate("org.apache.commons.logging", "com.gmail.nossr50.commons.logging")
relocate("org.apache.juli", "com.gmail.nossr50.database.tomcat.juli")
relocate("org.apache.tomcat", "com.gmail.nossr50.database.tomcat")
relocate("org.bstats", "com.gmail.nossr50.metrics.bstat")
}
processResources {
filter<ReplaceTokens>("tokens" to mapOf("project.version" to project.version))
}
}
dependencies {
compile(project(":mcmmo-api"))
compile(project(":mcmmo-core"))
api("org.apache.tomcat:tomcat-jdbc:7.0.52")
api("net.kyori:event-api:3.0.0")
implementation("org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1")
implementation("co.aikar:acf-paper:0.5.0-SNAPSHOT") //Don't change without updating the artifacts for its dependencies (see the other comments)
implementation("org.bstats:bstats-bukkit:1.4")
compileOnly("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT")
implementation("com.sk89q.worldguard:worldguard-legacy:7.0.0-SNAPSHOT")
testImplementation("junit:junit:4.10")
}

View File

@@ -0,0 +1,251 @@
package com.gmail.nossr50.mcmmo.bukkit;
import com.gmail.nossr50.core.MetadataConstants;
import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.listeners.*;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcmmo.api.data.MMOEntity;
import com.gmail.nossr50.mcmmo.api.platform.PlatformProvider;
import com.gmail.nossr50.mcmmo.api.platform.ServerSoftwareType;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.PlatformScheduler;
import com.gmail.nossr50.mcmmo.api.platform.util.MetadataStore;
import com.gmail.nossr50.mcmmo.api.platform.util.MobHealthBarManager;
import com.gmail.nossr50.mcmmo.bukkit.platform.entity.BukkitMMOEntity;
import com.gmail.nossr50.mcmmo.bukkit.platform.scheduler.BukkitPlatformScheduler;
import com.gmail.nossr50.mcmmo.bukkit.platform.util.BukkitMetadataStore;
import com.gmail.nossr50.mcmmo.bukkit.platform.util.BukkitMobHealthBarManager;
import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.Recipe;
import org.bukkit.inventory.ShapelessRecipe;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.UUID;
import java.util.logging.Logger;
import co.aikar.commands.CommandManager;
import co.aikar.commands.PaperCommandManager;
public class BukkitBootstrap extends JavaPlugin implements PlatformProvider<Entity> {
private mcMMO core = new mcMMO(this);
private final BukkitPlatformScheduler scheduler = new BukkitPlatformScheduler(this);
private final MobHealthBarManager healthBarManager = new BukkitMobHealthBarManager(this, core);
private final BukkitMetadataStore bukkitMetadataStore = new BukkitMetadataStore(this);
private PaperCommandManager paperCommandManager;
@Override
public @NotNull Logger getLogger() {
return super.getLogger();
}
@Override
public void tearDown() {
core.debug("Canceling all tasks...");
getServer().getScheduler().cancelTasks(this); // This removes our tasks
core.debug("Unregister all events...");
HandlerList.unregisterAll(this); // Cancel event registrations
}
@Override
public MetadataStore<MMOEntity<Entity>> getMetadataStore() {
return bukkitMetadataStore;
}
@Override
public String getVersion() {
return getDescription().getVersion();
}
@Override
public void earlyInit() {
PluginManager pluginManager = Bukkit.getPluginManager();
if (pluginManager.getPlugin("NoCheatPlus") != null && pluginManager.getPlugin("CompatNoCheatPlus") == null) {
getLogger().warning("NoCheatPlus plugin found, but CompatNoCheatPlus was not found!");
getLogger().warning("mcMMO will not work properly alongside NoCheatPlus without CompatNoCheatPlus");
}
registerEvents();
paperCommandManager = new PaperCommandManager(this);
paperCommandManager.registerDependency(mcMMO.class, core);
MetadataConstants.metadataValue = new FixedMetadataValue(this, true);
}
@Override
public boolean isSupported(boolean print) {
boolean ret = getServerType() != ServerSoftwareType.CRAFTBUKKIT;
if (!ret) {
Bukkit
.getScheduler()
.scheduleSyncRepeatingTask(this,
() -> getLogger().severe("You are running an outdated version of " + getServerType() + ", mcMMO will not work unless you update to a newer version!"),
20, 20 * 60 * 30);
if (getServerType() == ServerSoftwareType.CRAFTBUKKIT) {
Bukkit.getScheduler()
.scheduleSyncRepeatingTask(this,
() -> getLogger().severe("We have detected you are using incompatible server software, our best guess is that you are using CraftBukkit. mcMMO requires Spigot or Paper, if you are not using CraftBukkit, you will still need to update your custom server software before mcMMO will work."),
20, 20 * 60 * 30);
}
}
return ret;
}
@Override
public ServerSoftwareType getServerType() {
if (Bukkit.getVersion().toLowerCase(Locale.ENGLISH).contains("paper"))
return ServerSoftwareType.PAPER;
else if (Bukkit.getVersion().toLowerCase(Locale.ENGLISH).contains("spigot"))
return ServerSoftwareType.SPIGOT;
else
return ServerSoftwareType.CRAFTBUKKIT;
}
@Override
public void printUnsupported() {
}
@Override
public PlatformScheduler getScheduler() {
return scheduler;
}
@Override
public void checkMetrics() {
//If anonymous statistics are enabled then use them
if (core.getConfigManager().getConfigMetrics().isAllowAnonymousUsageStatistics()) {
Metrics metrics;
metrics = new Metrics(this);
metrics.addCustomChart(new Metrics.SimplePie("version", this::getVersion));
int levelScaleModifier = core.getConfigManager().getConfigLeveling().getConfigSectionLevelingGeneral().getConfigSectionLevelScaling().getCosmeticLevelScaleModifier();
if (levelScaleModifier == 10)
metrics.addCustomChart(new Metrics.SimplePie("scaling", () -> "Standard"));
else if (levelScaleModifier == 1)
metrics.addCustomChart(new Metrics.SimplePie("scaling", () -> "Retro"));
else
metrics.addCustomChart(new Metrics.SimplePie("scaling", () -> "Custom"));
}
}
@Override
public MobHealthBarManager getHealthBarManager() {
return healthBarManager;
}
@Override
public void registerCustomRecipes() {
getServer().getScheduler().scheduleSyncDelayedTask(this, () -> {
if (core.getConfigManager().getConfigItems().isChimaeraWingEnabled()) {
Recipe recipe = getChimaeraWingRecipe();
if(!core.getSkillTools().hasRecipeBeenRegistered(recipe))
getServer().addRecipe(getChimaeraWingRecipe());
}
}, 40);
}
@Override
public CommandManager getCommandManager() {
return paperCommandManager;
}
@Override
@Deprecated // TODO: This needs proper registration...
public MMOEntity<?> getEntity(UUID uniqueId) {
return getEntity(Bukkit.getEntity(uniqueId));
}
@Override
public MMOEntity<?> getEntity(Entity entity) {
if (entity instanceof Player) {
core.getUserManager().getPlayer((Player) entity);
} else if (entity instanceof LivingEntity) {
return new BukkitMMOEntity(entity);
} else if (entity != null){
return new BukkitMMOEntity(entity);
}
return null;
}
//TODO: Add this stuff to DSM, this location is temporary
//TODO: even more temp here....
private ShapelessRecipe getChimaeraWingRecipe() {
Material ingredient = Material.matchMaterial(core.getConfigManager().getConfigItems().getChimaeraWingRecipeMats());
if(ingredient == null)
ingredient = Material.FEATHER;
int amount = core.getConfigManager().getConfigItems().getChimaeraWingUseCost();
ShapelessRecipe chimaeraWing = new ShapelessRecipe(new NamespacedKey(this, "Chimaera"), getChimaeraWing());
chimaeraWing.addIngredient(amount, ingredient);
return chimaeraWing;
}
//TODO: Add this stuff to DSM, this location is temporary
public ItemStack getChimaeraWing() {
Material ingredient = Material.matchMaterial(core.getConfigManager().getConfigItems().getChimaeraWingRecipeMats());
if(ingredient == null)
ingredient = Material.FEATHER;
//TODO: Make it so Chimaera wing amounts made is customizeable
ItemStack itemStack = new ItemStack(ingredient, 1);
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.setDisplayName(ChatColor.GOLD + core.getLocaleManager().getString("Item.ChimaeraWing.Name"));
List<String> itemLore = new ArrayList<>();
itemLore.add("mcMMO Item");
itemLore.add(core.getLocaleManager().getString("Item.ChimaeraWing.Lore"));
itemMeta.setLore(itemLore);
itemStack.setItemMeta(itemMeta);
return itemStack;
}
private void registerEvents() {
PluginManager pluginManager = getServer().getPluginManager();
// Register events
pluginManager.registerEvents(new PlayerListener(core), this);
pluginManager.registerEvents(new BlockListener(core), this);
pluginManager.registerEvents(new EntityListener(core), this);
pluginManager.registerEvents(new InventoryListener(core), this);
pluginManager.registerEvents(new SelfListener(core), this);
pluginManager.registerEvents(new WorldListener(core), this);
}
@Override
public void onLoad() {
core.onLoad();
}
@Override
public void onEnable() {
core.onEnable();
}
}

View File

@@ -0,0 +1,19 @@
package com.gmail.nossr50.mcmmo.bukkit.platform.entity;
import com.gmail.nossr50.mcmmo.api.data.MMOEntity;
import org.bukkit.entity.Entity;
public class BukkitMMOEntity implements MMOEntity<Entity> {
Entity entity;
public BukkitMMOEntity(Entity entity) {
this.entity = entity;
}
@Override
public Entity getNative() {
return null;
}
}

View File

@@ -0,0 +1,19 @@
package com.gmail.nossr50.mcmmo.bukkit.platform.entity.living;
import com.gmail.nossr50.mcmmo.api.data.MMOEntity;
import org.bukkit.entity.LivingEntity;
public class BukkitMMOLivingEntity implements MMOEntity<LivingEntity> {
LivingEntity entity;
public BukkitMMOLivingEntity(LivingEntity entity) {
this.entity = entity;
}
@Override
public LivingEntity getNative() {
return entity;
}
}

View File

@@ -0,0 +1,63 @@
package com.gmail.nossr50.mcmmo.bukkit.platform.scheduler;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.PlatformScheduler;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.Task;
import com.gmail.nossr50.mcmmo.bukkit.BukkitBootstrap;
import org.bukkit.Bukkit;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import java.util.function.Consumer;
public class BukkitPlatformScheduler implements PlatformScheduler {
private final BukkitBootstrap bukkitBootstrap;
public BukkitPlatformScheduler(BukkitBootstrap bukkitBootstrap) {
this.bukkitBootstrap = bukkitBootstrap;
}
@Override
public TaskBuilder getTaskBuilder() {
return new TaskBuilder() {
@Override
public Task schedule() {
return BukkitPlatformScheduler.this.scheduleTask(this);
}
};
}
@Override
public Task scheduleTask(TaskBuilder taskBuilder) {
final Long repeatTime = taskBuilder.getRepeatTime();
final Long delay = taskBuilder.getDelay();
final boolean isAsync = taskBuilder.isAsync();
final Consumer<Task> taskConsumer = taskBuilder.getTask();
final MMOBukkitTask task = new MMOBukkitTask(taskConsumer);
final BukkitScheduler bukkitScheduler = Bukkit.getScheduler();
final BukkitTask bukkitTask;
if (!isAsync) {
if (delay == null && repeatTime == null) {
bukkitTask = bukkitScheduler.runTask(bukkitBootstrap, task);
} else if (delay != null && repeatTime == null) {
bukkitTask = bukkitScheduler.runTaskLater(bukkitBootstrap, task, delay);
} else {
bukkitTask = bukkitScheduler.runTaskTimer(bukkitBootstrap, task, delay != null ? delay : 0, repeatTime);
}
} else {
if (delay == null && repeatTime == null) {
bukkitTask = bukkitScheduler.runTaskAsynchronously(bukkitBootstrap, task);
} else if (delay != null && repeatTime == null) {
bukkitTask = bukkitScheduler.runTaskLaterAsynchronously(bukkitBootstrap, task, delay);
} else {
bukkitTask = bukkitScheduler.runTaskTimerAsynchronously(bukkitBootstrap, task, delay != null ? delay : 0, repeatTime);
}
}
task.setBukkitTask(bukkitTask);
return task;
}
}

View File

@@ -0,0 +1,31 @@
package com.gmail.nossr50.mcmmo.bukkit.platform.scheduler;
import com.gmail.nossr50.mcmmo.api.platform.scheduler.Task;
import com.google.common.base.Preconditions;
import org.bukkit.scheduler.BukkitTask;
import java.util.function.Consumer;
public class MMOBukkitTask implements Task, Runnable {
Consumer<Task> task;
private BukkitTask bukkitTask;
public MMOBukkitTask(Consumer<Task> task) {
this.task = task;
}
@Override
public void cancel() {
Preconditions.checkState(bukkitTask != null, "Cannot cancel an an unscheduled task!");
bukkitTask.cancel();
}
@Override
public void run() {
task.accept(this);
}
public void setBukkitTask(BukkitTask bukkitTask) {
this.bukkitTask = bukkitTask;
}
}

View File

@@ -0,0 +1,46 @@
package com.gmail.nossr50.mcmmo.bukkit.platform.util;
import com.gmail.nossr50.mcmmo.api.data.MMOEntity;
import com.gmail.nossr50.mcmmo.api.platform.util.MetadataKey;
import com.gmail.nossr50.mcmmo.api.platform.util.MetadataStore;
import com.gmail.nossr50.mcmmo.bukkit.BukkitBootstrap;
import org.bukkit.entity.Entity;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.metadata.MetadataValue;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
@SuppressWarnings("unchecked")
public class BukkitMetadataStore implements MetadataStore<MMOEntity<Entity>> {
private final BukkitBootstrap bukkitBootstrap;
public BukkitMetadataStore(BukkitBootstrap bukkitBootstrap) {
this.bukkitBootstrap = bukkitBootstrap;
}
@Override
public <V> @Nullable V getMetadata(@NotNull MMOEntity<Entity> holder, @NotNull MetadataKey<V> key) {
final List<MetadataValue> metadata = holder.getNative().getMetadata(key.getKey());
if (!metadata.isEmpty()) {
return (V) metadata.get(0);
}
return null;
}
@Override
public <V> void setMetadata(@NotNull MMOEntity<Entity> holder, @NotNull MetadataKey<V> key, @NotNull V value) {
holder.getNative().setMetadata(key.getKey(), new FixedMetadataValue(bukkitBootstrap, (V) value));
}
@Override
public <V> @Nullable V removeMetadata(@NotNull MMOEntity<Entity> holder, @NotNull MetadataKey<V> key) {
final List<MetadataValue> metadata = holder.getNative().getMetadata(key.getKey());
if (!metadata.isEmpty()) {
holder.getNative().removeMetadata(key.getKey(), bukkitBootstrap);
}
return (V) metadata.get(0);
}
}

View File

@@ -1,22 +1,39 @@
package com.gmail.nossr50.util; package com.gmail.nossr50.mcmmo.bukkit.platform.util;
import com.gmail.nossr50.core.MetadataConstants; import com.gmail.nossr50.core.MetadataConstants;
import com.gmail.nossr50.datatypes.MobHealthbarType; import com.gmail.nossr50.datatypes.MobHealthbarType;
import com.gmail.nossr50.datatypes.meta.OldName; import com.gmail.nossr50.datatypes.meta.OldName;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcmmo.api.data.MMOEntity;
import com.gmail.nossr50.mcmmo.api.data.MMOPlayer;
import com.gmail.nossr50.mcmmo.api.platform.util.MobHealthBarManager;
import com.gmail.nossr50.runnables.MobHealthDisplayUpdaterTask; import com.gmail.nossr50.runnables.MobHealthDisplayUpdaterTask;
import com.gmail.nossr50.util.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
public final class MobHealthBarManager { public final class BukkitMobHealthBarManager implements MobHealthBarManager<Player, LivingEntity> {
private final Plugin plugin;
private final mcMMO pluginRef; private final mcMMO pluginRef;
private final boolean healthBarPluginEnabled;
public MobHealthBarManager(mcMMO pluginRef) { public BukkitMobHealthBarManager(Plugin plugin, mcMMO pluginRef) {
this.plugin = plugin;
this.pluginRef = pluginRef; this.pluginRef = pluginRef;
PluginManager pluginManager = Bukkit.getServer().getPluginManager();
healthBarPluginEnabled = pluginManager.getPlugin("HealthBar") != null;
if (healthBarPluginEnabled) {
pluginRef.getLogger().info("HealthBar plugin found, mcMMO's healthbars are automatically disabled.");
}
} }
/** /**
@@ -26,8 +43,9 @@ public final class MobHealthBarManager {
* @param player The player who died * @param player The player who died
* @return the fixed death message * @return the fixed death message
*/ */
public String fixDeathMessage(String deathMessage, Player player) { @Override
EntityDamageEvent lastDamageCause = player.getLastDamageCause(); public String fixDeathMessage(String deathMessage, MMOPlayer<Player> player) {
EntityDamageEvent lastDamageCause = player.getNative().getLastDamageCause();
String replaceString = lastDamageCause instanceof EntityDamageByEntityEvent ? StringUtils.getPrettyEntityTypeString(((EntityDamageByEntityEvent) lastDamageCause).getDamager().getType()) : "a mob"; String replaceString = lastDamageCause instanceof EntityDamageByEntityEvent ? StringUtils.getPrettyEntityTypeString(((EntityDamageByEntityEvent) lastDamageCause).getDamager().getType()) : "a mob";
return deathMessage.replaceAll("(?:\u00A7(?:[0-9A-FK-ORa-fk-or]){1}(?:[\u2764\u25A0]{1,10})){1,2}", replaceString); return deathMessage.replaceAll("(?:\u00A7(?:[0-9A-FK-ORa-fk-or]){1}(?:[\u2764\u25A0]{1,10})){1,2}", replaceString);
@@ -36,15 +54,22 @@ public final class MobHealthBarManager {
/** /**
* Handle the creation of mob healthbars. * Handle the creation of mob healthbars.
* *
* @param target the targetted entity * @param mmoTarget the targetted entity
* @param damage damage done by the attack triggering this * @param damage damage done by the attack triggering this
*/ */
public void handleMobHealthbars(LivingEntity target, double damage, mcMMO plugin) { @Override
if (pluginRef.isHealthBarPluginEnabled() || !pluginRef.getConfigManager().getConfigMobs().getCombat().getHealthBars().isEnableHealthBars()) { public void handleMobHealthbars(MMOEntity<LivingEntity> mmoTarget, double damage) {
if (healthBarPluginEnabled || !pluginRef.getConfigManager().getConfigMobs().getCombat().getHealthBars().isEnableHealthBars()) {
return;
}
LivingEntity target = mmoTarget.getNative();
if (isBoss(target)) {
return; return;
} }
if (isBoss(target)) { // Don't mangle invalid entities, they're not going to be rendered anyways
if (!target.isValid()) {
return; return;
} }
@@ -55,12 +80,13 @@ public final class MobHealthBarManager {
* Store the name in metadata * Store the name in metadata
*/ */
if (target.getMetadata("mcMMO_oldName").size() <= 0 && originalName != null) if (target.getMetadata("mcMMO_oldName").size() <= 0 && originalName != null)
target.setMetadata("mcMMO_oldName", new OldName(originalName, plugin)); target.setMetadata("mcMMO_oldName", new OldName(originalName, pluginRef));
if (oldName == null) { if (oldName == null) {
oldName = ""; oldName = "";
} }
boolean oldNameVisible = target.isCustomNameVisible(); boolean oldNameVisible = target.isCustomNameVisible();
String newName = createHealthDisplay(pluginRef.getConfigManager().getConfigMobs().getCombat().getHealthBars().getDisplayBarType(), target, damage); String newName = createHealthDisplay(pluginRef.getConfigManager().getConfigMobs().getCombat().getHealthBars().getDisplayBarType(), target, damage);
@@ -73,14 +99,17 @@ public final class MobHealthBarManager {
boolean updateName = !ChatColor.stripColor(oldName).equalsIgnoreCase(ChatColor.stripColor(newName)); boolean updateName = !ChatColor.stripColor(oldName).equalsIgnoreCase(ChatColor.stripColor(newName));
if (updateName) { if (updateName) {
target.setMetadata(MetadataConstants.CUSTOM_NAME_METAKEY, new FixedMetadataValue(pluginRef, oldName)); target.setMetadata(MetadataConstants.CUSTOM_NAME_METAKEY.getKey(), new FixedMetadataValue(plugin, oldName));
target.setMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY, new FixedMetadataValue(pluginRef, oldNameVisible)); target.setMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY.getKey(), new FixedMetadataValue(plugin, oldNameVisible));
} else if (!target.hasMetadata(MetadataConstants.CUSTOM_NAME_METAKEY)) { } else if (!target.hasMetadata(MetadataConstants.CUSTOM_NAME_METAKEY.getKey())) {
target.setMetadata(MetadataConstants.CUSTOM_NAME_METAKEY, new FixedMetadataValue(pluginRef, "")); target.setMetadata(MetadataConstants.CUSTOM_NAME_METAKEY.getKey(), new FixedMetadataValue(plugin, ""));
target.setMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY, new FixedMetadataValue(pluginRef, false)); target.setMetadata(MetadataConstants.NAME_VISIBILITY_METAKEY.getKey(), new FixedMetadataValue(plugin, false));
} }
new MobHealthDisplayUpdaterTask(pluginRef, target).runTaskLater(pluginRef, displayTime * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR); // Clear health display after 3 seconds pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(displayTime * pluginRef.getMiscTools().TICK_CONVERSION_FACTOR) // Clear health display after 3 seconds
.setTask(new MobHealthDisplayUpdaterTask(pluginRef, target))
.schedule();
} }
} }

View File

@@ -13,15 +13,12 @@ description: >
author: nossr50 author: nossr50
authors: [GJ, NuclearW, bm01, Glitchfinder, TfT_02, t00thpick1, Riking, electronicboy, kashike] authors: [GJ, NuclearW, bm01, Glitchfinder, TfT_02, t00thpick1, Riking, electronicboy, kashike]
website: https://www.mcmmo.org website: https://www.mcmmo.org
main: com.gmail.nossr50.mcMMO main: com.gmail.nossr50.mcmmo.bukkit.BukkitBootstrap
softdepend: [WorldGuard, WorldEdit, CombatTag, HealthBar] softdepend: [WorldGuard, WorldEdit, CombatTag, HealthBar]
load: POSTWORLD load: POSTWORLD
api-version: 1.13 api-version: 1.13
commands: commands:
mmodebug:
aliases: [mcmmodebugmode]
description: Toggles a debug mode which will print useful information to chat
mmoinfo: mmoinfo:
aliases: [mcinfo] aliases: [mcinfo]
description: Info pages for mcMMO description: Info pages for mcMMO
@@ -264,7 +261,7 @@ permissions:
description: Allows access to all Axes abilities description: Allows access to all Axes abilities
children: children:
mcmmo.ability.axes.axemastery: true mcmmo.ability.axes.axemastery: true
mcmmo.ability.axes.criticalhit: true mcmmo.ability.axes.criticalstrikes: true
mcmmo.ability.axes.greaterimpact: true mcmmo.ability.axes.greaterimpact: true
mcmmo.ability.axes.armorimpact: true mcmmo.ability.axes.armorimpact: true
mcmmo.ability.axes.skullsplitter: true mcmmo.ability.axes.skullsplitter: true
@@ -273,8 +270,8 @@ permissions:
description: Adds damage to axes description: Adds damage to axes
mcmmo.ability.axes.axemastery: mcmmo.ability.axes.axemastery:
description: Allows bonus damage from Axes description: Allows bonus damage from Axes
mcmmo.ability.axes.criticalhit: mcmmo.ability.axes.criticalstrikes:
description: Allows access to the Critical Hit ability description: Allows access to the Critical Strikes ability
mcmmo.ability.axes.greaterimpact: mcmmo.ability.axes.greaterimpact:
description: Allows access to the Greater Impact ability description: Allows access to the Greater Impact ability
mcmmo.ability.axes.armorimpact: mcmmo.ability.axes.armorimpact:
@@ -628,6 +625,10 @@ permissions:
children: children:
mcmmo.commands.mcconvert.all: true mcmmo.commands.mcconvert.all: true
mcmmo.commands.xprate.all: true mcmmo.commands.xprate.all: true
mcmmo.commands.nbttools: true
mcmmo.commands.nbttools:
default: false
description: Modify or Read NBT of an item in-hand
mcmmo.bypass.*: mcmmo.bypass.*:
default: false default: false
description: Implies all bypass permissions. description: Implies all bypass permissions.
@@ -731,6 +732,7 @@ permissions:
mcmmo.commands.mcmmoreload: true mcmmo.commands.mcmmoreload: true
mcmmo.commands.mmoedit: true mcmmo.commands.mmoedit: true
mcmmo.commands.mmoedit.others: true mcmmo.commands.mmoedit.others: true
mcmmo.commands.nbttools: true
mcmmo.commands.mmoshowdb: true mcmmo.commands.mmoshowdb: true
mcmmo.commands.ptp.world.all: true mcmmo.commands.ptp.world.all: true
mcmmo.commands.reloadlocale: true mcmmo.commands.reloadlocale: true

View File

@@ -1,3 +1,4 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import org.apache.tools.ant.filters.ReplaceTokens import org.apache.tools.ant.filters.ReplaceTokens
plugins { plugins {
@@ -7,11 +8,8 @@ plugins {
tasks { tasks {
build {
dependsOn(shadowJar)
}
shadowJar { shadowJar {
/*
dependencies { dependencies {
include(dependency("org.spongepowered:configurate-yaml")) include(dependency("org.spongepowered:configurate-yaml"))
include(dependency("org.spongepowered:configurate-hocon")) include(dependency("org.spongepowered:configurate-hocon"))
@@ -20,12 +18,25 @@ tasks {
include(dependency("org.apache.tomcat:tomcat-jdbc")) include(dependency("org.apache.tomcat:tomcat-jdbc"))
include(dependency("org.apache.tomcat:tomcat-juli")) include(dependency("org.apache.tomcat:tomcat-juli"))
include(dependency("com.typesafe:config")) include(dependency("com.typesafe:config"))
include(dependency("co.aikar:acf-core"))
include(dependency("co.aikar:acf-bukkit"))
include(dependency("net.kyori:text-api"))
include(dependency("net.kyori:text-adapter-bukkit"))
include(dependency("net.kyori:text-serializer-gson"))
exclude(dependency("org.spigotmc:spigot")) exclude(dependency("org.spigotmc:spigot"))
} }
*/
relocate("org.apache.commons.logging", "com.gmail.nossr50.commons.logging") relocate("org.apache.commons.logging", "com.gmail.nossr50.commons.logging")
relocate("org.apache.juli", "com.gmail.nossr50.database.tomcat.juli") relocate("org.apache.juli", "com.gmail.nossr50.database.tomcat.juli")
relocate("org.apache.tomcat", "com.gmail.nossr50.database.tomcat") relocate("org.apache.tomcat", "com.gmail.nossr50.database.tomcat")
relocate("org.bstats", "com.gmail.nossr50.metrics.bstat") relocate("org.bstats", "com.gmail.nossr50.metrics.bstat")
relocate("co.aikar.commands", "com.gmail.nossr50.aikar.commands")
relocate("co.aikar.locales", "com.gmail.nossr50.aikar.locales")
relocate("co.aikar.table", "com.gmail.nossr50.aikar.table")
relocate("net.jodah.expiringmap", "com.gmail.nossr50.expiringmap")
relocate("net.kyori.text", "com.gmail.nossr50.kyoripowered.text")
mergeServiceFiles()
} }
processResources { processResources {
@@ -34,20 +45,34 @@ tasks {
} }
} }
build {
dependsOn(shadowJar)
}
}
tasks.named<ShadowJar>("shadowJar") {
dependencies{
include { true }
}
} }
dependencies { dependencies {
api("org.apache.tomcat:tomcat-jdbc:7.0.52") api(project(":mcmmo-api"))
api("com.typesafe:config:1.3.2") compile("org.apache.tomcat:tomcat-jdbc:7.0.52")
api("org.spongepowered:configurate-core:3.7-SNAPSHOT") compile("com.typesafe:config:1.3.2")
api("org.spongepowered:configurate-yaml:3.7-SNAPSHOT") compile("org.spongepowered:configurate-core:3.7-SNAPSHOT")
api("org.spongepowered:configurate-hocon:3.7-SNAPSHOT") compile("org.spongepowered:configurate-yaml:3.7-SNAPSHOT")
implementation("org.jetbrains:annotations:17.0.0") compile("org.spongepowered:configurate-hocon:3.7-SNAPSHOT")
implementation("org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1") compile("net.kyori:text-api:3.0.2")
implementation("org.bstats:bstats-bukkit:1.4") compile("net.kyori:text-serializer-gson:3.0.2")
implementation("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT") compile("net.kyori:text-adapter-bukkit:3.0.4-SNAPSHOT")
implementation("com.sk89q.worldguard:worldguard-legacy:7.0.0-SNAPSHOT") compile("org.jetbrains:annotations:17.0.0")
compile("org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1")
compile("org.bstats:bstats-bukkit:1.4")
compileOnly("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT")
compileOnly("com.sk89q.worldguard:worldguard-legacy:7.0.0-SNAPSHOT")
testImplementation("junit:junit:4.10") testImplementation("junit:junit:4.10")
} }

View File

@@ -1,26 +1,26 @@
package com.gmail.nossr50.bukkit; //package com.gmail.nossr50.bukkit;
//
import com.gmail.nossr50.datatypes.items.BukkitMMOItem; //import com.gmail.nossr50.datatypes.items.BukkitMMOItem;
import com.gmail.nossr50.datatypes.items.MMOItem; //import com.gmail.nossr50.datatypes.items.MMOItem;
import com.gmail.nossr50.util.nbt.NBTManager; //import com.gmail.nossr50.util.nbt.NBTManager;
import com.gmail.nossr50.util.nbt.RawNBT; //import com.gmail.nossr50.util.nbt.RawNBT;
import org.bukkit.inventory.ItemStack; //import org.bukkit.inventory.ItemStack;
//
/** ///**
* Used to convert or construct platform independent types into Bukkit types // * Used to convert or construct platform independent types into Bukkit types
*/ // */
public class BukkitFactory { //public class BukkitFactory {
//
/** // /**
* Creates a BukkitMMOItem which contains Bukkit implementations for the type MMOItem // * Creates a BukkitMMOItem which contains Bukkit implementations for the type MMOItem
* @return a new BukkitMMOItem // * @return a new BukkitMMOItem
*/ // */
public static MMOItem<?> createItem(String namespaceKey, int amount, RawNBT rawNBT) { // public static MMOItem<?> createItem(String namespaceKey, int amount, RawNBT rawNBT) {
return new BukkitMMOItem(namespaceKey, amount, rawNBT); // return new BukkitMMOItem(namespaceKey, amount, rawNBT);
} // }
//
public static MMOItem<?> createItem(ItemStack itemStack) { // public static MMOItem<?> createItem(ItemStack itemStack) {
return createItem(itemStack.getType().getKey().toString(), itemStack.getAmount(), new RawNBT(NBTManager.getNBT(itemStack).toString())); // return createItem(itemStack.getType().getKey().toString(), itemStack.getAmount(), new RawNBT(NBTManager.getNBT(itemStack).toString()));
} // }
//
} //}

View File

@@ -1,12 +1,15 @@
package com.gmail.nossr50.chat; package com.gmail.nossr50.chat;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.events.chat.McMMOAdminChatEvent; import com.gmail.nossr50.events.chat.McMMOAdminChatEvent;
import com.gmail.nossr50.events.chat.McMMOPartyChatEvent; import com.gmail.nossr50.events.chat.McMMOPartyChatEvent;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@@ -14,29 +17,32 @@ import java.util.regex.Pattern;
public class ChatManager { public class ChatManager {
private final String ADMIN_CHAT_PERMISSION = "mcmmo.chat.adminchat"; private final String ADMIN_CHAT_PERMISSION = "mcmmo.chat.adminchat";
private final mcMMO pluginRef; private final mcMMO pluginRef;
@Deprecated
private final Plugin legacyPlugin;
public ChatManager(mcMMO pluginRef) { public ChatManager(mcMMO pluginRef) {
this.pluginRef = pluginRef; this.pluginRef = pluginRef;
this.legacyPlugin = (Plugin) pluginRef.getPlatformProvider();
} }
public void processAdminChat(Player player, String message) { public void processAdminChat(Player player, String message) {
sendAdminChatMessage(new McMMOAdminChatEvent(pluginRef, player.getName(), player.getDisplayName(), message)); sendAdminChatMessage(new McMMOAdminChatEvent(legacyPlugin, player.getName(), player.getDisplayName(), message));
} }
public void processAdminChat(String senderName, String displayName, String message) { public void processAdminChat(String senderName, String displayName, String message) {
sendAdminChatMessage(new McMMOAdminChatEvent(pluginRef, senderName, displayName, message)); sendAdminChatMessage(new McMMOAdminChatEvent(legacyPlugin, senderName, displayName, message));
} }
public void processPartyChat(Party party, Player sender, String message) { public void processPartyChat(Party party, Player sender, String message) {
sendPartyChatMessage(new McMMOPartyChatEvent(pluginRef, sender.getName(), sender.getDisplayName(), party, message)); sendPartyChatMessage(new McMMOPartyChatEvent(legacyPlugin, sender.getName(), sender.getDisplayName(), party, message));
} }
public void processPartyChat(Party party, String senderName, String message) { public void processPartyChat(Party party, String senderName, String message) {
sendPartyChatMessage(new McMMOPartyChatEvent(pluginRef, senderName, senderName, party, message)); sendPartyChatMessage(new McMMOPartyChatEvent(legacyPlugin, senderName, senderName, party, message));
} }
private void sendAdminChatMessage(McMMOAdminChatEvent event) { private void sendAdminChatMessage(McMMOAdminChatEvent event) {
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled()) {
return; return;
@@ -47,11 +53,11 @@ public class ChatManager {
String displayName = pluginRef.getConfigManager().getConfigCommands().isUseDisplayNames() ? event.getDisplayName() : senderName; String displayName = pluginRef.getConfigManager().getConfigCommands().isUseDisplayNames() ? event.getDisplayName() : senderName;
String message = pluginRef.getLocaleManager().formatString(chatPrefix, displayName) + " " + event.getMessage(); String message = pluginRef.getLocaleManager().formatString(chatPrefix, displayName) + " " + event.getMessage();
pluginRef.getServer().broadcast(message, ADMIN_CHAT_PERMISSION); Bukkit.getServer().broadcast(message, ADMIN_CHAT_PERMISSION);
} }
private void sendPartyChatMessage(McMMOPartyChatEvent event) { private void sendPartyChatMessage(McMMOPartyChatEvent event) {
pluginRef.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled()) {
return; return;
@@ -79,13 +85,13 @@ public class ChatManager {
} }
} }
pluginRef.getServer().getConsoleSender().sendMessage(ChatColor.stripColor("[mcMMO] [P]<" + party.getName() + ">" + message)); Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.stripColor("[mcMMO] [P]<" + party.getName() + ">" + message));
/* /*
* Party Chat Spying * Party Chat Spying
*/ */
for (McMMOPlayer mcMMOPlayer : pluginRef.getUserManager().getPlayers()) { for (BukkitMMOPlayer mcMMOPlayer : pluginRef.getUserManager().getPlayers()) {
Player player = mcMMOPlayer.getPlayer(); Player player = mcMMOPlayer.getNative();
//Check for toggled players //Check for toggled players
if (mcMMOPlayer.isPartyChatSpying()) { if (mcMMOPlayer.isPartyChatSpying()) {

View File

@@ -1,6 +1,6 @@
package com.gmail.nossr50.commands; package com.gmail.nossr50.commands;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -21,8 +21,8 @@ public class AbilityToggleCommand extends ToggleCommand {
} }
@Override @Override
protected void applyCommandAction(McMMOPlayer mcMMOPlayer) { protected void applyCommandAction(BukkitMMOPlayer mcMMOPlayer) {
mcMMOPlayer.getPlayer().sendMessage(pluginRef.getLocaleManager().getString("Commands.Ability." + (mcMMOPlayer.getAllowAbilityUse() ? "Off" : "On"))); mcMMOPlayer.getNative().sendMessage(pluginRef.getLocaleManager().getString("Commands.Ability." + (mcMMOPlayer.getAllowAbilityUse() ? "Off" : "On")));
mcMMOPlayer.toggleAbilityUse(); mcMMOPlayer.toggleAbilityUse();
} }

View File

@@ -1,6 +1,6 @@
package com.gmail.nossr50.commands; package com.gmail.nossr50.commands;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@@ -26,7 +26,7 @@ public class ChatNotificationToggleCommand implements TabExecutor {
switch (args.length) { switch (args.length) {
case 0: case 0:
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer((Player) sender); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer((Player) sender);
//Not Loaded yet //Not Loaded yet
if (mcMMOPlayer == null) if (mcMMOPlayer == null)

View File

@@ -4,6 +4,8 @@ import com.gmail.nossr50.datatypes.notifications.SensitiveCommandType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.StringUtils; import com.gmail.nossr50.util.StringUtils;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -37,15 +39,15 @@ public class ExperienceRateCommand implements TabExecutor {
if (pluginRef.isXPEventEnabled()) { if (pluginRef.isXPEventEnabled()) {
if (pluginRef.getConfigManager().getConfigEvent().isSendTitleMessages()) { if (pluginRef.getConfigManager().getConfigEvent().isSendTitleMessages()) {
pluginRef.getNotificationManager().broadcastTitle(pluginRef.getServer(), pluginRef.getNotificationManager().broadcastTitle(Bukkit.getServer(),
pluginRef.getLocaleManager().getString("Commands.Event.Stop"), pluginRef.getLocaleManager().getString("Commands.Event.Stop"),
pluginRef.getLocaleManager().getString("Commands.Event.Stop.Subtitle"), pluginRef.getLocaleManager().getString("Commands.Event.Stop.Subtitle"),
10, 10 * 20, 20); 10, 10 * 20, 20);
} }
if (pluginRef.getConfigManager().getConfigEvent().isBroadcastXPRateEventMessages()) { if (pluginRef.getConfigManager().getConfigEvent().isBroadcastXPRateEventMessages()) {
pluginRef.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.Stop")); Bukkit.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.Stop"));
pluginRef.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.Stop.Subtitle")); Bukkit.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.Stop.Subtitle"));
} }
//Admin notification //Admin notification
@@ -85,15 +87,15 @@ public class ExperienceRateCommand implements TabExecutor {
pluginRef.getDynamicSettingsManager().getExperienceManager().setGlobalXpMult(newXpRate); pluginRef.getDynamicSettingsManager().getExperienceManager().setGlobalXpMult(newXpRate);
if (pluginRef.getConfigManager().getConfigEvent().isSendTitleMessages()) { if (pluginRef.getConfigManager().getConfigEvent().isSendTitleMessages()) {
pluginRef.getNotificationManager().broadcastTitle(pluginRef.getServer(), pluginRef.getNotificationManager().broadcastTitle(Bukkit.getServer(),
pluginRef.getLocaleManager().getString("Commands.Event.Start"), pluginRef.getLocaleManager().getString("Commands.Event.Start"),
pluginRef.getLocaleManager().getString("Commands.Event.XP", newXpRate), pluginRef.getLocaleManager().getString("Commands.Event.XP", newXpRate),
10, 10 * 20, 20); 10, 10 * 20, 20);
} }
if (pluginRef.getConfigManager().getConfigEvent().isBroadcastXPRateEventMessages()) { if (pluginRef.getConfigManager().getConfigEvent().isBroadcastXPRateEventMessages()) {
pluginRef.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.Start")); Bukkit.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.Start"));
pluginRef.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.XP", newXpRate)); Bukkit.getServer().broadcastMessage(pluginRef.getLocaleManager().getString("Commands.Event.XP", newXpRate));
} }
//Admin notification //Admin notification

View File

@@ -1,6 +1,6 @@
package com.gmail.nossr50.commands; package com.gmail.nossr50.commands;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -21,8 +21,8 @@ public class GodModeCommand extends ToggleCommand {
} }
@Override @Override
protected void applyCommandAction(McMMOPlayer mcMMOPlayer) { protected void applyCommandAction(BukkitMMOPlayer mcMMOPlayer) {
mcMMOPlayer.getPlayer().sendMessage(pluginRef.getLocaleManager().getString("Commands.GodMode." + (mcMMOPlayer.getGodMode() ? "Disabled" : "Enabled"))); mcMMOPlayer.getNative().sendMessage(pluginRef.getLocaleManager().getString("Commands.GodMode." + (mcMMOPlayer.getGodMode() ? "Disabled" : "Enabled")));
mcMMOPlayer.toggleGodMode(); mcMMOPlayer.toggleGodMode();
} }

View File

@@ -6,6 +6,7 @@ import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin;
public class McMMOCommand implements CommandExecutor { public class McMMOCommand implements CommandExecutor {
@@ -34,7 +35,7 @@ public class McMMOCommand implements CommandExecutor {
sender.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "nossr50@gmail.com" + ChatColor.GOLD + " Paypal"); sender.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "nossr50@gmail.com" + ChatColor.GOLD + " Paypal");
} }
sender.sendMessage(pluginRef.getLocaleManager().getString("MOTD.Version", pluginRef.getDescription().getVersion())); sender.sendMessage(pluginRef.getLocaleManager().getString("MOTD.Version", ((Plugin) pluginRef.getPlatformProvider()).getDescription().getVersion()));
// mcMMO.getHolidayManager().anniversaryCheck(sender); // mcMMO.getHolidayManager().anniversaryCheck(sender);
return true; return true;

View File

@@ -1,6 +1,6 @@
package com.gmail.nossr50.commands; package com.gmail.nossr50.commands;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -21,13 +21,13 @@ public class RefreshCooldownsCommand extends ToggleCommand {
} }
@Override @Override
protected void applyCommandAction(McMMOPlayer mcMMOPlayer) { protected void applyCommandAction(BukkitMMOPlayer mcMMOPlayer) {
mcMMOPlayer.setRecentlyHurt(0); mcMMOPlayer.setRecentlyHurt(0);
mcMMOPlayer.resetCooldowns(); mcMMOPlayer.resetCooldowns();
mcMMOPlayer.resetToolPrepMode(); mcMMOPlayer.resetToolPrepMode();
mcMMOPlayer.resetSuperAbilityMode(); mcMMOPlayer.resetSuperAbilityMode();
mcMMOPlayer.getPlayer().sendMessage(pluginRef.getLocaleManager().getString("Ability.Generic.Refresh")); mcMMOPlayer.getNative().sendMessage(pluginRef.getLocaleManager().getString("Ability.Generic.Refresh"));
} }
@Override @Override

View File

@@ -2,7 +2,7 @@ package com.gmail.nossr50.commands;
import com.gmail.nossr50.database.FlatFileDatabaseManager; import com.gmail.nossr50.database.FlatFileDatabaseManager;
import com.gmail.nossr50.database.SQLDatabaseManager; import com.gmail.nossr50.database.SQLDatabaseManager;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@@ -24,7 +24,7 @@ public class ResetUserHealthBarSettingsCommand implements TabExecutor {
if (pluginRef.getDatabaseManager() instanceof SQLDatabaseManager) { if (pluginRef.getDatabaseManager() instanceof SQLDatabaseManager) {
SQLDatabaseManager sqlDatabaseManager = (SQLDatabaseManager) pluginRef.getDatabaseManager(); SQLDatabaseManager sqlDatabaseManager = (SQLDatabaseManager) pluginRef.getDatabaseManager();
sqlDatabaseManager.resetMobHealthSettings(); sqlDatabaseManager.resetMobHealthSettings();
for (McMMOPlayer player : pluginRef.getUserManager().getPlayers()) { for (BukkitMMOPlayer player : pluginRef.getUserManager().getPlayers()) {
player.getProfile().setMobHealthbarType(pluginRef.getConfigManager().getConfigMobs().getCombat().getHealthBars().getDisplayBarType()); player.getProfile().setMobHealthbarType(pluginRef.getConfigManager().getConfigMobs().getCombat().getHealthBars().getDisplayBarType());
} }
sender.sendMessage("Mob health reset"); sender.sendMessage("Mob health reset");
@@ -33,7 +33,7 @@ public class ResetUserHealthBarSettingsCommand implements TabExecutor {
if (pluginRef.getDatabaseManager() instanceof FlatFileDatabaseManager) { if (pluginRef.getDatabaseManager() instanceof FlatFileDatabaseManager) {
FlatFileDatabaseManager flatFileDatabaseManager = (FlatFileDatabaseManager) pluginRef.getDatabaseManager(); FlatFileDatabaseManager flatFileDatabaseManager = (FlatFileDatabaseManager) pluginRef.getDatabaseManager();
flatFileDatabaseManager.resetMobHealthSettings(); flatFileDatabaseManager.resetMobHealthSettings();
for (McMMOPlayer player : pluginRef.getUserManager().getPlayers()) { for (BukkitMMOPlayer player : pluginRef.getUserManager().getPlayers()) {
player.getProfile().setMobHealthbarType(pluginRef.getConfigManager().getConfigMobs().getCombat().getHealthBars().getDisplayBarType()); player.getProfile().setMobHealthbarType(pluginRef.getConfigManager().getConfigMobs().getCombat().getHealthBars().getDisplayBarType());
} }
sender.sendMessage("Mob health reset"); sender.sendMessage("Mob health reset");

View File

@@ -1,6 +1,6 @@
package com.gmail.nossr50.commands; package com.gmail.nossr50.commands;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@@ -46,7 +46,7 @@ public abstract class ToggleCommand implements TabExecutor {
} }
String playerName = pluginRef.getCommandTools().getMatchedPlayerName(args[0]); String playerName = pluginRef.getCommandTools().getMatchedPlayerName(args[0]);
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(playerName); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(playerName);
if (!pluginRef.getCommandTools().checkPlayerExistence(sender, playerName, mcMMOPlayer)) { if (!pluginRef.getCommandTools().checkPlayerExistence(sender, playerName, mcMMOPlayer)) {
return true; return true;
@@ -81,7 +81,7 @@ public abstract class ToggleCommand implements TabExecutor {
protected abstract boolean hasSelfPermission(CommandSender sender); protected abstract boolean hasSelfPermission(CommandSender sender);
protected abstract void applyCommandAction(McMMOPlayer mcMMOPlayer); protected abstract void applyCommandAction(BukkitMMOPlayer mcMMOPlayer);
protected abstract void sendSuccessMessage(CommandSender sender, String playerName); protected abstract void sendSuccessMessage(CommandSender sender, String playerName);
} }

View File

@@ -0,0 +1,66 @@
package com.gmail.nossr50.commands.admin;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.*;
import com.gmail.nossr50.mcMMO;
import net.kyori.text.TextComponent;
import net.kyori.text.adapter.bukkit.TextAdapter;
import net.kyori.text.format.TextColor;
import net.kyori.text.serializer.gson.GsonComponentSerializer;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
@CommandAlias("nbttools")
@Description("Read or Modify values of NBT on an item in-hand")
public class NBTToolsCommand extends BaseCommand {
public static final String STYLE_TEXT_1 = "//////////";
@Dependency
private mcMMO plugin;
@Default
@CommandPermission("mcmmo.commands.nbttools")
public void onCommand(Player player) {
//TODO: Add some help messages
player.sendMessage("hi");
}
/**
* Show the NBT tags of an item in hand
*/
@Subcommand("tags show")
public void onShowTags(Player player) {
final TextComponent textComponent = TextComponent.builder()
.content(plugin.getLocaleManager().getString("mcMMO.Template.Prefix"))
.append("NBT Tools")
.color(TextColor.GOLD)
.append(" - ")
.append("Showing NBT Tags (")
.append(player.getInventory().getItemInMainHand().getType().getKey().toString())
.color(TextColor.GREEN)
.append(")")
.color(TextColor.GOLD)
.append(TextComponent.newline())
.build();
String json = GsonComponentSerializer.INSTANCE.serialize(textComponent);
TextAdapter.sendMessage(player, textComponent);
//Show NBT tags to player
player.sendMessage(STYLE_TEXT_1 + " NBT TOOLS " + STYLE_TEXT_1);
player.sendMessage("NBT Analysis: " + player.getInventory().getItemInMainHand().getType().getKey().toString());
player.sendMessage(STYLE_TEXT_1 + STYLE_TEXT_1);
plugin.getNbtManager().printNBT(player.getInventory().getItemInMainHand(), player);
player.sendMessage(ChatColor.GRAY + "NBT Analysis completed!");
}
@Subcommand("tags add")
public void onAddTags(Player player) {
}
@Subcommand("tags remove")
public void onRemoveTags(Player player) {
}
}

View File

@@ -1,20 +0,0 @@
package com.gmail.nossr50.commands.admin;
import com.gmail.nossr50.mcMMO;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
public class PlayerDebug implements CommandExecutor {
private final mcMMO pluginRef;
public PlayerDebug(mcMMO pluginRef) {
this.pluginRef = pluginRef;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
return false;
}
}

View File

@@ -1,29 +1,35 @@
package com.gmail.nossr50.commands.admin; package com.gmail.nossr50.commands.admin;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.CommandAlias;
import co.aikar.commands.annotation.Default;
import co.aikar.commands.annotation.Dependency;
import co.aikar.commands.annotation.Description;
import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class PlayerDebugCommand implements CommandExecutor {
private final mcMMO pluginRef; @CommandAlias("mmodebug")
@Description("Puts the player into debug mode, which helps problem solve bugs in mcMMO.")
public class PlayerDebugCommand extends BaseCommand {
public PlayerDebugCommand(mcMMO pluginRef) { @Dependency
this.pluginRef = pluginRef; private mcMMO plugin;
}
@Override @Default
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public void onCommand(CommandSender sender) {
if(sender instanceof Player) { if(sender instanceof Player) {
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer((Player) sender); BukkitMMOPlayer mcMMOPlayer = plugin.getUserManager().getPlayer((Player) sender);
if(mcMMOPlayer == null)
return;
mcMMOPlayer.toggleDebugMode(); //Toggle debug mode mcMMOPlayer.toggleDebugMode(); //Toggle debug mode
pluginRef.getNotificationManager().sendPlayerInformationChatOnlyPrefixed(mcMMOPlayer.getPlayer(), "Commands.Mmodebug.Toggle", String.valueOf(mcMMOPlayer.isDebugMode())); plugin.getNotificationManager().sendPlayerInformationChatOnlyPrefixed(mcMMOPlayer.getNative(), "Commands.Mmodebug.Toggle", String.valueOf(mcMMOPlayer.isDebugMode()));
return true;
} else { } else {
return false; //TODO: Localize
sender.sendMessage("Players only");
} }
} }

View File

@@ -3,7 +3,7 @@ package com.gmail.nossr50.commands.chat;
import com.gmail.nossr50.commands.CommandConstants; import com.gmail.nossr50.commands.CommandConstants;
import com.gmail.nossr50.datatypes.chat.ChatMode; import com.gmail.nossr50.datatypes.chat.ChatMode;
import com.gmail.nossr50.datatypes.party.PartyFeature; import com.gmail.nossr50.datatypes.party.PartyFeature;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@@ -26,7 +26,7 @@ public abstract class ChatCommand implements TabExecutor {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
McMMOPlayer mcMMOPlayer; BukkitMMOPlayer mcMMOPlayer;
switch (args.length) { switch (args.length) {
case 0: case 0:
@@ -109,7 +109,7 @@ public abstract class ChatCommand implements TabExecutor {
protected abstract void handleChatSending(CommandSender sender, String[] args); protected abstract void handleChatSending(CommandSender sender, String[] args);
private void enableChatMode(McMMOPlayer mcMMOPlayer, CommandSender sender) { private void enableChatMode(BukkitMMOPlayer mcMMOPlayer, CommandSender sender) {
if (chatMode == ChatMode.PARTY && mcMMOPlayer.getParty() == null) { if (chatMode == ChatMode.PARTY && mcMMOPlayer.getParty() == null) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Party.None")); sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Party.None"));
return; return;
@@ -124,7 +124,7 @@ public abstract class ChatCommand implements TabExecutor {
sender.sendMessage(getChatModeEnabledMessage(chatMode, true)); sender.sendMessage(getChatModeEnabledMessage(chatMode, true));
} }
private void disableChatMode(McMMOPlayer mcMMOPlayer, CommandSender sender) { private void disableChatMode(BukkitMMOPlayer mcMMOPlayer, CommandSender sender) {
if (chatMode == ChatMode.PARTY && mcMMOPlayer.getParty() == null) { if (chatMode == ChatMode.PARTY && mcMMOPlayer.getParty() == null) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Party.None")); sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Party.None"));
return; return;

View File

@@ -1,7 +1,7 @@
package com.gmail.nossr50.commands.chat; package com.gmail.nossr50.commands.chat;
import com.gmail.nossr50.commands.ToggleCommand; import com.gmail.nossr50.commands.ToggleCommand;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -22,8 +22,8 @@ public class ChatSpyCommand extends ToggleCommand {
} }
@Override @Override
protected void applyCommandAction(McMMOPlayer mcMMOPlayer) { protected void applyCommandAction(BukkitMMOPlayer mcMMOPlayer) {
mcMMOPlayer.getPlayer().sendMessage(pluginRef.getLocaleManager().getString("Commands.AdminChatSpy." + (mcMMOPlayer.isPartyChatSpying() ? "Disabled" : "Enabled"))); mcMMOPlayer.getNative().sendMessage(pluginRef.getLocaleManager().getString("Commands.AdminChatSpy." + (mcMMOPlayer.isPartyChatSpying() ? "Disabled" : "Enabled")));
mcMMOPlayer.togglePartyChatSpying(); mcMMOPlayer.togglePartyChatSpying();
} }

View File

@@ -6,6 +6,8 @@ import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.runnables.database.DatabaseConversionTask; import com.gmail.nossr50.runnables.database.DatabaseConversionTask;
import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask; import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask;
import org.bukkit.Bukkit;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -57,17 +59,24 @@ public class ConvertDatabaseCommand implements CommandExecutor {
pluginRef.getUserManager().saveAll(); pluginRef.getUserManager().saveAll();
pluginRef.getUserManager().clearAll(); pluginRef.getUserManager().clearAll();
for (Player player : pluginRef.getServer().getOnlinePlayers()) { for (Player player : Bukkit.getServer().getOnlinePlayers()) {
PlayerProfile profile = oldDatabase.loadPlayerProfile(player.getUniqueId()); PlayerProfile profile = oldDatabase.loadPlayerProfile(player.getUniqueId());
if (profile.isLoaded()) { if (profile.isLoaded()) {
pluginRef.getDatabaseManager().saveUser(profile); pluginRef.getDatabaseManager().saveUser(profile);
} }
new PlayerProfileLoadingTask(pluginRef, player).runTaskLaterAsynchronously(pluginRef, 1); // 1 Tick delay to ensure the player is marked as online before we begin loading pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setAsync(true)
.setDelay(1L) // 1 Tick delay to ensure the player is marked as online before we begin loading
.setTask(new PlayerProfileLoadingTask(pluginRef, player))
.schedule();
} }
new DatabaseConversionTask(pluginRef, oldDatabase, sender, previousType.toString(), newType.toString()).runTaskAsynchronously(pluginRef); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setAsync(true)
.setTask(new DatabaseConversionTask(pluginRef, oldDatabase, sender, previousType.toString(), newType.toString()))
.schedule();
return true; return true;
default: default:

View File

@@ -4,6 +4,8 @@ import com.gmail.nossr50.datatypes.experience.FormulaType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.runnables.database.FormulaConversionTask; import com.gmail.nossr50.runnables.database.FormulaConversionTask;
import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask; import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask;
import org.bukkit.Bukkit;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -31,10 +33,17 @@ public class ConvertExperienceCommand implements CommandExecutor {
pluginRef.getUserManager().saveAll(); pluginRef.getUserManager().saveAll();
pluginRef.getUserManager().clearAll(); pluginRef.getUserManager().clearAll();
new FormulaConversionTask(pluginRef, sender, previousType).runTaskLater(pluginRef, 1); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setDelay(1L)
.setTask(new FormulaConversionTask(pluginRef, sender, previousType))
.schedule();
for (Player player : pluginRef.getServer().getOnlinePlayers()) { for (Player player : Bukkit.getServer().getOnlinePlayers()) {
new PlayerProfileLoadingTask(pluginRef, player).runTaskLaterAsynchronously(pluginRef, 1); // 1 Tick delay to ensure the player is marked as online before we begin loading pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setAsync(true)
.setDelay(1L) // 1 Tick delay to ensure the player is marked as online before we begin loading
.setTask(new PlayerProfileLoadingTask(pluginRef, player))
.schedule();
} }
return true; return true;

View File

@@ -1,10 +1,12 @@
package com.gmail.nossr50.commands.experience; package com.gmail.nossr50.commands.experience;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -96,12 +98,12 @@ public abstract class ExperienceCommand implements TabExecutor {
int value = Integer.parseInt(args[2]); int value = Integer.parseInt(args[2]);
String playerName = pluginRef.getCommandTools().getMatchedPlayerName(args[0]); String playerName = pluginRef.getCommandTools().getMatchedPlayerName(args[0]);
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getOfflinePlayer(playerName); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getOfflinePlayer(playerName);
// If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process. // If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process.
if (mcMMOPlayer == null) { if (mcMMOPlayer == null) {
UUID uuid = null; UUID uuid = null;
OfflinePlayer player = pluginRef.getServer().getOfflinePlayer(playerName); OfflinePlayer player = Bukkit.getServer().getOfflinePlayer(playerName);
if (player != null) { if (player != null) {
uuid = player.getUniqueId(); uuid = player.getUniqueId();
} }
@@ -113,7 +115,7 @@ public abstract class ExperienceCommand implements TabExecutor {
editValues(null, profile, skill, value); editValues(null, profile, skill, value);
} else { } else {
editValues(mcMMOPlayer.getPlayer(), mcMMOPlayer.getProfile(), skill, value); editValues(mcMMOPlayer.getNative(), mcMMOPlayer.getProfile(), skill, value);
} }
handleSenderMessage(sender, playerName, skill); handleSenderMessage(sender, playerName, skill);

View File

@@ -1,11 +1,13 @@
package com.gmail.nossr50.commands.experience; package com.gmail.nossr50.commands.experience;
import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.experience.XPGainReason;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -81,12 +83,12 @@ public class SkillResetCommand implements TabExecutor {
} }
String playerName = pluginRef.getCommandTools().getMatchedPlayerName(args[0]); String playerName = pluginRef.getCommandTools().getMatchedPlayerName(args[0]);
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getOfflinePlayer(playerName); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getOfflinePlayer(playerName);
// If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process. // If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process.
if (mcMMOPlayer == null) { if (mcMMOPlayer == null) {
UUID uuid = null; UUID uuid = null;
OfflinePlayer player = pluginRef.getServer().getOfflinePlayer(playerName); OfflinePlayer player = Bukkit.getServer().getOfflinePlayer(playerName);
if (player != null) { if (player != null) {
uuid = player.getUniqueId(); uuid = player.getUniqueId();
} }
@@ -98,7 +100,7 @@ public class SkillResetCommand implements TabExecutor {
editValues(null, profile, skill); editValues(null, profile, skill);
} else { } else {
editValues(mcMMOPlayer.getPlayer(), mcMMOPlayer.getProfile(), skill); editValues(mcMMOPlayer.getNative(), mcMMOPlayer.getProfile(), skill);
} }
handleSenderMessage(sender, playerName, skill); handleSenderMessage(sender, playerName, skill);

View File

@@ -1,6 +1,6 @@
package com.gmail.nossr50.commands.party; package com.gmail.nossr50.commands.party;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
@@ -26,7 +26,7 @@ public class PartyAcceptCommand implements CommandExecutor {
return true; return true;
} }
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
if (!mcMMOPlayer.hasPartyInvite()) { if (!mcMMOPlayer.hasPartyInvite()) {

View File

@@ -2,6 +2,8 @@ package com.gmail.nossr50.commands.party;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
@@ -28,7 +30,7 @@ public class PartyChangeOwnerCommand implements CommandExecutor {
Party playerParty = pluginRef.getUserManager().getPlayer((Player) sender).getParty(); Party playerParty = pluginRef.getUserManager().getPlayer((Player) sender).getParty();
String targetName = pluginRef.getCommandTools().getMatchedPlayerName(args[1]); String targetName = pluginRef.getCommandTools().getMatchedPlayerName(args[1]);
OfflinePlayer target = pluginRef.getServer().getOfflinePlayer(targetName); OfflinePlayer target = Bukkit.getServer().getOfflinePlayer(targetName);
if (!playerParty.hasMember(target.getUniqueId())) { if (!playerParty.hasMember(target.getUniqueId())) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Party.NotInYourParty", targetName)); sender.sendMessage(pluginRef.getLocaleManager().getString("Party.NotInYourParty", targetName));

View File

@@ -5,7 +5,7 @@ import com.gmail.nossr50.commands.chat.PartyChatCommand;
import com.gmail.nossr50.commands.party.alliance.PartyAllianceCommand; import com.gmail.nossr50.commands.party.alliance.PartyAllianceCommand;
import com.gmail.nossr50.commands.party.teleport.PtpCommand; import com.gmail.nossr50.commands.party.teleport.PtpCommand;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@@ -110,7 +110,7 @@ public class PartyCommand implements TabExecutor {
return true; return true;
} }
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
if (args.length < 1) { if (args.length < 1) {
if (!mcMMOPlayer.inParty()) { if (!mcMMOPlayer.inParty()) {

View File

@@ -1,6 +1,6 @@
package com.gmail.nossr50.commands.party; package com.gmail.nossr50.commands.party;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
@@ -21,7 +21,7 @@ public class PartyCreateCommand implements CommandExecutor {
case 2: case 2:
case 3: case 3:
Player player = (Player) sender; Player player = (Player) sender;
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
if (pluginRef.getUserManager().getPlayer(player) == null) { if (pluginRef.getUserManager().getPlayer(player) == null) {
player.sendMessage(pluginRef.getLocaleManager().getString("Profile.PendingLoad")); player.sendMessage(pluginRef.getLocaleManager().getString("Profile.PendingLoad"));

View File

@@ -3,7 +3,7 @@ package com.gmail.nossr50.commands.party;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.party.PartyFeature; import com.gmail.nossr50.datatypes.party.PartyFeature;
import com.gmail.nossr50.datatypes.party.ShareMode; import com.gmail.nossr50.datatypes.party.ShareMode;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.StringUtils; import com.gmail.nossr50.util.StringUtils;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
@@ -33,7 +33,7 @@ public class PartyInfoCommand implements CommandExecutor {
return true; return true;
} }
Player player = (Player) sender; Player player = (Player) sender;
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
Party party = mcMMOPlayer.getParty(); Party party = mcMMOPlayer.getParty();
displayPartyHeader(player, party); displayPartyHeader(player, party);
@@ -133,7 +133,7 @@ public class PartyInfoCommand implements CommandExecutor {
} }
} }
private void displayMemberInfo(Player player, McMMOPlayer mcMMOPlayer, Party party) { private void displayMemberInfo(Player player, BukkitMMOPlayer mcMMOPlayer, Party party) {
/* /*
* Only show members of the party that this member can see * Only show members of the party that this member can see
*/ */

View File

@@ -1,7 +1,7 @@
package com.gmail.nossr50.commands.party; package com.gmail.nossr50.commands.party;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
@@ -21,13 +21,13 @@ public class PartyInviteCommand implements CommandExecutor {
switch (args.length) { switch (args.length) {
case 2: case 2:
String targetName = pluginRef.getCommandTools().getMatchedPlayerName(args[1]); String targetName = pluginRef.getCommandTools().getMatchedPlayerName(args[1]);
McMMOPlayer mcMMOTarget = pluginRef.getUserManager().getOfflinePlayer(targetName); BukkitMMOPlayer mcMMOTarget = pluginRef.getUserManager().getOfflinePlayer(targetName);
if (!pluginRef.getCommandTools().checkPlayerExistence(sender, targetName, mcMMOTarget)) { if (!pluginRef.getCommandTools().checkPlayerExistence(sender, targetName, mcMMOTarget)) {
return false; return false;
} }
Player target = mcMMOTarget.getPlayer(); Player target = mcMMOTarget.getNative();
if (pluginRef.getUserManager().getPlayer((Player) sender) == null) { if (pluginRef.getUserManager().getPlayer((Player) sender) == null) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Profile.PendingLoad")); sender.sendMessage(pluginRef.getLocaleManager().getString("Profile.PendingLoad"));
@@ -35,7 +35,7 @@ public class PartyInviteCommand implements CommandExecutor {
} }
Player player = (Player) sender; Player player = (Player) sender;
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
String playerName = player.getName(); String playerName = player.getName();
if (player.equals(target)) { if (player.equals(target)) {

View File

@@ -11,6 +11,8 @@ import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.Locale;
public class PartyItemShareCommand implements CommandExecutor { public class PartyItemShareCommand implements CommandExecutor {
private final mcMMO pluginRef; private final mcMMO pluginRef;
@@ -35,7 +37,7 @@ public class PartyItemShareCommand implements CommandExecutor {
switch (args.length) { switch (args.length) {
case 2: case 2:
ShareMode mode = ShareMode.getShareMode(args[1].toUpperCase()); ShareMode mode = ShareMode.getShareMode(args[1].toUpperCase(Locale.ENGLISH));
if (mode == null) { if (mode == null) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Usage.2", "party", "itemshare", "<NONE | EQUAL | RANDOM>")); sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Usage.2", "party", "itemshare", "<NONE | EQUAL | RANDOM>"));
@@ -58,7 +60,7 @@ public class PartyItemShareCommand implements CommandExecutor {
} }
try { try {
handleToggleItemShareCategory(party, ItemShareType.valueOf(args[1].toUpperCase()), toggle); handleToggleItemShareCategory(party, ItemShareType.valueOf(args[1].toUpperCase(Locale.ENGLISH)), toggle);
} catch (IllegalArgumentException ex) { } catch (IllegalArgumentException ex) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Usage.2", "party", "itemshare", "<loot | mining | herbalism | woodcutting | misc> <true | false>")); sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Usage.2", "party", "itemshare", "<loot | mining | herbalism | woodcutting | misc> <true | false>"));
} }

View File

@@ -1,7 +1,7 @@
package com.gmail.nossr50.commands.party; package com.gmail.nossr50.commands.party;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
@@ -22,13 +22,13 @@ public class PartyJoinCommand implements CommandExecutor {
case 2: case 2:
case 3: case 3:
String targetName = pluginRef.getCommandTools().getMatchedPlayerName(args[1]); String targetName = pluginRef.getCommandTools().getMatchedPlayerName(args[1]);
McMMOPlayer mcMMOTarget = pluginRef.getUserManager().getPlayer(targetName); BukkitMMOPlayer mcMMOTarget = pluginRef.getUserManager().getPlayer(targetName);
if (!pluginRef.getCommandTools().checkPlayerExistence(sender, targetName, mcMMOTarget)) { if (!pluginRef.getCommandTools().checkPlayerExistence(sender, targetName, mcMMOTarget)) {
return true; return true;
} }
Player target = mcMMOTarget.getPlayer(); Player target = mcMMOTarget.getNative();
if (!mcMMOTarget.inParty()) { if (!mcMMOTarget.inParty()) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Party.PlayerNotInParty", targetName)); sender.sendMessage(pluginRef.getLocaleManager().getString("Party.PlayerNotInParty", targetName));
@@ -42,7 +42,7 @@ public class PartyJoinCommand implements CommandExecutor {
return true; return true;
} }
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
Party targetParty = mcMMOTarget.getParty(); Party targetParty = mcMMOTarget.getParty();
if (player.equals(target) || (mcMMOPlayer.inParty() && mcMMOPlayer.getParty().equals(targetParty))) { if (player.equals(target) || (mcMMOPlayer.inParty() && mcMMOPlayer.getParty().equals(targetParty))) {

View File

@@ -3,6 +3,8 @@ package com.gmail.nossr50.commands.party;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason; import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
@@ -34,7 +36,7 @@ public class PartyKickCommand implements CommandExecutor {
return true; return true;
} }
OfflinePlayer target = pluginRef.getServer().getOfflinePlayer(targetName); OfflinePlayer target = Bukkit.getServer().getOfflinePlayer(targetName);
if (target.isOnline()) { if (target.isOnline()) {
Player onlineTarget = target.getPlayer(); Player onlineTarget = target.getPlayer();

View File

@@ -1,7 +1,7 @@
package com.gmail.nossr50.commands.party; package com.gmail.nossr50.commands.party;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason; import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@@ -28,7 +28,7 @@ public class PartyQuitCommand implements CommandExecutor {
return true; return true;
} }
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
Party playerParty = mcMMOPlayer.getParty(); Party playerParty = mcMMOPlayer.getParty();
if (!pluginRef.getPartyManager().handlePartyChangeEvent(player, playerParty.getName(), null, EventReason.LEFT_PARTY)) { if (!pluginRef.getPartyManager().handlePartyChangeEvent(player, playerParty.getName(), null, EventReason.LEFT_PARTY)) {

View File

@@ -1,7 +1,7 @@
package com.gmail.nossr50.commands.party; package com.gmail.nossr50.commands.party;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason; import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@@ -26,7 +26,7 @@ public class PartyRenameCommand implements CommandExecutor {
return true; return true;
} }
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer((Player) sender); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer((Player) sender);
Party playerParty = mcMMOPlayer.getParty(); Party playerParty = mcMMOPlayer.getParty();
String oldPartyName = playerParty.getName(); String oldPartyName = playerParty.getName();
@@ -38,7 +38,7 @@ public class PartyRenameCommand implements CommandExecutor {
return true; return true;
} }
Player player = mcMMOPlayer.getPlayer(); Player player = mcMMOPlayer.getNative();
// Check to see if the party exists, and if it does cancel renaming the party // Check to see if the party exists, and if it does cancel renaming the party
if (pluginRef.getPartyManager().checkPartyExistence(player, newPartyName)) { if (pluginRef.getPartyManager().checkPartyExistence(player, newPartyName)) {

View File

@@ -1,6 +1,6 @@
package com.gmail.nossr50.commands.party.alliance; package com.gmail.nossr50.commands.party.alliance;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
@@ -24,7 +24,7 @@ public class PartyAllianceAcceptCommand implements CommandExecutor {
return true; return true;
} }
Player player = (Player) sender; Player player = (Player) sender;
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
if (!mcMMOPlayer.hasPartyAllianceInvite()) { if (!mcMMOPlayer.hasPartyAllianceInvite()) {
sender.sendMessage(pluginRef.getLocaleManager().getString("mcMMO.NoInvites")); sender.sendMessage(pluginRef.getLocaleManager().getString("mcMMO.NoInvites"));

View File

@@ -3,7 +3,7 @@ package com.gmail.nossr50.commands.party.alliance;
import com.gmail.nossr50.commands.CommandConstants; import com.gmail.nossr50.commands.CommandConstants;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.party.PartyFeature; import com.gmail.nossr50.datatypes.party.PartyFeature;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
@@ -48,7 +48,7 @@ public class PartyAllianceCommand implements TabExecutor {
} }
player = (Player) sender; player = (Player) sender;
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
playerParty = mcMMOPlayer.getParty(); playerParty = mcMMOPlayer.getParty();
@@ -132,7 +132,7 @@ public class PartyAllianceCommand implements TabExecutor {
player.sendMessage(pluginRef.getLocaleManager().getString("Commands.Party.Alliance.Ally", playerParty.getName(), targetParty.getName())); player.sendMessage(pluginRef.getLocaleManager().getString("Commands.Party.Alliance.Ally", playerParty.getName(), targetParty.getName()));
} }
private void displayMemberInfo(McMMOPlayer mcMMOPlayer) { private void displayMemberInfo(BukkitMMOPlayer mcMMOPlayer) {
player.sendMessage(pluginRef.getLocaleManager().getString("Commands.Party.Alliance.Members.Header")); player.sendMessage(pluginRef.getLocaleManager().getString("Commands.Party.Alliance.Members.Header"));
player.sendMessage(playerParty.createMembersList(player)); player.sendMessage(playerParty.createMembersList(player));
player.sendMessage(ChatColor.DARK_GRAY + "----------------------------"); player.sendMessage(ChatColor.DARK_GRAY + "----------------------------");

View File

@@ -1,7 +1,7 @@
package com.gmail.nossr50.commands.party.alliance; package com.gmail.nossr50.commands.party.alliance;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
@@ -25,7 +25,7 @@ public class PartyAllianceDisbandCommand implements CommandExecutor {
return true; return true;
} }
Player player = (Player) sender; Player player = (Player) sender;
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
Party party = mcMMOPlayer.getParty(); Party party = mcMMOPlayer.getParty();
if (party.getAlly() == null) { if (party.getAlly() == null) {

View File

@@ -1,7 +1,7 @@
package com.gmail.nossr50.commands.party.alliance; package com.gmail.nossr50.commands.party.alliance;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
@@ -21,13 +21,13 @@ public class PartyAllianceInviteCommand implements CommandExecutor {
switch (args.length) { switch (args.length) {
case 3: case 3:
String targetName = pluginRef.getCommandTools().getMatchedPlayerName(args[2]); String targetName = pluginRef.getCommandTools().getMatchedPlayerName(args[2]);
McMMOPlayer mcMMOTarget = pluginRef.getUserManager().getOfflinePlayer(targetName); BukkitMMOPlayer mcMMOTarget = pluginRef.getUserManager().getOfflinePlayer(targetName);
if (!pluginRef.getCommandTools().checkPlayerExistence(sender, targetName, mcMMOTarget)) { if (!pluginRef.getCommandTools().checkPlayerExistence(sender, targetName, mcMMOTarget)) {
return false; return false;
} }
Player target = mcMMOTarget.getPlayer(); Player target = mcMMOTarget.getNative();
if (pluginRef.getUserManager().getPlayer((Player) sender) == null) { if (pluginRef.getUserManager().getPlayer((Player) sender) == null) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Profile.PendingLoad")); sender.sendMessage(pluginRef.getLocaleManager().getString("Profile.PendingLoad"));
@@ -35,7 +35,7 @@ public class PartyAllianceInviteCommand implements CommandExecutor {
} }
Player player = (Player) sender; Player player = (Player) sender;
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
String playerName = player.getName(); String playerName = player.getName();
if (player.equals(target)) { if (player.equals(target)) {

View File

@@ -4,9 +4,10 @@ import com.gmail.nossr50.commands.CommandConstants;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.party.PartyFeature; import com.gmail.nossr50.datatypes.party.PartyFeature;
import com.gmail.nossr50.datatypes.party.PartyTeleportRecord; import com.gmail.nossr50.datatypes.party.PartyTeleportRecord;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.World;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -60,7 +61,7 @@ public class PtpCommand implements TabExecutor {
return true; return true;
} }
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
if (!mcMMOPlayer.inParty()) { if (!mcMMOPlayer.inParty()) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Party.None")); sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Party.None"));
@@ -135,7 +136,7 @@ public class PtpCommand implements TabExecutor {
} }
Player player = (Player) sender; Player player = (Player) sender;
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
if (!mcMMOPlayer.inParty()) { if (!mcMMOPlayer.inParty()) {
return ImmutableList.of(); return ImmutableList.of();
@@ -156,8 +157,24 @@ public class PtpCommand implements TabExecutor {
return; return;
} }
McMMOPlayer mcMMOTarget = pluginRef.getUserManager().getPlayer(targetName); BukkitMMOPlayer mcMMOTarget = pluginRef.getUserManager().getPlayer(targetName);
Player target = mcMMOTarget.getPlayer(); Player target = mcMMOTarget.getNative();
if (pluginRef.getConfigManager().getConfigParty().getPTP().isPtpWorldBasedPermissions()) {
World targetWorld = target.getWorld();
World playerWorld = player.getWorld();
if (!pluginRef.getPermissionTools().partyTeleportAllWorlds(player)) {
if (!pluginRef.getPermissionTools().partyTeleportWorld(target, targetWorld)) {
player.sendMessage(pluginRef.getLocaleManager().formatString("Commands.ptp.NoWorldPermissions", targetWorld.getName()));
return;
}
else if (targetWorld != playerWorld && !pluginRef.getPermissionTools().partyTeleportWorld(player, targetWorld)) {
player.sendMessage(pluginRef.getLocaleManager().formatString("Commands.ptp.NoWorldPermissions", targetWorld.getName()));
return;
}
}
}
PartyTeleportRecord ptpRecord = mcMMOTarget.getPartyTeleportRecord(); PartyTeleportRecord ptpRecord = mcMMOTarget.getPartyTeleportRecord();

View File

@@ -1,6 +1,6 @@
package com.gmail.nossr50.commands.player; package com.gmail.nossr50.commands.player;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.datatypes.skills.SuperAbilityType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.scoreboards.SidebarType; import com.gmail.nossr50.util.scoreboards.SidebarType;
@@ -47,7 +47,7 @@ public class CooldownCommand implements TabExecutor {
return true; return true;
} }
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
player.sendMessage(pluginRef.getLocaleManager().getString("Commands.Cooldowns.Header")); player.sendMessage(pluginRef.getLocaleManager().getString("Commands.Cooldowns.Header"));
player.sendMessage(pluginRef.getLocaleManager().getString("mcMMO.NoSkillNote")); player.sendMessage(pluginRef.getLocaleManager().getString("mcMMO.NoSkillNote"));

View File

@@ -1,6 +1,6 @@
package com.gmail.nossr50.commands.player; package com.gmail.nossr50.commands.player;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
@@ -27,7 +27,7 @@ public class InspectCommand implements TabExecutor {
switch (args.length) { switch (args.length) {
case 1: case 1:
String playerName = pluginRef.getCommandTools().getMatchedPlayerName(args[0]); String playerName = pluginRef.getCommandTools().getMatchedPlayerName(args[0]);
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getOfflinePlayer(playerName); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getOfflinePlayer(playerName);
// If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process. // If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process.
if (mcMMOPlayer == null) { if (mcMMOPlayer == null) {
@@ -65,7 +65,7 @@ public class InspectCommand implements TabExecutor {
} }
} else { } else {
Player target = mcMMOPlayer.getPlayer(); Player target = mcMMOPlayer.getNative();
if (pluginRef.getCommandTools().hidden(sender, target, pluginRef.getPermissionTools().inspectHidden(sender))) { if (pluginRef.getCommandTools().hidden(sender, target, pluginRef.getPermissionTools().inspectHidden(sender))) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Inspect.Offline")); sender.sendMessage(pluginRef.getLocaleManager().getString("Inspect.Offline"));

View File

@@ -1,7 +1,7 @@
package com.gmail.nossr50.commands.player; package com.gmail.nossr50.commands.player;
import com.gmail.nossr50.core.MetadataConstants; import com.gmail.nossr50.core.MetadataConstants;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.runnables.commands.LeaderboardsCommandAsyncTask; import com.gmail.nossr50.runnables.commands.LeaderboardsCommandAsyncTask;
@@ -13,6 +13,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.Plugin;
import org.bukkit.util.StringUtil; import org.bukkit.util.StringUtil;
import java.util.ArrayList; import java.util.ArrayList;
@@ -90,7 +91,7 @@ public class LeaderboardCommand implements TabExecutor {
return; return;
} }
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(sender.getName()); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(sender.getName());
long cooldownMillis = 5000; long cooldownMillis = 5000;
if (mcMMOPlayer.getDatabaseATS() + cooldownMillis > System.currentTimeMillis()) { if (mcMMOPlayer.getDatabaseATS() + cooldownMillis > System.currentTimeMillis()) {
@@ -103,11 +104,11 @@ public class LeaderboardCommand implements TabExecutor {
return; return;
} }
if (((Player) sender).hasMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY)) { if (((Player) sender).hasMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY.getKey())) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Database.Processing")); sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Database.Processing"));
return; return;
} else { } else {
((Player) sender).setMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY, new FixedMetadataValue(pluginRef, null)); ((Player) sender).setMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY.getKey(), new FixedMetadataValue((Plugin) pluginRef.getPlatformProvider(), null));
} }
mcMMOPlayer.actualizeDatabaseATS(); mcMMOPlayer.actualizeDatabaseATS();
@@ -120,7 +121,10 @@ public class LeaderboardCommand implements TabExecutor {
boolean useBoard = (sender instanceof Player) && (pluginRef.getScoreboardSettings().isScoreboardEnabled(SidebarType.TOP_BOARD)); boolean useBoard = (sender instanceof Player) && (pluginRef.getScoreboardSettings().isScoreboardEnabled(SidebarType.TOP_BOARD));
boolean useChat = !useBoard || pluginRef.getScoreboardSettings().isScoreboardPrinting(SidebarType.TOP_BOARD); boolean useChat = !useBoard || pluginRef.getScoreboardSettings().isScoreboardPrinting(SidebarType.TOP_BOARD);
new LeaderboardsCommandAsyncTask(pluginRef, page, skill, sender, useBoard, useChat).runTaskAsynchronously(pluginRef); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setAsync(true)
.setTask(new LeaderboardsCommandAsyncTask(pluginRef, page, skill, sender, useBoard, useChat))
.schedule();
} }
private PrimarySkillType extractSkill(CommandSender sender, String skillName) { private PrimarySkillType extractSkill(CommandSender sender, String skillName) {

View File

@@ -1,7 +1,7 @@
package com.gmail.nossr50.commands.player; package com.gmail.nossr50.commands.player;
import com.gmail.nossr50.core.MetadataConstants; import com.gmail.nossr50.core.MetadataConstants;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.runnables.commands.RankCommandAsyncTask; import com.gmail.nossr50.runnables.commands.RankCommandAsyncTask;
import com.gmail.nossr50.util.scoreboards.SidebarType; import com.gmail.nossr50.util.scoreboards.SidebarType;
@@ -11,6 +11,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.Plugin;
import org.bukkit.util.StringUtil; import org.bukkit.util.StringUtil;
import java.util.ArrayList; import java.util.ArrayList;
@@ -56,10 +57,10 @@ public class RankCommand implements TabExecutor {
} }
String playerName = pluginRef.getCommandTools().getMatchedPlayerName(args[0]); String playerName = pluginRef.getCommandTools().getMatchedPlayerName(args[0]);
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getOfflinePlayer(playerName); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getOfflinePlayer(playerName);
if (mcMMOPlayer != null) { if (mcMMOPlayer != null) {
Player player = mcMMOPlayer.getPlayer(); Player player = mcMMOPlayer.getNative();
playerName = player.getName(); playerName = player.getName();
if (pluginRef.getCommandTools().tooFar(sender, player, pluginRef.getPermissionTools().mcrankFar(sender))) { if (pluginRef.getCommandTools().tooFar(sender, player, pluginRef.getPermissionTools().mcrankFar(sender))) {
@@ -89,7 +90,7 @@ public class RankCommand implements TabExecutor {
private void display(CommandSender sender, String playerName) { private void display(CommandSender sender, String playerName) {
if (sender instanceof Player) { if (sender instanceof Player) {
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(sender.getName()); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(sender.getName());
if (mcMMOPlayer == null) { if (mcMMOPlayer == null) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Profile.PendingLoad")); sender.sendMessage(pluginRef.getLocaleManager().getString("Profile.PendingLoad"));
@@ -103,11 +104,11 @@ public class RankCommand implements TabExecutor {
return; return;
} }
if (((Player) sender).hasMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY)) { if (((Player) sender).hasMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY.getKey())) {
sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Database.Processing")); sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Database.Processing"));
return; return;
} else { } else {
((Player) sender).setMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY, new FixedMetadataValue(pluginRef, null)); ((Player) sender).setMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY.getKey(), new FixedMetadataValue((Plugin) pluginRef.getPlatformProvider(), null));
} }
mcMMOPlayer.actualizeDatabaseATS(); mcMMOPlayer.actualizeDatabaseATS();
@@ -117,10 +118,13 @@ public class RankCommand implements TabExecutor {
&& (pluginRef.getScoreboardSettings().isScoreboardEnabled(SidebarType.RANK_BOARD)); && (pluginRef.getScoreboardSettings().isScoreboardEnabled(SidebarType.RANK_BOARD));
boolean useChat = !useBoard || pluginRef.getScoreboardSettings().isScoreboardPrinting(SidebarType.RANK_BOARD); boolean useChat = !useBoard || pluginRef.getScoreboardSettings().isScoreboardPrinting(SidebarType.RANK_BOARD);
new RankCommandAsyncTask(pluginRef, playerName, sender, useBoard, useChat).runTaskAsynchronously(pluginRef); pluginRef.getPlatformProvider().getScheduler().getTaskBuilder()
.setAsync(true)
.setTask(new RankCommandAsyncTask(pluginRef, playerName, sender, useBoard, useChat))
.schedule();
} }
private long getCDSeconds(McMMOPlayer mcMMOPlayer, long cooldownMillis) { private long getCDSeconds(BukkitMMOPlayer mcMMOPlayer, long cooldownMillis) {
return ((mcMMOPlayer.getDatabaseATS() + cooldownMillis) - System.currentTimeMillis()); return ((mcMMOPlayer.getDatabaseATS() + cooldownMillis) - System.currentTimeMillis());
} }
} }

View File

@@ -20,7 +20,7 @@ public class MiningCommand extends SkillCommand {
private int bonusTNTDrops; private int bonusTNTDrops;
private double blastRadiusIncrease; private double blastRadiusIncrease;
private String oreBonus; private String oreBonus;
private String debrisReduction; // private String debrisReduction;
private String blastDamageDecrease; private String blastDamageDecrease;
private boolean canSuperBreaker; private boolean canSuperBreaker;
@@ -42,7 +42,7 @@ public class MiningCommand extends SkillCommand {
blastMiningRank = miningManager.getBlastMiningTier(); blastMiningRank = miningManager.getBlastMiningTier();
bonusTNTDrops = miningManager.getDropMultiplier(); bonusTNTDrops = miningManager.getDropMultiplier();
oreBonus = percent.format(miningManager.getOreBonus() / 30.0D); // Base received in TNT is 30% oreBonus = percent.format(miningManager.getOreBonus() / 30.0D); // Base received in TNT is 30%
debrisReduction = percent.format(miningManager.getDebrisReduction() / 30.0D); // Base received in TNT is 30% // debrisReduction = percent.format(miningManager.getDebrisReduction() / 30.0D); // Base received in TNT is 30%
blastDamageDecrease = percent.format(miningManager.getBlastDamageModifier() / 100.0D); blastDamageDecrease = percent.format(miningManager.getBlastDamageModifier() / 100.0D);
blastRadiusIncrease = miningManager.getBlastRadiusModifier(); blastRadiusIncrease = miningManager.getBlastRadiusModifier();
} }
@@ -81,8 +81,8 @@ public class MiningCommand extends SkillCommand {
} }
if (canBlast) { if (canBlast) {
messages.add(getStatMessage(false, true, SubSkillType.MINING_BLAST_MINING, String.valueOf(blastMiningRank), String.valueOf(pluginRef.getRankTools().getHighestRank(SubSkillType.MINING_BLAST_MINING)), pluginRef.getLocaleManager().getString("SuperAbility.BlastMining.Effect", oreBonus, debrisReduction, bonusTNTDrops))); messages.add(getStatMessage(false, true, SubSkillType.MINING_BLAST_MINING, String.valueOf(blastMiningRank), String.valueOf(pluginRef.getRankTools().getHighestRank(SubSkillType.MINING_BLAST_MINING)), pluginRef.getLocaleManager().getString("Mining.Blast.Effect", oreBonus, bonusTNTDrops)));
//messages.add(pluginRef.getLocaleManager().getString("SuperAbility.BlastMining.Rank", blastMiningRank, RankUtils.getHighestRank(SubSkillType.MINING_BLAST_MINING), pluginRef.getLocaleManager().getString("SuperAbility.BlastMining.Effect", oreBonus, debrisReduction, bonusTNTDrops))); //messages.add(LocaleLoader.getString("Mining.Blast.Rank", blastMiningRank, RankUtils.getHighestRank(SubSkillType.MINING_BLAST_MINING), LocaleLoader.getString("Mining.Blast.Effect", oreBonus, debrisReduction, bonusTNTDrops)));
} }
if (canDemoExpert) { if (canDemoExpert) {

View File

@@ -1,6 +1,6 @@
package com.gmail.nossr50.commands.skills; package com.gmail.nossr50.commands.skills;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.BukkitMMOPlayer;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
@@ -19,6 +19,7 @@ import org.bukkit.entity.Player;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Set; import java.util.Set;
public abstract class SkillCommand implements TabExecutor { public abstract class SkillCommand implements TabExecutor {
@@ -63,7 +64,7 @@ public abstract class SkillCommand implements TabExecutor {
switch (args.length) { switch (args.length) {
case 0: case 0:
Player player = (Player) sender; Player player = (Player) sender;
McMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player); BukkitMMOPlayer mcMMOPlayer = pluginRef.getUserManager().getPlayer(player);
boolean isLucky = pluginRef.getPermissionTools().lucky(player, skill); boolean isLucky = pluginRef.getPermissionTools().lucky(player, skill);
boolean hasEndurance = pluginRef.getSkillTools().getEnduranceLength(player) > 0; boolean hasEndurance = pluginRef.getSkillTools().getEnduranceLength(player) > 0;
@@ -131,10 +132,10 @@ public abstract class SkillCommand implements TabExecutor {
} }
} }
player.sendMessage(pluginRef.getLocaleManager().getString("Guides.Available", skillName, skillName.toLowerCase())); player.sendMessage(pluginRef.getLocaleManager().getString("Guides.Available", skillName, skillName.toLowerCase(Locale.ENGLISH)));
} }
private void sendSkillCommandHeader(Player player, McMMOPlayer mcMMOPlayer, int skillValue) { private void sendSkillCommandHeader(Player player, BukkitMMOPlayer mcMMOPlayer, int skillValue) {
ChatColor hd1 = ChatColor.DARK_AQUA; ChatColor hd1 = ChatColor.DARK_AQUA;
ChatColor c1 = ChatColor.GOLD; ChatColor c1 = ChatColor.GOLD;
ChatColor c2 = ChatColor.RED; ChatColor c2 = ChatColor.RED;
@@ -223,10 +224,10 @@ public abstract class SkillCommand implements TabExecutor {
String statDescriptionKey = !isExtra ? subSkillType.getLocaleKeyStatDescription(pluginRef) : subSkillType.getLocaleKeyStatExtraDescription(pluginRef); String statDescriptionKey = !isExtra ? subSkillType.getLocaleKeyStatDescription(pluginRef) : subSkillType.getLocaleKeyStatExtraDescription(pluginRef);
if (isCustom) if (isCustom)
return pluginRef.getLocaleManager().getString(templateKey, pluginRef.getLocaleManager().getString(statDescriptionKey, vars)); return pluginRef.getLocaleManager().getString(templateKey, pluginRef.getLocaleManager().getString(statDescriptionKey, (Object[]) vars));
else { else {
String[] mergedList = pluginRef.getNotificationManager().addItemToFirstPositionOfArray(pluginRef.getLocaleManager().getString(statDescriptionKey), vars); String[] mergedList = pluginRef.getNotificationManager().addItemToFirstPositionOfArray(pluginRef.getLocaleManager().getString(statDescriptionKey), vars);
return pluginRef.getLocaleManager().getString(templateKey, mergedList); return pluginRef.getLocaleManager().getString(templateKey, (Object[]) mergedList);
} }
} }

View File

@@ -17,10 +17,10 @@ public class SkillGuideCommand implements CommandExecutor {
private final mcMMO pluginRef; private final mcMMO pluginRef;
public SkillGuideCommand(PrimarySkillType primarySkillType, mcMMO pluginRef) { public SkillGuideCommand(PrimarySkillType primarySkillType, mcMMO pluginRef) {
this.pluginRef = pluginRef;
header = pluginRef.getLocaleManager().getString("Guides.Header", pluginRef.getSkillTools().getLocalizedSkillName(primarySkillType)); header = pluginRef.getLocaleManager().getString("Guides.Header", pluginRef.getSkillTools().getLocalizedSkillName(primarySkillType));
guide = getGuide(primarySkillType); guide = getGuide(primarySkillType);
invalidPage = pluginRef.getLocaleManager().getString("Guides.Page.Invalid"); invalidPage = pluginRef.getLocaleManager().getString("Guides.Page.Invalid");
this.pluginRef = pluginRef;
} }
@Override @Override

View File

@@ -1,68 +1,60 @@
package com.gmail.nossr50.config; package com.gmail.nossr50.config;
import com.gmail.nossr50.config.hocon.SerializedConfigLoader; import com.gmail.nossr50.config.admin.ConfigAdmin;
import com.gmail.nossr50.config.hocon.admin.ConfigAdmin; import com.gmail.nossr50.config.antiexploit.ConfigExploitPrevention;
import com.gmail.nossr50.config.hocon.antiexploit.ConfigExploitPrevention; import com.gmail.nossr50.config.backup.ConfigAutomatedBackups;
import com.gmail.nossr50.config.hocon.backup.ConfigAutomatedBackups; import com.gmail.nossr50.config.commands.ConfigCommands;
import com.gmail.nossr50.config.hocon.commands.ConfigCommands; import com.gmail.nossr50.config.database.ConfigDatabase;
import com.gmail.nossr50.config.hocon.database.ConfigDatabase; import com.gmail.nossr50.config.donation.ConfigAuthorAdvertisements;
import com.gmail.nossr50.config.hocon.donation.ConfigAuthorAdvertisements; import com.gmail.nossr50.config.event.ConfigEvent;
import com.gmail.nossr50.config.hocon.event.ConfigEvent; import com.gmail.nossr50.config.experience.ConfigExperience;
import com.gmail.nossr50.config.hocon.experience.ConfigExperience; import com.gmail.nossr50.config.hardcore.ConfigHardcore;
import com.gmail.nossr50.config.hocon.hardcore.ConfigHardcore; import com.gmail.nossr50.config.items.ConfigItems;
import com.gmail.nossr50.config.hocon.items.ConfigItems; import com.gmail.nossr50.config.language.ConfigLanguage;
import com.gmail.nossr50.config.hocon.language.ConfigLanguage; import com.gmail.nossr50.config.metrics.ConfigMetrics;
import com.gmail.nossr50.config.hocon.metrics.ConfigMetrics; import com.gmail.nossr50.config.mobs.ConfigMobs;
import com.gmail.nossr50.config.hocon.mobs.ConfigMobs; import com.gmail.nossr50.config.motd.ConfigMOTD;
import com.gmail.nossr50.config.hocon.motd.ConfigMOTD; import com.gmail.nossr50.config.notifications.ConfigNotifications;
import com.gmail.nossr50.config.hocon.notifications.ConfigNotifications; import com.gmail.nossr50.config.notifications.PlayerNotificationSettings;
import com.gmail.nossr50.config.hocon.notifications.PlayerNotificationSettings; import com.gmail.nossr50.config.particles.ConfigParticles;
import com.gmail.nossr50.config.hocon.particles.ConfigParticles; import com.gmail.nossr50.config.party.ConfigParty;
import com.gmail.nossr50.config.hocon.party.ConfigParty; import com.gmail.nossr50.config.party.data.ConfigPartyData;
import com.gmail.nossr50.config.hocon.party.data.ConfigPartyData; import com.gmail.nossr50.config.playerleveling.ConfigLeveling;
import com.gmail.nossr50.config.hocon.playerleveling.ConfigLeveling; import com.gmail.nossr50.config.scoreboard.ConfigScoreboard;
import com.gmail.nossr50.config.hocon.scoreboard.ConfigScoreboard; import com.gmail.nossr50.config.serializers.*;
import com.gmail.nossr50.config.hocon.serializers.*; import com.gmail.nossr50.config.skills.acrobatics.ConfigAcrobatics;
import com.gmail.nossr50.config.hocon.skills.acrobatics.ConfigAcrobatics; import com.gmail.nossr50.config.skills.alchemy.ConfigAlchemy;
import com.gmail.nossr50.config.hocon.skills.alchemy.ConfigAlchemy; import com.gmail.nossr50.config.skills.archery.ConfigArchery;
import com.gmail.nossr50.config.hocon.skills.archery.ConfigArchery; import com.gmail.nossr50.config.skills.axes.ConfigAxes;
import com.gmail.nossr50.config.hocon.skills.axes.ConfigAxes; import com.gmail.nossr50.config.skills.coreskills.ConfigCoreSkills;
import com.gmail.nossr50.config.hocon.skills.coreskills.ConfigCoreSkills; import com.gmail.nossr50.config.skills.exampleconfigs.ConfigNameRegisterDefaults;
import com.gmail.nossr50.config.hocon.skills.exampleconfigs.ConfigNameRegisterDefaults; import com.gmail.nossr50.config.skills.exampleconfigs.MinecraftMaterialWrapper;
import com.gmail.nossr50.config.hocon.skills.exampleconfigs.MinecraftMaterialWrapper; import com.gmail.nossr50.config.skills.excavation.ConfigExcavation;
import com.gmail.nossr50.config.hocon.skills.excavation.ConfigExcavation; import com.gmail.nossr50.config.skills.fishing.ConfigFishing;
import com.gmail.nossr50.config.hocon.skills.fishing.ConfigFishing; import com.gmail.nossr50.config.skills.herbalism.ConfigHerbalism;
import com.gmail.nossr50.config.hocon.skills.herbalism.ConfigHerbalism; import com.gmail.nossr50.config.skills.mining.ConfigMining;
import com.gmail.nossr50.config.hocon.skills.mining.ConfigMining; import com.gmail.nossr50.config.skills.ranks.ConfigRanks;
import com.gmail.nossr50.config.hocon.skills.ranks.ConfigRanks; import com.gmail.nossr50.config.skills.ranks.SkillRankProperty;
import com.gmail.nossr50.config.hocon.skills.ranks.SkillRankProperty; import com.gmail.nossr50.config.skills.repair.ConfigRepair;
import com.gmail.nossr50.config.hocon.skills.repair.ConfigRepair; import com.gmail.nossr50.config.skills.salvage.ConfigSalvage;
import com.gmail.nossr50.config.hocon.skills.salvage.ConfigSalvage; import com.gmail.nossr50.config.skills.smelting.ConfigSmelting;
import com.gmail.nossr50.config.hocon.skills.smelting.ConfigSmelting; import com.gmail.nossr50.config.skills.swords.ConfigSwords;
import com.gmail.nossr50.config.hocon.skills.swords.ConfigSwords; import com.gmail.nossr50.config.skills.taming.ConfigTaming;
import com.gmail.nossr50.config.hocon.skills.taming.ConfigTaming; import com.gmail.nossr50.config.skills.unarmed.ConfigUnarmed;
import com.gmail.nossr50.config.hocon.skills.unarmed.ConfigUnarmed; import com.gmail.nossr50.config.skills.woodcutting.ConfigWoodcutting;
import com.gmail.nossr50.config.hocon.skills.woodcutting.ConfigWoodcutting; import com.gmail.nossr50.config.sound.ConfigSound;
import com.gmail.nossr50.config.hocon.sound.ConfigSound; import com.gmail.nossr50.config.sound.SoundSetting;
import com.gmail.nossr50.config.hocon.sound.SoundSetting; import com.gmail.nossr50.config.superabilities.ConfigSuperAbilities;
import com.gmail.nossr50.config.hocon.superabilities.ConfigSuperAbilities; import com.gmail.nossr50.config.worldblacklist.ConfigWorldBlacklist;
import com.gmail.nossr50.config.hocon.worldblacklist.ConfigWorldBlacklist;
import com.gmail.nossr50.datatypes.experience.CustomXPPerk; import com.gmail.nossr50.datatypes.experience.CustomXPPerk;
import com.gmail.nossr50.datatypes.experience.FormulaType; import com.gmail.nossr50.datatypes.experience.FormulaType;
import com.gmail.nossr50.datatypes.items.ItemMatch;
import com.gmail.nossr50.datatypes.items.ItemWildcards;
import com.gmail.nossr50.datatypes.items.MMOItem;
import com.gmail.nossr50.datatypes.party.PartyFeature; import com.gmail.nossr50.datatypes.party.PartyFeature;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.datatypes.skills.properties.DamageProperty; import com.gmail.nossr50.datatypes.skills.properties.DamageProperty;
import com.gmail.nossr50.datatypes.skills.properties.MaxBonusLevel; import com.gmail.nossr50.datatypes.skills.subskills.taming.CallOfTheWildType;
import com.gmail.nossr50.datatypes.skills.subskills.taming.TamingSummon; import com.gmail.nossr50.datatypes.skills.subskills.taming.TamingSummon;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.skills.repair.RepairTransaction;
import com.gmail.nossr50.skills.repair.SimpleRepairCost;
import com.gmail.nossr50.skills.repair.repairables.Repairable;
import com.gmail.nossr50.skills.salvage.salvageables.Salvageable; import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
import com.gmail.nossr50.util.nbt.RawNBT;
import com.google.common.reflect.TypeToken; import com.google.common.reflect.TypeToken;
import ninja.leaping.configurate.commented.CommentedConfigurationNode; import ninja.leaping.configurate.commented.CommentedConfigurationNode;
import ninja.leaping.configurate.objectmapping.serialize.TypeSerializerCollection; import ninja.leaping.configurate.objectmapping.serialize.TypeSerializerCollection;
@@ -259,25 +251,25 @@ public final class ConfigManager {
customSerializers.registerType(new TypeToken<Material>() {}, new CustomEnumValueSerializer()); customSerializers.registerType(new TypeToken<Material>() {}, new CustomEnumValueSerializer());
customSerializers.registerType(new TypeToken<PartyFeature>() {}, new CustomEnumValueSerializer()); customSerializers.registerType(new TypeToken<PartyFeature>() {}, new CustomEnumValueSerializer());
customSerializers.registerType(new TypeToken<FormulaType>() {}, new CustomEnumValueSerializer()); customSerializers.registerType(new TypeToken<FormulaType>() {}, new CustomEnumValueSerializer());
customSerializers.registerType(new TypeToken<MMOItem<?>>() {}, new ItemStackSerializer()); customSerializers.registerType(new TypeToken<CallOfTheWildType>() {}, new CustomEnumValueSerializer());
// customSerializers.registerType(new TypeToken<MMOItem<?>>() {}, new ItemStackSerializer());
customSerializers.registerType(new TypeToken<Set<?>>() {}, new SetSerializer()); customSerializers.registerType(new TypeToken<Set<?>>() {}, new SetSerializer());
customSerializers.registerType(new TypeToken<ItemMatch<?>>() {}, new CustomItemTargetSerializer()); // customSerializers.registerType(new TypeToken<ItemMatch<?>>() {}, new CustomItemTargetSerializer());
customSerializers.registerType(new TypeToken<SimpleRepairCost>() {}, new SimpleRepairCostSerializer()); // customSerializers.registerType(new TypeToken<SimpleRepairCost>() {}, new SimpleRepairCostSerializer());
customSerializers.registerType(TypeToken.of(TamingSummon.class), new TamingSummonSerializer()); customSerializers.registerType(TypeToken.of(TamingSummon.class), new TamingSummonSerializer());
customSerializers.registerType(TypeToken.of(Repairable.class), new RepairableSerializer()); // customSerializers.registerType(TypeToken.of(Repairable.class), new RepairableSerializer());
customSerializers.registerType(TypeToken.of(Salvageable.class), new SalvageableSerializer()); customSerializers.registerType(TypeToken.of(Salvageable.class), new SalvageableSerializer());
customSerializers.registerType(TypeToken.of(MinecraftMaterialWrapper.class), new MinecraftMaterialWrapperSerializer()); customSerializers.registerType(TypeToken.of(MinecraftMaterialWrapper.class), new MinecraftMaterialWrapperSerializer());
customSerializers.registerType(TypeToken.of(CustomXPPerk.class), new CustomXPPerkSerializer()); customSerializers.registerType(TypeToken.of(CustomXPPerk.class), new CustomXPPerkSerializer());
customSerializers.registerType(TypeToken.of(DamageProperty.class), new DamagePropertySerializer()); customSerializers.registerType(TypeToken.of(DamageProperty.class), new DamagePropertySerializer());
customSerializers.registerType(TypeToken.of(SkillRankProperty.class), new SkillRankPropertySerializer()); customSerializers.registerType(TypeToken.of(SkillRankProperty.class), new SkillRankPropertySerializer());
customSerializers.registerType(TypeToken.of(MaxBonusLevel.class), new MaxBonusLevelSerializer());
customSerializers.registerType(TypeToken.of(PlayerNotificationSettings.class), new PlayerNotificationSerializer()); customSerializers.registerType(TypeToken.of(PlayerNotificationSettings.class), new PlayerNotificationSerializer());
customSerializers.registerType(TypeToken.of(SoundSetting.class), new SoundSettingSerializer()); customSerializers.registerType(TypeToken.of(SoundSetting.class), new SoundSettingSerializer());
customSerializers.registerType(TypeToken.of(ItemWildcards.class), new ItemWildcardSerializer()); // customSerializers.registerType(TypeToken.of(ItemWildcards.class), new ItemWildcardSerializer());
customSerializers.registerType(TypeToken.of(RepairTransaction.class), new RepairTransactionSerializer()); // customSerializers.registerType(TypeToken.of(RepairTransaction.class), new RepairTransactionSerializer());
customSerializers.registerType(TypeToken.of(RawNBT.class), new RawNBTSerializer()); // customSerializers.registerType(TypeToken.of(RawNBT.class), new RawNBTSerializer());
} }
/** /**
@@ -489,17 +481,6 @@ public final class ConfigManager {
return configRanks.getRootNode(); return configRanks.getRootNode();
} }
/**
* Checks if this plugin is using retro mode
* Retro mode is a 0-1000 skill system
* Standard mode is scaled for 1-100
*
* @return true if retro mode is enabled
*/
public boolean isRetroMode() {
return getConfigLeveling().getConfigSectionLevelingGeneral().getConfigSectionLevelScaling().isRetroModeEnabled();
}
public ConfigExperience getConfigExperience() { public ConfigExperience getConfigExperience() {
return configExperience.getConfig(); return configExperience.getConfig();
} }

View File

@@ -1,9 +1,8 @@
package com.gmail.nossr50.config.hocon; package com.gmail.nossr50.config;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
@ConfigSerializable @ConfigSerializable
public class General { public class General {
} }

View File

@@ -1,7 +1,9 @@
package com.gmail.nossr50.config.hocon; package com.gmail.nossr50.config;
import com.gmail.nossr50.util.StringUtils; import com.gmail.nossr50.util.StringUtils;
import java.util.Locale;
public final class HOCONUtil { public final class HOCONUtil {
public static String serializeENUMName(String hyphenedString) { public static String serializeENUMName(String hyphenedString) {
@@ -24,7 +26,7 @@ public final class HOCONUtil {
for (int x = 0; x < split.length; x++) { for (int x = 0; x < split.length; x++) {
if (x + 1 >= split.length) if (x + 1 >= split.length)
formattedString.append(split[x].toUpperCase()); formattedString.append(split[x].toUpperCase(Locale.ENGLISH));
else else
formattedString.append(split[x]).append('_'); formattedString.append(split[x]).append('_');
} }

View File

@@ -1,6 +1,5 @@
package com.gmail.nossr50.config.hocon; package com.gmail.nossr50.config;
import com.gmail.nossr50.config.ConfigConstants;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import ninja.leaping.configurate.ConfigurationOptions; import ninja.leaping.configurate.ConfigurationOptions;
import ninja.leaping.configurate.ValueType; import ninja.leaping.configurate.ValueType;

View File

@@ -1,15 +1,16 @@
package com.gmail.nossr50.config; package com.gmail.nossr50.config;
import com.gmail.nossr50.config.hocon.SerializedConfigLoader;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.StringUtils; import com.gmail.nossr50.util.StringUtils;
import java.util.Locale;
public class SkillConfigFactory { public class SkillConfigFactory {
protected static SerializedConfigLoader initSkillConfig(mcMMO pluginRef, PrimarySkillType primarySkillType, Class<?> clazz) { protected static SerializedConfigLoader initSkillConfig(mcMMO pluginRef, PrimarySkillType primarySkillType, Class<?> clazz) {
return new SerializedConfigLoader(pluginRef, clazz, return new SerializedConfigLoader(pluginRef, clazz,
primarySkillType.toString().toLowerCase() + ".conf", primarySkillType.toString().toLowerCase(Locale.ENGLISH) + ".conf",
StringUtils.getCapitalized(primarySkillType.toString()), StringUtils.getCapitalized(primarySkillType.toString()),
null); null);
} }

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.admin; package com.gmail.nossr50.config.admin;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.admin; package com.gmail.nossr50.config.admin;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.antiexploit; package com.gmail.nossr50.config.antiexploit;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
@@ -119,4 +119,8 @@ public class ConfigExploitPrevention {
public ConfigSectionExploitTaming getConfigSectionExploitTaming() { public ConfigSectionExploitTaming getConfigSectionExploitTaming() {
return configSectionExploitSkills.getConfigSectionExploitTaming(); return configSectionExploitSkills.getConfigSectionExploitTaming();
} }
public boolean isSnowGolemExploitPrevented() {
return configSectionExploitSkills.isSnowGolemExploitPrevented();
}
} }

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.antiexploit; package com.gmail.nossr50.config.antiexploit;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -0,0 +1,17 @@
package com.gmail.nossr50.config.antiexploit;
import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
@ConfigSerializable
public class ConfigSectionExploitExcavation {
public static final boolean DEFAULT_SNOW_GOLEM = true;
@Setting(value = "Snow-Golem-Exploit", comment = "If set to true, the snow made by snow golems will not reward XP." +
"\nDefault value: "+DEFAULT_SNOW_GOLEM)
private boolean snowGolemExploit = DEFAULT_SNOW_GOLEM;
public boolean isSnowGolemExploitPrevented() {
return snowGolemExploit;
}
}

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.antiexploit; package com.gmail.nossr50.config.antiexploit;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.antiexploit; package com.gmail.nossr50.config.antiexploit;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.antiexploit; package com.gmail.nossr50.config.antiexploit;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.antiexploit; package com.gmail.nossr50.config.antiexploit;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.antiexploit; package com.gmail.nossr50.config.antiexploit;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.antiexploit; package com.gmail.nossr50.config.antiexploit;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
@@ -26,6 +26,9 @@ public class ConfigSectionExploitSkills {
@Setting(value = "Taming", comment = "Exploit settings related to Taming") @Setting(value = "Taming", comment = "Exploit settings related to Taming")
private ConfigSectionExploitTaming configSectionExploitTaming = new ConfigSectionExploitTaming(); private ConfigSectionExploitTaming configSectionExploitTaming = new ConfigSectionExploitTaming();
@Setting(value = "Excavation", comment = "Exploit settings related to Excavation.")
private ConfigSectionExploitExcavation configSectionExploitExcavation = new ConfigSectionExploitExcavation();
public ConfigSectionExploitAcrobatics getConfigSectionExploitAcrobatics() { public ConfigSectionExploitAcrobatics getConfigSectionExploitAcrobatics() {
return configSectionExploitAcrobatics; return configSectionExploitAcrobatics;
} }
@@ -46,6 +49,10 @@ public class ConfigSectionExploitSkills {
return configSectionExploitMining.isPreventCobblestoneStoneGeneratorXP(); return configSectionExploitMining.isPreventCobblestoneStoneGeneratorXP();
} }
public boolean isSnowGolemExploitPrevented() {
return configSectionExploitExcavation.isSnowGolemExploitPrevented();
}
public boolean areSummonsBreedable() { public boolean areSummonsBreedable() {
return configSectionExploitTaming.areSummonsBreedable(); return configSectionExploitTaming.areSummonsBreedable();
} }

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.antiexploit; package com.gmail.nossr50.config.antiexploit;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.antiexploit; package com.gmail.nossr50.config.antiexploit;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.backup; package com.gmail.nossr50.config.backup;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.commands; package com.gmail.nossr50.config.commands;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.commands; package com.gmail.nossr50.config.commands;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.commands; package com.gmail.nossr50.config.commands;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.commands; package com.gmail.nossr50.config.commands;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.commands; package com.gmail.nossr50.config.commands;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.database; package com.gmail.nossr50.config.database;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.database; package com.gmail.nossr50.config.database;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.database; package com.gmail.nossr50.config.database;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.database; package com.gmail.nossr50.config.database;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.database; package com.gmail.nossr50.config.database;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.database; package com.gmail.nossr50.config.database;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

View File

@@ -1,4 +1,4 @@
package com.gmail.nossr50.config.hocon.database; package com.gmail.nossr50.config.database;
import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.Setting;
import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;

Some files were not shown because too many files have changed in this diff Show More