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

Compare commits

...

1211 Commits
api ... spears

Author SHA1 Message Date
nossr50
31d70a6072 spears update 2025-12-14 14:00:32 -08:00
nossr50
7bd4e9afe7 spears update 2025-12-14 13:58:20 -08:00
nossr50
ee94189574 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO into spears 2025-12-14 13:39:03 -08:00
nossr50
a907bfd624 oops 2025-12-14 13:32:36 -08:00
nossr50
257292b6cc test number who knows 2025-12-14 13:31:21 -08:00
nossr50
2f452afdc7 try this instead part 3 2025-12-14 13:17:59 -08:00
nossr50
283c6d9771 Technically we don't need this 2025-12-14 13:08:41 -08:00
nossr50
fc62946e27 Try this instead... 2025-12-14 13:07:11 -08:00
nossr50
6b6263d0b3 Add deploy to Nexus stage 2025-12-14 13:03:51 -08:00
nossr50
f9acdeaf14 empty commit, testing webhooks 2025-12-13 16:27:09 -08:00
nossr50
5d6b499468 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO into spears 2025-12-13 16:24:37 -08:00
nossr50
03bea40ad4 fix jenkins script 2025-12-13 16:21:34 -08:00
nossr50
6818d05079 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO into spears 2025-12-13 16:11:09 -08:00
nossr50
401edf0bc9 no mvn wrapper 2025-12-13 16:10:58 -08:00
nossr50
cb164bb013 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO into spears 2025-12-13 16:06:02 -08:00
nossr50
085197abc0 let's try a Jenkinsfile 2025-12-13 16:03:36 -08:00
nossr50
98eb706361 test 2025-12-13 15:57:29 -08:00
nossr50
09dfe4fd11 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2025-12-13 11:55:28 -08:00
nossr50
4f01439892 more work on the spears update 2025-12-13 11:55:13 -08:00
nossr50
1664ca005d Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO into spears 2025-12-13 11:46:07 -08:00
るんく君
ced4ed2fd0 [Fix] isMagicHunterEnabled method doesn't considered the MagicHunter's permission (#5231) 2025-12-08 12:35:56 -08:00
nossr50
505352ac70 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO into spears 2025-12-08 12:35:10 -08:00
Nadie
5c283fedb3 Change Protocollib's repo to use new namespace & group id (#5232) 2025-12-08 12:34:53 -08:00
Warrior
fae55c1edf Fix self damage awarding skill xp (#5233) 2025-12-08 12:34:09 -08:00
nossr50
4052e7e546 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO into spears 2025-11-30 13:39:59 -08:00
Tig3r98
d800aa9316 Update Italian Translation (#5230) 2025-11-30 13:37:49 -08:00
nossr50
7ac5cbf915 add spears to repair and salvage config defaults 2025-11-29 11:20:19 -08:00
nossr50
7e479049d0 spears momentum (wip pt 2) 2025-11-29 11:14:30 -08:00
nossr50
4bbdacd250 spears momentum (wip) 2025-11-28 14:33:13 -08:00
nossr50
706adb5942 add Spears to config.yml 2025-11-28 13:33:24 -08:00
nossr50
e26bb94b08 add Spears to experience.yml 2025-11-28 13:32:43 -08:00
nossr50
34f96dc687 add Spears interactions to CombatUtils 2025-11-28 13:32:35 -08:00
nossr50
461d2d4570 SkillTools refactor 2025-11-28 13:17:19 -08:00
nossr50
38396d48b4 FlatFileDatabaseManager refactor 2025-11-28 13:17:10 -08:00
nossr50
99bb38ea06 SQLDatabaseManager refactor pass 2 2025-11-27 12:42:22 -08:00
nossr50
43502b255c SQLDatabaseManager refactor pass 2025-11-27 11:57:58 -08:00
nossr50
ac9f060e79 more code coverage 2025-11-27 11:45:05 -08:00
nossr50
02ef9fad1d Spears (wip pt 2) 2025-11-27 11:31:35 -08:00
nossr50
1b28ad8f59 Spears (wip pt 1) 2025-11-25 14:31:38 -08:00
nossr50
1b49eb11b8 Spring-cleaning round 1: remove some more deprecated API invocations 2025-11-09 10:34:41 -08:00
nossr50
3533c50489 Spring-cleaning round 1: remove deprecated Player.updateInventory 2025-11-09 09:57:28 -08:00
nossr50
2a8be52be5 back to snapshots 2025-11-08 13:57:14 -08:00
nossr50
59093c5f22 2.2.045 2025-11-08 13:49:59 -08:00
nossr50
1f123a4eb2 Add missing permission nodes for copper repair and salvage Fixes #5225 2025-11-08 13:44:35 -08:00
nossr50
c96cb95443 Fixed bug where salvage and repair configs would re-add any deleted entry that existed in the default config Fixes #5223 2025-11-08 13:40:05 -08:00
nossr50
9f5994596a Fixed ageable cast class exception Fixes #5224
Fixed Herbalism not replanting certain crops
2025-11-08 13:27:53 -08:00
nossr50
ec6dce0cb2 back to snapshots 2025-11-02 12:30:55 -08:00
nossr50
80a61d2d89 2.2.044 Fix copper repair and salvage 2025-11-02 12:25:25 -08:00
nossr50
f71fe0de70 snapshots here we go 2025-10-05 13:55:04 -07:00
nossr50
eafa53e5b4 2.2.043 2025-10-05 13:46:32 -07:00
nossr50
5dfea51c5e slightly better logs 2025-10-05 13:46:13 -07:00
nossr50
00c0b2e5ec fix bug where armor stand could be renamed to heart symbols 2025-10-05 13:30:24 -07:00
nossr50
c79b3fe024 optimize imports 2025-10-05 13:19:17 -07:00
nossr50
24888d13c2 Fix potion names Fixes #5211 Fixes #5180 2025-10-05 13:18:35 -07:00
nossr50
2f624e329d misc optimization 2025-10-05 12:34:18 -07:00
nossr50
07d18e2eba 1.21.9 support for treasures.yml, experience.yml, fishing_treasures.yml, and settings for mannequins and a fix for armor stands 2025-10-05 12:27:20 -07:00
nossr50
c958a86aa3 add 1.21.9 support for repair, salvage, copper tool and armor (wip) 2025-10-04 14:20:32 -07:00
nossr50
22231dfa32 back to snapshots 2025-09-21 12:31:34 -07:00
nossr50
fdc652fd63 2.2.042 2025-09-21 12:24:42 -07:00
nossr50
c07b73d3d6 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2025-09-21 12:20:06 -07:00
nossr50
d38d74f82a new event McMMOModifyBlockDropItemEvent and mcMMO now modifies the drop list in BlockDropItemEvent instead of spawning items
Fixes #5214
2025-09-21 12:19:55 -07:00
Justin
9a59200c0b Add null-safety and helper methods to AbilityAPI (#5217) 2025-09-21 10:53:32 -07:00
nossr50
8e049822a3 better phrasing 2025-08-30 12:08:14 -07:00
nossr50
06f979d7bf Reduce Blast Mining PVP damage Fixes #5213 2025-08-30 12:03:50 -07:00
nossr50
f78586675d different default for CustomSoundId in sounds.yml 2025-08-30 11:40:23 -07:00
nossr50
46bcd29998 update changelog with info about custom sound playing 2025-08-30 11:20:31 -07:00
Nathan V.
df69410e67 (Improvement) Implement playing sound by string ID (#5201)
* (improvement) implement playing sound by string ID

I've replaced enum-based sound playing events with string-based equivalents, which should open the door for server customization and other enhancements in the future

- Added SoundLookup class with different registry lookup methods depending on server version.
- Added the ability to configure what sounds are played depending on event, with a fallback built into SoundType.
- Removed getCrippleSound as SoundLookup can now fall back to the original default sound if the mace sound doesn't exist on the server's Minecraft version.
- Added a EnableCustomSounds config variable that will skip SoundLookup ID checking and just pass the sound string directly to the client, mainly due to the fact that it isn't possible to verify if resource pack values exist.
 - Cleaned up a few switch statements to match how the original getSound had it formatted.

I'd love to see/do a further expansion of sound configuration for each ability now that we can just fall back to generic, but that may be for another PR.

* Fix getIsEnabled using wrong key

* always use registry, simplify custom sound enabling logic, optimize reflection calls

* forgot we need this for legacy versions

---------

Co-authored-by: nossr50 <nossr50@gmail.com>
2025-08-30 11:15:26 -07:00
nossr50
99f7437d9d back to dev builds 2025-08-23 13:16:59 -07:00
nossr50
4bfbfa2de7 2.2.041 2025-08-23 13:12:58 -07:00
nossr50
724b66afaa expand Block Cracker to other blocks with cracked variants 2025-08-23 13:09:52 -07:00
nossr50
6ba4475a77 Fix Berserk block cracker not functioning Fixes #5207 2025-08-23 13:01:11 -07:00
nossr50
2c1c1fe53f update changelog 2025-08-23 12:38:30 -07:00
Warrior
ba673a02d0 Add early return for brewing stand hopper check (#5208) 2025-08-23 12:37:11 -07:00
handy
7cf4409c35 Add static to the method of the private class DatabaseAPI. (#5198) 2025-08-02 12:48:46 -07:00
Jake Ben-Tovim
f9513a8b40 fix(experience): parse diminished returns value from correct field (#5196) 2025-07-11 14:43:29 -07:00
nossr50
b12f86a04d update changelog 2025-07-09 14:24:43 -07:00
Techirion
c377544fa2 RepairManager: Fix unsafe enchantments being stripped, CombatUtils: Use instanceof for IronGolem (#5192)
* RepairManager: Fix unsafe enchantments being stripped

* CombatUtils: Use instanceof for IronGolem check to avoid cast exceptions for pets/npcs/...

---------

Co-authored-by: Dieu <info@l4b.org>
2025-07-09 14:23:34 -07:00
nossr50
e6c62beed9 update changelog 2025-07-09 14:21:12 -07:00
るんく君
0424a5dd12 When burnTime is less than or equal to 0, do not process (#5194) 2025-07-09 14:19:02 -07:00
nossr50
b91fa2cf37 back to dev 2025-07-08 13:08:08 -07:00
nossr50
6acc4b1ec6 2.2.040 2025-07-06 12:27:25 -07:00
nossr50
41b5667cd4 Some more unit test coverage for tree feller 2025-07-04 13:27:38 -07:00
nossr50
b60e478aec Fix parties unintentionally becoming leader-less Fixes #3771 2025-07-04 13:06:31 -07:00
nossr50
6aa4deedc0 oopsie 2025-07-04 12:25:08 -07:00
nossr50
4c578eb1c5 update changelog 2025-07-04 12:15:05 -07:00
nossr50
e6199c0a7a prevent simulateBlockBreak from calling itself fixes #5188 2025-07-04 12:13:37 -07:00
nossr50
87277a0d6f remove some unused code 2025-07-03 15:12:58 -07:00
nossr50
3c853a266a change enum format back to old style 2025-07-03 15:11:41 -07:00
nossr50
e52371aeb3 formatting applied to most of the source code to tidy things up, and misc refactors 2025-07-03 15:07:31 -07:00
nossr50
f322d05159 update changelog 2025-06-22 12:54:59 -07:00
GhostDC
c1ce6c84a5 Update Simplfied Chinese translation (#5185) 2025-06-22 12:53:36 -07:00
Ryota Abe
e891bf2067 Update ja_JP translation (#5189)
* Update locale_ja_JP.propaties

* Add missing keys

* Fix typos and mistranslations (ja_JP)
2025-06-22 12:53:17 -07:00
nossr50
ab79131485 Updated for 1.21.6 2025-06-22 12:51:33 -07:00
TechnicallyCoded
9eb8f4e918 Less hacky performance improvements (#5187) 2025-06-08 11:24:43 -07:00
nossr50
4def2be918 back to dev work 2025-06-07 15:27:48 -07:00
nossr50
547fc29c91 2.2.039 2025-06-07 15:23:23 -07:00
nossr50
3d16d9432d Added StackOverflow safeguards for dealDamage invocations Fixes #5129 Fixes #5029 Fixes #5186 2025-06-07 15:15:09 -07:00
nossr50
5e9ee1e275 2.2.038 2025-06-06 18:58:57 -07:00
nossr50
12127ff25b spigot safeguards 2025-06-06 18:57:44 -07:00
nossr50
382b86ad34 perf improvements and rupture improvements 2025-06-06 18:43:41 -07:00
nossr50
27a232d03e fix other places where locale might matter 2025-05-26 13:07:50 -07:00
nossr50
ce7461f459 fix potion matching for non-english locales Fixes #5174 2025-05-26 13:05:07 -07:00
nossr50
175526d3da 2.2.037 2025-05-25 11:37:35 -07:00
nossr50
1430ea2979 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2025-05-25 11:23:31 -07:00
nossr50
b54db979f5 update changelog 2025-05-25 11:23:23 -07:00
Jake Ben-Tovim
045f1bdfb6 fix matchPotionType: correctly match extended and upgraded potions fixes #5181 2025-05-25 11:21:36 -07:00
nossr50
c3103beea2 back to the lab again 2025-05-11 15:00:59 -07:00
nossr50
f7dbd884f4 2.2.036 2025-05-11 14:54:45 -07:00
nossr50
8c89462b0a fix trickshot not applying potion effects or custom effects 2025-05-11 14:47:31 -07:00
nossr50
bcf0f06fb9 update changelog 2025-05-06 13:18:52 -07:00
Griffen
2ba67d1393 Adds locale entries for commands in "/mcmmo help" (#5137)
* Fixed issue where you chuld not modify the color of the commands in the main help command

* Changed the headers for more consistency
2025-05-06 13:10:09 -07:00
Josh Taylor
a8976ae953 fix spectral arrows (#5173) 2025-05-06 13:08:09 -07:00
Tommm
f3a2199fd6 Added spawners to illegal drops for blast mining (#5178) 2025-05-06 13:07:15 -07:00
Robert Alan Chapton
bea283e56c Update README.md
tweak the readme
2025-04-13 12:15:43 -07:00
nossr50
13a329d4ae update changelog 2025-04-13 12:04:25 -07:00
nossr50
65d4d2b059 Chimaera wing code is a little bit less disgusting now Fixes #5049 2025-04-13 12:03:52 -07:00
nossr50
61c5ded677 back to dev mode 2025-04-13 11:06:33 -07:00
nossr50
5c12606e8c misc 2025-04-13 10:49:10 -07:00
nossr50
99e8ae3722 Blast Mining can drop deep-slate now fixes #5160 2025-04-13 10:44:19 -07:00
nossr50
5b67aa04c4 support for various new additions from 1.21.5 2025-04-12 13:23:35 -07:00
nossr50
35785283ee Swords stab damage is now config-driven
Fixes #5164
2025-03-29 14:31:42 -07:00
nossr50
7e1e4c8305 2.2.034 2025-03-17 14:44:05 -07:00
nossr50
f69f88add7 fix mcMMO spawning bonus drops into other blocks
fixes #5149
2025-03-17 14:42:38 -07:00
nossr50
82af006ea4 Fix NPE in ChunkUnloadEvent
fixes #5133 fixes #5118
2025-03-17 14:21:25 -07:00
nossr50
1005b29e96 minor refactoring of ProjectileUtils and MetadataConstants 2025-03-15 12:49:29 -07:00
nossr50
2efe1efc50 Crossbow trickshot no longer rewards archery xp
Fixes #5153 Fixes #5144
2025-03-15 12:28:35 -07:00
nossr50
3d04b92827 dev mode 2025-03-15 12:04:33 -07:00
nossr50
4259b5ec6d 2.2.033 2025-03-09 17:24:52 -07:00
nossr50
182e228ebd add missing TURTLE_HELMET to tier 1 ingredients in potions.yml fixes #5143 2025-03-09 17:20:53 -07:00
nossr50
bc6e4bc056 fix Folia throwing IllegalArgumentException 2025-03-09 16:35:20 -07:00
nossr50
44b22559fb Revert "github actions should use Java 21"
This reverts commit 571a60f7a7.
2025-03-09 15:57:46 -07:00
nossr50
0408040d7a Revert "bump world-edit dependency version"
This reverts commit 363ae7351f.
2025-03-09 15:56:21 -07:00
nossr50
571a60f7a7 github actions should use Java 21 2025-03-09 15:49:59 -07:00
nossr50
b2bf29cae2 tweaks to start up msg 2025-03-09 15:49:26 -07:00
nossr50
6ad9d97236 Fix mcMMO trying to load incompatible potions on older versions 2025-03-09 15:45:32 -07:00
nossr50
6df73e522e Add missing entries to potion.yml for Breeze_Rod 2025-03-09 15:45:18 -07:00
nossr50
e6f3d63923 fix FoliaLib not being shaded into compiled jar 2025-03-09 14:20:20 -07:00
nossr50
871374ce84 adventure API bump 2025-03-09 14:18:19 -07:00
nossr50
363ae7351f bump world-edit dependency version 2025-03-09 14:08:33 -07:00
nossr50
be0570fccb cleanup pom.xml and reduce noise in build 2025-03-09 13:57:17 -07:00
nossr50
9d5566ae0e update FoliaLib repo for build instructions fixes #5162 2025-03-09 13:47:52 -07:00
nossr50
125aefacbb fix github actions 2025-03-09 13:40:43 -07:00
nossr50
b48d66abbe 2.2.032 2025-03-08 11:49:33 -08:00
nossr50
752174ad6d add missing beetroot and eyeblossom entries for Herbalism fixes #5154 fixes #5146 2025-03-08 11:40:48 -08:00
nossr50
ef2aa57be3 fix Roll interactions with CMI fixes #5151 2025-03-08 11:34:29 -08:00
nossr50
25c89c5bd3 blast mining bonus drops are now RNG and no longer guaranteed, yield ceiling clamped 2025-03-07 15:26:08 -08:00
nossr50
c2ecefb2a8 blast mining no longer drops infested block variants 2025-03-07 15:09:49 -08:00
nossr50
de4d0ea0a7 2.2.031 2025-02-08 11:50:14 -08:00
nossr50
86b457861c fix for NPE during inventory events Fixes #5148 2025-02-07 13:43:56 -08:00
nossr50
c61376d97d update changelog 2025-01-26 15:11:00 -08:00
nossr50
2618cfbe78 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2025-01-26 15:10:11 -08:00
Warrior
0637446cd5 Add event for players taming an entity (#5142)
* Add event for players taming an entity
2025-01-26 15:10:04 -08:00
nossr50
af60826843 update changelog 2025-01-26 15:07:54 -08:00
Philip Hell
b36848bd47 removed call to Locale#setDefault within LocaleLoader#initialize; added static locale-parameter to all instances of a Formatter (#5141) 2025-01-25 14:24:02 -08:00
nossr50
dab4e777ce 2.2.030 2025-01-14 12:33:35 -08:00
Warrior
0063a4f9b6 Run rupture task on the target entity's scheduler (#5135) 2025-01-14 12:31:48 -08:00
nossr50
bfbefa78f5 fix mace sound on older versions 2025-01-04 13:53:43 -08:00
nossr50
1db0aae46b fix alchemy xp permission issue Fixes #5131 2025-01-03 15:41:18 -08:00
nossr50
90fe8ee882 change chunk listener to monitor so we can ignore cancelled events 2025-01-03 15:19:46 -08:00
nossr50
ad771fddc5 update changelog 2025-01-03 15:12:28 -08:00
Momshroom
b4d9337329 Revert regression, restoring material based salvage permissions (#5130)
* Revert regression.  Fixes salvage permissions by material type

---------

Signed-off-by: Momshroom <Momshroom@gmail.com>
2024-12-29 17:13:20 -08:00
Momshroom
dae66c7433 Add new potions to alchemy (#5123)
* Added new potions to alchemy. Borrowed some config info from here: https://discord.com/channels/526933440214597677/547110990278426629/1291771464726478869

Signed-off-by: Momshroom <Momshroom@gmail.com>

---------

Signed-off-by: Momshroom <Momshroom@gmail.com>
2024-12-15 12:54:24 -08:00
nossr50
b5478a947e dev mode 2024-12-15 12:50:24 -08:00
nossr50
6a9962a2dc 2.2.029 2024-12-14 15:20:56 -08:00
nossr50
d8d2d00f42 remove another unused file 2024-11-27 13:35:27 -08:00
nossr50
02d978036a add relevant herbalism stuff for next MC update 2024-11-27 13:35:20 -08:00
nossr50
16d5d9f95f temporarily disable party item sharing feature 2024-11-27 13:24:01 -08:00
nossr50
18bd31da40 add support for new pale oak items / blocks 2024-11-27 13:12:42 -08:00
nossr50
6b5b0f301c remove unused files 2024-11-27 13:04:55 -08:00
nossr50
c7feac19dd misc plugin.yml cleanup 2024-11-27 13:04:40 -08:00
nossr50
6dd175331c fix index out of bounds for blocks at world max height 2024-11-25 12:24:39 -08:00
nossr50
1b6b127ef4 dev mode 2024-11-18 16:24:11 -08:00
nossr50
03514521b4 remove dangling config key 2024-11-18 16:23:47 -08:00
nossr50
7883b0914a 2.2.028 2024-11-16 16:23:11 -08:00
galacticwarrior9
a93f08a97b Fix McMMOItemSpawnEvent#setItemStack being ignored in ItemUtils (#5102) 2024-11-16 16:11:14 -08:00
nossr50
91ab569b81 Fixed COTW summon bug 2024-11-16 16:10:05 -08:00
nossr50
19bf96ab33 Expand API for McMMOPlayerMasterAnglerEvent 2024-11-16 15:48:41 -08:00
nossr50
827b894257 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2024-11-16 15:24:53 -08:00
nossr50
69e90a89f7 minor refactoring 2024-11-16 15:24:48 -08:00
Jacob
570cadb276 add McMMOPlayerMasterAnglerEvent and ability to cancel it if desired (#5111) 2024-11-16 15:24:05 -08:00
nossr50
79ad86ff29 Fix infinite recursion caused by inadvertent chunk loading/unloading Fixes #5112 2024-11-16 15:13:46 -08:00
nossr50
4cb3d3181b 2.2.027 2024-11-10 15:15:09 -08:00
nossr50
b928e145b6 use thread safe collections for sets 2024-11-10 15:11:39 -08:00
nossr50
c52b855ae1 Remove the luck component of salvage material quantity 2024-11-10 14:30:14 -08:00
nossr50
b4871fe49f Add tridents/crossbows to salvage 2024-11-10 13:50:18 -08:00
nossr50
04eefaef79 Fixed ricocheted arrows missing some data after bouncing
Fixes #5093
2024-11-09 15:58:24 -08:00
nossr50
b5ecd214ef Fixed concurrency issue with Folia and COTW summons
Fixes #5086
2024-11-09 15:46:45 -08:00
nossr50
2ea9cff2cd Fix Folia locale string concurrency issue Fixes #5097 2024-11-09 14:22:47 -08:00
nossr50
f90a15a821 dev mode 2024-11-09 13:45:13 -08:00
nossr50
c54a758e7f 2.2.026 2024-11-07 18:58:07 -08:00
nossr50
3f5f510fc5 Fixed NPE on chunk unload 2024-11-07 18:55:59 -08:00
nossr50
f304a1fbb9 dev mode 2024-11-07 17:45:49 -08:00
nossr50
6f92baf0b5 2.2.025 2024-11-05 17:15:06 -08:00
nossr50
406a7ba694 2.2.024 2024-11-04 19:05:41 -08:00
nossr50
04007f6dbc fixed fishing errors Fixes #5108 2024-11-04 18:56:38 -08:00
nossr50
6ed4ad76cd update changelog 2024-11-03 17:21:20 -08:00
nossr50
3aaff1911b huge optimizations 2024-11-03 17:10:49 -08:00
nossr50
f0973f2500 fix big oopsie 2024-11-03 14:27:09 -08:00
nossr50
4ba85aa444 optimizations 2024-11-03 14:22:14 -08:00
nossr50
9f7dbc23f6 fix failing test 2024-11-02 19:43:46 -07:00
nossr50
39b0e87b9a Move logic for config format into ConfigStringUtils 2024-11-02 19:39:06 -07:00
nossr50
ce18f3df97 major optimizations to getting xp values for specific blocks 2024-11-02 18:56:11 -07:00
nossr50
03c9dfda02 dev mode 2024-11-02 16:16:04 -07:00
nossr50
60da4bcd68 2.2.023 2024-10-31 20:46:56 -07:00
nossr50
9d5bebef52 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2024-10-31 20:38:04 -07:00
nossr50
99bb5857f8 update for 1.21.3 compatibility 2024-10-31 20:37:54 -07:00
Jacob
571013cf55 add causingPlayer to McMMOReplaceVanillaTreasureEvent and update Fish Event to use it (#5104)
* add causingPlayer to McMMOReplaceVanillaTreasureEvent and update Fishing Event to use it

* make requested changes

---------

Co-authored-by: Jacob Cuomo <jcuomo3@gatech.edu>
2024-10-25 13:00:37 -07:00
nossr50
8087d5f647 change transformable entity list into immutable set 2024-09-28 13:42:25 -07:00
nossr50
d7e8a6b7c1 2.2.022 2024-09-28 13:32:32 -07:00
nossr50
ddb701bc94 update changelog 2024-09-28 13:30:10 -07:00
nossr50
d42581b24f fix to PR 2024-09-28 13:28:43 -07:00
Ineusia
d5c4bebfad Fix slime spawner exploit (#5089)
* Fix slime spawner exploit

* Move slime/magmacube into a constant
2024-09-28 13:26:22 -07:00
Warrior
5c68a176e5 Fix cat cotw on older versions (#5096) 2024-09-28 13:23:28 -07:00
Ineusia
3d7810c568 Bugfix/acrobatics roll chance (#5094)
* Fix acrobatics

* Move acrobatics damage reduction inside success check
2024-09-28 13:21:44 -07:00
nossr50
8b81c9aafe dev mode 2024-09-28 13:20:50 -07:00
nossr50
582a572272 2.2.021 2024-09-20 15:06:01 -07:00
Tautuxs
038d913f87 Update locale_lt_LT.properties (#5079)
I added #TRIDENTS and translated it
2024-09-20 15:03:43 -07:00
Dev
fe46ece008 Update locale_es.properties (#5083) 2024-09-20 15:03:34 -07:00
Ineusia
1c08cac2f8 Fix acrobatics (#5088) 2024-09-19 18:39:56 -07:00
nossr50
2fd86e870f dev mode 2024-09-19 18:39:36 -07:00
Vrganj
8c2848a3e7 Update PlaceholderAPI dependency (#5085) 2024-09-16 11:24:19 -07:00
nossr50
f623b608f6 2.2.020 2024-09-14 15:20:53 -07:00
nossr50
bac16238ac Fix NPE for Alchemy Fixes #5080 Fixes #5073 2024-09-14 15:19:13 -07:00
nossr50
9b046bd490 Fixed blast mining trying to drop non-items 2024-09-14 15:12:39 -07:00
nossr50
88cacf8fff Alchemy no longer spams when finding potions of the same type in config Fixes #5081 Fixes #5059 2024-09-14 15:08:26 -07:00
nossr50
5cc97383fa Roll rework / refactor Fixes #5023 2024-09-14 14:21:48 -07:00
nossr50
b87efb3f76 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2024-08-31 13:26:16 -07:00
nossr50
cfe3accf57 2.2.019 2024-08-31 13:26:08 -07:00
MrPowerGamerBR
dcf83a8d20 Cache ItemMeta instead of creating a new ItemMeta for each potion check (#5075)
* Cache ItemMeta instead of creating a new ItemMeta for each potion check

* Check if the item has item meta and, if it doesn't, bail out

* Also cache the potion item meta too

* Add requireNonNull to the potionItemMeta
2024-08-31 13:11:17 -07:00
Warrior
93bb160742 Fix exceptions when shooting entities through worlds on folia (#5024) 2024-08-31 13:02:00 -07:00
Lego
f67e30641d Update locale_en_US.properties (#5066)
Removed Water Lily from Vanilla Potions
Changed Sulphur to Gunpowder
Moved Rabbits Foot from Tier 3 to Vanilla Potions
2024-08-28 10:13:19 -07:00
nossr50
969b901615 update changelog 2024-08-11 11:26:22 -07:00
nossr50
c7409a8f9b Prevent IllegalArgumentException with Rupture and provide more detailed logging when Rupture cannot activate from illegal state Fixes #5063 2024-08-11 11:25:31 -07:00
nossr50
684583c19b remove msg about in development skills 2024-08-03 11:45:50 -07:00
nossr50
3065c71c25 2.2.018 2024-07-27 15:47:10 -07:00
nossr50
afa4260d0d Limit XP on certain plants which can become unnaturally tall Fixes #5045 2024-07-27 15:42:18 -07:00
nossr50
486dc1344d Optimize blast mining blacklist 2024-07-27 15:08:37 -07:00
nossr50
bda5424a4c Mob Spawners no longer drop from Blast Mining Fixes #5052 2024-07-27 15:07:47 -07:00
nossr50
e886a16388 Fixed probability bug Fixes #5055 Fixes #5054 2024-07-27 15:01:28 -07:00
nossr50
248116df21 dev mode 2024-07-27 13:53:51 -07:00
nossr50
c6791c81cf misc refactoring 2024-07-27 13:53:36 -07:00
nossr50
a0a9d98c80 fix minor word fumble in changelog 2024-07-13 16:47:20 -07:00
nossr50
fe01312136 2.2.017 2024-07-13 16:41:50 -07:00
nossr50
2debcbefd0 Fix Blast Mining Fixes #5021 2024-07-13 16:39:04 -07:00
nossr50
ce8464fcfe Fixed alchemy shift-click exceptions on older MC versions Fixes #5046 Fixes #5039 2024-07-13 14:47:42 -07:00
nossr50
99d8b64589 Add setting for ignoring attack cooldown Fixes #5048 2024-07-13 13:59:42 -07:00
nossr50
25a55d6d4d update changelog 2024-07-13 13:53:23 -07:00
Daniel Li
34c61afa72 update zh_CN translation (#5031) 2024-07-13 13:41:54 -07:00
Ted
4c4d7ee100 Update locale_fr.properties (#5033) 2024-07-13 13:40:49 -07:00
Jesus Ruescas Junior
e96e65e25d Updating the PT-BR translation after 2 years (#5036) 2024-07-13 13:40:25 -07:00
ThiagoROX
ed8d1cdd33 fix mace skills permission (#5038) 2024-07-13 13:38:56 -07:00
nossr50
e9b919f210 2.2.016 2024-07-09 16:00:45 -07:00
nossr50
600ab0eea7 SQL fixed player cooldowns being loaded incorrectly Fixes #5042 Fixes #5032 2024-07-09 12:13:50 -07:00
nossr50
940fb66652 2.2.015 2024-06-30 15:11:41 -07:00
Robert Alan Chapton
971e5da0ad Maces (#5035)
Add Maces skill
2024-06-30 15:10:29 -07:00
nossr50
02c732bdf2 2.2.014 2024-06-28 18:31:24 -07:00
nossr50
e32bde3c32 fix luck of the sea being applied for super break and other abilities Fixes #5026 2024-06-28 18:28:51 -07:00
nossr50
a11ac782fa 2.2.013 2024-06-22 13:32:31 -07:00
nossr50
10e8b19e53 update Changelog.txt 2024-06-22 13:30:50 -07:00
nossr50
ac3c6da298 add xp for Bogged and Breeze 2024-06-19 16:29:10 -07:00
nossr50
4fce053804 minor refactoring 2024-06-19 12:15:00 -07:00
nossr50
eeecf18caf add missing entries for xbows/tridents/maces 2024-06-19 12:14:53 -07:00
nossr50
b9b1127087 update changelog 2024-06-08 13:23:06 -07:00
DonaldBear
009f64cba1 feat(locale): Updated locale zh_TW (#5015)
* Update locale_zh_TW.properties

Updated this line:
Skills.AbilityGateRequirementFail=&7你還需要 &e{0}&7 級以上的 &3{1}&7 來使用這個能力。

Added: "還" (meaning = stills)  in Skills.AbilityGateRequirementFail

Avoid player misconception, indicate that players still need such a level to have the ability to use these skills.

* Add files via upload

* Update locale_zh_TW.properties

Updated zh_TW locale, added new translations and corrected some wrong translation

* Update locale_zh_TW.properties

Fixed missing color code

* Update locale_zh_TW.properties

Added new translations

* Update locale_zh_TW.properties
2024-06-08 13:14:25 -07:00
haha44444
2a4487cde2 Fix properties key error (#5010) 2024-06-08 13:13:10 -07:00
nossr50
8633f7b63a more refactoring for spawning items conditionally 2024-05-25 12:25:00 -07:00
nossr50
0708b0a6a2 some more refactoring 2024-05-24 13:30:17 -07:00
nossr50
6c1502fc67 refactoring 2024-05-24 13:07:45 -07:00
nossr50
4277384c22 move item related utils from Misc to ItemUtils 2024-05-24 12:58:39 -07:00
nossr50
590b00aeca minor refactoring 2024-05-23 18:14:07 -07:00
Momshroom
2f1278c784 Fix sapling drops to ignore reduction and obey Knock on Wood (#5012)
* Fixed NPE when party creation doesn't use password.  Solves bug reported here: https://discord.com/channels/526933440214597677/526938425161416727/1213131451235827753

Signed-off-by: Momshroom <Momshroom@gmail.com>

* Actually don't reduce sapling drop if KnockOnWood unlocked. (Prior fix didn't)

Signed-off-by: Momshroom <Momshroom@gmail.com>

* removed unnecessary getPlayer() calls.
clarified comment
clarified location variable name

Signed-off-by: Momshroom <Momshroom@gmail.com>

* made new method more generic.
Removed no longer needed dropString variable

Signed-off-by: Momshroom <Momshroom@gmail.com>

---------

Signed-off-by: Momshroom <Momshroom@gmail.com>
2024-05-23 18:02:29 -07:00
nossr50
d0ab2bdb2f clean up if/else formatting 2024-05-19 14:09:00 -07:00
nossr50
7266563ca9 Back to Java 17 for now 2024-05-19 13:53:46 -07:00
nossr50
364d4cd6e7 spring-cleaning, update all the dependencies 2024-05-19 13:48:25 -07:00
nossr50
32ff8c6818 update maven-release-plugin 2024-05-19 13:24:14 -07:00
nossr50
fc600796ca minor refactor 2024-05-19 13:24:06 -07:00
nossr50
db9f8e46d1 update github workflow runner to use 21 2024-05-19 13:18:39 -07:00
nossr50
19a8a9ff52 update maven compiler plugin 2024-05-19 13:14:39 -07:00
nossr50
ab8ba8acbe update maven shade plugin 2024-05-19 13:11:12 -07:00
nossr50
d38404927b minor refactor 2024-05-19 13:05:10 -07:00
nossr50
b65247cbb0 require java 21 2024-05-19 13:05:00 -07:00
nossr50
9b09f06ad8 add more sensibly named API for grabbing the UserBlockTracker 2024-05-19 12:58:51 -07:00
nossr50
8b82163e3d update UserBlockTracker API 2024-05-19 12:44:34 -07:00
nossr50
c2054a5d45 2.2.012 fix for daze in 1.20.4 and older 2024-05-18 12:30:44 -07:00
nossr50
46c9ea5a25 2.2.011 2024-05-17 17:24:31 -07:00
nossr50
e6ff219a5c more verbose logging for alchemy potion lookups 2024-05-17 12:02:44 -07:00
nossr50
fc66c9f3fd 2.2.010 2024-05-15 16:06:16 -07:00
nossr50
8d2a08c421 fix REGEN potion not loading 2024-05-13 10:59:57 -07:00
nossr50
291effdbc8 if( -> if ( 2024-05-12 14:13:34 -07:00
nossr50
435a6fde34 update Changelog.txt 2024-05-12 14:11:59 -07:00
nossr50
3ba6b93135 Fixed possible NPE in our events, and BrewingStands now remember who last interacted with them, this allows for hoppers to be used with Alchemy Fixes #5004 Fixes #4958 Fixes #4641 2024-05-12 14:09:51 -07:00
nossr50
17052861d1 2.2.009 2024-05-12 09:34:02 -07:00
nossr50
cae2132d8d 2.2.008 2024-05-11 16:08:05 -07:00
nossr50
ed0c9469e2 don't show unimplemented supers for mccooldowns 2024-05-11 16:01:47 -07:00
nossr50
64206c3ac8 Fixed mccooldowns on SQL not working Fixes #5006 2024-05-11 15:58:49 -07:00
nossr50
0bf1bbe6ac Fixed messages not being sent to the action bar 2024-05-11 15:48:11 -07:00
nossr50
b3edca5304 Fix italicized potion names 2024-05-11 15:27:47 -07:00
nossr50
07b4736be3 update changelog 2024-05-11 15:07:45 -07:00
IAISI
df6ddd6faa CombatUtils: Don't run checks against party features if parties are disabled (#5005)
Co-authored-by: Dieu <info@l4b.org>
2024-05-11 15:07:01 -07:00
nossr50
fb0c8ec934 Fix potions not brewing as the correct type 2024-05-11 15:05:37 -07:00
nossr50
5ba6305ad4 2.2.007 2024-05-04 10:26:43 -07:00
nossr50
75561350c1 fix issues with Alchemy and older MC versions 2024-05-03 13:53:53 -07:00
nossr50
5b822bc626 add armadillos to xp 2024-05-02 06:39:20 -07:00
nossr50
e29a977b9a fix mistake in skillranks.yml 2024-05-02 06:32:47 -07:00
nossr50
78558107b3 WIP 1.20.6 support 2024-05-02 06:28:20 -07:00
nossr50
5628df988f update changelog 2024-04-21 16:04:05 -07:00
nossr50
c078e853eb Fix bug where Green Thumb did not replant if seeds were solely in the offhand Fixes #4994 2024-04-21 14:57:57 -07:00
nossr50
0db5330416 release should be 17 not 16 2024-04-16 14:26:32 -07:00
nossr50
1cac6b1165 2.2.006 2024-04-13 15:18:12 -07:00
nossr50
c0952a2ba3 Add support for hex color codes in locale 2024-04-13 12:58:52 -07:00
nossr50
4d98d25215 Fix wiki links being outdated 2024-04-06 15:10:02 -07:00
nossr50
ffc6061f8b Add custom_item_support config file to optionally disable repair/salvage on items with custom models 2024-04-06 14:26:57 -07:00
nossr50
0363ee2e90 2.2.005 2024-04-06 12:59:35 -07:00
nossr50
b6e512b09e fix probability being unbounded 2024-04-06 12:44:56 -07:00
nossr50
aecf17a2a2 dev mode 2024-04-02 13:30:09 -07:00
nossr50
c769813892 2.2.004 2024-04-02 13:25:35 -07:00
nossr50
e509876658 fix xp multiplier not getting applied 2024-04-01 15:13:49 -07:00
nossr50
a047bca94c Fix crossbows not getting added to schema for some users 2024-03-31 14:28:14 -07:00
nossr50
b5a50da09b Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2024-03-31 13:55:08 -07:00
nossr50
2d79b364db Fix lastlogin value being too large for SQLDB 2024-03-31 13:54:57 -07:00
Robert Alan Chapton
657d7cafa7 Update README.md 2024-03-31 10:41:34 -07:00
nossr50
d92c60fc84 2.2.002 2024-03-31 08:50:05 -07:00
nossr50
b56ddebde8 fix trickshot not applying shot from crossbow to bounced arrows 2024-03-31 08:46:04 -07:00
nossr50
cf49fc7599 fix thrown tridents not getting XP or subskill benefits 2024-03-31 08:44:06 -07:00
nossr50
86a5d14a9b 2.2.001 2024-03-30 06:57:55 -07:00
nossr50
d45e48c401 changelog update 2024-03-30 06:37:49 -07:00
nossr50
77f6a3945f 2.2.000 2024-03-30 06:35:58 -07:00
nossr50
6016e69663 update changelog 2024-03-30 06:28:51 -07:00
nossr50
8902c86864 update changelog 2024-03-30 06:27:21 -07:00
nossr50
f6d2479f2e update changelog 2024-03-30 06:25:34 -07:00
nossr50
81ac48904c mcMMO 2.2.000-RC1 candidate for release 2024-03-30 06:16:10 -07:00
Robert Alan Chapton
2594dc1bca Endgame Update (#4840)
General
Added Crossbows Skill, this skill is a WIP and feedback on discord is appreciated.
Added Tridents Skill, this skill is a WIP and feedback on discord is appreciated.
Added the "endgame" triple drop subskill 'Mother Lode' to Mining
Added the "endgame" triple drop subskill 'Clean Cuts' to Woodcutting
Added the "endgame" triple drop subskill 'Verdant Bounty' to Herbalism
Added /mmopower command which simply shows your power level (aliases /mmopowerlevel /powerlevel)

Config
Added 'Send_To_Console' settings to chat.yml to toggle sending party or admin chat messages to console.
Replaced 'Experience_Formula.Modifier' in experience.yml with 'Experience_Formula.Skill_Multiplier' which is easier to understand and less prone to divide by zero bugs.
child.yml config is gone now, feel free to delete it.

Tweaks
Tree Feller now drops 90% less non-wood block rewards (leaves/etc) on average from Knock on Wood.
Treasure drop rate from Shake, Fishing, Hylian, and Excavation now benefit from the Luck perk.
Updated advanced.yml with entries for the new skills

Permission nodes
Added 'mcmmo.commands.mmopower' permission node for the new /mmopower command
Added 'mcmmo.commands.crossbows' permission node
Added 'mcmmo.ability.crossbows.crossbowslimitbreak' permission node
Added 'mcmmo.ability.crossbows.trickshot' permission node
Added 'mcmmo.ability.herbalism.verdantbounty' permission node
Added 'mcmmo.ability.mining.motherlode' permission node
Added 'mcmmo.ability.woodcutting.cleancuts' permission node

Locale
Added locale entries for motherlode, cleancuts, and verdant bounty.

Codebase
Major rewrite for how random chance was handled in the code.
Many skills with RNG elements now send out a SubSkillEvent (which can be used to modify probability or cancel the results), some skills without RNG still send out this event when activated, this event is cancellable so it can be used to make a skill fail.
A lot of new unit tests were added to help keep mcMMO stable as part of this update, of course, more could always be added.

NOTES:
One feature of this update is to provide an endgame benefits to some skills that you can grind for a long time, ideally for a long while. I will likely expand upon this idea in future updates.
A few skills have these endgame-oriented subskills, these new subskills provide a small benefit at first that grows and scales up to level 10,000 (or 1,000 for Standard mode which no one uses) and does not have ranks (other than the initial rank to unlock it).
These endgame sub skills unlock at level 1000 for users with default mcMMO settings, or 100 for those using the optional Standard scaling.
You can tweak the benefits of these skills in advanced.yml, the default settings are meant to be a good starting point.

Crossbows and Tridents are WIP skills, I would like feedback on discord about them.

More info on the new Triple Drop skills (Mother Lode, Clean Cuts, Verdant Bounty):
Currently these start at about 5%  chance and can reach a maximum 50% chance if a player acquired 10,000 skill, you can adjust this in advanced.yml
These skills respect double drop settings from config.yml just like the corresponding Double Drop skills do, if a double drop is disabled for an item, then it's disabled for triple drops too.
I added a new Power Level Command, for now this just shows you your current power level. If I ever add features based on power level, this command will likely display output related to those features.

Regarding Maces, I will likely add that as a WIP skill when the next Minecraft update drops.
2024-03-30 06:09:59 -07:00
gecko10000
bead5feb14 Make PAPI expansion persist (#4986) 2024-03-30 05:31:47 -07:00
nossr50
ed8c8107f9 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2024-03-19 16:16:11 -07:00
nossr50
b6697141f7 add ExploitFix.PreventArmorStandInteraction to prevent combat abilities going off on armor stands 2024-03-14 13:24:57 -07:00
Lorenzo Cardinali
04ed2a47d4 Fixed import errors related to Alchemy data in AdvancedConfig (#4983) 2024-03-10 18:59:15 -07:00
nossr50
7da8c8c83a 2.1.231 2024-03-09 21:16:59 -08:00
Mangchi__
4d060b192b Update locale_ko.properties (#4977)
* Update locale_ko.properties

* Update locale_ko.properties fixed-1
2024-03-09 20:17:14 -08:00
Momshroom
2117c67084 Fixed NPE when party creation doesn't use password. Solves bug reported here: https://discord.com/channels/526933440214597677/526938425161416727/1213131451235827753 (#4981)
Signed-off-by: Momshroom <Momshroom@gmail.com>
2024-03-09 20:16:14 -08:00
nossr50
4d85f24d98 2.1.230 2024-02-22 18:04:57 -08:00
nossr50
416c5383c9 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2024-02-22 17:57:17 -08:00
IAISI
7f9ed94d23 Fix exceptions on EntityCombustByEntityEvent, EntityDamageByEntityEvent, PartyAutoKickTask if parties are disabled (#4976)
* Only run EntityListener#checkParties on EntityCombustByEntityEvent if Parties are enabled

* Only run PartyAutoKickTask Task if Parties are enabled

* Only run EntityListener#checkParties on EntityDamageByEntityEvent if Parties are enabled

* Check if Parties are enabled before running inSameParty in CombatUtils#processCombatXP

---------

Co-authored-by: Dieu <info@l4b.org>
2024-02-22 17:57:05 -08:00
nossr50
b0d0030d60 2.1.230 2024-02-22 17:54:42 -08:00
IAISI
cdc187b211 Fix PartySaving related NPEs (only save parties if they're enabled) (#4973)
Co-authored-by: Dieu <info@l4b.org>
2024-02-20 09:20:08 -08:00
nossr50
3361d28887 Party system can now be disabled via config
Closes #4873
2024-02-19 17:55:57 -08:00
nossr50
c358c8ce0b Add missing getHandlerList() to McMMOEntityDamageByRuptureEvent fixes #4972 2024-02-19 16:12:39 -08:00
nossr50
aa65be0e1b dev mode 2024-02-17 16:30:47 -08:00
nossr50
85f27fdbdb 2.1.228 2024-02-14 13:17:46 -08:00
nossr50
5bfca3c218 Fix spigot api break for entity damage events 2024-02-13 18:04:00 -08:00
nossr50
94754b150c Dev mode 2024-01-02 23:31:48 -08:00
nossr50
415e3df226 2.1.227 2024-01-02 22:45:38 -08:00
Robert Alan Chapton
b5608ccb01 Update README.md 2023-12-23 15:53:30 -08:00
Robert Alan Chapton
d57e225576 Update README.md 2023-12-23 15:53:08 -08:00
Robert Alan Chapton
2f166507ca Update README.md 2023-12-23 15:50:49 -08:00
MithicSpirit
347e6112fb Make mcMMO anvil sounds categorized (#4954)
Default anvil sound is way too loud, and being in the master category
makes it hard to manage player-side without making the entire game too
soft.
2023-12-21 17:54:29 -08:00
Min Sa-Hun
65dfcb492d Renewed and completed the Korean locale (#4956)
Co-authored-by: Pindang2 <workspace@pindang2.com>
2023-12-21 17:53:38 -08:00
YuanYuanOwO
23a549a6d3 Update locale_zh_CN.properties (#4953)
Update language file to fix a typo error
2023-12-21 17:52:51 -08:00
nossr50
a522ab7b2f updata todo note 2023-12-16 17:59:40 -08:00
nossr50
a0923ad786 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2023-12-16 17:46:37 -08:00
nossr50
dd04ee48b9 2.1.226 2023-12-16 17:45:17 -08:00
PikaMug
89b895af81 Update pom.xml with WorldEdit (#4951) 2023-10-27 11:19:38 -07:00
nossr50
9e1f5b44a6 dev mode 2023-10-15 12:29:27 -07:00
nossr50
a54590576f 2.1.225 2023-10-15 12:18:12 -07:00
Spongecade
06160c6d04 Update Minecraft wiki link to new domain (#4944) 2023-10-15 10:47:21 -07:00
nossr50
12e5a7f054 Bamboo is now treated like a cactus/sugar cane 2023-10-08 16:51:59 -07:00
nossr50
1f20e6344b 2.1.224 2023-10-02 18:16:02 -07:00
nossr50
13ba51cdf1 Fixed some mistakes in shake config 2023-09-30 15:46:20 -07:00
nossr50
4f22391465 Spelling/Grammar 2023-09-30 15:44:56 -07:00
nossr50
5f1a545437 Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2023-09-30 15:43:30 -07:00
nossr50
bad7023129 Shake has 8 ranks again 2023-09-30 15:43:19 -07:00
Huynh Tien
785f18c13a update FoliaLib (#4935)
- fix an issue with 0 ticks setting
- disable scheduler warning
2023-09-03 16:41:35 -07:00
nossr50
357995ecb0 2.1.223 Folia Support Added 2023-08-26 16:21:09 -07:00
nossr50
3e26eca48e Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2023-08-26 16:17:39 -07:00
nossr50
dd339c20ea Updated API 2023-08-26 16:17:31 -07:00
Yomamaeatstoes
c34230a82e mcMMO-Folia-PR (#4925)
Folia Support

---------

Co-authored-by: Rockyers <ethan@yocom.org>
Co-authored-by: TechnicallyCoded <technicallycoded@gmail.com>
Co-authored-by: HSGamer <huynhqtienvtag@gmail.com>
2023-08-26 16:16:18 -07:00
Greymagic27
192626f4da Fix packaging error on windows #4911 (#4919) 2023-08-19 14:23:05 -07:00
nossr50
24a57fab3d 2.1.222 2023-07-09 14:43:38 -07:00
nossr50
78596dc00e Glow Lichen nerf 2023-06-25 13:51:00 -07:00
nossr50
0b1b753d4c Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2023-06-25 13:47:25 -07:00
nossr50
3cbdcddcc1 Crossbows do not count as unarmed item with unarmed items setting 2023-06-25 13:47:04 -07:00
dependabot[bot]
25ecb6e1de Bump guava from 31.1-jre to 32.0.0-jre (#4903)
Bumps [guava](https://github.com/google/guava) from 31.1-jre to 32.0.0-jre.
- [Release notes](https://github.com/google/guava/releases)
- [Commits](https://github.com/google/guava/commits)

---
updated-dependencies:
- dependency-name: com.google.guava:guava
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-19 18:46:30 -07:00
nossr50
019d22d92a Make mcMMO quieter by moving most log messages to debug only 2023-06-19 16:26:30 -07:00
nossr50
e39022cc64 2.1.221 2023-06-19 14:11:53 -07:00
nossr50
a41106ee30 Update changelog 2023-06-17 20:34:18 -07:00
nossr50
b2110d4e1c PAPI Support pt 2 2023-06-17 20:32:51 -07:00
nossr50
f22043ebb5 PAPI Support WIP 2023-06-17 20:22:49 -07:00
nossr50
cc1b511c02 Don't look up offline players by name 2023-06-17 15:56:36 -07:00
nossr50
e9a020565f Added fail safes against bonus drop meta not being cleaned up 2023-05-29 14:34:47 -07:00
nossr50
44ab8d93ab Dev mode 2023-05-29 14:15:04 -07:00
Warrior
78922ea337 Fix blast mining bonus drops option not working (#4895) 2023-05-29 13:58:24 -07:00
nossr50
db01b61371 2.1.220 2023-05-13 14:42:14 -07:00
Warrior
133a60c4bf Fix child skills counting towards power level in /inspect (#4889) 2023-04-23 11:08:06 -07:00
nossr50
684e96ff6b Fix RankConfig 2023-04-17 12:17:28 -07:00
nossr50
f40f68bdf0 Fix RankConfig not using the new updating config system 2023-04-17 12:07:59 -07:00
nossr50
640f4b0a9b Fix mcMMO attempting to copy out custom repair/salvage configs 2023-04-17 12:07:41 -07:00
nossr50
978ee4a9a3 Optimize the imports 2023-04-11 15:49:37 -07:00
nossr50
0ab93586fd Config files will update automatically again 2023-04-11 15:48:14 -07:00
nossr50
921a0228db Merge remote-tracking branch 'origin/master' 2023-04-07 17:00:13 -07:00
nossr50
ac68c4ebe6 2.1.219 2023-04-07 17:00:01 -07:00
Smudge
4553310bb9 Fixed fishing exploiting compatibility (#4859)
* Fixed fishing exploiting compatibility

* Moved same target to class variable
2023-04-03 17:52:00 -07:00
Warrior
9b0632d63c Make party loading more resilient (#4881) 2023-04-03 17:49:35 -07:00
Warrior
69ef484b86 Fix dots not being replaced when renaming party (#4882) 2023-04-03 17:48:53 -07:00
Warrior
606a92f1ef Fix /party teleport NPE (#4885) 2023-04-03 17:48:01 -07:00
nossr50
79730383ab Fixed wiki url being incorrect in various commands 2023-04-03 16:47:58 -07:00
nossr50
7264e1a8d6 Small tweaks 2023-04-03 12:07:34 -07:00
nossr50
e011f545a7 Added smithing_table to tool readiness blacklist 2023-04-02 20:44:00 -07:00
nossr50
283fa14380 Add Camel, Sniffer, and Snifflet to taming XP 2023-04-02 20:42:06 -07:00
nossr50
5f388a9906 Add support for torchflower replanting to herbalism 2023-04-02 20:38:05 -07:00
nossr50
cd96bc79d8 Change isHerbalismDrop to use strings.. this method still needs more work 2023-04-02 20:24:04 -07:00
nossr50
ae961caeab Added Torchflower to herbalism experience and bonus drops 2023-04-02 20:11:10 -07:00
nossr50
0b4d87aebc Add Sniffer and Snifflet to combat experience in experience.yml 2023-04-02 20:07:50 -07:00
nossr50
6106f70c24 Added Pitcher_Plants to bonus drops and herbalism experience 2023-04-02 20:05:52 -07:00
nossr50
100a7f8a8f Added pink_petals, cherry_wood, and cherry_log to bonus drops in config.yml 2023-04-02 20:02:32 -07:00
nossr50
4c792c4f2c Added Pink_Petals to experience.yml 2023-04-02 20:00:58 -07:00
nossr50
db4b820f80 Add new hanging signs to tool readiness blacklist 2023-04-02 19:58:16 -07:00
nossr50
ca710b4302 Add chiseled_bookshelf to tool readiness blacklist 2023-04-02 19:55:30 -07:00
nossr50
668cc0e4a3 Add support for upcoming Cherry trees 2023-04-02 19:53:13 -07:00
nossr50
6d0542b524 Merge remote-tracking branch 'origin/master' 2023-03-26 13:22:41 -07:00
nossr50
d84a5b37b7 Update kyori dependencies 2023-03-26 13:22:31 -07:00
optimizing-ci-builds
c072ae4990 disable xml report (#4880) 2023-03-21 22:05:40 -07:00
nossr50
2d78eaa495 Fixed Beetroots double drop issue #4667 2023-03-19 21:21:54 -07:00
Warrior
6bdc51be76 Fix missing return in notify command (#4870) 2023-02-25 15:20:45 -08:00
nossr50
af15617196 Add config toggle for Blast Mining bonus drops to advanced.yml 2023-02-19 13:40:14 -08:00
CuteLittleSky
643dff7915 Update locale_zh_CN.properties (#4858) 2023-02-09 18:16:26 -08:00
Justin
01fbfccc0d feat: Make power level display for offline players (#4861)
Fixes #4599
2023-02-09 18:12:46 -08:00
Jok
2362fe994a Don't call EntityDamageByEntityEvent with null damager (#4863)
Co-authored-by: Elioby <elioby@users.noreply.github.com>
2023-02-09 18:11:30 -08:00
nopeless
08b08b1285 Fix: player is no longer immune to projectiles shot by themselves (#4856) 2023-01-28 11:57:31 -08:00
nossr50
965540dfaf 2.1.218 2022-12-04 14:32:34 -08:00
destro174
75822472fc Add item in mainhand when spawning in lumber bonus blocks. (#4826) 2022-12-04 14:22:37 -08:00
Daniil Z
59aecb79a1 Update Russian locale (#4832)
Added/updated some lines
Fixed new-line characters
2022-12-04 14:21:44 -08:00
DarkKnights22
c865c2d2e3 Fix bug where players could know staff are invis (#4833)
* Fix bug where players could know staff are invis

* remove whitespace
2022-12-04 14:21:22 -08:00
MrPowerGamerBR
93c64a8770 Fix pt_BR ability on typo (#4837) 2022-12-04 14:19:48 -08:00
Greymagic27
30ac82181e Updated plugins to latest version (#4817) 2022-08-09 07:35:12 -07:00
nossr50
2b219f48ec Dev mode 2022-08-07 16:13:18 -07:00
nossr50
fed0483d40 2.1.217 2022-08-07 16:03:55 -07:00
nossr50
101c43a4bc Tree Feller now partially destroys trees if the whole tree is too big
Fixes #4811
2022-08-07 15:55:19 -07:00
nossr50
fb738d85f6 Mangrove trees are now properly marked natural from growth
Fixes #4810
2022-08-07 15:54:22 -07:00
nossr50
032a407c8a Update changelog and version 2022-08-07 14:27:42 -07:00
Greymagic27
33e615f0f1 Updated dependencies to fix hovering over subskills for 1.19.2 (#4814)
* Updated dependencies that should fix the issue

* Updated spigotmc version

* Updated rest of dependencies

* Updated dependencies that fix the issue. Investigating what dependency update breaks compiling.

* Found the dependency that caused the compile issue, so have not updated that one
2022-08-07 14:19:46 -07:00
dod0lp
8feba60e2c Update config.yml (#4809) 2022-08-03 07:43:03 -07:00
nossr50
8a4fe8ae5d 2.1.216 2022-07-24 10:09:48 -07:00
nossr50
45f96793a5 Revert "Players who used unarmed combat are still considered using unarmed while not holding weapons for a brief time period"
This reverts commit 993b418fbc.
2022-07-24 10:05:56 -07:00
nossr50
df0362bcba Allow mining benefits while using Hoe 2022-07-23 17:04:43 -07:00
nossr50
25d558a5fa Added Sculk blocks to Mining 2022-07-23 16:57:42 -07:00
nossr50
c0e4d7a43d 2.1.215 - Unarmed change + Bug Fixes 2022-07-23 16:22:02 -07:00
nossr50
993b418fbc Players who used unarmed combat are still considered using unarmed while not holding weapons for a brief time period 2022-07-23 16:13:49 -07:00
nossr50
9cf856221d update changelog 2022-07-23 14:47:32 -07:00
nossr50
4db6e03517 Hacky workaround for Spigot API bug not showing burntime to the client when burntime was too high 2022-07-23 14:43:24 -07:00
nossr50
eb1393c02c Fix burnTime debug prints on mmodebug players 2022-07-23 14:24:31 -07:00
nossr50
e1a54b72a9 update changelog 2022-07-23 13:34:38 -07:00
Greymagic27
b266c7ce5b Updated Dependencies (#4798)
* Updated Dependencies

* Fix spelling mistake in dependencies

* Fixed dependency error that would prevent the plugin from loading.

Turned out I put in the wrong acf-bukkit, preventing the plugin from working. Oops!
2022-07-17 14:59:19 -07:00
nossr50
38f937fa01 revert potential furnace animation bug fix 2022-07-17 14:56:44 -07:00
nossr50
6d7982c0cf Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2022-07-17 14:03:10 -07:00
nossr50
89fa26d0eb Potential fix for #3005 2022-07-17 14:00:03 -07:00
Greymagic27
edd85c2f19 Updated kyori adventure-platform dependencies (#4797) 2022-07-17 13:38:44 -07:00
Greymagic27
88b6517f88 Added Dripstone Block to experience.yml (#4796) 2022-07-15 15:07:19 -07:00
PikaMug
2c09a0fdb6 Switch to new sk89q repo (#4791) 2022-07-02 19:25:27 -07:00
nossr50
90721ee859 Add missing Mangrove_Log to experience.yml 2022-06-26 18:43:09 -07:00
destro174
aa4011a226 Use item in mainhand to get drops when using treefeller (#4781) 2022-06-11 16:41:27 -07:00
nossr50
fa82fe8e67 Level up broadcasts should be visible to the player of origin 2022-06-09 22:50:36 -07:00
nossr50
444e1532f2 2.1.214 2022-06-09 22:39:11 -07:00
Smudge
1a34d2f647 Added 25% xp boost permission (#4773) 2022-06-09 14:31:06 -07:00
abridgedcarp
d543843235 Fix Maven build failure (#4779) 2022-06-09 14:26:50 -07:00
nossr50
c40af913f4 mcMMO 2.1.213 2022-06-07 18:07:14 -07:00
nossr50
f6268fe291 Add in new 1.19 stuff and tweak treasures.yml 2022-06-07 18:00:32 -07:00
nossr50
27854720f0 Add some exploit prevention to fishing 2022-05-15 15:24:25 -07:00
nossr50
d19cf1e260 2.1.212 - Fixed herbalism exploit and added damage limit for XP
calculations used in combat
2022-04-28 18:31:10 -07:00
Warrior
4a8630262e Fix hanging plants searching up instead of down. (#4766) 2022-04-28 08:33:45 -07:00
Werner
c41d2d1f39 Bump shade-plugin to 3.3.1 (#4762)
fixes building
2022-04-10 13:09:03 -07:00
nossr50
8821fb0b2f 2.1.211 2022-03-18 15:07:02 -07:00
nossr50
5ab55c1653 mcMMO will no longer use the DamageModifier API (potentially fix immortal player bug) 2022-03-17 19:58:42 -07:00
nossr50
8066f7f7f2 Tweak damage debug info to show modifier values 2022-03-17 16:08:50 -07:00
nossr50
5ea18e8ba7 Add combat debug info for player versus player combat /mmodebug 2022-03-17 15:03:42 -07:00
nossr50
0bf3f98d95 2.1.210 2022-03-17 13:59:17 -07:00
nossr50
fa33fa3d32 Revert 3 commits (work will be continued in branch)
Revert "Disabling mcMMO when the config breaks is dumb"

This reverts commit 86e7bfbf89.

Revert "Config validation rewrite part 1"

This reverts commit 16e90da8fd.

Revert "Update changelog"

This reverts commit 0ccd89fad4.
2022-03-17 13:49:46 -07:00
Mads U. Jensen
8b6a4c1e5b Update doubledrops IDs (#4743) 2022-02-10 17:31:22 -08:00
nossr50
0ccd89fad4 Update changelog 2022-01-30 15:47:08 -08:00
nossr50
16e90da8fd Config validation rewrite part 1 2022-01-30 15:31:52 -08:00
nossr50
86e7bfbf89 Disabling mcMMO when the config breaks is dumb
Fixes #4732
2022-01-30 14:24:21 -08:00
nossr50
8f0fb76847 Silence API out of date warning on config load 2022-01-17 15:57:04 -08:00
nossr50
3be15d3f65 Rewrite how mob/item/block metadata is tracked/retrieved
Fixes #4720
2022-01-17 15:32:02 -08:00
nossr50
74ced18bd0 Dev mode 2022-01-15 11:51:44 -08:00
nossr50
2e0a371ed8 Update changelog 2022-01-14 16:50:19 -08:00
nossr50
68ffe31246 2.1.209 2022-01-14 16:41:33 -08:00
nossr50
405de477d3 (thanks chew) Fix older MC versions not loading config files
Fixes #4716
2022-01-11 19:28:18 -08:00
nossr50
db0ae36fa7 fixed bug where duplicate comments with leading whitespace were ignored 2022-01-11 19:22:28 -08:00
nossr50
5d2028b5dc Java 16 compile target 2022-01-10 22:36:37 -08:00
nossr50
3e645a022d 2.1.208 2022-01-10 22:34:21 -08:00
nossr50
c21a040ddb Huge changes to how config files are loaded/updated, fixes many issues
Fixes #4715
2022-01-10 22:29:22 -08:00
the456gamer
dd4a5a6b9a remove YAML parsing hacks in favor of native bukkit provided parsing (#4714)
* fix yaml config to use native comment handling.
fixes #4702
replaces #4713
2022-01-09 11:16:17 -08:00
nossr50
d5ce8fc6ff Dev mode 2022-01-09 11:14:11 -08:00
dexasz
829aaea5d4 add & translate missing strings & fix a typo that broke placeholders (#4707) 2022-01-09 11:07:18 -08:00
Olivia
c92ae16c7f Fix extra 0 in level for gunpowder in retro mode (#4701) 2021-12-30 14:21:46 -08:00
nossr50
40160498ca 2.1.207 2021-12-27 11:40:33 -08:00
nossr50
9d08d88f2a Add new repair setting to default file 2021-12-27 11:34:55 -08:00
JeBobs
2ca3544741 Added option to disallow using enchanted materials to repair items. (#4693) 2021-12-27 11:29:54 -08:00
nossr50
ef714f98c9 Fix parties at level cap gaining XP and thus spamming messages
Fixes #4686
2021-12-27 11:22:16 -08:00
nossr50
dd550feb65 Update BlockTracker to use Spigot API directly instead of compatibility
layer
Fixes #4692 Fixes #4698
2021-12-27 11:09:27 -08:00
nossr50
ddc9a69f4b Fix ScoreboardManager NPE and added locale messages relating to scoreboards 2021-12-27 10:46:56 -08:00
TheBusyBiscuit
61388f46f1 Fixed #4694 (#4695) 2021-12-27 09:27:13 -08:00
nossr50
341dc45202 Takeout this warning 2021-12-14 23:27:51 -08:00
nossr50
13f7482b39 Unicode support for locale files 2021-12-14 23:08:08 -08:00
nossr50
a78dcffde7 Temporarily roll back to Java 16 2021-12-14 22:26:40 -08:00
nossr50
3671d0b565 dev mode 2021-12-14 22:23:31 -08:00
lilac & gooseberries
1b11fd2369 lithuanian translation for mcmmo (#4676) 2021-12-14 22:22:58 -08:00
nossr50
c36ff85cbf 2.1.206 - Memory leaks fixed and other changes Fixes #4681 2021-12-11 22:27:54 -08:00
nossr50
77cefbdfab Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2021-12-11 22:22:37 -08:00
nossr50
fbe0cd1471 Fixing like 10 memory leaks Fixes #4670 2021-12-11 22:22:02 -08:00
Robert Alan Chapton
728ba512c3 Java 17 for GH actions 2021-12-11 21:21:22 -08:00
nossr50
10470dde13 Reduce default volume of level up sound 2021-12-11 21:19:30 -08:00
nossr50
11245e87ef squelch ChunkStoreTest log output 2021-12-11 20:57:25 -08:00
nossr50
b88d752f61 update dependencies 2021-12-11 20:56:10 -08:00
Enderaoe
09ce259288 fix issue #4667 (#4669) 2021-12-07 19:55:42 -08:00
PikaMug
519d469cb2 Add null check to XP gain handler, fixes #4663 (#4677)
* Add null check to XP gain handler, fixes #4663

Co-authored-by: Robert Alan Chapton <nossr50@gmail.com>
2021-12-07 19:54:48 -08:00
nossr50
cf67e3502a dev mode 2021-12-07 19:29:36 -08:00
nossr50
9ab4584dfe MOB_METADATA_KEYS should be immutable 2021-11-14 09:36:00 -08:00
nossr50
8d27e8fccf 2.1.205 2021-11-14 09:33:27 -08:00
NemuruYama
ba1f15b655 Fixed the alchemy properly (#4658) 2021-11-14 08:05:42 -08:00
nossr50
5b1a69b3f7 2.1.204 2021-11-10 14:55:54 -08:00
Enderaoe
d185c7538c Fix issue #4626 double smelting on raw copper (#4652) 2021-11-10 04:55:04 -08:00
gecko10000
2347fc294f Fix IndexOutOfBoundsException for fake brew event by adding to list instead of setting the index (which doesn't work) (#4655) 2021-11-10 04:54:31 -08:00
nossr50
7aaec5b707 2.1.203 2021-11-08 19:07:02 -08:00
nossr50
20a713e04d Update changelog 2021-11-08 19:02:37 -08:00
gecko10000
81faf93f31 Fix hex colors in broadcasts (#4651) 2021-11-08 19:01:14 -08:00
PikaMug
19c0f6757e Add deprecated constructor w/o startinglevel per d9e195f (#4647) 2021-11-08 19:00:00 -08:00
nossr50
ec0815043e Update changelog 2021-11-08 18:58:11 -08:00
Enderaoe
182717eacf Fix issue #4105 Fishing shake percentage seems off. (#4649) 2021-11-08 18:57:32 -08:00
Robert Alan Chapton
e287ad47d1 updating github actions
hope this works
2021-11-08 18:54:46 -08:00
nossr50
8eee39b88b mcMMO now requires the latest MC version (currently 1.17.1)
Fixed a few bugs from API breaks
2021-11-08 18:38:50 -08:00
nossr50
4bf2ad46ea Require Java 16 2021-11-08 18:15:33 -08:00
nossr50
def676d8d7 2.1.202 2021-10-05 12:41:25 -07:00
nossr50
f8433cdbcc Fixed Kelp not awarding XP
Fixed #4639 Fixed #4110
2021-10-05 12:39:56 -07:00
nossr50
a2e10dbd0c Azalea trees bone mealed into existence no longer get marked unnatural
Fixes #4640
2021-10-05 11:58:31 -07:00
nossr50
e55ce00d62 Update changelog 2021-10-05 10:13:07 -07:00
nossr50
73c465ee64 Fixed a bug where mcMMO didn't flag all blocks as natural appropriately
in some StructureGrowEvent(s)
2021-09-28 16:58:40 -07:00
nossr50
c30892a0a5 Add flowering azalea leaves to Tree Feller 2021-09-28 00:09:04 -07:00
nossr50
58e7323c3e Bring adventure-api and adventure-platform (and dependencies) up to date 2021-09-23 12:59:58 -07:00
tunagohan
7fc6577196 Propose: Add an option for Exploiting Fishing. (#4619)
* feat: Add exploiting option for fishing

* Update experience.yml

Let's change how this was named

* Update ExperienceConfig.java

Let's change how this was named

Co-authored-by: Robert Alan Chapton <nossr50@gmail.com>
2021-09-22 15:11:54 -07:00
PikaMug
162c605dac Trigger change event for party create/disband (#4620) 2021-09-22 15:05:41 -07:00
rosaage
280eb0ba51 Added support for allowPublicKeyRetrieval=true in the JDBC launch (#4635)
options for MySQL

Co-authored-by: BuildTools <unconfigured@null.spigotmc.org>
2021-09-22 15:03:03 -07:00
GhostDC
8e5251ba66 update locale_zh_CN.properties (#4628) 2021-09-22 15:00:03 -07:00
Warrior
1e43e34547 Make /party kick case insensitive (#4630) 2021-09-22 14:59:39 -07:00
nossr50
5575309b79 Add amethyst block to experience.yml for Mining 2021-08-15 21:59:38 -07:00
nossr50
88dae5d5dd dev mode ( 2.1.202 ) 2021-08-10 14:59:13 -07:00
nossr50
da3909c08f 2.1.201 2021-08-10 14:44:13 -07:00
nossr50
6cad4993ed Tweaked Rupture's visual/audio effect 2021-08-10 14:42:08 -07:00
nossr50
af6e6b9545 Update changelog 2021-08-10 14:21:16 -07:00
emanondev
cd937a812d Fix for impact armor damage formula (#4425)
* Update SkillUtils.java

Add handleArmorDurabilityChange() to handle armor damage reduction correctly

* Update AxesManager.java

Changed method to handle impact damage calculation

* Update SkillUtils.java
2021-08-10 14:19:18 -07:00
Griffin Kubesa
264c0e2c78 Add /<skill> keep (#4512)
* Add /<skill> keep

* Add keep to tab completion

* Case insensitive
2021-08-10 14:17:37 -07:00
David
b42278932e Update locale_pt_BR.properties (#4566) 2021-08-10 14:15:56 -07:00
蘭蘭露 Flandre_tw
7fc7125ed3 Reupload new Chinese Traditional translation (#4584)
Hello, I have completed the Chinese Traditional translation. :)
2021-08-10 14:14:45 -07:00
nossr50
d3f012de27 Update changelog 2021-08-10 14:14:07 -07:00
Griffin Kubesa
dfa16c70a7 Set TNT source in blast mining (#4580)
* Set TNT source in blast mining

* Compatibility with older versions

Co-authored-by: TheBusyBiscuit <TheBusyBiscuit@users.noreply.github.com>

Co-authored-by: TheBusyBiscuit <TheBusyBiscuit@users.noreply.github.com>
2021-08-10 14:13:25 -07:00
GhostDC
8805a25d85 update locale_zh_CN.properties (#4585)
Thank you
2021-08-10 14:09:32 -07:00
nossr50
f91a2217c8 Fixed plugin incompatibility and exploits regarding buffed tools remaining buffed
Fixes #4616
2021-08-10 14:04:59 -07:00
nossr50
64f1ae4af6 Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2021-08-10 13:47:55 -07:00
nossr50
6d9a9d165d Blast Mining shouldn't drop Budding Amethyst
Fixes #4589
2021-08-10 13:46:33 -07:00
nossr50
5edc0d065d Add aliases to inspect command (mcinspect, mmoinspect) 2021-08-06 21:54:28 -07:00
Diablolend
a346fc3338 Fixed in every line of "\ \ " characters (#4588)
Where did they come from? 🤔
2021-07-29 15:16:07 -07:00
nossr50
dc94fedee1 Added member getPlayer to McMMOItemSpawnEvent
Fixes #4572
2021-07-20 18:47:25 -07:00
nossr50
93a6a73b4e Revert Woodcutting translation forortuguese
Fixes #4568
2021-07-20 18:32:34 -07:00
TheBusyBiscuit
2c849d9cb4 Added a Unit Test for mc version detection (#4560)
* Added a Unit Test for mc version detection

* Merge upstream and update server software string
2021-07-05 16:02:46 -07:00
nossr50
b79d452a6d 2.1.200 2021-07-01 21:02:59 -07:00
nossr50
fb94374e3c Update changelog 2021-07-01 16:14:13 -07:00
TheBusyBiscuit
5255ae846d Fixed #4556 (#4559) 2021-07-01 16:11:22 -07:00
stepech
e816310da8 Fix mcmmo picking wrong version on builds withou patch number (#4555)
* Fix server versioning

* Switch to regex when getting server version

* add comment

* Poor beginner mistakes

Co-authored-by: TheBusyBiscuit <TheBusyBiscuit@users.noreply.github.com>

Co-authored-by: TheBusyBiscuit <TheBusyBiscuit@users.noreply.github.com>
2021-07-01 16:07:44 -07:00
nossr50
de6ba4fb6a Dodge no longer triggers while blocking
Fixes #4543
2021-06-22 14:59:40 -07:00
TheBusyBiscuit
e35bfe758c Update to Junit5 and allow for mcMMO to be compiled on Java 16 (#4552)
* Updated all unit tests to Junit5 and removed Powermock

* Some formatting

* I did not mean to commit this file

* Fixed file ending

* We don't need these extra dependencies

* Replaced delegate with Junit5 assertThrows

* Revert this change

* Re-add mockito-core

* A bit more refactoring

* Update surefire and remove failsafe

* Updated Mockito

* Add failsafe back

* Bump Mockito to 3.11.2

They literally just released that.
2021-06-21 09:21:55 -07:00
nossr50
fffbacd239 2.1.199 2021-06-15 14:30:16 -07:00
nossr50
f286af3fff update changelog 2021-06-15 14:25:02 -07:00
nossr50
7e28799f94 Fix SQL on 1.17 (hacky) and optimized CompatibilityManager 2021-06-15 14:19:30 -07:00
nossr50
78dc56d263 Update Deepslate Lapis Ore on MaterialMapStore 2021-06-11 14:47:11 -07:00
nossr50
e3dfdfc6ee Fixed Deesplate Lapis Ore not being recognized 2021-06-11 14:46:27 -07:00
nossr50
4819a45be9 2.1.198 2021-06-11 14:26:28 -07:00
nossr50
5e0f8a334d Update changelog 2021-06-11 14:23:24 -07:00
nossr50
5f0cc2b09a Fix Smelting not recognizing the new 1.17 smeltables (like raw ores) 2021-06-11 14:22:33 -07:00
nossr50
6ff37c8baa Update changelog 2021-06-11 09:10:43 -07:00
TheBusyBiscuit
f7dc72359b Bump adventure to 4.8.0 (#4546) 2021-06-11 09:09:47 -07:00
nossr50
1ab5b82b22 2.1.198 dev mode 2021-06-11 09:08:22 -07:00
nossr50
28c6c90f23 2.1.197 2021-06-06 21:00:27 -07:00
nossr50
9bb38e3193 Add more 1.17 blocks 2021-06-06 20:59:43 -07:00
nossr50
551fac84a5 Add Glow Berries to Farmer's Diet 2021-06-06 20:56:14 -07:00
nossr50
0bc25b263b Add support for Glow Berries / Cave Vines 2021-06-06 20:52:27 -07:00
nossr50
fa9a3ae766 Add support for Glow Lichen 2021-06-06 20:44:33 -07:00
nossr50
33df92ea3a Add tuff to super breaker 2021-06-06 20:42:07 -07:00
nossr50
c3d86ba6c5 Add support for Tuff 2021-06-06 20:41:59 -07:00
nossr50
b569b9456e Add support for Mossy Block and Azalea Leaves 2021-06-06 20:37:51 -07:00
nossr50
4e6e58d9ca Add more support for 1.17 (mining related) 2021-06-06 11:18:03 -07:00
nossr50
619eec7667 Add new 'raw' ores to experience values and bonus drops 2021-06-03 14:34:36 -07:00
nossr50
97cfb1cfc7 More 1.17 support 2021-06-03 14:23:19 -07:00
nossr50
c28c8d164a Adding more 1.17 support 2021-06-03 14:20:00 -07:00
nossr50
e74e1e6829 Add Amethyst related blocks to experience.yml and update Super Breaker 2021-06-03 14:04:08 -07:00
nossr50
6dbc7adf48 Add glow_squid, goat, and axolotl to experience.yml 2021-06-03 13:44:56 -07:00
nossr50
cbaef4a092 Update changelog 2021-05-31 09:09:45 -07:00
lexikiq
eb10bcbc96 Disable launching from Minecart Anti-AFK (#4508) 2021-05-31 09:08:06 -07:00
nossr50
2875545fa4 Update pt_BR locale 2021-05-31 08:55:10 -07:00
nossr50
be595f2568 Update changelog 2021-05-31 08:37:07 -07:00
snake
882f6197c6 Update locale_ja_JP.propaties (#4529)
* Update locale_ja_JP.propaties

* Escape non-ASCII characters
2021-05-31 08:34:18 -07:00
nossr50
0d2f370185 Update our dependencies to their latest versions (where possibly)
Also adds Guava as a dependency as version upgrading our dependencies resulted in the loss of the included Guava libraries
2021-04-23 15:08:57 -07:00
nossr50
da1fcfe30a 2.1.196 2021-04-23 11:26:35 -07:00
nossr50
f983f95961 Remove explosion from rupture, and rupture bug fixes and other tweaks 2021-04-23 11:13:59 -07:00
nossr50
d67c561fed Update changelog 2021-04-23 10:46:59 -07:00
nossr50
989f7fd51b Fix Serrated Strikes not processing Rupture for additional targets 2021-04-23 10:45:19 -07:00
nossr50
e4b8b74987 Optimize imports 2021-04-23 10:37:22 -07:00
nossr50
9e7bb12dc3 Also avoid issues in this test by mocking instead of implementing an ever changing interface 2021-04-23 10:34:00 -07:00
nossr50
95c291d630 Avoid the pitfalls of implementing an everchanging interface from a SNAPSHOT 2021-04-23 10:30:26 -07:00
nossr50
9b4070d971 Don't process null McMMOPlayer events
Fixes #4499
2021-04-23 10:20:20 -07:00
lexikiq
6d0fe4fb58 Add McMMOEntityDamageByRuptureEvent (#4498) 2021-04-20 14:51:57 -07:00
nossr50
394e9e5110 Update changelog 2021-04-19 12:45:51 -07:00
nossr50
5416d1b36e Add crossbows to enchantable items list 2021-04-19 12:43:21 -07:00
nossr50
9a4ec456ad 2.1.195 2021-04-19 12:26:15 -07:00
nossr50
71edf0e9f4 Update changelog 2021-04-19 12:22:25 -07:00
nossr50
c8b1a17194 this should fix null connection error with MySQL
Fixes #4497
2021-04-19 12:20:15 -07:00
nossr50
77a7b98659 Dev mode 2021-04-19 12:15:00 -07:00
nossr50
aa562a4710 2.1.194 2021-04-18 17:52:45 -07:00
nossr50
317f966f73 Fix comment
Fixes #4496
2021-04-18 17:31:20 -07:00
nossr50
a844f27093 Fix mistakes 2021-04-18 17:28:27 -07:00
nossr50
2c44590c52 world bounds tweak 2021-04-18 17:21:37 -07:00
nossr50
16f79b9fbc Locale override now uses a specific file instead of weird name matching 2021-04-16 13:50:41 -07:00
nossr50
c29f311f1e More proper fix 2021-04-16 12:24:02 -07:00
nossr50
81a3441d62 2.1.193 2021-04-16 10:07:36 -07:00
nossr50
cfe1fd2b26 Update changelog 2021-04-16 10:07:02 -07:00
nossr50
3d5c8e154a Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2021-04-16 10:06:42 -07:00
Mich3l3k
fee2b93b4b Update locale_pl.properties (#4486)
* Update locale_pl.properties

Lots of minor bugs fixed and the woodcut has a better translated name (as well as the ability to woodcut etc.)
And all guides have been translated :D

* Update locale_pl.properties

Guides.Salvage.* translated
Fixed few mistakes
And added support to the latest version of plugin (like swords update)
2021-04-16 10:06:30 -07:00
nossr50
76ebd85afa Update changelog 2021-04-16 10:05:21 -07:00
Warrior
7393421607 Some patches (#4494)
Fixed blocks being dropped from blast mining even if yield was set to 0.
Tree feller not working entirely if one fake block break event is cancelled. (Fixes #4189)
Fixes no woodcutting xp being rewarded if a tree is too big while using tree feller.
2021-04-16 10:03:57 -07:00
nossr50
04459f1ea7 Fix leaderboards & fix override locale bug
Fixes #4493 Fixes #4492
2021-04-16 09:55:44 -07:00
nossr50
8027b4741e 2.1.192 2021-04-15 14:48:54 -07:00
nossr50
8fdc611fb0 Add some code to a test to check for user names being updated 2021-04-15 14:48:24 -07:00
nossr50
48de5057a4 Fix another bug where usernames can be saved as null for FlatFileDB 2021-04-15 14:43:37 -07:00
nossr50
1269652e94 Dev mode 2021-04-15 11:59:27 -07:00
nossr50
522f40f0fe 2.1.191 2021-04-15 11:54:05 -07:00
nossr50
e42eeb1dc4 Fix FlatFile leaderboards not working in certain situations + added leaderboards unit test 2021-04-15 11:53:23 -07:00
nossr50
4f5f3aff80 Oops 2021-04-15 10:43:48 -07:00
nossr50
b9201b89b8 Fix block tracking logic 2021-04-15 09:38:30 -07:00
nossr50
f2357a04ae 2.1.190 2021-04-14 18:15:10 -07:00
nossr50
c9b0383600 Fix null error in BitSetChunkStore 2021-04-14 18:14:50 -07:00
nossr50
729a91443a 2.1.189 2021-04-14 16:50:06 -07:00
nossr50
bb57e6d464 actually a radius now.. although not really 2021-04-14 16:38:19 -07:00
nossr50
700a7f4d35 Fix ArrayIndexOutOfBounds for certain events due to spigot API bug
Fixes #4488
2021-04-14 16:34:43 -07:00
nossr50
22b24b4774 JUnit 5 time 2021-04-13 17:25:56 -07:00
nossr50
d9e195f63a Add a newUser test 2021-04-13 15:22:21 -07:00
nossr50
e6239936d2 Add lastlogin tests 2021-04-13 13:40:24 -07:00
nossr50
f7339277f8 Add more tests, fix null name bug 2021-04-13 12:41:23 -07:00
nossr50
5b4af3f9ce Add loadFromFile test 2021-04-12 16:59:35 -07:00
nossr50
9f22cef175 More tests 2021-04-12 13:18:41 -07:00
nossr50
85f3221a60 FlatFileDataProcessor will handle fixing and repairing the data 2021-04-12 12:55:31 -07:00
nossr50
60013c710b Add more tests to FlatFileDatabaseManagerTest 2021-04-12 09:33:43 -07:00
nossr50
aca1d6c0b1 Add test to find duplicate names - FlatFileDatabaseManagerTest 2021-04-12 09:02:50 -07:00
nossr50
834ccc946a FlatFileDatabaseManager refactor + adding tests part 1 2021-04-09 16:45:58 -07:00
nossr50
323f496420 Fix infinite loop 2021-04-09 11:15:07 -07:00
nossr50
be44c0e417 Update SkillTools 2021-04-09 11:13:27 -07:00
nossr50
cfdcc9dee5 Shorten notes 2021-04-09 10:48:08 -07:00
nossr50
29613bc324 Add back and deprecate most of the members of PrimarySkillType 2021-04-09 10:46:12 -07:00
nossr50
c1c32cb1fd Fix mcMMO saving copies of config files into the main server directory instead of the correct place 2021-04-09 10:19:34 -07:00
Anseba
6d057c577e Fixed minor mistakes in locale_de.properties (#4484)
* Update locale_de.properties
2021-04-09 09:37:21 -07:00
lexikiq
e7978a6ad9 Fix deaths from skeletons showing health bars (#4483)
* Fix deaths from skeletons showing health bars

* Ignore human attackers
2021-04-09 07:59:42 -07:00
nossr50
56f9341f8e Add mcMMO_Region_System.Enabled to persistent_data.yml (removed from hidden config) 2021-04-09 07:54:34 -07:00
nossr50
e76fb9ab1b Update changelog 2021-04-08 13:36:18 -07:00
nossr50
ccf5f30011 Add a test to FlatFileDatabaseManagerTest (more to come) 2021-04-08 13:31:07 -07:00
nossr50
483d23c04d Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2021-04-08 13:26:36 -07:00
nossr50
611705bce1 Update changelog 2021-04-08 13:26:22 -07:00
lexikiq
80aac93fd2 Fix death messages losing formatting (#4482) 2021-04-08 13:25:24 -07:00
nossr50
74d0d2c3f9 Comment these out for now 2021-04-08 13:22:46 -07:00
nossr50
241df06707 Don't need this anymore 2021-04-08 13:22:20 -07:00
nossr50
eec5feb2bf PrimarySkillType refactor and other refactors 2021-04-08 13:21:34 -07:00
nossr50
5080d86e44 Refactoring code part 1 to prep for adding a bunch of unit tests 2021-04-08 10:39:07 -07:00
nossr50
0636f578dd Update changelog 2021-04-07 16:16:04 -07:00
Mich3l3k
6336101992 Update locale_pl.properties (#4470)
You're welcome :D
I will translate Guides soon
2021-04-07 16:10:50 -07:00
nossr50
ef48fbee89 dev mode + update changelog 2021-04-06 15:01:51 -07:00
nossr50
10d9aa14f1 Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2021-04-06 14:49:05 -07:00
nossr50
44c820089c remove UP warning 2021-04-06 14:48:53 -07:00
TheSummerGrinch
c526208da4 Various improvements to grammar and consistency. (#4479) 2021-04-05 15:50:14 -07:00
nossr50
eb8af69605 Update changelog 2021-04-05 13:56:16 -07:00
nossr50
2db7d83216 2.1.188 2021-04-05 13:50:59 -07:00
nossr50
4c237b2e9c Tweak UP msg, remove debug msg about unused keys 2021-04-05 13:50:27 -07:00
nossr50
2d11b7befc Fixed treasures only requiring level 0 2021-04-05 13:41:37 -07:00
nossr50
c5f4666525 Fixing Shake showing the wrong chance to succeed 2021-04-05 12:47:03 -07:00
nossr50
3b7f416ed9 Up default ShakeChance and remove useless entries 2021-04-05 12:39:49 -07:00
nossr50
db55635f0d Tweak UP warning 2021-04-04 18:23:13 -07:00
nossr50
fe713c9931 dev mode 2021-04-03 09:53:34 -07:00
nossr50
716272fefc 2.1.187 2021-04-03 09:46:41 -07:00
nossr50
e8577e4a9e Fix ClassCastException for Rupture
Fixes #4476
2021-04-03 09:46:01 -07:00
nossr50
3e60dfcf98 2.1.186 2021-04-02 20:37:05 -07:00
nossr50
d25784bf41 Give XP when sneaking for bushes 2021-04-02 20:33:48 -07:00
nossr50
a2ee4be86a Fix some bugs with Rupture and fix a small memory leak 2021-04-02 20:31:19 -07:00
TheBusyBiscuit
002887e244 Sanitize ability buffs when using Item Frames (#4475)
* Remove skill ability buffs from items when placed into Item Frames

* Ensure compatibility on versions before 1.16
2021-04-02 18:47:43 -07:00
nossr50
48afb81174 Another locale tweak 2021-04-02 12:16:40 -07:00
nossr50
a58a3d91dc tweak locale / command output 2021-04-02 12:13:54 -07:00
nossr50
affecfeeeb Added config options for Rupture and updated the Swords command 2021-04-02 12:02:21 -07:00
nossr50
48bf79055a Rupture has been reworked 2021-04-02 11:00:11 -07:00
nossr50
0cb3d91f0e dev mode 2021-04-02 08:55:04 -07:00
nossr50
1e91ba156d 2.1.185 2021-04-02 08:33:09 -07:00
nossr50
72958bb0f3 Herbalism XP exploit fix 2021-04-02 08:32:56 -07:00
nossr50
0ae83420e6 2.1.184 2021-03-31 15:53:21 -07:00
nossr50
a2ba406fe5 Removed April Fools event 2021-03-31 15:14:00 -07:00
nossr50
f01efd92f5 Correct bad default config files 2021-03-31 15:06:59 -07:00
nossr50
a3cc520005 Correct key for drop level in default file 2021-03-31 14:59:29 -07:00
nossr50
0d955c3a94 2.1.183 2021-03-30 16:11:26 -07:00
nossr50
aa734c8b1a Acrobatics XP from falling no longer requires the Roll subskill 2021-03-30 16:04:33 -07:00
nossr50
0577701fd7 Tweak mmoinfo 2021-03-30 15:54:25 -07:00
nossr50
6b309f628a Roll will not have an mmoinfo read out for now 2021-03-30 15:43:05 -07:00
nossr50
fdefea3235 treasures.yml now has specific entries for Standard/Retro 2021-03-30 15:37:01 -07:00
nossr50
ae538d8c72 Sweet berry bush exploit fix 2021-03-29 16:09:47 -07:00
nossr50
50eadb2e8d Merge branch 'master' of https://github.com/mcMMO-Dev/mcMMO 2021-03-29 15:24:10 -07:00
nossr50
f69c678f6c Update changelog 2021-03-29 15:23:48 -07:00
mldriscoll
d98bcea845 Correcting references to the Potion of Leaping being made with Red Mushrooms (#4290)
Co-authored-by: MLD <kuali@cethial.net>
Co-authored-by: Robert Alan Chapton <nossr50@gmail.com>
2021-03-29 15:22:24 -07:00
nossr50
fbd2eeb93d Avoid NPE on beast lore jump strength checks 2021-03-29 15:14:54 -07:00
nossr50
c27b8dbd66 Update changelog 2021-03-29 15:11:08 -07:00
Daniel Jarski
df56d93aaa Added Donkeys and Mules to the list of animals that display stats (#4282)
...in Beast Lore. I improperly assumed that donkeys and mules have fixed jump and movement speeds, but ones that are *bred* have variable stats just like horses.
2021-03-29 15:08:40 -07:00
Daniil Z
80e9111f78 Update Russian localization (#4465) 2021-03-29 15:02:48 -07:00
nossr50
b189614d8d 2.1.182 2021-03-25 14:51:28 -07:00
nossr50
7c8e14fd74 Featherboard compatibility 2021-03-25 14:49:36 -07:00
nossr50
fc3e580550 Fix NPE with Scoreboards when updating 2021-03-25 14:13:16 -07:00
nossr50
eea922c31f TODO: Look into double drops for berry bushes 2021-03-25 14:08:22 -07:00
nossr50
e40ab38bbd Sweet Berry bushes now grant XP when harvested and no longer activate tools 2021-03-25 13:42:20 -07:00
nossr50
2c5e11138b Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2021-03-23 13:21:16 -07:00
nossr50
317dc814a4 Add comment about power level cap issue 2021-03-23 13:20:55 -07:00
Pablo
f52effb0fb Add '.all' to all existing perk xp multipliers (#4460)
* Add '.all' to all existing perk xp multipliers 

Added '.all' usage for all existing perk xp mulipliers to enable use of mcmmo.perks.xp.<xpboost>.all

* Fixed a statement error
2021-03-22 13:13:51 -07:00
nossr50
71d1f42cf4 Tweak changelog 2021-03-18 15:28:42 -07:00
nossr50
49f1154e65 NPE fix for McMMOPlayerExperienceEvent 2021-03-18 15:15:43 -07:00
nossr50
4f08c69557 Add UltraPermission warning to mcMMO 2021-03-18 13:18:30 -07:00
nossr50
13a2d03444 Remove silent exceptions 2021-03-18 13:11:03 -07:00
nossr50
c7a8d74963 Add customboost 'mcmmo.perks.xp.customboost.all' perk permission node 2021-03-17 10:39:05 -07:00
nossr50
076d7a7f87 Remove hardcore and vampirism commands 2021-03-17 10:03:54 -07:00
nossr50
667b9a2226 Remove ChatControlRed warning pending further proof of bug 2021-03-17 09:59:18 -07:00
nossr50
312206eda5 Tweak save debug messages 2021-03-16 16:43:25 -07:00
nossr50
dc2c099231 Add warning about the plugin conflict between mcMMO and ChatControlRed 2021-03-16 16:36:16 -07:00
nossr50
49d4e97930 Some safety redundancy 2021-03-16 14:05:33 -07:00
nossr50
444d5edd66 Fixed double smelt not working if furnace was empty 2021-03-16 13:16:17 -07:00
nossr50
b181fb4568 Update changelog 2021-03-16 13:12:45 -07:00
w1tcherrr
06990c858e Fixed mistakes in german locale file (#4454)
* Fixed mistakes

* Update src/main/resources/locale/locale_de.properties

Co-authored-by: TheBusyBiscuit <TheBusyBiscuit@users.noreply.github.com>

* Update src/main/resources/locale/locale_de.properties

Co-authored-by: TheBusyBiscuit <TheBusyBiscuit@users.noreply.github.com>

* More Fixes

Co-authored-by: TheBusyBiscuit <TheBusyBiscuit@users.noreply.github.com>
2021-03-16 13:03:53 -07:00
nossr50
6cec253243 2.1.181 2021-03-12 17:07:14 -08:00
nossr50
75db0af01d More console spam reduction for database operations 2021-03-12 16:37:21 -08:00
nossr50
4a048b47cb Refactor DB code a bit and fix console spam when using the Plan plugin
Fixes #4450
2021-03-12 16:25:14 -08:00
nossr50
7d5bcf3ebf 2.1.180 2021-03-11 15:11:03 -08:00
nossr50
0979ef555b More tweaks to data recovery messages 2021-03-11 14:59:11 -08:00
nossr50
91204262f5 More tweaks to handling corrupt data for flat file 2021-03-11 14:48:21 -08:00
nossr50
eb1e657af1 Simplify data validation + listen to exceptions again 2021-03-11 14:10:29 -08:00
nossr50
2203d61c10 More safety against corrupt data when loading data for FlatFile 2021-03-11 13:11:11 -08:00
nossr50
d77c8c88a3 Less spammy corrupt data reporting 2021-03-11 12:16:33 -08:00
nossr50
7755875dbf Some refactoring of FlatFileDatabaseManager 2021-03-11 12:02:21 -08:00
nossr50
72116d809b Add another error message if mcMMO finds something unexpected in the database 2021-03-11 12:00:11 -08:00
nossr50
e95b7f72a7 Add some safety measures to loading a user from FlatFile 2021-03-11 11:58:27 -08:00
nossr50
e8a0e6e4a4 Don't upgrade old party DB schema from 8 years ago (band-aid fix, real fix coming later) 2021-03-09 19:47:35 -08:00
nossr50
6c69cd2aea Fixed several SQL bugs + SQL db is now fully UTF-8 compatible 2021-03-09 15:10:00 -08:00
nossr50
f4976e5ecb switch SQL from latin1 to utf8mb4 2021-03-09 13:56:03 -08:00
TheBusyBiscuit
4402484d47 Fixed NoClassDefFoundError caused by latest Adventure-platform snapshot. (#4446)
* Bumped adventure versions

* Added Unit Test to ensure Adventure being set up correctly
2021-03-09 08:15:11 -08:00
nossr50
935ab22477 2.1.179 2021-03-07 14:33:22 -08:00
nossr50
f9097087fe Fixed a bug where player levels were wiped on FlatFile database if players changed nicknames 2021-03-07 14:28:47 -08:00
nossr50
8e5f2b804b dev mode 2021-03-07 14:20:40 -08:00
nossr50
12d0a220da 2.1.178 2021-03-05 20:14:48 -08:00
nossr50
89c368e481 changelog tweaks 2021-03-05 15:39:23 -08:00
nossr50
5e35a65fbf 2.1.177 2021-03-05 15:17:41 -08:00
nossr50
92efd59760 Better compatibility with other fishing plugins
Fixes #4428
2021-03-05 15:13:14 -08:00
nossr50
31076e6ba9 Change PlayerFishEvent priority to HIGH instead of HIGHEST 2021-03-05 14:54:11 -08:00
nossr50
b59d1afdb4 Vanished players are treated as if they are offline for inspect command
Fixed #4444
2021-03-05 14:48:05 -08:00
nossr50
72264205d0 Update player names immediately when change is detected 2021-03-05 14:27:53 -08:00
nossr50
a425ebcd10 Add magma blocks to the things wolves avoid 2021-03-05 14:03:31 -08:00
nossr50
5baccd626f 2.1.176 - Small hotfix before bringing down endgame 2021-03-04 15:17:48 -08:00
Riley Park
37610f76ce Deploy to repository 2021-03-03 21:56:44 -08:00
nossr50
4bd9ee0aa5 Never expect bukkit API to be intuitive 2021-03-02 15:17:55 -08:00
nossr50
e38bc14e86 Sometimes I hate being dyslexic, fixing illegal stack sizes in smelting.. again 2021-03-02 13:54:20 -08:00
nossr50
afd2b50900 Remove unecessary comment 2021-03-02 11:24:44 -08:00
nossr50
ac618cf48a Add another measure to stop item stacks from becoming illegal sizes from double smelt 2021-03-02 11:15:52 -08:00
nossr50
4eecd34494 2.1.175 - Hotfix 2021-02-26 17:48:20 -08:00
nossr50
713b0619c3 You can now disable Green Thumb for specific crops (the auto replanting) in config.yml 2021-02-26 16:18:15 -08:00
nossr50
735a90fb35 Fix arrow dupe bug
Fixes #4430
2021-02-26 16:06:13 -08:00
nossr50
82b0304091 Don't set smelt stacks to above item's max stack size 2021-02-26 15:28:50 -08:00
TheBusyBiscuit
06e38c991a Updated dependencies (also fixes #4404) (#4440) 2021-02-24 18:03:07 -08:00
w1tcherrr
ef1a8f8194 Updated locale_de.properties language file (german) (#4423)
* Fixed various grammatical and spelling mistakes. Made some adjustments to the colour scheme to make the design more consistent.

* Changed mistakes in UTF-8 encoding
2021-02-23 12:29:24 -08:00
TheBusyBiscuit
db2c0e89e7 Fixed #4438 and also normalized some stuff (#4439) 2021-02-23 12:28:45 -08:00
TheBusyBiscuit
b8932802b7 Added Maven workflow to validate pull requests and commits (#4432)
* Create maven workflow

* Also run it when the workflow file was modified

* Added local Maven cache

* I know how to count 👀
2021-02-18 09:58:25 -08:00
t00thpick1
f9144e624a Prepare for negative Y values 2021-02-12 17:18:52 -05:00
nossr50
085c8dbf68 Dev mode 2021-02-03 15:19:34 -08:00
nossr50
890d270147 2.1.174 2021-02-03 15:14:18 -08:00
nossr50
369b34406e Green Thumb (Plants) now fires a SubSkillBlockEvent 2021-02-03 15:08:21 -08:00
nossr50
1c1abe9a2a Added SubSkillBlockEvent & GreenThumb + ShroomThumb now fire it 2021-02-03 15:01:32 -08:00
nossr50
2b4c84b1e8 Update changelog 2021-02-03 14:47:33 -08:00
Daniil
6eb894ba3a Update locale_ru.properties (#4411)
Almost fully re-translated and updated to latest versions
2021-02-02 14:58:13 -08:00
Elikill58
6ef0a36cb0 Translate missing messages into french (#4418) 2021-02-02 14:57:05 -08:00
nossr50
e63ce103a2 changelog adjustments 2021-01-26 16:56:02 -08:00
nossr50
68c7de16a8 Really should rewrite this whole thing at a later date 2021-01-26 16:00:08 -08:00
nossr50
9a5b1406b3 dev mode 2021-01-26 15:55:48 -08:00
András Marczinkó
e584697b69 Update locale_hu_HU.properties (#4409) 2021-01-26 15:53:57 -08:00
snake
46d69f2108 Replace old and wrong color codes with the correct color codes (#4408) 2021-01-26 15:53:30 -08:00
nossr50
998495f268 2.1.173 2021-01-25 17:27:37 -08:00
nossr50
b94b14a06c Add missing adventure-key library 2021-01-25 17:23:46 -08:00
nossr50
d9740bdfb8 kyori dependency 4.3.0 to 4.4.0 2021-01-25 15:09:51 -08:00
nossr50
85bf33fca0 Less XP orbs during Tree Feller + Knock on Wood Rank 2 2021-01-25 15:06:39 -08:00
nossr50
cf21a5a163 Fishing no longer damages rod or drains hunger 2021-01-25 15:02:58 -08:00
nossr50
ec35efbf1b Merge remote-tracking branch 'origin/master' 2021-01-25 14:38:06 -08:00
nossr50
c6d700c5a7 Fixed Luck permission showing incorrect percentages to players using commands
Fixed #4405
2021-01-25 14:37:23 -08:00
steve4744
a225d604ef only add/remove scoreboards when teleporting if scoreboards are enabled (#4400) 2021-01-25 14:14:35 -08:00
snake
52ac1cc522 Update ja_jp locale (#4406) 2021-01-25 14:12:57 -08:00
nossr50
bf9bb6ffd8 2.1.172 2021-01-21 15:38:31 -08:00
nossr50
27ae7ae1a7 Add Power Level broadcasts
Fixes #4388
2021-01-21 15:27:50 -08:00
nossr50
a85fd024b2 Have correct bStats data point to a new id 2021-01-21 15:00:42 -08:00
nossr50
6e63007068 Update changelog 2021-01-21 14:58:29 -08:00
nossr50
6c5eb72ab4 Fixed an error in bstats where Retro Mode was reported as Standard mode and vice versa
I might be the most dyslexic person ever
2021-01-21 14:56:45 -08:00
TheBusyBiscuit
67f29d52b3 Updated bStats (#4384)
Thank you
2021-01-21 14:54:51 -08:00
nossr50
8181743114 Fix compile issue 2021-01-21 14:44:13 -08:00
nossr50
f43f3a7fb1 Make ACF aware of the permission nodes for the commands it handles
Fixes #4396
2021-01-21 14:37:59 -08:00
nossr50
4b4643f510 Message about missing permissions on certain commands no longer hard coded 2021-01-21 14:34:58 -08:00
nossr50
1b5dd86796 Use locale instead of hard coded message for pending load on certain commands
Fixes #4391
2021-01-21 14:33:39 -08:00
nossr50
80a1b3949e Add permission node 'mcmmo.broadcast.levelup' for level up broadcasts 2021-01-21 14:31:11 -08:00
nossr50
4fea5438fe Move some permissions closer to the top 2021-01-21 14:26:08 -08:00
nossr50
ac57615383 Add setting to turn off knock on wood XP orb drops for Tree Feller 2021-01-21 14:19:50 -08:00
nossr50
c44e280773 oh wait cat was not really his nickname... 2021-01-21 14:08:14 -08:00
nossr50
2835c5fc5e update changelog 2021-01-21 14:07:58 -08:00
Shane Freeder
bd9794e744 Support calling SkillActivationPerkEvent off the main thread
This event was never considered as to if it would be called off the main thread,
this event should NOT be designed to signify that a skill activation is occuring,
just providing a means to manipulate those values by other plugins, etc
2021-01-21 12:09:26 +00:00
nossr50
f72497532f Fists should be fists 2021-01-11 10:34:14 -08:00
TheBusyBiscuit
fecaef8d96 Updated german translations (#4375)
* Updated german translations

* Fixed line endings

* Missed one
2021-01-11 10:30:08 -08:00
nossr50
cbbfcf655a 2.1.171 2021-01-07 13:48:15 -08:00
nossr50
c64e693861 Less capitals in broadcast msg 2021-01-07 13:39:28 -08:00
nossr50
ade6fb2c1d Arrow dupe fix 2021-01-07 13:36:54 -08:00
nossr50
f38d92497a Add broadcasting when players reach certain level milestones (defaults to every 100 levels) 2021-01-07 13:33:12 -08:00
nossr50
801c2c83e2 update pom and changelog 2021-01-06 10:25:58 -08:00
Enderaoe
3cd09b886f Issue #4343 Axe can replant Cocoa (#4373) 2021-01-06 10:24:16 -08:00
nossr50
ba7b6826b4 2.1.170 - papi fix 2021-01-05 15:25:39 -08:00
nossr50
0b8f4b4733 2.1.169 2021-01-05 12:20:33 -08:00
nossr50
1c9592aba3 Always emulate lure bonus to avoid vanilla bugs
Fixes #4359
2021-01-05 12:16:16 -08:00
nossr50
7bc01571ee Fix mctop on non-en_US locale
Fixes #4372
2021-01-05 12:13:44 -08:00
nossr50
dd07bcafc6 Disable random testing for now 2021-01-05 12:12:49 -08:00
nossr50
888205fd89 Memory leak fix for arrow metadata 2021-01-05 12:04:48 -08:00
nossr50
7ea6809fd3 2.1.168 2021-01-03 12:22:58 -08:00
nossr50
7931a095fe Add some tests for com.gmail.nossr50.util.random classes 2021-01-03 12:21:32 -08:00
nossr50
867d222062 Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2021-01-03 09:53:12 -08:00
t00thpick1
a57e6d3bbe Add unit test for BlockLocationHistory
Move ChunkStoreTest to correct package
2021-01-02 20:53:25 -05:00
t00thpick1
9e2d5aada8 Whitespace fix 2021-01-02 20:39:39 -05:00
t00thpick1
4aa17e61fc More efficient acrobatics location memory class 2021-01-02 20:39:39 -05:00
nossr50
597eb7f8dd Tweaks to the random chance classes 2021-01-02 16:39:26 -08:00
nossr50
4fa3d913bf More annotations for blockmeta.. again 2021-01-02 16:15:04 -08:00
t00thpick1
00a6d52717 Refactor region file loading for better nullability analysis 2021-01-02 18:57:51 -05:00
nossr50
26ef4cc411 More nullability annotations 2021-01-02 15:55:37 -08:00
nossr50
05f07c174b Change readChunkStore to Nullable 2021-01-02 15:30:00 -08:00
nossr50
eff016c0a6 More nullability in blockmeta classes 2021-01-02 15:27:51 -08:00
nossr50
7ea3a2bf07 Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2021-01-02 15:01:35 -08:00
nossr50
cddf619518 dev mode 2021-01-02 15:01:29 -08:00
t00thpick1
5b41b04777 Use @NotNull in methods rather than @Nullable
Separate safe external methods from internal only methods
Remove unnecessary methods
2021-01-02 17:29:15 -05:00
t00thpick1
10694042e9 Move legacy Serializable usage into a subclass. 2021-01-02 16:54:11 -05:00
nossr50
d08c9391b0 Add nullability annotations to blockmeta 2021-01-02 13:36:59 -08:00
nossr50
a39c7420b9 Add relocation for Kyori's examination library 2021-01-02 13:32:30 -08:00
t00thpick1
e0d85f842b Fix exception thrown when plants fake grow at max world height. 2021-01-02 11:18:32 -05:00
nossr50
0fa1d822d4 2.1.167 2021-01-01 22:16:52 -08:00
nossr50
bec54d93ac Fix dupe bug 2021-01-01 22:15:44 -08:00
Shane Freeder
1408065768 update changelog 2021-01-02 01:07:15 +00:00
Shane Freeder
67a4b6c7c1 Experience PreGain event 2021-01-02 01:05:28 +00:00
Shane Freeder
556515eefd Add SkillActivationPerkEvent 2021-01-02 01:05:27 +00:00
nossr50
0466a28a5f Update changelog 2021-01-01 14:08:52 -08:00
nossr50
9180879164 2.1.166 2021-01-01 14:06:15 -08:00
nossr50
fbecbc167a Optimizations and potentially fixing a ConcurrentModificationException involving the TransientEntityTracker
Fixes #4368
2021-01-01 14:04:36 -08:00
nossr50
959d1e4a05 Remove music discs from the default loot table 2021-01-01 12:46:08 -08:00
nossr50
0d4e1b3ba6 update changes 2020-12-31 17:13:56 -08:00
nossr50
a8d81a2080 2.1.165 2020-12-31 17:02:38 -08:00
nossr50
42d3dc3925 Master Angler now mentions it works better with a boat in its hover tip 2020-12-31 16:58:46 -08:00
nossr50
e4af53a535 Use boolean over Boolean 2020-12-31 16:46:49 -08:00
nossr50
9ba8af9f6e Forgot to register the intended tool set 2020-12-31 16:42:37 -08:00
nossr50
56b376eb54 SuperBreaker will always activate if the fastest tool for the block is a PickAxe
Fixes #4362
2020-12-31 16:41:08 -08:00
nossr50
c408c7d057 avoid concurrent exceptions on TransientEntityTracker 2020-12-31 16:26:37 -08:00
nossr50
c05c8e1b1d Fix init player in TransientyEntityTracker 2020-12-31 16:08:23 -08:00
nossr50
3f6de1c4ba Fix giving double treasures if the setting to give extra fish is on
Fixes #4363
2020-12-31 15:53:01 -08:00
nossr50
8ee405fbfd Ignore "fake player" npcs in EntityPickupItemEvent 2020-12-31 15:49:32 -08:00
nossr50
2664ae4bd6 Optimize ChunkUnloadEvent & Partial rewrite to COTW entity tracking + some tweaks to COTW entity removal 2020-12-31 15:25:21 -08:00
nossr50
aed4cb87be Fix enchanted books not being created with the proper data 2020-12-31 13:21:55 -08:00
nossr50
006a7bf277 Add back missing cooldown locale message
Fixes #4361
2020-12-30 15:41:14 -08:00
nossr50
d0d05a33f8 update changelog 2020-12-30 15:30:46 -08:00
nossr50
01f31e76f5 new chunkstore
Co-authored-by: t00thpick1 <t00thpick1dirko@gmail.com>
2020-12-30 15:24:21 -08:00
nossr50
7802d54ebd 2.1.164
Closes #4358 #4342 #3812 #3643 #3540
2020-12-29 13:47:40 -08:00
nossr50
dd3d324415 update notes and default fishing treasures 2020-12-29 13:38:03 -08:00
nossr50
8ff345af38 fix array out of bounds 2020-12-29 13:20:10 -08:00
nossr50
bab13f32e7 update notes 2020-12-29 13:15:15 -08:00
nossr50
3c9c8556dd Allow vanilla block interaction with sneak if the block is set to be a mcMMO repair/salvage anvil 2020-12-29 12:58:39 -08:00
nossr50
d9f98b1aa9 Fix a bug where books weren't registered + tweaked how treasures were loaded 2020-12-29 12:39:06 -08:00
nossr50
0f4455d5a8 remove unused settings from fishing treasures and add enchantment section for mythic 2020-12-29 12:12:03 -08:00
nossr50
bdee0278a5 Fix Fishing using values from the wrong config 2020-12-29 12:03:57 -08:00
nossr50
ac31a3dc0e Fixing start up errors when loading treasures.yml 2020-12-28 17:37:14 -08:00
nossr50
2162c81b21 Add semi-important note to changelog 2020-12-28 17:00:50 -08:00
nossr50
8b62c0b693 Better message for items not found in current version of MC from Fishing Config 2020-12-28 16:58:57 -08:00
nossr50
31e0f1e4da less verbose enchantment book log 2020-12-28 16:47:33 -08:00
nossr50
14a6e5c603 Comment out whitelist in fishing_treasures.yml 2020-12-28 16:45:16 -08:00
nossr50
652a9519c1 Move fishing treasues to new file fishing_treasures.yml, replace Records rarity with Mythic, and allow for Enchanted_Book in the treasures list with new optional whitelist/blacklist parameters
read the changelog for information about this
2020-12-28 16:42:00 -08:00
nossr50
31134b38de updated changelog 2020-12-28 13:00:47 -08:00
nossr50
a4ef322fa5 Add ExploitFix.PreventPluginNPCInteraction to experience.yml
Read the changelog for why
2020-12-28 12:58:03 -08:00
nossr50
e8d51f42f3 dev mode 2020-12-28 12:44:21 -08:00
nossr50
4d386f2e61 update changelog 2020-12-16 16:43:08 -08:00
nossr50
1046007b7a 2.1.163 2020-12-16 16:41:24 -08:00
nossr50
2de52c7955 register new chunk listener 2020-12-16 16:30:05 -08:00
nossr50
8c52884ac6 Remove COTW entities on chunk unload
Fixes #4289
2020-12-16 16:29:05 -08:00
nossr50
22a738bace mcMMO no longer throws errors on below 0 xp gains
Fixes #4346
2020-12-16 16:15:19 -08:00
nossr50
dfc2691cd6 dev mode and changelog update 2020-12-16 15:55:54 -08:00
Robert Alan Chapton
16aa6d65ac Update McMMOUrl.java
fixed translate link, thanks chew
2020-12-16 12:46:17 -08:00
nossr50
58e634e53a dev mode 2020-12-14 15:22:09 -08:00
nossr50
bb37edaa7f update changelog 2020-12-14 15:21:48 -08:00
Wolf2323
0e09ac397d fix BrewingStand inventory is updated immediately instead of after firing the event. Now the event can be canceled correct. (#4351) 2020-12-10 13:24:08 -08:00
nossr50
c4072ee90d 2.1.161 - Messages fixed! 2020-12-09 19:58:20 -08:00
nossr50
b7cf84299a add missing adventure modules 2020-12-09 19:51:57 -08:00
nossr50
439a69cc5b normalize pom 2020-12-09 19:16:58 -08:00
nossr50
a114886454 2.1.160 2020-12-09 15:36:54 -08:00
nossr50
7f213ee305 exploit fix 2020-12-09 15:34:32 -08:00
nossr50
958fb6f044 Silenced a mostly harmless error that can happen when using plugins like crazyenchantments 2020-12-01 13:08:33 -08:00
nossr50
dacd846fe7 2.1.159 2020-11-27 16:59:37 -08:00
nossr50
0ce316e428 update adventure (used for chat) 2020-11-27 16:55:40 -08:00
nossr50
bcd260d9c1 Memory leak fix 2020-11-27 16:26:24 -08:00
nossr50
ab276ffe33 2.1.158 2020-11-16 16:55:55 -08:00
nossr50
c54161b7d1 update changes 2020-11-16 16:49:49 -08:00
nossr50
cf86e79e87 Updated changelog 2020-11-16 16:24:27 -08:00
nossr50
bc53714ac8 URL style adjust 2020-11-16 16:00:01 -08:00
nossr50
db8086d6ad Allow URLs in chat again 2020-11-16 14:56:48 -08:00
nossr50
915855363d Update changelog 2020-11-16 14:43:53 -08:00
Momshroom
c22a65f9f3 Adding crossbows, shields, elytra, and tridents to default repair.vanilla.yml and fixing minor typo. (#4308)
* Changed comment over netherite items to say "Netherite repairables" instead of "Diamond repairables"
Added Crossbow to string repairables
Added Shield to wood repairables, with oak planks as material
Added Elytra and Trident to Other repairables, using phantom membrane and prismarine crystals respectively.

* Changed comment over netherite items to say "Netherite repairables" instead of "Diamond repairables"
Added Crossbow to string repairables
Added Shield to wood repairables, with oak planks as material
Added Elytra and Trident to Other repairables, using phantom membrane and prismarine crystals respectively.
Added warped fungus on a stick as a string repairable.

Signed-off-by: Momshroom <Momshroom@gmail.com>

* Added warped fungus on a stick as a string repairable.

Signed-off-by: Momshroom <Momshroom@gmail.com>
2020-11-16 14:42:24 -08:00
nossr50
128ba88e64 Update changelog 2020-11-16 14:39:33 -08:00
Tim
4fd8f6d647 Update locale_nl.properties (#4336)
Fixed small translation errors
2020-11-16 14:39:07 -08:00
nossr50
cfcdcd1676 Fix Lure above 3 breaking fishing 2020-11-16 14:36:59 -08:00
nossr50
f346d3b758 2.1.157 2020-11-11 16:50:21 -08:00
nossr50
477d6932cd 2.1.156 2020-11-10 15:21:45 -08:00
nossr50
b31e1e533b New skill 'Knock On Wood', changes to axe readying messages 2020-11-10 15:17:52 -08:00
nossr50
8f6819edc5 Fix GT replant sometimes planting floating plants 2020-11-10 13:17:58 -08:00
nossr50
7887232d93 Update locales 2020-11-10 12:19:23 -08:00
nossr50
b0afdccfa5 skillranks.yml will automatically fix itself if it finds certain issues 2020-11-10 12:05:42 -08:00
nossr50
592851e80b Throw errors for child skill leaderboard requests 2020-11-10 11:22:02 -08:00
nossr50
c9b950d0c8 Fix chat.yml chat channel toggles 2020-11-10 11:07:07 -08:00
nossr50
d9e99b08db changelog stuff 2020-11-09 16:56:02 -08:00
nossr50
06334da7f8 2.1.155 2020-11-09 16:47:34 -08:00
nossr50
ba7e235e64 Master Angler reworked 2020-11-09 16:46:52 -08:00
nossr50
f4f6abd9d5 Fix Spec Arrow awarding too much XP 2020-11-09 13:54:01 -08:00
nossr50
da06d5c075 Fixed a bug where Spectral arrow awarded too much XP 2020-11-09 13:53:17 -08:00
nossr50
34d9f70ac0 Fixed a bug where party members didn't have properly colored names, added some optimization and removed some unnecessary API 2020-11-09 13:19:54 -08:00
nossr50
8c5123f494 2.1.154 2020-11-06 15:16:52 -08:00
nossr50
4abf64f625 Full hex color support in admin/party chat 2020-11-06 15:16:26 -08:00
nossr50
1383457eba Update javadocs 2020-11-06 14:16:24 -08:00
nossr50
bd48680125 Use legacy serializer instead 2020-11-06 14:13:46 -08:00
nossr50
0f15f234b5 Update changelog 2020-11-06 14:05:40 -08:00
nossr50
5b6a57d7a8 Tree Feller drops saplings again 2020-11-06 14:04:40 -08:00
nossr50
a4fd632d53 Fix Hex-Colored names in parties/admin chat 2020-11-06 14:01:07 -08:00
nossr50
b2cdffe965 2.1.153 2020-11-04 12:14:55 -08:00
nossr50
15578bb84e Some refactoring 2020-11-04 12:12:51 -08:00
nossr50
329de942b4 Update changelog 2020-11-04 12:06:30 -08:00
nossr50
96ed228d7c Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2020-11-04 12:05:45 -08:00
nossr50
cb9c7acceb Fixing a major bug with sub-skills not being shown when using commands 2020-11-04 12:05:29 -08:00
Vlammar
95c9daebe1 Update locale_fr.properties (#4324)
Fixed a small translation error
2020-11-04 09:59:56 -08:00
nossr50
5afaeb40a8 2.1.152 2020-11-02 15:12:29 -08:00
nossr50
1f3a2baa6b Some BlockMultiPlaceEvent optimization 2020-11-02 14:10:17 -08:00
nossr50
094d57bce0 more changelog tweaks 2020-11-02 14:06:02 -08:00
nossr50
28b6a457f2 Add back the pc and ac command aliases 2020-11-02 14:03:58 -08:00
nossr50
a945e2e6b3 update changelog 2020-11-02 14:01:45 -08:00
TheBusyBiscuit
01ebba4443 Two small fixes (#4321)
* Fixed armor counting in BleedTimerTask

* Key instead of Name for Piercing
2020-11-02 13:57:53 -08:00
nossr50
65fba3e20e Expanding McMMOItemSpawnEvent & Fixing a bug with Tree Feller drops 2020-11-02 13:51:43 -08:00
András Marczinkó
9529bbf898 Update locale_hu_HU.properties (#4322)
* Update locale_hu_HU.properties
2020-11-02 11:56:24 -08:00
nossr50
523d10ef29 dev mode 2.1.152-snapshot 2020-11-02 11:30:35 -08:00
nossr50
bae9783123 2.1.151 2020-10-29 14:38:09 -07:00
nossr50
5a8e607a39 party leader has unique chat style 2020-10-29 14:30:29 -07:00
nossr50
1f02d9a5a0 online leaders will be gold 2020-10-29 14:13:39 -07:00
nossr50
4e8f49db5b avoid null party names 2020-10-29 14:06:34 -07:00
nossr50
c6ecf30d1f new party member list format/style 2020-10-29 13:54:12 -07:00
nossr50
449407439a Added 'Chat.Channels.Party.Spies.Automatically_Enable_Spying' which allows chat spys to join servers with spying toggled on instead of off
its a QOL feature for people who are always spying on chat
2020-10-29 13:12:26 -07:00
nossr50
8856d2b071 move chat config options from config.yml -> chat.yml 2020-10-29 13:06:22 -07:00
nossr50
4bac586253 Add missing party chat permission check to the party chat command 2020-10-29 12:20:52 -07:00
nossr50
ca93dc02df Fix missing party chat permission node check 2020-10-28 10:53:47 -07:00
nossr50
8aff138954 import cleanup 2020-10-27 13:37:08 -07:00
nossr50
81bf0935e1 changelog tweaks 2020-10-27 13:35:01 -07:00
nossr50
3169cf9225 2.1.150 2020-10-27 13:19:00 -07:00
nossr50
2f506b72bb Better party chat logging in console, some style changes to admin/party chat as well 2020-10-27 13:09:01 -07:00
nossr50
d183d1217c Players & Console can now use color codes in party or admin chat (new permission node mcmmo.chat.colors) 2020-10-27 11:55:59 -07:00
nossr50
1d55c4c2bc fix message spam bug 2020-10-27 11:08:50 -07:00
nossr50
05f2763311 You can now silence mmoedit, addlevels, and addxp with -s 2020-10-27 11:03:47 -07:00
nossr50
33287b650f Add NMS definition for 1.16.4 2020-10-26 16:52:43 -07:00
nossr50
e6e9fdca31 Fix ArrayIndexOutOfBoundsException for Skill Reset command 2020-10-26 16:42:56 -07:00
nossr50
8372fae6f8 remove some unwanted code comments 2020-10-26 16:34:31 -07:00
nossr50
f976302cf0 Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2020-10-26 16:33:15 -07:00
nossr50
749c83ac59 Complete rewrite of Admin & Party chat code
There are some API breaks as a result of these rewrites, I tried to keep it minimal, but I'm sure some plugins will need to update.
2020-10-26 16:31:02 -07:00
nossr50
cf6a2e9e97 Update all locale files to use & codes instead of [[color]] codes 2020-10-26 16:04:56 -07:00
TheBusyBiscuit
8240cff0d5 Some small optimizations (#4305)
some improvements to itemmeta calls and misc changes
2020-10-23 08:21:47 -07:00
怠惰
7e057792f5 Fix locale (#4275)
"1 is needed" is obvious mistranslation.
2020-10-22 13:56:36 -07:00
Patrick
5f0c4b1dd3 Update locale_pt_BR.properties (#4276)
add time left to use the skill again
2020-10-22 13:55:48 -07:00
nossr50
8c21891e6f Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2020-10-14 12:14:44 -07:00
nossr50
23f836de40 dev mode + changelog update 2020-10-14 12:14:32 -07:00
TheBusyBiscuit
f29370a1c8 Added Fake Event check (#4296)
Thanks you @TheBusyBiscuit
2020-10-14 12:11:15 -07:00
nossr50
8d6d0cf254 Spelling mistake in changelog 2020-10-13 13:22:36 -07:00
nossr50
e90f8f5b82 Slightly more readable changelog 2020-10-12 13:06:57 -07:00
nossr50
72feacfdfe update changelog 2020-10-12 13:01:53 -07:00
nossr50
508c256aa4 2.1.149 2020-10-12 12:57:15 -07:00
nossr50
bc71f586d7 Messy fix for now, code cleanup will happen later 2020-10-12 12:50:18 -07:00
nossr50
29722511b7 new config persistentdata.yml 2020-10-12 12:40:54 -07:00
nossr50
916eb76553 2.1.148 2020-10-08 19:30:36 -07:00
nossr50
80f910fc67 Add setting for enable/disable triple drops on super breaker 2020-10-08 19:21:39 -07:00
nossr50
d4699c0e20 Add player tamed experience multiplier 2020-10-08 19:14:44 -07:00
nossr50
80c89fe1e5 Revert this change for now 2020-10-08 19:07:42 -07:00
nossr50
f5294387b0 oopsy 2020-10-08 16:34:59 -07:00
nossr50
20c69b63af Memory leak fixes, optimizations, and persistence 2020-10-08 15:25:40 -07:00
nossr50
0767e62965 Only ignore 0 dmg if specific plugins are detected 2020-10-05 14:52:49 -07:00
nossr50
a6586e07cc final damage values of 0 are only ignored in certain circumstances, fixes a few bugs 2020-10-05 14:14:49 -07:00
nossr50
5d022b6f7c adding new and required kyori includes 2020-10-02 13:09:38 -07:00
nossr50
ee17707c6c Alchemy progression through ranks improved 2020-09-30 13:12:28 -07:00
nossr50
c675c36601 adventure api update 2020-09-30 11:34:01 -07:00
nossr50
4005c21810 2.1.147 2020-09-28 17:36:33 -07:00
nossr50
8451f84083 dev mode 2020-09-25 11:36:42 -07:00
nossr50
adbcf11c15 2.1.146 2020-09-25 11:01:47 -07:00
nossr50
6f99940540 Add missing includes 2020-09-25 10:40:26 -07:00
Riley Park
02fe8addb7 adventure 2020-09-24 17:57:04 -07:00
nossr50
0b20fc2c16 Some tweaks to tracking blocks as unnatural 2020-09-21 21:36:24 -07:00
nossr50
3fd5cd03ee Blocks that have double drops enabled are also worth marking 2020-09-21 21:29:21 -07:00
nossr50
959a74b139 Temporarily mark debarked wood as unnatural (will undo later) 2020-09-21 21:27:17 -07:00
nossr50
f496d795fb Always track blocks in BlockMultiPlaceEvent 2020-09-21 21:23:10 -07:00
nossr50
d4ab829812 Mark blocks always in BlockPlaceEvent 2020-09-21 21:20:53 -07:00
nossr50
3badc26806 Hardcore mode won't bring players below level threshold anymore 2020-09-16 20:09:59 -07:00
nossr50
621ccfed34 minor nms tweak 2020-09-08 19:38:35 -07:00
nossr50
2810d36e08 2.1.145 2020-08-26 10:45:53 -07:00
nossr50
973279cdb7 Revert listener behaviour for PlayerInteractEvent 2020-08-26 10:26:50 -07:00
nossr50
480f9afa80 2.1.144 2020-08-25 16:49:50 -07:00
nossr50
419a810a1e Steel Arm Style can now be customized in advanced.yml 2020-08-25 16:28:21 -07:00
nossr50
e4c5a3b8ee two deflect bugs down 2020-08-25 16:14:08 -07:00
nossr50
56abad5360 Fixed a bug where Roll didn't award XP at great heights 2020-08-25 14:53:06 -07:00
nossr50
bfa092a67c add fuel efficiency info for mmodebug 2020-08-25 14:33:31 -07:00
nossr50
e3f21195c8 Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2020-08-25 14:13:06 -07:00
nossr50
f684b09276 brain no worky today 2020-08-25 14:11:43 -07:00
nossr50
8807d6c216 Fixed a taming NPE 2020-08-25 14:11:26 -07:00
nossr50
b0e8fedf6f Fixed a taming NPE 2020-08-25 14:10:53 -07:00
András Marczinkó
b35c58ec21 Update locale_hu_HU.properties (#4264) 2020-08-20 12:46:09 -07:00
nossr50
b8a38bf975 small tweak 2020-08-18 21:16:48 -07:00
nossr50
500ab628dd 2.1.143 2020-08-18 21:11:15 -07:00
nossr50
1feee7f312 1.13.2 fix round 3.. or 4 2020-08-18 20:38:56 -07:00
nossr50
7ea9ec5c2f Another 1.13.2 fix 2020-08-18 20:28:09 -07:00
nossr50
e5f1738168 1.13.2 related bugfixes for the new item tracking 2020-08-18 20:28:02 -07:00
nossr50
557cfe3944 Some bugfixes to the new ability tool tracking 2020-08-18 19:47:15 -07:00
nossr50
a7ded7e982 super boosted items are now tracked differently 2020-08-18 18:41:31 -07:00
nossr50
59f52f6e7e 2.1.142 2020-08-17 23:36:47 -07:00
nossr50
c6b2cba007 Reworked Iron Arm Style into Steel Arm Style which scales over 20 ranks 2020-08-17 23:32:13 -07:00
Frank van der Heijden
dca2661ccb Don't set double drop if result is already a full stack (#4263)
Thanks, merging because I can't think of anything bad that would result from this change.
2020-08-17 14:21:09 -07:00
nossr50
a2f2614b10 2.1.141 2020-08-11 16:13:28 -07:00
nossr50
e890d4bae6 2.1.140 2020-08-08 21:16:06 -07:00
nossr50
3a035e234a Scoreboards fixes 2020-08-08 15:56:53 -07:00
nossr50
771ed9a8b4 oopsie 2020-08-07 11:50:44 -07:00
nossr50
d6ff1348eb Polish locale woodcutting rename 2020-08-07 11:49:12 -07:00
nossr50
8df15a4e55 dev mode 2020-08-06 19:01:36 -07:00
nossr50
4a4fd9fb75 2.1.139 2020-08-06 18:50:24 -07:00
emanondev
38017cabe7 fixed /mmoinfo roll (#4088)
* acrobatics roll mmoinfo fixes

LocaleLoader#getString() accepts Object arrays no need to call getStats twice

Max skill level is now configurable and so halfMaxSkillValue is now a variable which should be used on locale too instead of "50"

* Updated locale_it

Acrobatics.SubSkill.Roll.Mechanics supports half level variable instead of static level 50

* Updated locale_en_US

Acrobatics.SubSkill.Roll.Mechanics supports half level variable instead of static level 50

* Updated Locale it

fixed value
2020-08-06 18:46:12 -07:00
Flannery Lue Moore
375292c0b3 PR for gilded blackstone and nether gold ore to the mining skill, and nether gold ore to the smelting skill. (#4253)
* Added gilded blackstone and nether gold ore.

* Added nether gold ore to smelting xp.
2020-08-06 15:22:48 -07:00
t00thpick1
01f111f78d Switch to countdown latch so we don't need to bother with synchronization blocks. Fixes #4248 2020-08-02 12:56:27 -04:00
nossr50
d1b7e88b7e Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2020-07-31 20:47:01 -07:00
nossr50
c85ca2e2ca Dev mode 2020-07-31 20:46:52 -07:00
Robert Alan Chapton
7828437414 Merge pull request #4235 from kn-km/patch-1
Fix McMMOPlayerSalvageCheckEvent Handling
2020-07-31 20:43:44 -07:00
Robert Alan Chapton
0dba450b5a Merge pull request #4236 from kn-km/patch-2
Fix McMMOPlayerRepairCheckEvent Handling
2020-07-31 20:43:01 -07:00
nossr50
d490f4fd60 2.1.138 2020-07-30 16:28:47 -07:00
nossr50
a05c015732 Fix Netherite not working for certain skills (like Skull Splitter) 2020-07-30 16:12:50 -07:00
nossr50
9f9518eea0 2.1.137 - avoid npe on armor iterating 2020-07-30 13:05:19 -07:00
nossr50
9266a54fce debug tweaks 2020-07-30 11:17:08 -07:00
nossr50
270298c265 2.1.136 2020-07-29 07:41:47 -07:00
nossr50
38122d8f17 Furnace ownership tweaks 2020-07-28 21:56:51 -07:00
nossr50
274a41f530 update changelog 2020-07-27 21:39:26 -07:00
nossr50
8e3d203594 only cleanup furnaces without a job 2020-07-27 21:34:47 -07:00
nossr50
4169dceca8 debug tweak for furnaces 2020-07-27 21:20:03 -07:00
nossr50
567a5461e1 Add some more mmodebug related to furnaces 2020-07-27 21:19:25 -07:00
Robert Alan Chapton
70c934fa69 Merge pull request #4233 from SrBedrock/patch-1
Update CommandRegistrationManager.java
2020-07-27 20:26:26 -07:00
kn-km
ed9521d4a0 Fix #4234 2020-07-27 23:18:55 +08:00
kn-km
5d294d6dc3 Fix #4234 2020-07-27 22:55:44 +08:00
srbedrock
2eb924d433 Update CommandRegistrationManager.java 2020-07-26 22:04:43 -03:00
srbedrock
c97dc4181d Update CommandRegistrationManager.java 2020-07-26 22:01:30 -03:00
nossr50
a28d1cd537 2.1.135 2020-07-25 14:27:31 -07:00
Robert Alan Chapton
65a95addb9 Merge pull request #4230 from Ineusia/AbilityNotificatioons
Add option to disable other-player ability notifications
2020-07-25 14:26:08 -07:00
Robert Alan Chapton
81b31e49b8 Merge pull request #4231 from Ineusia/issue-4221
Use localized names for SuperAbility names
2020-07-25 14:25:36 -07:00
Ineusia
353fb80957 Use localized names for SuperAbility names 2020-07-25 12:13:54 -05:00
Ineusia
5298472c90 Add option to disable other-player ability notifications 2020-07-25 11:10:01 -05:00
nossr50
36af6d2478 update changes 2020-07-25 08:40:20 -07:00
Robert Alan Chapton
1df2225aa2 Merge pull request #4229 from Ineusia/issue-4224
Handle Fishing Event even if FishingExploitFix is set to false
2020-07-25 08:38:04 -07:00
nossr50
3ae1b5e987 Don't simulate block breaks when assigning furnace ownership 2020-07-25 08:37:19 -07:00
Ineusia
054c023330 Handle Fishing Event even if FishingExploitFix is set to false 2020-07-25 10:36:34 -05:00
nossr50
2910240942 2.1.134 2020-07-23 21:16:58 -07:00
nossr50
3ed0bd6be4 Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2020-07-23 20:59:56 -07:00
nossr50
35cde870ff Reworked a lot of stuff to do with Smelting 2020-07-23 20:59:34 -07:00
Robert Alan Chapton
efcb2d0c14 Merge pull request #4226 from Durburz/master
Fix brewing stand not consuming items
2020-07-22 13:39:41 -07:00
Ulrich Fink
16d7b51497 Fix brewing stand not consuming items
Fixes #4225
Negation in commit fdd951f1f1 is faulty.
2020-07-21 22:49:32 +02:00
nossr50
f6c7049cac Furnaces can now change owners during server lifespan for Smelting XP 2020-07-13 13:16:47 -07:00
nossr50
fdd951f1f1 Second Smelt makes use of its own section in Bonus Drops in config.yml
Co-authored-by: t00thpick1 <t00thpick1dirko@gmail.com>
2020-07-13 12:31:30 -07:00
nossr50
7eae59a0b3 Misc code fixes 2020-07-13 11:39:03 -07:00
nossr50
428c093ae4 UUID updater changes + locale fixes
Co-authored-by: t00thpick1 <t00thpick1dirko@gmail.com>
2020-07-13 11:18:16 -07:00
nossr50
ded7fd5bdf Potion NPE fix 2020-07-13 10:53:36 -07:00
nossr50
1d1736481c Dev mode 2020-07-13 10:19:04 -07:00
nossr50
c918f2b72f 2.1.133 2020-07-13 07:43:03 -07:00
nossr50
7eef87b2e0 Turn off unused NMS compatibility layers 2020-07-13 07:39:16 -07:00
Robert Alan Chapton
7258b0995d Merge pull request #4118 from JLLeitschuh/fix/JLL/use_https_to_resolve_dependencies
[SECURITY] Use HTTPS to resolve dependencies in Maven Build
2020-07-13 07:31:28 -07:00
nossr50
235fb937a2 Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2020-07-13 07:29:07 -07:00
nossr50
039eb0ee9e Fix array out of bounds 2020-07-13 07:28:50 -07:00
Robert Alan Chapton
99f12fe0ed Merge pull request #4195 from Draycia/master
Don't ready hand when player can't use skill
2020-07-13 07:27:33 -07:00
Robert Alan Chapton
2dfd7fd5a4 Merge pull request #4220 from FrankHeijden/fix/deathmessages
Update regex to also match colorless healthbar instances
2020-07-13 07:26:04 -07:00
Frank van der Heijden
7f1944b61d Update regex to also match colorless healthbar instances 2020-07-13 15:33:22 +02:00
Robert Alan Chapton
d83e296401 Merge pull request #4219 from Elikill58/master
Update translation to french
2020-07-09 21:01:25 -07:00
Elikill58
59552f42d7 Update french translation - end of translation 2020-07-09 23:48:19 +02:00
Elikill58
005f8c5478 Update french translation - begin with skills 2020-07-07 15:50:47 +02:00
nossr50
919907f46a 2.1.132 2020-07-03 16:02:26 -07:00
nossr50
7267b1501b Why did I use contains() :thonk: 2020-07-03 13:16:17 -07:00
nossr50
f05c4121d2 Temporary Spigot bug fix 2020-07-03 13:14:33 -07:00
nossr50
2fc1ba44d8 Oopsie 2020-07-02 21:06:19 -07:00
nossr50
900a534edb Inventory NPE fix 2020-07-02 21:04:06 -07:00
nossr50
ce03e6613f Dev mode 2020-07-02 20:53:57 -07:00
nossr50
254e1a1071 2.1.131 2020-06-30 11:51:46 -07:00
nossr50
75f404f387 Wire missing NMS 2020-06-30 11:35:36 -07:00
nossr50
420477149e Add Piglin Brute XP 2020-06-30 11:15:10 -07:00
nossr50
6d6efa3442 add to changelog 2020-06-30 10:05:35 -07:00
nossr50
78eb367b86 Repair / Salvage fixes 2020-06-30 10:03:37 -07:00
nossr50
b0ce6fb170 Missing permission nodes + missing repair XP 2020-06-30 09:35:47 -07:00
nossr50
4638f22ade Missing 1.16 bonus drop entries 2020-06-30 09:17:48 -07:00
nossr50
6dd5510cd8 dev mode 2020-06-30 07:27:52 -07:00
nossr50
ed69f843aa 2.1.130 2020-06-26 15:04:03 -07:00
nossr50
6b340838ee Use the correct default repair material for netherite gear 2020-06-26 15:00:52 -07:00
nossr50
cf78b51052 Merge branch 'master' of github.com:mcMMO-Dev/mcMMO 2020-06-26 14:45:52 -07:00
nossr50
dab255254c Automatic spelling mistake correction on repair/salvage configs for
previously misspelled netherite materials
2020-06-26 14:45:26 -07:00
nossr50
83617b73b7 Fix repair 2020-06-24 23:39:14 -07:00
Robert Alan Chapton
fba24fd910 Merge pull request #4202 from darbyjack/treefeller-changes
Implemented PlayerItemDamageEvent on TreeFeller
2020-06-22 15:32:35 -07:00
darbyjack
dd011c94c6 Implemented PlayerItemDamageEvent on TreeFeller 2020-06-22 17:10:29 -05:00
nossr50
c84c428fde dev mode 2020-06-22 03:31:00 -07:00
nossr50
7ba65499fe 2.1.129 2020-06-22 03:21:30 -07:00
nossr50
36d0df1c54 Add Redstone Dust to bonus drops 2020-06-22 03:01:28 -07:00
nossr50
41139e93f5 Tweak zoglin XP 2020-06-22 02:49:52 -07:00
nossr50
382a9a77a7 Add Bone Block mining xp 2020-06-22 02:49:26 -07:00
nossr50
c37a8e10d5 Add zoglin XP 2020-06-22 02:45:29 -07:00
nossr50
795b1ffff5 Ignore soul campfires when activating abilities 2020-06-22 02:32:45 -07:00
nossr50
369251fb6b Add shroomlight to herbalism XP tables 2020-06-22 02:30:46 -07:00
nossr50
3fe0b44ce8 Add respawn anchors to blacklist 2020-06-22 02:28:56 -07:00
nossr50
c60fbf1761 Add lodestone to ability / tool blacklists 2020-06-22 02:25:41 -07:00
nossr50
0a26f7122a Add hyphae to woodcutting xp 2020-06-22 02:23:29 -07:00
nossr50
2f650a4789 Tweak gilded blackstone XP 2020-06-22 02:19:23 -07:00
nossr50
4460d3df67 Add gilded blackstone XP 2020-06-20 22:21:27 -07:00
nossr50
d874b2df39 Add crying obsidian XP 2020-06-20 22:19:29 -07:00
nossr50
1f26d8e054 Add chiseled nether brick XP 2020-06-20 21:54:31 -07:00
nossr50
4025fd94cb Add cracked nether brick xp 2020-06-20 21:51:55 -07:00
nossr50
a159368a3d Add chain XP 2020-06-20 21:06:57 -07:00
nossr50
4b80303928 Add blackstone to mining XP 2020-06-20 21:01:49 -07:00
Draycia
23cf9edf9c Don't handle activation when player can't use skill 2020-05-27 01:17:10 -07:00
nossr50
899a0152ba Add /mmoxpbar disable 2020-05-06 09:19:17 -07:00
nossr50
f584783490 dev mode 2020-05-06 09:04:57 -07:00
nossr50
b63311596b 2.1.128 2020-05-05 20:31:49 -07:00
nossr50
dce9a3b58d More Blast Mining bugfixes 2020-05-05 20:28:37 -07:00
nossr50
ede5b3fd31 Blast Mining debris yield bugfix 2020-05-05 20:15:46 -07:00
nossr50
4a0d6bf2b7 add notes 2020-05-05 19:56:38 -07:00
nossr50
402283806d Database choice is now logged 2020-05-05 19:51:53 -07:00
nossr50
fe2b7a8d61 Add ExperienceAPI::addCombatXP 2020-05-05 19:45:56 -07:00
nossr50
15e4dbfd92 Another oopsie 2020-05-05 19:32:22 -07:00
nossr50
d1116418be whoops 2020-05-05 19:30:26 -07:00
nossr50
9f455f5a0d Fix some locale errors 2020-05-05 19:23:55 -07:00
nossr50
c5ce7bd23b Revert blast mining nerf 2020-05-05 19:19:20 -07:00
nossr50
74f8c2901d Iron Arm Rank 1 Nerf 2020-05-05 19:08:55 -07:00
nossr50
ca3509e509 Dev mode 2020-05-05 19:01:45 -07:00
nossr50
a3612b6ae3 2.1.127 2020-05-01 14:46:57 -07:00
nossr50
d023b89189 Declare p right away 2020-05-01 14:43:48 -07:00
nossr50
7114ff02e5 Fix compile issue 2020-05-01 14:38:58 -07:00
nossr50
7615ff472d Update changelog 2020-05-01 14:32:56 -07:00
Robert Alan Chapton
53c5fb7328 Merge pull request #4152 from FlXME/master
Fix various bugs
2020-05-01 14:29:35 -07:00
Robert Alan Chapton
e4a76e667d Merge pull request #4170 from andris155/patch-1
Update locale_hu_HU.properties
2020-05-01 14:28:33 -07:00
Robert Alan Chapton
f943331e53 Merge pull request #4163 from GwonHeeJun/translate/korean
[UPDATE] XpBar Translation in English to Korean
2020-05-01 14:28:19 -07:00
Robert Alan Chapton
e884b2b7f1 Merge pull request #4173 from Draycia/master
Use logger instead of sysout
2020-04-29 13:17:13 -07:00
draycia
25389429ae Don't use the Logger here 2020-04-29 01:14:55 -07:00
draycia
6c5f438099 Use logger instead of sysout 2020-04-29 01:06:53 -07:00
nossr50
239200a3d2 child skills can have their xp bars turned on 2020-04-28 13:47:33 -07:00
nossr50
e6289a0548 back to work 2020-04-27 19:47:50 -07:00
nossr50
07b838db0f 2.1.126 2020-04-27 19:31:22 -07:00
nossr50
4a7b43c560 update log 2020-04-27 19:15:53 -07:00
nossr50
666729cadc Localize more things 2020-04-27 19:13:24 -07:00
nossr50
92c4ddce87 NPE fix 2020-04-27 19:09:37 -07:00
nossr50
2325c4eb6b New Command mmoxpbar 2020-04-27 19:01:40 -07:00
nossr50
34fe19e35c Less verbose unsupported material warnings 2020-04-27 17:28:27 -07:00
nossr50
145b2432e0 Combat fix 2020-04-27 17:04:01 -07:00
András Marczinkó
9a3b261f07 Update locale_hu_HU.properties 2020-04-26 17:55:01 +02:00
Mads U. Jensen
76536f0a18 Update EntityListener.java (#4169)
Remove debug broadcasts
2020-04-25 18:32:39 +01:00
nossr50
5984230bf3 CompatibilityLayer framework 2020-04-24 20:21:21 -07:00
GwonHeeJun
401e3121e6 [UPDATE] Add Korean translations of phrases that appear during level-up 2020-04-18 03:22:57 +09:00
GwonHeeJun
0897aefbee [UPDATE] Add a phrase translation that appears when you first learn a skill 2020-04-18 03:03:57 +09:00
GwonHeeJun
6f79a43e15 [UPDATE] XpBar Translation in English to Korean
- Changes the top experience bar to Korean for easier use by Korean users
2020-04-18 02:37:57 +09:00
Robert Alan Chapton
f82ad99c82 Merge pull request #4162 from broccolai/master
Check to make sure correct item is being damaged in Fishing exploit prevention
2020-04-16 12:03:48 -07:00
Josh Taylor
4a5bcaa92d Fix fishing exploit prevention 2020-04-16 05:44:26 +01:00
Shane Freeder
3a4de97c9b Always use localized names for skills, vs just non-english 2020-04-14 02:53:44 +01:00
Felix Bergmann
69a4ec80cd Fix resource leak on exception
When an exception is hit in the try statement, the readers will never get closed and leak resources
2020-04-07 10:02:22 +02:00
Felix Bergmann
877ef15374 Close resources in UUIDFetcher
Resource leak by not closing the InputStreamReader
2020-04-07 09:54:57 +02:00
Felix Bergmann
8dc955542d Introduce buffering in HashChunkletManager
Improve the performance by introducing buffering. The current usage of FileInputStream and ObjectInputStream don't use buffering.
2020-04-07 09:45:18 +02:00
Felix Bergmann
bffabb4a05 Fix BlockStoreConversion bug on folder check
If dataDir.exists() is true, dataDir.isDirectory() will always also be true. You probably wanted to check whether it is a folder.
This bug could lead to a critical bug when a file with the name of the folder exists.
2020-04-07 09:27:28 +02:00
Shane Freeder
3c272a3e31 register a valid skill for AprilCommand (Fixes #4147) 2020-04-01 14:41:53 +01:00
Shane Freeder
9c342f24cd Fix NPE from unloaded profiles in HolidayManager 2020-04-01 14:40:29 +01:00
nossr50
e8021e81e6 move namefix to monitor 2020-03-21 20:24:40 -07:00
nossr50
8fc3643803 2.1.125 hotfix 2020-03-20 11:02:25 -07:00
nossr50
296d8ee7c1 nothing to see here Kappa Keepo 2020-03-19 19:04:15 -07:00
nossr50
8d7f1cb595 Fixed not being able to place blocks on top of certain repair/salvage
anvils
2020-03-19 19:00:50 -07:00
nossr50
280889e11a dev time 2020-03-19 17:00:07 -07:00
nossr50
988a8124ca 2.1.124 2020-03-18 19:58:15 -07:00
nossr50
9c0dbf84b7 changelog wording 2020-03-18 19:57:58 -07:00
nossr50
42952dc420 repair/salvage anvils will override vanilla functions of a block 2020-03-18 19:44:27 -07:00
nossr50
5bd45ae970 Add missing mobs to experience tables 2020-03-18 19:23:52 -07:00
nossr50
254a17f026 no one saw that 2020-03-18 19:14:16 -07:00
nossr50
3fdbdcafd6 Add gold nugget to bonus drops 2020-03-18 19:13:56 -07:00
nossr50
f8dbace9f0 add comment 2020-03-17 16:00:32 -07:00
nossr50
58174d3391 dev mode 2020-03-17 15:42:25 -07:00
nossr50
7865ad8934 2.1.123 2020-03-13 15:15:00 -07:00
nossr50
d525f754a7 Add nether gold ore 2020-03-11 17:53:36 -07:00
nossr50
fd1b1fe124 treat new vines as multi block plants 2020-03-11 17:52:35 -07:00
nossr50
de71c60d6b Weeping vines fix / twisted vines added 2020-03-11 17:47:00 -07:00
nossr50
5609f1cdde update changelog 2020-03-11 17:45:18 -07:00
Shane Freeder
1bd4454a6b Show correct minimum level in adept salvage message 2020-03-07 23:20:18 +00:00
nossr50
8f8dfcf556 Update ability black lists 2020-03-03 22:32:24 -08:00
nossr50
ce1051c364 2.1.122 2020-03-03 22:24:35 -08:00
nossr50
b9d05d8d67 Move roots to herbalism xp tables 2020-03-03 22:13:34 -08:00
nossr50
3aa9f385e5 Wart blocks are now treated like leaves 2020-03-03 22:09:57 -08:00
nossr50
ff8c94bf44 2.1.121 2020-03-03 18:14:56 -08:00
nossr50
51e80f40dd sigh 2020-03-03 17:57:51 -08:00
nossr50
a7d2c901df 2.1.120 2020-03-03 17:52:18 -08:00
nossr50
325cbcad9d 2.1.120 2020-03-03 17:52:02 -08:00
nossr50
2644de5ab4 2.1.119 - 1.16 Support 2020-03-03 17:19:46 -08:00
nossr50
3a81d94b32 1.16 support part 5 2020-03-03 17:14:57 -08:00
nossr50
89a990f0cb Another dupe fix + 1.16 support part 4 2020-03-03 16:37:13 -08:00
nossr50
d585b1c2f7 1.16 support part 3 2020-03-02 14:52:51 -08:00
nossr50
1101815f18 1.16 Support part 2 2020-02-28 16:44:37 -08:00
nossr50
efea1c5d33 1.16 Support part 1 2020-02-28 16:29:11 -08:00
Jonathan Leitschuh
3026dc8a28 Use HTTPS instead of HTTP to resolve dependencies
This fixes a security vulnerability in this project where the `pom.xml`
files were configuring Maven to resolve dependencies over HTTP instead of
HTTPS.

Signed-off-by: Jonathan Leitschuh <Jonathan.Leitschuh@gmail.com>
2020-02-11 09:13:18 -05:00
673 changed files with 66768 additions and 46801 deletions

52
.github/workflows/maven.yml vendored Normal file
View File

@@ -0,0 +1,52 @@
# This workflow automatically tests new commits and pull requests as they come in.
# Note that this does not upload any artifacts, you will need to compile mcMMO manually
# if you wish to create the actual jar.
name: Compile and test
on:
# We run our tests whenever the pom or a source file was touched.
# There is no need to run Maven when only the changelog was touched.
# We may also want to re-run this workflow when the workflow file itself
# was updated too.
push:
paths:
- 'src/**'
- 'pom.xml'
- '.github/workflows/maven.yml'
# Whenever someone submits a new pull request which modified the pom or a source file,
# we want to ensure it compiles successfully and that all tests will pass.
pull_request:
paths:
- 'src/**'
- 'pom.xml'
jobs:
compile:
name: Maven compiler
runs-on: ubuntu-latest
steps:
# 1. Check out the current working tree
- name: Checkout repository
uses: actions/checkout@v4
# 2. Setup Java 17 JDK (Adopt)
- name: Java 17 setup
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-package: jdk
java-version: '17'
# 3. Setup local Maven package cache to speed up building
- name: Cache Maven packages
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
# 4. Build via Maven
- name: Build via Maven
run: mvn verify -B --file pom.xml -DdisableXmlReport=true

1
.gitignore vendored
View File

@@ -55,3 +55,4 @@
# Atlassian Stuff # Atlassian Stuff
/atlassian-ide-plugin.xml /atlassian-ide-plugin.xml
/nulllocale_override.properties

11
1
View File

@@ -1,11 +0,0 @@
SkillShot tweaks
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
# Your branch is up to date with 'origin/master'.
#
# Changes to be committed:
# modified: src/main/java/com/gmail/nossr50/skills/archery/Archery.java
# modified: src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java
#

File diff suppressed because it is too large Load Diff

43
Jenkinsfile vendored Normal file
View File

@@ -0,0 +1,43 @@
pipeline {
agent any
tools {
jdk 'jdk17'
// If you configured Maven as a Jenkins tool, add:
// maven 'Maven3'
}
options {
timestamps()
disableConcurrentBuilds()
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build') {
steps {
sh 'mvn -V -B clean package'
}
}
stage('Deploy to Nexus') {
steps {
configFileProvider([configFile(fileId: 'maven-settings-nexus', variable: 'MAVEN_SETTINGS')]) {
sh 'mvn -s "$MAVEN_SETTINGS" -V -B deploy'
}
}
}
}
post {
success {
archiveArtifacts artifacts: 'target/mcMMO.jar', fingerprint: true
}
}
}

View File

@@ -1,40 +1,52 @@
# mcMMO # mcMMO
## The #1 RPG Mod for Minecraft The #1 RPG Mod for Minecraft
## Website ## Useful URLs
I'm working on a brand new website for mcMMO Website: http://www.mcmmo.org
You can check it out here http://www.mcmmo.org
Spigot Resource: https://spigot.mcmmo.org Spigot Resource: https://spigot.mcmmo.org
I plan to post links to our new wiki (its still under development), downloads, and dev blogs there. Polymart Resource: https://polymart.org/product/727/mcmmo
Wiki: https://wiki.mcmmo.org/
## API
If you are using maven, you can add mcMMO API to your plugin by adding it to pom.xml like so...
```
<repository>
<id>neetgames</id>
<url>https://nexus.neetgames.com/repository/maven-releases/</url>
</repository>
```
```
<dependency>
<groupId>com.gmail.nossr50.mcMMO</groupId>
<artifactId>mcMMO</artifactId>
<version>put-the-version-here</version>
</dependency>
```
### Builds ### Builds
Currently, you can obtain our builds via the Spigot resource page: http://spigot.mcmmo.org Currently, you can obtain our builds via Spigot or Polymart:
http://spigot.mcmmo.org
https://polymart.org/resource/mcmmo.727
### Brief Description ### Brief Description
The goal of mcMMO is to take core Minecraft game mechanics and expand them into an extensive and quality RPG experience. Everything in mcMMO has been carefully thought out and is constantly being improved upon. Currently, mcMMO adds fourteen unique skills to train and level in. Each of these skills is highly customizable through our configuration files, allowing server admins to tweak mcMMO to best suit the needs of his or her server. Know that the mcMMO team is dedicated to providing an ever-evolving experience, and that we carefully read all feedback and bug reports in order to evaluate and balance the mechanics of mcMMO in every update. The goal of mcMMO is to take core Minecraft game mechanics and expand them into an extensive and quality RPG experience. Everything in mcMMO has been carefully thought out and is constantly being improved upon. Currently, mcMMO adds fourteen unique skills to train and level in. Each of these skills is highly customizable through our configuration files, allowing server admins to tweak mcMMO to best suit the needs of his or her server. Know that the mcMMO team is dedicated to providing an ever-evolving experience, and that we carefully read all feedback and bug reports in order to evaluate and balance the mechanics of mcMMO in every update.
## About the Team ## About the Team
In December 2018, the original author and creator of mcMMO (nossr50) returned and took over the role of project lead once again, to develop and improve mcMMO. In December 2018, the original author and creator of mcMMO (nossr50) returned and took over the role of project lead once again, to develop and improve mcMMO.
#### Project Lead & Founder
#### Current mcMMO Devs
[![nossr50](http://www.gravatar.com/avatar/f2ee41eedfd645fb4a3a2c8f6cb1b18c.png)](https://github.com/nossr50) [![nossr50](http://www.gravatar.com/avatar/f2ee41eedfd645fb4a3a2c8f6cb1b18c.png)](https://github.com/nossr50)
#### mcMMO Devs
[![nossr50](http://www.gravatar.com/avatar/f2ee41eedfd645fb4a3a2c8f6cb1b18c.png)](https://github.com/nossr50)
[![kashike](https://secure.gravatar.com/avatar/b5e86d6d443b957fd5cdee55501f3799.png)](https://github.com/kashike)
[![electronicboy](https://secure.gravatar.com/avatar/44759c38d311ce09596de6a2d5b88036.png)](https://github.com/electronicboy)
#### Classic Maintainer
[![t00thpick1](http://www.gravatar.com/avatar/ee23c7794a0c40120c3474287c7bce06.png)](https://github.com/t00thpick1)
## Former Team Members
### Former Lead & Awesome guy
[![gmcferrin](http://www.gravatar.com/avatar/b64c52daf25d206b27650788b5813b7b.png)](https://github.com/gmcferrin)
### Former team members ### Former team members
[![gmcferrin](http://www.gravatar.com/avatar/b64c52daf25d206b27650788b5813b7b.png)](https://github.com/gmcferrin)
[![kashike](https://secure.gravatar.com/avatar/b5e86d6d443b957fd5cdee55501f3799.png)](https://github.com/kashike)
[![electronicboy](https://secure.gravatar.com/avatar/44759c38d311ce09596de6a2d5b88036.png)](https://github.com/electronicboy)
[![t00thpick1](http://www.gravatar.com/avatar/ee23c7794a0c40120c3474287c7bce06.png)](https://github.com/t00thpick1)
[![bm01](http://www.gravatar.com/avatar/ec8146f5358177f12e9a252271bbc391.png)](https://github.com/bm01) [![bm01](http://www.gravatar.com/avatar/ec8146f5358177f12e9a252271bbc391.png)](https://github.com/bm01)
[![Glitchfinder](http://www.gravatar.com/avatar/5aa4cce22f72ae9c002ecec30f061d00.png)](https://github.com/Glitchfinder) [![Glitchfinder](http://www.gravatar.com/avatar/5aa4cce22f72ae9c002ecec30f061d00.png)](https://github.com/Glitchfinder)
[![NuclearW](http://www.gravatar.com/avatar/90926bdcf1c8a75918df5ea5fa801ce6.png)](https://github.com/NuclearW) [![NuclearW](http://www.gravatar.com/avatar/90926bdcf1c8a75918df5ea5fa801ce6.png)](https://github.com/NuclearW)
@@ -43,20 +55,22 @@ In December 2018, the original author and creator of mcMMO (nossr50) returned an
[![riking](https://1.gravatar.com/avatar/aca9f37e569ac3a63929920035a91ba4.png)](https://github.com/riking) [![riking](https://1.gravatar.com/avatar/aca9f37e569ac3a63929920035a91ba4.png)](https://github.com/riking)
[![TheYeti](https://i.imgur.com/tzFrxdo.png)](https://github.com/TheYeti) [![TheYeti](https://i.imgur.com/tzFrxdo.png)](https://github.com/TheYeti)
#### Folia Contributors
[<img src="https://github.com/HSGamer.png" width=80 alt="HSGamer">](https://github.com/HSGamer)
[<img src="https://github.com/TechnicallyCoded.png" width=80 alt="TechnicallyCoded">](https://github.com/TechnicallyCoded)
[<img src="https://github.com/Yomamaeatstoes.png" width=80 alt="Yomamaeatstoes">](https://github.com/Yomamaeatstoes)
[<img src="https://github.com/Rockyers.png" width=80 alt="Rockyers">](https://github.com/Rockyers)
## Compiling ## Compiling
mcMMO uses Maven 3 to manage dependencies, packaging, and shading of necessary classes; Maven 3 is required to compile mcMMO. mcMMO uses Maven to manage dependencies, packaging, and shading of necessary classes; Maven is required to compile mcMMO. It is recommended to always use the latest version of maven.
The typical command used to build mcMMO is: `mvn clean package install` The typical command used to build mcMMO is: `mvn clean install`
Required Libraries:
* Spigot
* JUnit
* WorldGuard 7
* bStats Bukkit
https://spigot.mcmmo.org for more up to date information. https://spigot.mcmmo.org for more up to date information.
Resource Page ## Downloads
https://www.spigotmc.org/resources/official-mcmmo-original-author-returns.64348/ https://www.spigotmc.org/resources/official-mcmmo-original-author-returns.64348/
https://polymart.org/resource/mcmmo.727

View File

@@ -1,439 +0,0 @@
# Lord of the Rings mod config by Dragyn
# Built against version [1.6.4] The Lord of the Rings Mod Public Beta 11.1
#
#
# Settings for Boots
###
Boots:
# Bronze
X12015:
Repairable: true
Repair_Material: X12004
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Orc
X12035:
Repairable: true
Repair_Material: X12036
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Gondorian
X12060:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Mithril
X12064:
Repairable: true
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Elven
X12088:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Warg
X12098:
Repairable: true
Repair_Material: X12094
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Dwarven
X12129:
Repairable: true
Repair_Material: X12112
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Galven
X12134:
Repairable: true
Repair_Material: X12130
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Uruk
X12161:
Repairable: true
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Wood Elf
X12176:
Repairable: true
Repair_Material: LEATHER
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Ancient
X12180:
Repairable: true
Repair_Material: X12179
Repair_Material_Data_Value: 3
Repair_Material_Quantity: 2
Durability: 500
# Rohirric
X12187:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Rangers
X12206:
Repairable: true
Repair_Material: LEATHER
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Dunlending
X12210:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Morgul
X12222:
Repairable: true
Repair_Material: X12217
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
#
# Settings for Chestplates
###
Chestplates:
# Bronze
X12013:
Repairable: true
Repair_Material: X12004
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Orc
X12033:
Repairable: true
Repair_Material: X12036
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Gondorian
X12058:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Mithril
X12062:
Repairable: true
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Elven
X12086:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Warg
X12096:
Repairable: true
Repair_Material: X12094
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Dwarven
X12127:
Repairable: true
Repair_Material: X12112
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Galven
X12132:
Repairable: true
Repair_Material: X12130
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Uruk
X12159:
Repairable: true
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Wood Elf
X12174:
Repairable: true
Repair_Material: LEATHER
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Ancient
X12178:
Repairable: true
Repair_Material: X12179
Repair_Material_Data_Value: 3
Repair_Material_Quantity: 2
Durability: 500
# Rohirric
X12185:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Rangers
X12204:
Repairable: true
Repair_Material: LEATHER
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Dunlending
X12208:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Morgul
X12220:
Repairable: true
Repair_Material: X12217
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
#
# Settings for Helmets
###
Helmets:
# Bronze
X12012:
Repairable: true
Repair_Material: X12004
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Orc
X12032:
Repairable: true
Repair_Material: X12036
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Gondorian
X12057:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Mithril
X12061:
Repairable: true
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Elven
X12085:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Warg
X12095:
Repairable: true
Repair_Material: X12094
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Dwarven
X12126:
Repairable: true
Repair_Material: X12112
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Galven
X12131:
Repairable: true
Repair_Material: X12130
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Uruk
X12158:
Repairable: true
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Wood Elf
X12173:
Repairable: true
Repair_Material: LEATHER
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Ancient
X12177:
Repairable: true
Repair_Material: X12179
Repair_Material_Data_Value: 3
Repair_Material_Quantity: 2
Durability: 500
# Rohirric
X12184:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Rangers
X12203:
Repairable: true
Repair_Material: LEATHER
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Dunlending
X12207:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Morgul
X12219:
Repairable: true
Repair_Material: X12217
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
#
# Settings for Leggings
###
Leggings:
# Bronze
X12014:
Repairable: true
Repair_Material: X12004
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Orc
X12034:
Repairable: true
Repair_Material: X12036
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Gondorian
X12059:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Mithril
X12063:
Repairable: true
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Elven
X12087:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Warg
X12097:
Repairable: true
Repair_Material: X12094
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Dwarven
X12128:
Repairable: true
Repair_Material: X12112
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Galven
X12133:
Repairable: true
Repair_Material: X12130
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Uruk
X12160:
Repairable: true
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Wood Elf
X12175:
Repairable: true
Repair_Material: LEATHER
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Ancient
X12179:
Repairable: true
Repair_Material: X12179
Repair_Material_Data_Value: 3
Repair_Material_Quantity: 2
Durability: 500
# Rohirric
X12186:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Rangers
X12205:
Repairable: true
Repair_Material: LEATHER
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Dunlending
X12209:
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Morgul
X12221:
Repairable: true
Repair_Material: X12217
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500

View File

@@ -1,211 +0,0 @@
# Lord of the Rings mod config by Skuli (Updated by Dragyn)
# Built against version [1.6.4] The Lord of the Rings Mod Public Beta 11.1
#
# Settings for Custom Excavation Blocks
###
Excavation:
Block_1|0:
XP_Gain: 99
Double_Drops_Enabled: true
Block_2|0:
XP_Gain: 99
Double_Drops_Enabled: true
#
# Settings for Custom Herbalism Blocks
###
Herbalism:
# Shireheather
X1813:
XP_Gain: 100
Double_Drops_Enabled: true
# Simbelmyne
X1805:
XP_Gain: 100
Double_Drops_Enabled: true
# Asphodel
X1895:
XP_Gain: 100
Double_Drops_Enabled: true
# Bluebell
X1867:
XP_Gain: 100
Double_Drops_Enabled: true
# Clover
X1873:
XP_Gain: 10
Double_Drops_Enabled: false
# Dead Marsh Plant
X1886:
XP_Gain: 10
Double_Drops_Enabled: false
# DwarfWort
X1902:
XP_Gain: 100
Double_Drops_Enabled: true
# Elanor
X1833:
XP_Gain: 100
Double_Drops_Enabled: true
# Lettuce Crop
X1830:
XP_Gain: 100
Double_Drops_Enabled: true
# Morgul Shroom
X1870:
XP_Gain: 100
Double_Drops_Enabled: true
# Niphredil
X1834:
XP_Gain: 100
Double_Drops_Enabled: true
# Pipeweed Crop
X1823:
XP_Gain: 100
Double_Drops_Enabled: true
# Pipeweed Plant
X1822:
XP_Gain: 100
Double_Drops_Enabled: true
#
# Settings for Custom Mining Blocks
###
Mining:
# Mithril
X1803:
XP_Gain: 2000
Double_Drops_Enabled: false
Is_Ore: true
# Naurite
X1818:
XP_Gain: 150
Double_Drops_Enabled: false
Is_Ore: false
#Glowstone Ore
X1859:
XP_Gain: 30
Double_Drops_Enabled: false
Is_Ore: false
# Remains
X1885:
XP_Gain: 1800
Double_Drops_Enabled: false
Is_Ore: false
# Gulduril
X1887:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Ore: false
# Quendite
X1846:
XP_Gain: 150
Double_Drops_Enabled: false
Is_Ore: false
# MorgulIron
X1819:
XP_Gain: 25
Double_Drops_Enabled: true
Is_Ore: false
# Rohan Rock
X180|2:
XP_Gain: 30
Double_Drops_Enabled: false
Is_Ore: false
#Gondor Stone
X180|1:
XP_Gain: 30
Double_Drops_Enabled: false
Is_Ore: false
# Mordor Stone
X180|0:
XP_Gain: 30
Double_Drops_Enabled: false
Is_Ore: false
#
# Settings for Custom Woodcutting Blocks
###
Woodcutting:
# Shire Pine
X1806|0:
XP_Gain: 90
Double_Drops_Enabled: true
Is_Log: true
# Mallorn
X1806|1:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
# Apple
X1860|0:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
# Pear
X1860|1:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
# Cherry
X1860|2:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
# Mirkwood
X1806|2:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
# Charred
X1806|3:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
# Lebethron
X1896|0:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
# Beech
X1896|1:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
#
# Settings for Custom Ability Blocks
# (These blocks don't trigger abilities)
###
Ability_Blocks:
Block_1|0:
Block_2|0:

View File

@@ -1,700 +0,0 @@
# Lord of the Rings mod config by Skuli (Updated by Dragyn)
# Built against version [1.6.4] The Lord of the Rings Mod Public Beta 11.1
Axes:
#DwarvenThrowingAxe
X12146:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12112
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 451
#UrukWarhammer
X12156:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 391
#Gondorian Warhammer
X12140:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: X12112
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 281
#UrukBattleaxe
X12155:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 391
#MithrilBattleaxe
X12138:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 2479
#MithrilWarhamer
X12139:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 2479
#OrcWarhammer
X12125:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12036
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 261
#Dwarven Warhammer
X12120:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12112
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 451
#DwarvenZbattleaxe
X12119:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12112
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 451
#BronzeAxe
X12009:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12004
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 197
#MithrilAxe
X12050:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 2479
#MallornAxe
X12075:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X1801
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 121
#Elven Axe
X12080:
XP_Modifer: 2
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: X12112
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 313
#DwarvenAxe
X12115:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12112
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 450
#OrcAxe
X12123:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12036
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 261
#UrukAxe
X12150:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 391
Bows:
#ElvenBow
X12093:
XP_Modifer: 2
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Durability: 485
#mallornbow
X12084:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X1801
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 417
#orcBow
X12099:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12036
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 441
#UrukCrossbow
X12163:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 471
#MithrilCrossbow
X12171:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 1761
#IronCrossbow
X12170:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 9
Durability: 357
#BowofMirkwood
X12177:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: X1806
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 3
Durability: 417
Hoes:
#BronzeHoe
X12011:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12004
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 197
#MithrilHoe
X12052:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 2479
#MallornHoe
X12077:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X1801
Repair_Material_Data_Value: 1
Repair_Material_Quantity: 2
Durability: 121
#CopperHoe
X26511:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X26507
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 180
#ElvenHoe
X12082:
XP_Modifer: 2
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: X12082
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 313
#DwarvenHoe
X12117:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X26507
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 180
Pickaxes:
#MEBronzePickaxe
X12008:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12004
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 197
#MithrilPixkaxe
X12049:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 2479
#MallornPickaxe
X12074:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X1801
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 121
#ElvenPickaxe
X12079:
XP_Modifer: 2
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 313
#DwarvenPickaxe
X12114:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12112
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 451
#UrukPickaxe
X12149:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 391
#OrcPickaxe
X12122:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12036
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 261
Shovels:
#BronzeShovel
X12007:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12004
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 197
#MithrilShovel
X12048:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 2479
#MallornShovel
X12073:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X1801
Repair_Material_Data_Value: 1
Repair_Material_Quantity: 1
Durability: 121
#ElvenShovel
X12078:
XP_Modifer: 2
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: X12082
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 313
#DwarvenShovel
X12113:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12112
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 451
#UrukShovel
X12148:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 391
#OrcShovel
X12121:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12036
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 261
Swords:
#Uruk Dagger
X12153:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 313
#Poisoned urukd agger
X12154:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 313
#Uruk Spear
X12157:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 391
#Rohirric Sword
X12181:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 251
#Rohirric Dagger
X12182:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 201
#Rohirric Spear
X12183:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 251
#Dunlending Spear
X12212:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 251
#Uruk Scimitar
X12151:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12147
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 391
#Mithril Dagger
X12137:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 1983
#Iron Dagger
X12136:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 201
#Dwarven Dagger
X12118:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12112
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 361
#Dwarven Sword
X12116:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12112
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 451
#Elven Sword
X12081:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 313
#Elven Spear
X12083:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 313
#Anduril
X12070:
XP_Modifer: 1
Ability_Enabled: true
Tier: 4
Repairable: false
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 313
#Mallorn Sword
X12076:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X1801
Repair_Material_Data_Value: 1
Repair_Material_Quantity: 2
Durability: 121
#Mithril Spear
X12069:
XP_Modifer: 1
Ability_Enabled: true
Tier: 4
Repairable: true
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 2479
#Iron Spear
X12068:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: IRON_INGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 251
#Orc Spear
X12066:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12036
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 261
#Bronze Spear
X12067:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12004
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 197
#Gondor Spear
X12065:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 281
#Gondor Sword
X12056:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: false
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 281
#Orc Scimitar
X12031:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12036
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 261
#Steel Sword
X26862:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X26857
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 751
#Bronze Sword
X12010:
XP_Modifer: 1
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X12004
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 197
#Mithril Sword
X12051:
XP_Modifer: 1
Ability_Enabled: true
Tier: 4
Repairable: true
Repair_Material: X12006
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 2479

View File

@@ -1,14 +0,0 @@
# Config wrote by M1cr0man
# Up to date as of Advanced Genetics 1.4.3
Bows:
# Genetic
X31179:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X31197
Repair_Material_Pretty_Name: "Cell"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 1501

View File

@@ -1,9 +0,0 @@
# Config wrote by M1cr0man
# Possibly incomplete. Only covers ores
# Up to date as of Applied Energistics rv14-finale3
Mining:
# Certus Quartz Ore
X4076|0:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true

View File

@@ -1,65 +0,0 @@
# Config wrote by M1cr0man
# Up to date as of Applied Energistics rv14-finale3
Axes:
# Quartz
X4365:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X4362
Repair_Material_Pretty_Name: "Certus Quartz"
Repair_Material_Data_Value: 6
Repair_Material_Quantity: 3
Durability: 250
Hoes:
# Quartz
X4366:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X4362
Repair_Material_Pretty_Name: "Certus Quartz"
Repair_Material_Data_Value: 6
Repair_Material_Quantity: 2
Pickaxes:
# Quartz
X4368:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X4362
Repair_Material_Pretty_Name: "Certus Quartz"
Repair_Material_Data_Value: 6
Repair_Material_Quantity: 3
Durability: 250
Shovels:
# Quartz
X4367:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X4362
Repair_Material_Pretty_Name: "Certus Quartz"
Repair_Material_Data_Value: 6
Repair_Material_Quantity: 1
Durability: 750
Swords:
# Quartz
X4369:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X4362
Repair_Material_Pretty_Name: "Certus Quartz"
Repair_Material_Data_Value: 6
Repair_Material_Quantity: 2
Durability: 250

View File

@@ -1,9 +0,0 @@
# Config wrote by M1cr0man
# Possibly incomplete. Only covers ores
# Up to date as of Big Reactors 0.3.4A2
Mining:
# Yellorite
X1750|0:
XP_Gain: 300
Double_Drops_Enabled: true
Is_Ore: true

View File

@@ -1,77 +0,0 @@
# Config wrote by M1cr0man
# Up to date as of BoP 1.2.1.434
Boots:
# Wading
X21269:
Repairable: false
Durability: 9999
# Muddy
X21283:
Repairable: true
Repair_Material: X21263
Repair_Material_Pretty_Name: "Mud Ball"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 4
Durability: 26
# Amethyst
X21293:
Repairable: true
Repair_Material: X21264
Repair_Material_Pretty_Name: "Amethyst"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 4
Durability: 520
Chestplates:
# Muddy
X21281:
Repairable: true
Repair_Material: X21263
Repair_Material_Pretty_Name: "Mud Ball"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 8
Durability: 32
# Amethyst
X21291:
Repairable: true
Repair_Material: X21264
Repair_Material_Pretty_Name: "Amethyst"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 8
Durability: 640
Helmets:
# Muddy
X21280:
Repairable: true
Repair_Material: X21263
Repair_Material_Pretty_Name: "Mud Ball"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 5
Durability: 22
# Amethyst
X21290:
Repairable: true
Repair_Material: X21264
Repair_Material_Pretty_Name: "Amethyst"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 5
Durability: 440
Leggings:
# Muddy
X21280:
Repairable: true
Repair_Material: X21263
Repair_Material_Pretty_Name: "Mud Ball"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 7
Durability: 30
# Amethyst
X21290:
Repairable: true
Repair_Material: X21264
Repair_Material_Pretty_Name: "Amethyst"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 7
Durability: 600

View File

@@ -1,44 +0,0 @@
# Config wrote by M1cr0man
# Incomplete! Only covers ores
# Up to date as of BoP 1.2.1.434
Mining:
# Red Rock
X162|0:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
# Amethyst
X1921|0:
XP_Gain: 200
Double_Drops_Enabled: true
Is_Ore: true
# Ruby
X1921|2:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Peridot
X1921|4:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Topaz
X1921|6:
XP_Gain: 200
Double_Drops_Enabled: true
Is_Ore: true
# Tanzanite
X1921|8:
XP_Gain: 200
Double_Drops_Enabled: true
Is_Ore: true
# Malachite
X1921|10:
XP_Gain: 200
Double_Drops_Enabled: true
Is_Ore: true
# Sapphire
X1921|12:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true

View File

@@ -1,121 +0,0 @@
# Config wrote by M1cr0man
# Up to date as of BoP 1.2.1.434
Axes:
# Amethyst
X21287:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 4
Repairable: true
Repair_Material: X21264
Repair_Material_Pretty_Name: "Amethyst"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 2013
# Muddy
X21277:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X21263
Repair_Material_Pretty_Name: "Mud Ball"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 32
Hoes:
# Amethyst
X21288:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 4
Repairable: true
Repair_Material: X21264
Repair_Material_Pretty_Name: "Amethyst"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 2013
# Muddy
X21278:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X21263
Repair_Material_Pretty_Name: "Mud Ball"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 32
Pickaxes:
# Amethyst
X21286:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 4
Repairable: true
Repair_Material: X21264
Repair_Material_Pretty_Name: "Amethyst"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 2013
# Muddy
X21276:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X21263
Repair_Material_Pretty_Name: "Mud Ball"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 32
Shovels:
# Amethyst
X21285:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 4
Repairable: true
Repair_Material: X21264
Repair_Material_Pretty_Name: "Amethyst"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 2013
# Muddy
X21275:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X21263
Repair_Material_Pretty_Name: "Mud Ball"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 32
Swords:
# Amethyst
X21284:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 4
Repairable: true
Repair_Material: X21264
Repair_Material_Pretty_Name: "Amethyst"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 2013
# Muddy
X21274:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X21263
Repair_Material_Pretty_Name: "Mud Ball"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 32

View File

@@ -1,31 +0,0 @@
# Config wrote by M1cr0man
# Up to date as of Emasher Resource 1.2.3.5
Boots:
# Hemp
X9301:
Repairable: true
Repair_Material: X9291
Repair_Material_Pretty_Name: "Hemp"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 4
Durability: 65
Chestplates:
# Hemp
X9299:
Repairable: true
Repair_Material: X9291
Repair_Material_Pretty_Name: "Hemp"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 8
Durability: 80
Leggings:
# Hemp
X9300:
Repairable: true
Repair_Material: X9291
Repair_Material_Pretty_Name: "Hemp"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 7
Durability: 75

View File

@@ -1,44 +0,0 @@
# Config wrote by M1cr0man
# Possibly incomplete. Only covers ores
# Up to date as of Emasher Resource 1.2.3.5
Mining:
# Bauxite
X1565|0:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true
# Cassiterite
X1565|1:
XP_Gain: 175
Double_Drops_Enabled: true
Is_Ore: true
# Emery
X1565|2:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Galena
X1565|3:
XP_Gain: 300
Double_Drops_Enabled: true
Is_Ore: true
# Native Copper
X1565|4:
XP_Gain: 175
Double_Drops_Enabled: true
Is_Ore: true
# Petlandite
X1565|5:
XP_Gain: 300
Double_Drops_Enabled: true
Is_Ore: true
# Ruby
X1565|6:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Sapphire
X1565|7:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true

View File

@@ -1,182 +0,0 @@
# Config created by Dragyn
# Created For ExtrabiomesXL-universal-1.6.4-3.14.5
#
# Settings for Custom Excavation Blocks
###
Excavation:
# Quicksand
X2214|0:
XP_Gain: 40
Double_Drops_Enabled: true
#
# Settings for Custom Herbalism Blocks
###
Herbalism:
# Cattails
X2201|0:
XP_Gain: 30
Double_Drops_Enabled: true
# Hydrangea
X2202|1:
XP_Gain: 100
Double_Drops_Enabled: true
# Buttercups
X2202|2:
XP_Gain: 100
Double_Drops_Enabled: true
# Lavender
X2202|3:
XP_Gain: 100
Double_Drops_Enabled: true
# Tiny Cactus
X2202|4:
XP_Gain: 30
Double_Drops_Enabled: true
# Toadstool
X2202|6:
XP_Gain: 150
Double_Drops_Enabled: true
# Calla Lillies
X2202|7:
XP_Gain: 100
Double_Drops_Enabled: true
#
# Settings for Custom Mining Blocks
###
Mining:
X254|0:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X254|1:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
#
# Settings for Custom Woodcutting Blocks
###
Woodcutting:
# Fir
X2208|0:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
# Acacia
X2208|1:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
# Cypress
X2208|2:
XP_Gain: 90
Double_Drops_Enabled: true
Is_Log: true
# Japanese Maple
X2208|3:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
# Redwood Quarter
X2209|0:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
X2211|0:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
X2212|0:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
X2213|0:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
# Fir Quarters
X2209|1:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X2211|1:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
X2212|1:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X2213|1:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
# Oak Quarters
X2209|2:
XP_Gain: 70
Double_Drops_Enabled: true
Is_Log: true
X2211|2:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
X2212|2:
XP_Gain: 70
Double_Drops_Enabled: true
Is_Log: true
X2213|2:
XP_Gain: 70
Double_Drops_Enabled: true
Is_Log: true
# Acacia
X2209|1:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
# Cypress
X2209|2:
XP_Gain: 90
Double_Drops_Enabled: true
Is_Log: true
# Bald Cypress Quarter
X2225|0:
XP_Gain: 90
Double_Drops_Enabled: true
Is_Log: true
# Bald Cypress Elbow
X2227|0:
XP_Gain: 90
Double_Drops_Enabled: true
Is_Log: true
# Bald Cypress Log
X2231|2:
XP_Gain: 90
Double_Drops_Enabled: true
Is_Log: true
# Rainbow Eucalyptus
X2228|0:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
X2229|0:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
X2231|0:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
# Autumn Log
X2231|1:
XP_Gain: 90
Double_Drops_Enabled: true
Is_Log: true
# Sakura Log
X2238|0:
XP_Gain: 90
Double_Drops_Enabled: true
Is_Log: true

View File

@@ -1,54 +0,0 @@
# Config wrote by M1cr0man
# Up to date as of Extra Utilities 1.0.3c
Axes:
# Healing
X10264:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 4
Repairable: true
Repair_Material: X10258
Repair_Material_Pretty_Name: "Unstable Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 1561
Hoes:
# Reversing
X10265:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 4
Repairable: true
Repair_Material: X10258
Repair_Material_Pretty_Name: "Unstable Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 1561
Pickaxes:
# Destruction
X10263:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 4
Repairable: false
Durability: 6244
Shovels:
# Erosion
X10262:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 4
Repairable: false
Durability: 6244
Swords:
# Etheric
X10261:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 4
Repairable: false
Durability: 1561

View File

@@ -1,9 +0,0 @@
# Config wrote by M1cr0man
# Possibly incomplete. Only covers ores
# Up to date as of Factorization 0.8.34
Mining:
# Dark Iron Ore
X1004|0:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true

View File

@@ -1,19 +0,0 @@
# Config wrote by M1cr0man
# Possibly incomplete. Only covers ores
# Up to date as of Forestry 2.3.1.1
Mining:
# Apatite
X1398|0:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Ore: true
# Copper
X1398|1:
XP_Gain: 175
Double_Drops_Enabled: true
Is_Ore: true
# Tin
X1398|2:
XP_Gain: 175
Double_Drops_Enabled: true
Is_Ore: true

View File

@@ -1,27 +0,0 @@
# Config wrote by M1cr0man
# Up to date as of Forestry 2.3.1.1
Pickaxes:
# Survivalist
X13261:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X5261
Repair_Material_Pretty_Name: "Bronze Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 200
Shovels:
# Survivalist
X13264:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X5261
Repair_Material_Pretty_Name: "Bronze Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 200

View File

@@ -1,71 +0,0 @@
# Config created by Dragyn
# Created For Galacticraft-1.6.4-2.0.7.904 and Galacticraft-Planets-1.6.4-2.0.7.904
#
# Settings for Boots
###
Boots:
# Heavy Duty
X10149:
Repairable: true
Repair_Material: X10150
Repair_Material_Data_Value: 9
Repair_Material_Quantity: 2
Durability: 500
X10171:
Repairable: true
Repair_Material: X10161
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 2
Durability: 999
#
# Settings for Chestplates
###
Chestplates:
# Heavy Duty
X10147:
Repairable: true
Repair_Material: X10150
Repair_Material_Data_Value: 9
Repair_Material_Quantity: 2
Durability: 500
X10169:
Repairable: true
Repair_Material: X10161
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 2
Durability: 999
#
# Settings for Helmets
###
Helmets:
# Heavy Duty
X10146:
Repairable: true
Repair_Material: X10150
Repair_Material_Data_Value: 9
Repair_Material_Quantity: 2
Durability: 500
X10168:
Repairable: true
Repair_Material: X10161
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 2
Durability: 999
#
# Settings for Leggings
###
Leggings:
# Heavy Duty
X10148:
Repairable: true
Repair_Material: X10150
Repair_Material_Data_Value: 9
Repair_Material_Quantity: 2
Durability: 500
X10170:
Repairable: true
Repair_Material: X10161
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 2
Durability: 999

View File

@@ -1,98 +0,0 @@
# Config created by Dragyn
# Created For Galacticraft-1.6.4-2.0.7.904 and Galacticraft-Planets-1.6.4-2.0.7.904
#
# Settings for Custom Excavation Blocks
###
Excavation:
# Dirt
X3347|3:
XP_Gain: 40
Double_Drops_Enabled: true
Block_2|0:
XP_Gain: 99
Double_Drops_Enabled: true
#
# Settings for Custom Mining Blocks
###
Mining:
# Copper Ore
X3347|0:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
X3372|5:
XP_Gain: 450
Double_Drops_Enabled: true
Is_Ore: true
X3390|0:
XP_Gain: 550
Double_Drops_Enabled: true
Is_Ore: true
# Tin Ore
X3347|1:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
X3372|6:
XP_Gain: 450
Double_Drops_Enabled: true
Is_Ore: true
X3390|1:
XP_Gain: 550
Double_Drops_Enabled: true
Is_Ore: true
# Aluminum Ore
X3372|7:
XP_Gain: 450
Double_Drops_Enabled: true
Is_Ore: true
# Silicon Ore
X3372|8:
XP_Gain: 450
Double_Drops_Enabled: true
Is_Ore: true
# Cheese Ore
X3347|2:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Iron Ore
X3390|3:
XP_Gain: 550
Double_Drops_Enabled: true
Is_Ore: true
# Desh Ore
X3390|2:
XP_Gain: 600
Double_Drops_Enabled: true
Is_Ore: true
# Moon Stone
X3347|4:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
# Moon Turf
X3347|5:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
# Mars Cobblestone
X3390|4:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
# Mars Rock/Stone
X3390|5:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X3390|6:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X3390|9:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false

View File

@@ -1,123 +0,0 @@
# Config created by Dragyn
# Created For Galacticraft-1.6.4-2.0.7.904 and Galacticraft-Planets-1.6.4-2.0.7.904
#
# Settings for Axes
###
Axes:
# Heavy Duty
X10145:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X10150
Repair_Material_Data_Value: 9
Repair_Material_Quantity: 2
Durability: 500
# Desh
X10167:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: 10161
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 2
Durability: 1000
#
# Settings for Hoes
###
Hoes:
# Heavy Duty
X10144:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X10150
Repair_Material_Data_Value: 9
Repair_Material_Quantity: 2
Durability: 500
# Desh
X10166:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: 10161
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 2
Durability: 1000
#
# Settings for Pickaxes
###
Pickaxes:
# Heavy Duty
X10142:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X10150
Repair_Material_Data_Value: 9
Repair_Material_Quantity: 2
Durability: 500
# Desh
X10164:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: 10161
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 2
Durability: 1000
#
# Settings for Shovels
###
Shovels:
# Heavy Duty
X10143:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X10150
Repair_Material_Data_Value: 9
Repair_Material_Quantity: 2
Durability: 500
# Desh
X10165:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: 10161
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 2
Durability: 1000
#
# Settings for Swords
###
Swords:
# Heavy Duty
X10141:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 4
Repairable: true
Repair_Material: X10150
Repair_Material_Data_Value: 9
Repair_Material_Quantity: 2
Durability: 500
# Desh
X10163:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: 10161
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 2
Durability: 1000

File diff suppressed because it is too large Load Diff

View File

@@ -1,185 +0,0 @@
# Config created by Dragyn
# Created For Metallurgy-1.6.4-3.3.1
#
#
# Settings for Custom Mining Blocks
###
Mining:
# Copper
X900|0:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true
# Tin
X900|1:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true
# Zinc
X902|0:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true
# Silver
X902|1:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Platinum
X902|3:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# NETHER ORES
# Ignatius
X903|0:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true
# Shadow Iron
X903|1:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true
# Lemurite
X903|2:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true
# Midasium
X903|3:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true
# Vyroxeres
X903|4:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true
# Ceruclase
X903|5:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true
# Alduorite
X903|6:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true
# Kalendrite
X903|7:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true
# Vulcanite
X903|8:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Sanguinite
X903|9:
XP_Gain: 450
Double_Drops_Enabled: true
Is_Ore: true
# Manganese
X900|2:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true
# Eximite
X900|5:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Meutoite
X900|6:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Sulfur
X905|7:
XP_Gain: 150
Double_Drops_Enabled: true
Is_Ore: false
# Phosphorite
X905|8:
XP_Gain: 150
Double_Drops_Enabled: true
Is_Ore: false
# Saltpeter
X905|9:
XP_Gain: 150
Double_Drops_Enabled: true
Is_Ore: false
# Magnesium
X905|10:
XP_Gain: 150
Double_Drops_Enabled: true
Is_Ore: false
# Bitumen
X905|11:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Ore: false
# Potash
X905|12:
XP_Gain: 150
Double_Drops_Enabled: true
Is_Ore: false
# Prometheum
X906|0:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Deep Iron
X906|1:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Infuscolium
X906|2:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Oureclase
X906|4:
XP_Gain: 650
Double_Drops_Enabled: true
Is_Ore: true
# Astral Silver
X906|5:
XP_Gain: 650
Double_Drops_Enabled: true
Is_Ore: true
# Carmot
X906|6:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Mithril
X906|7:
XP_Gain: 750
Double_Drops_Enabled: true
Is_Ore: true
# Rubracium
X906|8:
XP_Gain: 800
Double_Drops_Enabled: true
Is_Ore: true
# Orichalcum
X906|11:
XP_Gain: 900
Double_Drops_Enabled: true
Is_Ore: true
# Adamantine
X906|13:
XP_Gain: 1000
Double_Drops_Enabled: true
Is_Ore: true
# Atlarus
X906|14:
XP_Gain: 1000
Double_Drops_Enabled: true
Is_Ore: true

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +0,0 @@
# Config wrote by M1cr0man
# Up to date as of Minefactory Reloaded 2.7.9 Final
Boots:
# Plastic
X12306:
Repairable: true
Repair_Material: X12249
Repair_Material_Pretty_Name: "Plastic Sheets"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 4
Durability: 39

View File

@@ -1,41 +0,0 @@
# Config wrote by M1cr0man
# Up to date as of Natura 2.1.14
Boots:
# Impskin
X12712:
Repairable: true
Repair_Material: X12660
Repair_Material_Pretty_Name: "Imp Leather"
Repair_Material_Data_Value: 6
Repair_Material_Quantity: 4
Durability: 429
Chestplates:
# Impskin
X12710:
Repairable: true
Repair_Material: X12660
Repair_Material_Pretty_Name: "Imp Leather"
Repair_Material_Data_Value: 6
Repair_Material_Quantity: 8
Durability: 528
Helmets:
# Impskin
X12709:
Repairable: true
Repair_Material: X12660
Repair_Material_Pretty_Name: "Imp Leather"
Repair_Material_Data_Value: 6
Repair_Material_Quantity: 5
Durability: 363
Leggings:
# Impskin
X12709:
Repairable: true
Repair_Material: X12660
Repair_Material_Pretty_Name: "Imp Leather"
Repair_Material_Data_Value: 6
Repair_Material_Quantity: 7
Durability: 495

View File

@@ -1,272 +0,0 @@
# Config wrote by M1cr0man
# Up to date as of Natura 2.1.14
Axes:
# Bloodwood
X12685:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Bloodwood Planks"
Repair_Material_Data_Value: 4
Repair_Material_Quantity: 3
Durability: 350
# Darkwood
X12689:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Darkwood Planks"
Repair_Material_Data_Value: 11
Repair_Material_Quantity: 3
Durability: 131
# Fusewood
X12693:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Fusewood Planks"
Repair_Material_Data_Value: 12
Repair_Material_Quantity: 3
Durability: 250
# Ghostwood
X12681:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Ghostwood Planks"
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 3
Durability: 59
# Quartz
X12697:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: QUARTZ_BLOCK
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 131
Bows:
# Bloodwood
X12706:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X12677
Repair_Material_Pretty_Name: "Bloodwood Stick"
Repair_Material_Data_Value: 4
Repair_Material_Quantity: 3
Durability: 1501
# Darkwood
X12707:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X12677
Repair_Material_Pretty_Name: "Darkwood Stick"
Repair_Material_Data_Value: 11
Repair_Material_Quantity: 3
Durability: 162
# Fusewood
X12708:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X12677
Repair_Material_Pretty_Name: "Fusewood Stick"
Repair_Material_Data_Value: 12
Repair_Material_Quantity: 3
Durability: 28
# Ghostwood
X12705:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X12677
Repair_Material_Pretty_Name: "Ghostwood Stick"
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 3
Durability: 384
Pickaxes:
# Bloodwood
X12683:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Bloodwood Planks"
Repair_Material_Data_Value: 4
Repair_Material_Quantity: 3
Durability: 350
# Darkwood
X12687:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Darkwood Planks"
Repair_Material_Data_Value: 11
Repair_Material_Quantity: 3
Durability: 131
# Fusewood
X12691:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Fusewood Planks"
Repair_Material_Data_Value: 12
Repair_Material_Quantity: 3
Durability: 250
# Ghostwood
X12679:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Ghostwood Planks"
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 3
Durability: 59
# Quartz
X12695:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: QUARTZ_BLOCK
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 3
Durability: 131
Shovels:
# Bloodwood
X12684:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Bloodwood Planks"
Repair_Material_Data_Value: 4
Repair_Material_Quantity: 1
Durability: 350
# Darkwood
X12688:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Darkwood Planks"
Repair_Material_Data_Value: 11
Repair_Material_Quantity: 1
Durability: 131
# Fusewood
X12692:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Fusewood Planks"
Repair_Material_Data_Value: 12
Repair_Material_Quantity: 1
Durability: 250
# Ghostwood
X12680:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Ghostwood Planks"
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 1
Durability: 59
# Quartz
X12696:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: QUARTZ_BLOCK
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 1
Durability: 131
Swords:
# Bloodwood
X12682:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Bloodwood Planks"
Repair_Material_Data_Value: 4
Repair_Material_Quantity: 2
Durability: 350
# Darkwood
X12686:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Darkwood Planks"
Repair_Material_Data_Value: 11
Repair_Material_Quantity: 2
Durability: 131
# Fusewood
X12690:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Fusewood Planks"
Repair_Material_Data_Value: 12
Repair_Material_Quantity: 2
Durability: 250
# Ghostwood
X12678:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: X3262
Repair_Material_Pretty_Name: "Ghostwood Planks"
Repair_Material_Data_Value: 2
Repair_Material_Quantity: 2
Durability: 59
# Quartz
X12694:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: true
Repair_Material: QUARTZ_BLOCK
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 131

View File

@@ -1,29 +0,0 @@
# Config wrote by M1cr0man
# Possibly incomplete. Only covers ores
# Up to date as of Project Red 4.3.5.30
Mining:
# Ruby
X2130|0:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Sapphire
X2130|1:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Peridot
X2130|2:
XP_Gain: 350
Double_Drops_Enabled: true
Is_Ore: true
# Marble
X2131|0:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
# Basalt
X2131|3:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false

View File

@@ -1,176 +0,0 @@
# Config wrote by M1cr0man
# Up to date as of Project Red 4.3.5.30
Axes:
# Ruby
X9353:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Ruby"
Repair_Material_Data_Value: 37
Repair_Material_Quantity: 3
Durability: 500
# Sapphire
X9354:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Sapphire"
Repair_Material_Data_Value: 38
Repair_Material_Quantity: 3
Durability: 500
# Peridot
X9355:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Peridot"
Repair_Material_Data_Value: 39
Repair_Material_Quantity: 3
Durability: 500
Hoes:
# Ruby
X9356:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Ruby"
Repair_Material_Data_Value: 37
Repair_Material_Quantity: 2
Durability: 500
# Sapphire
X9357:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Sapphire"
Repair_Material_Data_Value: 38
Repair_Material_Quantity: 2
Durability: 500
# Peridot
X9358:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Peridot"
Repair_Material_Data_Value: 39
Repair_Material_Quantity: 2
Durability: 500
Pickaxes:
# Ruby
X9359:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Ruby"
Repair_Material_Data_Value: 37
Repair_Material_Quantity: 3
Durability: 500
# Sapphire
X9360:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Sapphire"
Repair_Material_Data_Value: 38
Repair_Material_Quantity: 3
Durability: 500
# Peridot
X9361:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Peridot"
Repair_Material_Data_Value: 39
Repair_Material_Quantity: 3
Durability: 500
Shovels:
# Ruby
X9362:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Ruby"
Repair_Material_Data_Value: 37
Repair_Material_Quantity: 1
Durability: 500
# Sapphire
X9363:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Sapphire"
Repair_Material_Data_Value: 38
Repair_Material_Quantity: 1
Durability: 500
# Peridot
X9364:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Peridot"
Repair_Material_Data_Value: 39
Repair_Material_Quantity: 1
Durability: 500
Swords:
# Ruby
X9365:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Ruby"
Repair_Material_Data_Value: 37
Repair_Material_Quantity: 2
Durability: 500
# Sapphire
X9366:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Sapphire"
Repair_Material_Data_Value: 38
Repair_Material_Quantity: 2
Durability: 500
# Peridot
X9368:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X9281
Repair_Material_Pretty_Name: "Peridot"
Repair_Material_Data_Value: 39
Repair_Material_Quantity: 2
Durability: 500

View File

@@ -1,49 +0,0 @@
# Config wrote by Dragyn, updated by M1cr0man
# Up to date as of Railcraft 8.4.0.0
Boots:
# Steel
X7758:
Repairable: true
Repair_Material: X7796
Repair_Material_Pretty_Name: "Steel Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 4
Durability: 325
Chestplates:
# Steel
X7761:
Repairable: true
Repair_Material: X7796
Repair_Material_Pretty_Name: "Steel Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 8
Durability: 400
Helmets:
# Steel
X7759:
Repairable: true
Repair_Material: X7796
Repair_Material_Pretty_Name: "Steel Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 5
Durability: 275
Leggings:
# Steel
X7760:
Repairable: true
Repair_Material: X7796
Repair_Material_Pretty_Name: "Steel Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 7
Durability: 375
# Overalls
X7757:
Repairable: true
Repair_Material: WOOL
Repair_Material_Pretty_Name: "Light Blue Wool"
Repair_Material_Data_Value: 3
Repair_Material_Quantity: 7
Durability: 75

View File

@@ -1,103 +0,0 @@
# Config created by Dragyn
# Created For Railcraft_1.6.2-8.1.0.0
#
#
# Settings for Custom Mining Blocks
###
Mining:
# Abyssal Stone
X457|6:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
# Quarried Stone
X457|7:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
# Sulfur
X458|0:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
# Saltpeter
X458|1:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
# Dark Diamond
X458|2:
XP_Gain: 750
Double_Drops_Enabled: true
Is_Ore: false
# Dark Emerald
X458|3:
XP_Gain: 1000
Double_Drops_Enabled: true
Is_Ore: false
# Dark Lapis
X458|4:
XP_Gain: 400
Double_Drops_Enabled: true
Is_Ore: false
# Firestone
X458|5:
XP_Gain: 450
Double_Drops_Enabled: true
Is_Ore: false
# Infernal Stone
X467|2:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X467|5:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
# Blood Stained Stone
X468|2:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X468|5:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
# Sandy Stone
X469|2:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X469|5:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
# Quarried Stone
X471|2:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X471|5:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
# Frost Bound Stone
X472|2:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X472|5:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
# Nether Stone
X475|2:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X475|5:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false

View File

@@ -1,66 +0,0 @@
# Config wrote by Dragyn, updated by M1cr0man
# Up to date as of Railcraft 8.4.0.0
Axes:
# Steel
X7819:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X7796
Repair_Material_Pretty_Name: "Steel Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
Hoes:
# Steel
X7820:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X7796
Repair_Material_Pretty_Name: "Steel Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
Pickaxes:
# Steel
X7821:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X7796
Repair_Material_Pretty_Name: "Steel Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
Shovels:
# Steel
X7823:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X7796
Repair_Material_Pretty_Name: "Steel Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
Swords:
# Steel
X7824:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X7796
Repair_Material_Pretty_Name: "Steel Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500

View File

@@ -1,543 +0,0 @@
# Config created by Dragyn
# Created For SimCraft 1.6.4
#
#
# Settings for Custom Herbalism Blocks
###
Herbalism:
X705|0:
XP_Gain: 50
Double_Drops_Enabled: true
X705|1:
XP_Gain: 50
Double_Drops_Enabled: true
X705|2:
XP_Gain: 50
Double_Drops_Enabled: true
X705|3:
XP_Gain: 50
Double_Drops_Enabled: true
X705|4:
XP_Gain: 50
Double_Drops_Enabled: true
X705|5:
XP_Gain: 50
Double_Drops_Enabled: true
X705|6:
XP_Gain: 50
Double_Drops_Enabled: true
X705|7:
XP_Gain: 50
Double_Drops_Enabled: true
X705|8:
XP_Gain: 50
Double_Drops_Enabled: true
X705|9:
XP_Gain: 50
Double_Drops_Enabled: true
X705|10:
XP_Gain: 50
Double_Drops_Enabled: true
X705|11:
XP_Gain: 50
Double_Drops_Enabled: true
X705|12:
XP_Gain: 50
Double_Drops_Enabled: true
X705|13:
XP_Gain: 50
Double_Drops_Enabled: true
X705|14:
XP_Gain: 50
Double_Drops_Enabled: true
X705|15:
XP_Gain: 50
Double_Drops_Enabled: true
X706|0:
XP_Gain: 50
Double_Drops_Enabled: true
X706|1:
XP_Gain: 50
Double_Drops_Enabled: true
X706|2:
XP_Gain: 50
Double_Drops_Enabled: true
X706|3:
XP_Gain: 50
Double_Drops_Enabled: true
X706|4:
XP_Gain: 50
Double_Drops_Enabled: true
X706|5:
XP_Gain: 50
Double_Drops_Enabled: true
X706|6:
XP_Gain: 50
Double_Drops_Enabled: true
X706|7:
XP_Gain: 50
Double_Drops_Enabled: true
X706|8:
XP_Gain: 50
Double_Drops_Enabled: true
X706|9:
XP_Gain: 50
Double_Drops_Enabled: true
X706|10:
XP_Gain: 50
Double_Drops_Enabled: true
X706|11:
XP_Gain: 50
Double_Drops_Enabled: true
X706|12:
XP_Gain: 50
Double_Drops_Enabled: true
X706|13:
XP_Gain: 50
Double_Drops_Enabled: true
X706|14:
XP_Gain: 50
Double_Drops_Enabled: true
X706|15:
XP_Gain: 50
Double_Drops_Enabled: true
X707|0:
XP_Gain: 50
Double_Drops_Enabled: true
X707|1:
XP_Gain: 50
Double_Drops_Enabled: true
X707|2:
XP_Gain: 50
Double_Drops_Enabled: true
X707|3:
XP_Gain: 50
Double_Drops_Enabled: true
X707|4:
XP_Gain: 50
Double_Drops_Enabled: true
X707|5:
XP_Gain: 50
Double_Drops_Enabled: true
X707|6:
XP_Gain: 50
Double_Drops_Enabled: true
X707|7:
XP_Gain: 50
Double_Drops_Enabled: true
X707|8:
XP_Gain: 50
Double_Drops_Enabled: true
X707|9:
XP_Gain: 50
Double_Drops_Enabled: true
X707|10:
XP_Gain: 50
Double_Drops_Enabled: true
X707|11:
XP_Gain: 50
Double_Drops_Enabled: true
X707|12:
XP_Gain: 50
Double_Drops_Enabled: true
X707|13:
XP_Gain: 50
Double_Drops_Enabled: true
X707|14:
XP_Gain: 50
Double_Drops_Enabled: true
X707|15:
XP_Gain: 50
Double_Drops_Enabled: true
#
# Settings for Custom Mining Blocks
###
Mining:
X700|0:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|1:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|2:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|3:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|4:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|5:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|6:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|7:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|8:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|9:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|10:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|11:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|12:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|13:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|14:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X700|15:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X701|0:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|1:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|2:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|3:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|4:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|5:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|6:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|7:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|8:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|9:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|10:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|11:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|12:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|13:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|14:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X701|15:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X702|0:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|1:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|2:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|3:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|4:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|5:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|6:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|7:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|8:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|9:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|10:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|11:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|12:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|13:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|14:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X702|15:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|0:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|1:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|2:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|3:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|4:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|5:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|6:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|7:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|8:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|9:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|10:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|11:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|12:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|13:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|14:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X703|15:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|0:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|1:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|2:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|3:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|4:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|5:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|6:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|7:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|8:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|9:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|10:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|11:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|12:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|13:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|14:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X704|15:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
#
# Settings for Custom Woodcutting Blocks
###
Woodcutting:
X708|0:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X708|1:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X708|2:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X708|3:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X708|4:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X708|5:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X708|6:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X708|7:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X708|8:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X708|9:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X708|10:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X708|11:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X1095|0:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X1095|1:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X1095|2:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
X1095|3:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true

View File

@@ -1,61 +0,0 @@
# Config created by Dragyn
# Created For Railcraft_1.6.2-8.1.0.0
#
#
# Settings for Axes
###
Axes:
# Steel
X15787:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X15260
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
#
# Settings for Pickaxes
###
Pickaxes:
# Steel
X15788:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X15260
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
#
# Settings for Shovels
###
Shovels:
# Steel
X15789:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X15260
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
#
# Settings for Swords
###
Swords:
# Steel
X15786:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X15260
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500

View File

@@ -1,9 +0,0 @@
# Config wrote by M1cr0man
# Possibly incomplete. Only covers ores
# Up to date as of Stargate Tech 2 Alpha 0.7.3
Mining:
# Naquadah Ore
X1005|0:
XP_Gain: 300
Double_Drops_Enabled: true
Is_Ore: true

View File

@@ -1,41 +0,0 @@
# Config wrote by M1cr0man
# Up to date as of Thermal Expansion 3.0.0.7
Boots:
# Invar
X31973:
Repairable: true
Repair_Material: X31978
Repair_Material_Pretty_Name: "Invar Ingot"
Repair_Material_Data_Value: 71
Repair_Material_Quantity: 4
Durability: 325
Chestplates:
# Invar
X31975:
Repairable: true
Repair_Material: X31978
Repair_Material_Pretty_Name: "Invar Ingot"
Repair_Material_Data_Value: 71
Repair_Material_Quantity: 8
Durability: 400
Helmets:
# Invar
X31976:
Repairable: true
Repair_Material: X31978
Repair_Material_Pretty_Name: "Invar Ingot"
Repair_Material_Data_Value: 71
Repair_Material_Quantity: 5
Durability: 275
Leggings:
# Invar
X31976:
Repairable: true
Repair_Material: X31978
Repair_Material_Pretty_Name: "Invar Ingot"
Repair_Material_Data_Value: 71
Repair_Material_Quantity: 7
Durability: 375

View File

@@ -1,29 +0,0 @@
# Config wrote by M1cr0man
# Possibly incomplete. Only covers ores
# Up to date as of Thermal Expansion 3.0.0.7
Mining:
# Copper
X4064|0:
XP_Gain: 175
Double_Drops_Enabled: true
Is_Ore: true
# Tin
X4064|1:
XP_Gain: 175
Double_Drops_Enabled: true
Is_Ore: true
# Silver
X4064|2:
XP_Gain: 300
Double_Drops_Enabled: true
Is_Ore: true
# Lead
X4064|3:
XP_Gain: 300
Double_Drops_Enabled: true
Is_Ore: true
# Ferrous
X4064|4:
XP_Gain: 300
Double_Drops_Enabled: true
Is_Ore: true

View File

@@ -1,66 +0,0 @@
# Config wrote by M1cr0man
# Up to date as of Thermal Expansion 3.0.0.7
Axes:
# Invar
X31969:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X31978
Repair_Material_Pretty_Name: "Invar Ingot"
Repair_Material_Data_Value: 71
Repair_Material_Quantity: 3
Durability: 450
Hoes:
# Invar
X31968:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X31978
Repair_Material_Pretty_Name: "Invar Ingot"
Repair_Material_Data_Value: 71
Repair_Material_Quantity: 2
Durability: 450
Pickaxes:
# Invar
X31970:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X31978
Repair_Material_Pretty_Name: "Invar Ingot"
Repair_Material_Data_Value: 71
Repair_Material_Quantity: 3
Durability: 450
Shovels:
# Invar
X31971:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X31978
Repair_Material_Pretty_Name: "Invar Ingot"
Repair_Material_Data_Value: 71
Repair_Material_Quantity: 1
Durability: 450
Swords:
# Invar
X31972:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 3
Repairable: true
Repair_Material: X31978
Repair_Material_Pretty_Name: "Invar Ingot"
Repair_Material_Data_Value: 71
Repair_Material_Quantity: 2
Durability: 450

View File

@@ -1,74 +0,0 @@
# Config wrote by M1cr0man
# Up to date as of Tinker's Construct 1.5.5.7
# Also covers Tinker's Steelworks 0.0.4.2-fix2
Boots:
# Wooden (Repaired with Oak Wood)
X14366:
Repairable: true
Repair_Material: LOG
Repair_Material_Pretty_Name: "Oak Wood"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 4
Durability: 26
# Steel
X14771:
Repairable: true
Repair_Material: X14276
Repair_Material_Pretty_Name: "Steel Ingot"
Repair_Material_Data_Value: 16
Repair_Material_Quantity: 4
Durability: 325
Chestplates:
# Wooden (Repaired with Oak Wood)
X14364:
Repairable: true
Repair_Material: LOG
Repair_Material_Pretty_Name: "Oak Wood"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 8
Durability: 32
# Steel
X14769:
Repairable: true
Repair_Material: X14276
Repair_Material_Pretty_Name: "Steel Ingot"
Repair_Material_Data_Value: 16
Repair_Material_Quantity: 8
Durability: 400
Helmets:
# Wooden (Repaired with Oak Wood)
X14362:
Repairable: true
Repair_Material: LOG
Repair_Material_Pretty_Name: "Oak Wood"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 5
Durability: 22
# Steel
X14768:
Repairable: true
Repair_Material: X14276
Repair_Material_Pretty_Name: "Steel Ingot"
Repair_Material_Data_Value: 16
Repair_Material_Quantity: 5
Durability: 275
Leggings:
# Wooden (Repaired with Oak Wood)
X14362:
Repairable: true
Repair_Material: LOG
Repair_Material_Pretty_Name: "Oak Wood"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 7
Durability: 30
# Steel
X14768:
Repairable: true
Repair_Material: X14276
Repair_Material_Pretty_Name: "Steel Ingot"
Repair_Material_Data_Value: 16
Repair_Material_Quantity: 7
Durability: 375

View File

@@ -1,55 +0,0 @@
# Config wrote by M1cr0man
# Possibly incomplete. Only covers ores
# Up to date as of Tinker's Construct 1.5.5.7
Excavation:
# Iron
X1488|0:
XP_Gain: 250
Double_Drops_Enabled: true
# Gold
X1488|1:
XP_Gain: 350
Double_Drops_Enabled: true
# Copper
X1488|2:
XP_Gain: 175
Double_Drops_Enabled: true
# Tin
X1488|3:
XP_Gain: 175
Double_Drops_Enabled: true
# Aluminum
X1488|4:
XP_Gain: 250
Double_Drops_Enabled: true
# Cobalt
X1488|5:
XP_Gain: 500
Double_Drops_Enabled: true
Mining:
# Cobalt
X1475|1:
XP_Gain: 500
Double_Drops_Enabled: true
Is_Ore: true
# Ardite
X1475|2:
XP_Gain: 500
Double_Drops_Enabled: true
Is_Ore: true
# Copper
X1475|3:
XP_Gain: 175
Double_Drops_Enabled: true
Is_Ore: true
# Tin
X1475|4:
XP_Gain: 175
Double_Drops_Enabled: true
Is_Ore: true
# Aluminium
X1475|5:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: true

View File

@@ -1,149 +0,0 @@
# Config wrote by M1cr0man
# Abilites for Pickaxes and Shovels disabled due to a bug
# Repair disabled as mcMMO does not support NBTTag - based tools
# Up to date as of Tinker's Construct 1.5.5.7
# Also covers Tinker's Steelworks 0.0.4.2-fix2
Axes:
# Hatchets
X14309:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: false
Durability: 500
# Mattocks
X14316:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: false
Durability: 500
# Lumber Axes
X14317:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: false
Durability: 500
# Battle Axes
X14327:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: false
Durability: 500
Bows:
# Shortbows
X14319:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: false
Durability: 500
Hoes:
# Mattocks
X14316:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: false
Durability: 500
# Scythes
X14323:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: false
Durability: 500
Pickaxes:
# Pickaxes
X14307:
XP_Modifier: 1.0
Ability_Enabled: false
Tier: 2
Repairable: false
Durability: 500
# Hammers
X14326:
XP_Modifier: 1.0
Ability_Enabled: false
Tier: 2
Repairable: false
Durability: 500
Shovels:
# Shovels
X14308:
XP_Modifier: 1.0
Ability_Enabled: false
Tier: 2
Repairable: false
Durability: 500
# Mattocks
X14316:
XP_Modifier: 1.0
Ability_Enabled: false
Tier: 2
Repairable: false
Durability: 500
# Excavators
X14325:
XP_Modifier: 1.0
Ability_Enabled: false
Tier: 2
Repairable: false
Durability: 500
Swords:
# Broadswords
X14311:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: false
Durability: 500
# Longswords
X14312:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: false
Durability: 500
# Rapiers
X14313:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: false
Durability: 500
# Daggers
X14321:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: false
Durability: 500
# Cleavers
X14324:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: false
Durability: 500
# Battle Axes
X14327:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: false
Durability: 500
# Cutlasses
X14328:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 2
Repairable: false
Durability: 500

View File

@@ -1,161 +0,0 @@
# Config wrote by Dragyn, updated by M1cr0man
# Up to date as of Twilight Forest 1.20.5
Boots:
# Ironwood
X27978:
Repairable: true
Repair_Material: X27974
Repair_Material_Pretty_Name: "Ironwood Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 4
Durability: 260
# Fiery
X27995:
Repairable: true
Repair_Material: X27991
Repair_Material_Pretty_Name: "Fiery Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 4
Durability: 325
# Stealeaf
X28002:
Repairable: true
Repair_Material: X27998
Repair_Material_Pretty_Name: "Steeleaf"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 4
Durability: 260
# Knightmetal
X28037:
Repairable: true
Repair_Material: X28032
Repair_Material_Pretty_Name: "Knightmetal Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 4
Durability: 260
Chestplates:
# Ironwood
X27976:
Repairable: true
Repair_Material: X27974
Repair_Material_Pretty_Name: "Ironwood Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 8
Durability: 320
# Naga Scale
X27958:
Repairable: true
Repair_Material: X27957
Repair_Material_Pretty_Name: "Naga Scale"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 8
Durability: 336
# Fiery
X27993:
Repairable: true
Repair_Material: X27991
Repair_Material_Pretty_Name: "Fiery Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 8
Durability: 400
# Stealeaf
X28000:
Repairable: true
Repair_Material: X27998
Repair_Material_Pretty_Name: "Steeleaf"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 8
Durability: 320
# Knightmetal
X28035:
Repairable: true
Repair_Material: X28032
Repair_Material_Pretty_Name: "Knightmetal Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 8
Durability: 320
# Phantom
X28035:
Repairable: false
Durability: 480
Helmets:
# Ironwood
X27975:
Repairable: true
Repair_Material: X27974
Repair_Material_Pretty_Name: "Ironwood Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 5
Durability: 220
# Fiery
X27992:
Repairable: true
Repair_Material: X27991
Repair_Material_Pretty_Name: "Fiery Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 5
Durability: 275
# Stealeaf
X27999:
Repairable: true
Repair_Material: X27998
Repair_Material_Pretty_Name: "Steeleaf"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 5
Durability: 220
# Knightmetal
X28034:
Repairable: true
Repair_Material: X28032
Repair_Material_Pretty_Name: "Knightmetal Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 5
Durability: 220
# Phantom
X28034:
Repairable: false
Durability: 330
Leggings:
# Ironwood
X27977:
Repairable: true
Repair_Material: X27974
Repair_Material_Pretty_Name: "Ironwood Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 7
Durability: 300
# Naga Scale
X27959:
Repairable: true
Repair_Material: X27957
Repair_Material_Pretty_Name: "Naga Scale"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 7
Durability: 315
# Fiery
X27994:
Repairable: true
Repair_Material: X27991
Repair_Material_Pretty_Name: "Fiery Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 7
Durability: 375
# Stealeaf
X28001:
Repairable: true
Repair_Material: X27998
Repair_Material_Pretty_Name: "Steeleaf"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 7
Durability: 300
# Knightmetal
X28036:
Repairable: true
Repair_Material: X28032
Repair_Material_Pretty_Name: "Knightmetal Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 7
Durability: 300

View File

@@ -1,117 +0,0 @@
# Config created by Dragyn
# Created For twilightforest-1.20.3
#
#
# Settings for Custom Herbalism Blocks
###
Herbalism:
# Mushgloom
X2169|9:
XP_Gain: 150
Double_Drops_Enabled: true
# Torchberry Plant
X2169|13:
XP_Gain: 20
Double_Drops_Enabled: true
# Mayapple
X2169|4:
XP_Gain: 30
Double_Drops_Enabled: true
# Fiddlehead
X2169|8:
XP_Gain: 35
Double_Drops_Enabled: true
#
# Settings for Custom Mining Blocks
###
Mining:
# Mazestone
X2165|0:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X2165|1:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X2165|2:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X2165|3:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X2165|4:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X2165|5:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X2165|6:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
X2165|7:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
#
# Settings for Custom Woodcutting Blocks
###
Woodcutting:
# Twilight Oak
X2163|0:
XP_Gain: 70
Double_Drops_Enabled: true
Is_Log: true
# Canopy
X2163|1:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
# Mangrove
X2163|2:
XP_Gain: 90
Double_Drops_Enabled: true
Is_Log: true
# Darkwood
X2163|3:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
# Roots
X2170|0:
XP_Gain: 10
Double_Drops_Enabled: true
Is_Log: false
X2170|1:
XP_Gain: 10
Double_Drops_Enabled: true
Is_Log: false
# Timewood
X2176|0:
XP_Gain: 1000
Double_Drops_Enabled: true
Is_Log: true
# Transwood
X2176|1:
XP_Gain: 1000
Double_Drops_Enabled: true
Is_Log: true
# Minewood
X2176|2:
XP_Gain: 1000
Double_Drops_Enabled: true
Is_Log: true
# Sortingwood
X2176|3:
XP_Gain: 1000
Double_Drops_Enabled: true
Is_Log: true

View File

@@ -1,181 +0,0 @@
# Config wrote by Dragyn, updated by M1cr0man
# Up to date as of Twilight Forest 1.20.5
Axes:
# Ironwood
X27982:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X27974
Repair_Material_Pretty_Name: "Ironwood Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 512
# Steeleaf
X28006:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X27998
Repair_Material_Pretty_Name: "Steeleaf"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 131
# Knightmetal
X28040:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X28032
Repair_Material_Pretty_Name: "Knightmetal Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 512
# Minotaur
X28008:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: false
Durability: 1561
Hoes:
# Ironwood
X27983:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X27974
Repair_Material_Pretty_Name: "Ironwood Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 512
# Steeleaf
X28007:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X27998
Repair_Material_Pretty_Name: "Steeleaf"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 131
Pickaxes:
# Ironwood
X27981:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X27974
Repair_Material_Pretty_Name: "Ironwood Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 512
# Fiery
X27997:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X27991
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 1024
# Steeleaf
X28005:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X27998
Repair_Material_Pretty_Name: "Steeleaf"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 131
# Knightmetal
X28039:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X28032
Repair_Material_Pretty_Name: "Knightmetal Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 512
Shovels:
# Ironwood
X27980:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X27974
Repair_Material_Pretty_Name: "Ironwood Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 512
# Steeleaf
X28004:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X27998
Repair_Material_Pretty_Name: "Steeleaf"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 131
Swords:
# Ironwood
X27979:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X27974
Repair_Material_Pretty_Name: "Ironwood Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 512
# Fiery
X27996:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X27991
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 1024
# Steeleaf
X28003:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X27998
Repair_Material_Pretty_Name: "Steeleaf"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 131
# Knightmetal
X28038:
XP_Modifier: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: X28032
Repair_Material_Pretty_Name: "Knightmetal Ingot"
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 512

View File

@@ -1,171 +0,0 @@
# Config created by Dragyn
# Created For UndergroundBiomes 1.6.x - 0.4.2c
#
#
# Settings for Custom Mining Blocks
###
Mining:
X2000|0:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2000|1:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2000|2:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2000|3:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2000|4:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2000|5:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2000|6:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2000|7:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
#
X2001|0:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2001|1:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2001|2:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2001|3:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2001|4:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2001|5:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2001|6:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2001|7:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
#
X2009|0:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2009|1:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2009|2:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2009|3:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2009|4:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2009|5:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2009|6:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2009|7:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
#
X2010|0:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2010|1:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2010|2:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2010|3:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2010|4:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2010|5:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2010|6:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2010|7:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
#
X2011|0:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2011|1:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2011|2:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2011|3:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2011|4:
XP_Gain: 50
Double_Drops_Enabled: true
Is_Ore: false
X2011|5:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2011|6:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false
X2011|7:
XP_Gain: 30
Double_Drops_Enabled: true
Is_Ore: false

View File

@@ -1,132 +0,0 @@
# Config created by joulesbeef
# Created For twilightforest-2.2.3
#
#
# Settings for Boots
###
Boots:
# Ironwood
TWILIGHTFOREST_ITEM_IRONWOODBOOTS:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_IRONWOODINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Fiery
TWILIGHTFOREST_ITEM_FIERYBOOTS:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_FIERYINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Stealeaf
TWILIGHTFOREST_ITEM_STEELEAFBOOTS:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_STEELEAFINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Knightmetal
TWILIGHTFOREST_ITEM_KNIGHTLYBOOTS:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_KNIGHTMETAL
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
#
# Settings for Chestplates
###
Chestplates:
# Ironwood
TWILIGHTFOREST_ITEM_IRONWOODPLATE:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_IRONWOODINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Fiery
TWILIGHTFOREST_ITEM_FIERYPLATE:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_FIERYINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Stealeaf
TWILIGHTFOREST_ITEM_STEELEAFPLATE:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_STEELEAFINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Knightmetal
TWILIGHTFOREST_ITEM_KNIGHTLYPLATE:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_KNIGHTMETAL
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
#
# Settings for Helmets
###
Helmets:
# Ironwood
TWILIGHTFOREST_ITEM_IRONWOODHELM:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_IRONWOODINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Fiery
TWILIGHTFOREST_ITEM_FIERYHELM:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_FIERYINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Stealeaf
TWILIGHTFOREST_ITEM_STEELEAFHELM:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_STEELEAFINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Knightmetal
TWILIGHTFOREST_ITEM_KNIGHTLYHELM:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_KNIGHTMETAL
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 50
# Settings for Leggings
###
Leggings:
# Ironwood
TWILIGHTFOREST_ITEM_IRONWOODLEGS:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_IRONWOODINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Fiery
TWILIGHTFOREST_ITEM_FIERYLEGS:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_FIERYINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Stealeaf
TWILIGHTFOREST_ITEM_STEELEAFLEGS:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_STEELEAFINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Knightmetal
TWILIGHTFOREST_ITEM_KNIGHTLYLEGS:
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_KNIGHTMETAL
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500

View File

@@ -1,116 +0,0 @@
# Config created by joulesbeef
# Created For twilightforest-2.2.3
#
#
# Settings for Custom Herbalism Blocks
###
Herbalism:
# Mushgloom
TWILIGHTFOREST_TILE_TFLOG|9:
XP_Gain: 150
Double_Drops_Enabled: true
# Torchberry Plant
TWILIGHTFOREST_TILE_TFLOG|13:
XP_Gain: 20
Double_Drops_Enabled: true
# Mayapple
TWILIGHTFOREST_TILE_TFLOG|4:
XP_Gain: 30
Double_Drops_Enabled: true
# Fiddlehead
TWILIGHTFOREST_TILE_TFLOG|8:
XP_Gain: 35
Double_Drops_Enabled: true
#
# Settings for Custom Mining Blocks
###
Mining:
# Mazestone
TWILIGHTFOREST_TILE_TFMAZESTONE|0:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
TWILIGHTFOREST_TILE_TFMAZESTONE|1:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
TWILIGHTFOREST_TILE_TFMAZESTONE|2:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
TWILIGHTFOREST_TILE_TFMAZESTONE|3:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
TWILIGHTFOREST_TILE_TFMAZESTONE|4:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
TWILIGHTFOREST_TILE_TFMAZESTONE|5:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
TWILIGHTFOREST_TILE_TFMAZESTONE|6:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
TWILIGHTFOREST_TILE_TFMAZESTONE|7:
XP_Gain: 250
Double_Drops_Enabled: true
Is_Ore: false
#
# Settings for Custom Woodcutting Blocks
###
Woodcutting:
# Twilight Oak
TWILIGHTFOREST_TILE_TFLOG|0:
XP_Gain: 70
Double_Drops_Enabled: true
Is_Log: true
# Canopy
TWILIGHTFOREST_TILE_TFLOG|1:
XP_Gain: 80
Double_Drops_Enabled: true
Is_Log: true
# Mangrove
TWILIGHTFOREST_TILE_TFLOG|2:
XP_Gain: 90
Double_Drops_Enabled: true
Is_Log: true
# Darkwood
TWILIGHTFOREST_TILE_TFLOG|3:
XP_Gain: 100
Double_Drops_Enabled: true
Is_Log: true
# Roots
TWILIGHTFOREST_TILE_TFROOTS|0:
XP_Gain: 10
Double_Drops_Enabled: true
Is_Log: false
TWILIGHTFOREST_TILE_TFROOTS|1:
XP_Gain: 10
Double_Drops_Enabled: true
Is_Log: false
# Timewood
TWILIGHTFOREST_TILE_TFMAGICLOG|0:
XP_Gain: 1000
Double_Drops_Enabled: true
Is_Log: true
# Transwood
TWILIGHTFOREST_TILE_TFMAGICLOG|1:
XP_Gain: 1000
Double_Drops_Enabled: true
Is_Log: true
# Minewood
TWILIGHTFOREST_TILE_TFMAGICLOG|2:
XP_Gain: 1000
Double_Drops_Enabled: true
Is_Log: true
# Sortingwood
TWILIGHTFOREST_TILE_TFMAGICLOG|3:
XP_Gain: 1000
Double_Drops_Enabled: true
Is_Log: true

View File

@@ -1,152 +0,0 @@
# Config created by joulesbeef
# Created For twilightforest-2.2.3
#
# Settings for Custom Mobs
MoCreatures-Ogre:
Class: Monster
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
TwilightForest-TwilightLich:
Class: Monster
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
TwilightForest-HelmetCrab:
Class: Monster
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
TwilightForest-SlimeBeetle:
Class: Monster
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
TwilightForest-TwilightWraith:
Class: Monster
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
TwilightForest-Naga:
Class: Monster
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
MoCreatures-Shark:
Class: Monster
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
TwilightForest-TowerTermite:
Class: Monster
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
MoCreatures-SmallFish:
Class: Monster
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
TwilightForest-Redcap:
Class: Monster
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
TwilightForest-YetiBoss:
Class: Monster
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
MoCreatures-HellRat:
Class: Monster
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
TwilightForest-Hydra:
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
TwilightForest-Firefly:
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
TwilightForest-KnightPhantom:
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
TwilightForest-TowerGolem:
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0
MoCreatures-FishBowl:
XP_Multiplier: 1.0
Tameable: false
Taming_XP: 0
CanBeSummoned: false
COTW_Material: ''
COTW_Material_Data: 0
COTW_Material_Amount: 0

View File

@@ -1,184 +0,0 @@
# Config created by joulesbeef
# Created For twilightforest-2.2.3
#
#
# Settings for Axes
###
Axes:
# Ironwood
TWILIGHTFOREST_ITEM_IRONWOODAXE:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_IRONWOODINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Steeleaf
TWILIGHTFOREST_ITEM_STEELEAFAXE:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_STEELEAFINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Knightmetal
TWILIGHTFOREST_ITEM_KNIGHTLYAXE:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_KNIGHTMETAL
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Minotaur
TWILIGHTFOREST_ITEM_MINOTAURAXE:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: Diamond
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
#
# Settings for Hoes
###
Hoes:
# Ironwood
TWILIGHTFOREST_ITEM_IRONWOODHOE:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_IRONWOODINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Steeleaf
TWILIGHTFOREST_ITEM_STEELEAFHOE:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_STEELEAFINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
#
# Settings for Pickaxes
###
Pickaxes:
# Ironwood
TWILIGHTFOREST_ITEM_IRONWOODPICK:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_IRONWOODINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Fiery
TWILIGHTFOREST_ITEM_FIERYPICK:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_FIERYINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Steeleaf
TWILIGHTFOREST_ITEM_STEELEAFPICK:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_STEELEAFINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Knightmetal
TWILIGHTFOREST_ITEM_KNIGHTLYPICK:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_KNIGHTMETAL
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
#
# Settings for Shovels
###
Shovels:
# Ironwood
TWILIGHTFOREST_ITEM_IRONWOODSHOVEL:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_IRONWOODINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Steeleaf
TWILIGHTFOREST_ITEM_STEELEAFSHOVEL:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_STEELEAFINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
#
# Settings for Swords
###
Swords:
# Ironwood
TWILIGHTFOREST_ITEM_IRONWOODSWORD:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_IRONWOODINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Fiery
TWILIGHTFOREST_ITEM_FIERYSWORD:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_FIERYINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Steeleaf
TWILIGHTFOREST_ITEM_STEELEAFSWORD:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_STEELEAFINGOT
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500
# Knightmetal
TWILIGHTFOREST_ITEM_KNIGHTLYSWORD:
XP_Modifer: 1.0
Ability_Enabled: true
Tier: 1
Repairable: true
Repair_Material: TWILIGHTFOREST_ITEM_KNIGHTMETAL
Repair_Material_Data_Value: 0
Repair_Material_Quantity: 2
Durability: 500

View File

@@ -1,60 +0,0 @@
#
# Repair configuration
# Last updated on ${project.version}-b${BUILD_NUMBER}
#
# Any file named repair.*.yml in the mcmmmo folder will be loaded as a repair config
# All repair configs have a main section titled "Repairables"
# Afterwards, all sub-items are considered a Repairable to be loaded. The names of each subitem should be the exact material name.
# The bare minimum of a Repairable is that it have a RepairMaterial and a MaximumDurability
#
# ItemType: This is the type of item to be repaired, this is only important to permissions.
## Valid values are ARMOR, TOOL, and OTHER.
## This defaults to OTHER.
#
# MaterialType: This is the type of the material of the item to be repaired, this is only important for permissions.
## Valid values are STRING, LEATHER, WOOD, STONE, IRON, GOLD, DIAMOND, and OTHER
## This defaults to OTHER.
#
# RepairMaterial: This is the material name of the item used to repair this repairable.
## This is required to be set.
#
# RepairMaterialMetadata: This is the metadata of the item used to repair this repairable.
## A value of -1 means to ignore all metadata when repairing.
## This defaults to -1
#
# MaximumDurability: This is the maximum durability of the item.
## This is required to be set.
#
# MinimumLevel: This is the minimum repair level needed to repair this item.
## Valid values are => 0
## This defaults to 0
#
# MinimumQuantity: This is the minimum number of items needed to repair this item ignoring all other repair bonuses.
## This is typically the number of the repair material needed to create a new item, for example for a sword it is 2, for an axe it is 3
## This defaults to 2
#
# XpMultiplier: This is the amount to multiply the xp bonus by.
## This defaults to 1
#
#
# The following is an example of a repair.*.yml config which adds the ability to repair Chainmail armor using fire.
#
#
###
Repairables:
#
# Chainmail repairables
###
# Armor
CHAINMAIL_HELMET:
RepairMaterial: FIRE
XpMultiplier: 2
CHAINMAIL_CHESTPLATE:
RepairMaterial: FIRE
XpMultiplier: 2
CHAINMAIL_LEGGINGS:
RepairMaterial: FIRE
XpMultiplier: 2
CHAINMAIL_BOOTS:
RepairMaterial: FIRE
XpMultiplier: 2

399
pom.xml Executable file → Normal file
View File

@@ -1,8 +1,10 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.gmail.nossr50.mcMMO</groupId> <groupId>com.gmail.nossr50.mcMMO</groupId>
<artifactId>mcMMO</artifactId> <artifactId>mcMMO</artifactId>
<version>2.1.119-SNAPSHOT</version> <version>2.2.046</version>
<name>mcMMO</name> <name>mcMMO</name>
<url>https://github.com/mcMMO-Dev/mcMMO</url> <url>https://github.com/mcMMO-Dev/mcMMO</url>
<scm> <scm>
@@ -11,11 +13,34 @@
<developerConnection>scm:git:git@github.com:mcMMO-Dev/mcMMO.git</developerConnection> <developerConnection>scm:git:git@github.com:mcMMO-Dev/mcMMO.git</developerConnection>
<tag>HEAD</tag> <tag>HEAD</tag>
</scm> </scm>
<properties>
<!-- <spigot.version>1.19-R0.1-SNAPSHOT</spigot.version>-->
<spigot.version>1.21.11-R0.1-SNAPSHOT</spigot.version>
<kyori.adventure.version>4.23.0</kyori.adventure.version>
<kyori.adventure.platform.version>4.4.1-SNAPSHOT</kyori.adventure.platform.version>
<kyori.option.version>1.1.0</kyori.option.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<java.version>17</java.version>
</properties>
<issueManagement> <issueManagement>
<url>https://github.com/mcMMO-Dev/mcMMO/issues</url> <url>https://github.com/mcMMO-Dev/mcMMO/issues</url>
<system>GitHub</system> <system>GitHub</system>
</issueManagement> </issueManagement>
<packaging>jar</packaging> <packaging>jar</packaging>
<distributionManagement>
<repository>
<id>neetgames</id>
<url>https://nexus.neetgames.com/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>neetgames</id>
<url>https://nexus.neetgames.com/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<build> <build>
<finalName>${project.artifactId}</finalName> <finalName>${project.artifactId}</finalName>
<sourceDirectory>${basedir}/src/main/java</sourceDirectory> <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
@@ -55,24 +80,54 @@
</resource> </resource>
</resources> </resources>
<plugins> <plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<encoding>UTF-8</encoding>
<propertiesEncoding>UTF-8</propertiesEncoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
<configuration>
<junitArtifactName>org.junit.jupiter:junit-jupiter</junitArtifactName>
<trimStackTrace>false</trimStackTrace>
<excludedGroups>skip</excludedGroups>
</configuration>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.2.5</version>
<configuration>
<junitArtifactName>org.junit.jupiter:junit-jupiter</junitArtifactName>
<trimStackTrace>false</trimStackTrace>
</configuration>
</plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId> <artifactId>maven-release-plugin</artifactId>
<version>2.5.2</version> <version>3.0.1</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version> <version>3.13.0</version>
<configuration> <configuration>
<source>1.8</source> <release>17</release>
<target>1.8</target> <compilerArgs>
<arg>-parameters</arg> <!-- used for ACF syntax stuff -->
</compilerArgs>
<excludes> <excludes>
</excludes> </excludes>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>
<artifactId>maven-assembly-plugin</artifactId> <artifactId>maven-assembly-plugin</artifactId>
<version>3.7.1</version>
<configuration> <configuration>
<descriptors> <descriptors>
<descriptor>src/main/assembly/package.xml</descriptor> <descriptor>src/main/assembly/package.xml</descriptor>
@@ -91,32 +146,72 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId> <artifactId>maven-shade-plugin</artifactId>
<version>3.1.1</version> <version>3.5.3</version>
<configuration> <configuration>
<artifactSet> <artifactSet>
<includes> <includes>
<include>commons-logging:commons-logging</include> <include>commons-logging:commons-logging</include>
<include>org.apache.tomcat:tomcat-jdbc</include> <include>org.apache.tomcat:tomcat-jdbc</include>
<include>org.apache.tomcat:tomcat-juli</include> <include>org.apache.tomcat:tomcat-juli</include>
<include>org.bstats:bstats-base</include>
<include>org.bstats:bstats-bukkit</include> <include>org.bstats:bstats-bukkit</include>
<include>net.kyori:adventure-api</include>
<include>net.kyori:adventure-key</include>
<include>net.kyori:adventure-nbt</include>
<include>net.kyori:adventure-platform-api</include>
<include>net.kyori:adventure-platform-bukkit</include>
<include>net.kyori:adventure-platform-facet</include>
<include>net.kyori:adventure-platform-viaversion</include>
<include>net.kyori:adventure-text-serializer-bungeecord</include>
<include>net.kyori:adventure-text-serializer-commons</include>
<include>net.kyori:adventure-text-serializer-gson</include>
<include>net.kyori:adventure-text-serializer-gson-legacy-impl</include>
<include>net.kyori:adventure-text-serializer-json</include>
<include>net.kyori:adventure-text-serializer-json-legacy-impl</include>
<include>net.kyori:adventure-text-serializer-legacy</include>
<include>net.kyori:examination-api</include>
<include>net.kyori:examination-string</include>
<include>net.kyori:option</include>
<include>net.kyori:adventure-text-serializer-craftbukkit</include>
<include>co.aikar:acf-bukkit</include>
<include>com.tcoded:FoliaLib</include>
</includes> </includes>
</artifactSet> </artifactSet>
<relocations> <relocations>
<relocation>
<pattern>net.kyori</pattern>
<shadedPattern>com.gmail.nossr50.mcmmo.kyori</shadedPattern>
</relocation>
<relocation>
<pattern>co.aikar.commands</pattern>
<shadedPattern>com.gmail.nossr50.mcmmo.acf
</shadedPattern> <!-- Replace this -->
</relocation>
<relocation>
<pattern>co.aikar.locales</pattern>
<shadedPattern>com.gmail.nossr50.mcmmo.locales
</shadedPattern> <!-- Replace this -->
</relocation>
<relocation> <relocation>
<pattern>org.apache.commons.logging</pattern> <pattern>org.apache.commons.logging</pattern>
<shadedPattern>com.gmail.nossr50.commons.logging</shadedPattern> <shadedPattern>com.gmail.nossr50.mcmmo.commons.logging</shadedPattern>
</relocation> </relocation>
<relocation> <relocation>
<pattern>org.apache.juli</pattern> <pattern>org.apache.juli</pattern>
<shadedPattern>com.gmail.nossr50.database.tomcat.juli</shadedPattern> <shadedPattern>com.gmail.nossr50.mcmmo.database.tomcat.juli
</shadedPattern>
</relocation> </relocation>
<relocation> <relocation>
<pattern>org.apache.tomcat</pattern> <pattern>org.apache.tomcat</pattern>
<shadedPattern>com.gmail.nossr50.database.tomcat</shadedPattern> <shadedPattern>com.gmail.nossr50.mcmmo.database.tomcat</shadedPattern>
</relocation> </relocation>
<relocation> <relocation>
<pattern>org.bstats</pattern> <pattern>org.bstats</pattern>
<shadedPattern>com.gmail.nossr50.metrics.bstat</shadedPattern> <shadedPattern>com.gmail.nossr50.mcmmo.metrics.bstats</shadedPattern>
</relocation>
<relocation>
<pattern>com.tcoded.folialib</pattern>
<shadedPattern>com.gmail.nossr50.mcmmo.folialib</shadedPattern>
</relocation> </relocation>
</relocations> </relocations>
</configuration> </configuration>
@@ -134,10 +229,17 @@
<extension> <extension>
<groupId>org.apache.maven.wagon</groupId> <groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-file</artifactId> <artifactId>wagon-file</artifactId>
<version>2.2</version> <version>3.5.2</version>
</extension> </extension>
</extensions> </extensions>
</build> </build>
<pluginRepositories>
<pluginRepository>
<id>maven-snapshots</id>
<url>https://repository.apache.org/content/repositories/snapshots/</url>
</pluginRepository>
</pluginRepositories>
<repositories> <repositories>
<repository> <repository>
<id>spigot-repo</id> <id>spigot-repo</id>
@@ -148,32 +250,175 @@
<url>https://repo.codemc.org/repository/maven-public</url> <url>https://repo.codemc.org/repository/maven-public</url>
</repository> </repository>
<repository> <repository>
<id>sk89q-repo</id> <id>enginehub-repo</id>
<url>http://maven.sk89q.com/repo/</url> <url>https://maven.enginehub.org/repo/</url>
</repository>
<repository> <!-- for development builds -->
<id>sonatype-oss</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
<repository>
<id>aikar</id>
<url>https://repo.aikar.co/content/groups/aikar/</url>
</repository>
<repository>
<id>sonatype-oss-snapshots1</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
<repository>
<id>placeholderapi</id>
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
</repository>
<!-- MockBukkit -->
<repository>
<id>papermc</id>
<url>https://repo.papermc.io/repository/maven-public/</url>
</repository>
<repository>
<id>jitpack</id>
<url>https://jitpack.io</url>
</repository>
<repository>
<id>tcoded-releases</id>
<url>https://repo.tcoded.com/releases/</url>
</repository> </repository>
</repositories> </repositories>
<dependencies> <dependencies>
<!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.25.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.dmulloy2</groupId>
<artifactId>ProtocolLib</artifactId>
<version>5.3.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.2.224</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>me.clip</groupId>
<artifactId>placeholderapi</artifactId>
<version>2.11.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>co.aikar</groupId>
<artifactId>acf-bukkit</artifactId> <!-- Don't forget to replace this -->
<version>0.5.1-SNAPSHOT</version> <!-- Replace this as well -->
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-text-serializer-bungeecord</artifactId>
<version>${kyori.adventure.platform.version}</version>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-text-serializer-gson</artifactId>
<version>${kyori.adventure.version}</version>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-text-serializer-gson-legacy-impl</artifactId>
<version>${kyori.adventure.version}</version>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-text-serializer-json</artifactId>
<version>${kyori.adventure.version}</version>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-text-serializer-json-legacy-impl</artifactId>
<version>${kyori.adventure.version}</version>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-api</artifactId>
<version>${kyori.adventure.version}</version>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-nbt</artifactId>
<version>${kyori.adventure.version}</version>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-key</artifactId>
<version>${kyori.adventure.version}</version>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-platform-api</artifactId>
<version>${kyori.adventure.platform.version}</version>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-platform-bukkit</artifactId>
<version>${kyori.adventure.platform.version}</version>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-platform-facet</artifactId>
<version>${kyori.adventure.platform.version}</version>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-platform-viaversion</artifactId>
<version>${kyori.adventure.platform.version}</version>
</dependency>
<dependency>
<groupId>net.kyori</groupId>
<artifactId>option</artifactId>
<version>${kyori.option.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.apache.maven.scm</groupId> <groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-gitexe</artifactId> <artifactId>maven-scm-provider-gitexe</artifactId>
<version>1.8.1</version> <version>2.1.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.bstats</groupId> <groupId>org.bstats</groupId>
<artifactId>bstats-bukkit</artifactId> <artifactId>bstats-bukkit</artifactId>
<version>1.4</version> <version>3.0.2</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- <dependency>-->
<!-- <groupId>io.papermc.paper</groupId>-->
<!-- <artifactId>paper-api</artifactId>-->
<!-- <version>1.21.8-R0.1-SNAPSHOT</version>-->
<!-- </dependency>-->
<dependency> <dependency>
<groupId>org.spigotmc</groupId> <groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId> <artifactId>spigot-api</artifactId>
<version>1.15.1-R0.1-SNAPSHOT</version> <version>${spigot.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sk89q.worldedit</groupId>
<artifactId>worldedit-bukkit</artifactId>
<version>7.2.0-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.sk89q.worldguard</groupId> <groupId>com.sk89q.worldguard</groupId>
<artifactId>worldguard-core</artifactId> <artifactId>worldguard-core</artifactId>
<version>7.0.1-SNAPSHOT</version> <version>7.0.7</version>
<exclusions>
<exclusion>
<!-- We use jetbrains instead. Excluding this -->
<!-- prevents us from using inconsistent annotations -->
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.sk89q.worldguard</groupId> <groupId>com.sk89q.worldguard</groupId>
@@ -186,20 +431,124 @@
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<!-- JUnit 5 -->
<dependency> <dependency>
<groupId>junit</groupId> <groupId>org.junit.jupiter</groupId>
<artifactId>junit-dep</artifactId> <artifactId>junit-jupiter</artifactId>
<version>4.10</version> <version>5.11.0</version>
<scope>test</scope>
</dependency>
<!-- Testcontainers core -->
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>2.0.2</version>
<scope>test</scope>
</dependency>
<!-- Testcontainers JUnit Jupiter integration -->
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers-junit-jupiter</artifactId>
<version>2.0.2</version>
<scope>test</scope>
</dependency>
<!-- Log4j core for tests -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.25.2</version>
<scope>test</scope>
</dependency>
<!-- Log4j API -->
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.25.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.25.2</version>
<scope>test</scope>
</dependency>
<!-- MySQL Testcontainers module -->
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers-mysql</artifactId>
<scope>test</scope>
</dependency>
<!-- MariaDB Testcontainers module -->
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers-mariadb</artifactId>
<scope>test</scope>
</dependency>
<!-- MySQL JDBC driver -->
<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>9.5.0</version>
<scope>test</scope>
</dependency>
<!-- MariaDB JDBC driver -->
<!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.5.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.12.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>5.2.0</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.tomcat</groupId> <groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId> <artifactId>tomcat-jdbc</artifactId>
<version>7.0.52</version> <version>11.0.14</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>24.1.0</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>33.2.0-jre
</version> <!-- At this time Spigot is including 29.0 Guava classes that we are using -->
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.tcoded</groupId>
<artifactId>FoliaLib</artifactId>
<version>0.5.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<properties> <dependencyManagement>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <dependencies>
</properties> <dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers-bom</artifactId>
<version>2.0.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project> </project>

View File

@@ -2,47 +2,53 @@ package com.gmail.nossr50.api;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.SuperAbilityType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType;
import com.gmail.nossr50.runnables.skills.BleedTimerTask; import com.gmail.nossr50.util.MetadataConstants;
import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.player.UserManager;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@SuppressWarnings("unused")
public final class AbilityAPI { public final class AbilityAPI {
private AbilityAPI() {} private AbilityAPI() {
}
public static boolean berserkEnabled(Player player) { public static boolean berserkEnabled(Player player) {
return UserManager.getPlayer(player).getAbilityMode(SuperAbilityType.BERSERK); return hasAbilityEnabled(player, SuperAbilityType.BERSERK);
} }
public static boolean gigaDrillBreakerEnabled(Player player) { public static boolean gigaDrillBreakerEnabled(Player player) {
return UserManager.getPlayer(player).getAbilityMode(SuperAbilityType.GIGA_DRILL_BREAKER); return hasAbilityEnabled(player, SuperAbilityType.GIGA_DRILL_BREAKER);
} }
public static boolean greenTerraEnabled(Player player) { public static boolean greenTerraEnabled(Player player) {
return UserManager.getPlayer(player).getAbilityMode(SuperAbilityType.GREEN_TERRA); return hasAbilityEnabled(player, SuperAbilityType.GREEN_TERRA);
} }
public static boolean serratedStrikesEnabled(Player player) { public static boolean serratedStrikesEnabled(Player player) {
return UserManager.getPlayer(player).getAbilityMode(SuperAbilityType.SERRATED_STRIKES); return hasAbilityEnabled(player, SuperAbilityType.SERRATED_STRIKES);
} }
public static boolean skullSplitterEnabled(Player player) { public static boolean skullSplitterEnabled(Player player) {
return UserManager.getPlayer(player).getAbilityMode(SuperAbilityType.SKULL_SPLITTER); return hasAbilityEnabled(player, SuperAbilityType.SKULL_SPLITTER);
} }
public static boolean superBreakerEnabled(Player player) { public static boolean superBreakerEnabled(Player player) {
return UserManager.getPlayer(player).getAbilityMode(SuperAbilityType.SUPER_BREAKER); return hasAbilityEnabled(player, SuperAbilityType.SUPER_BREAKER);
} }
public static boolean treeFellerEnabled(Player player) { public static boolean treeFellerEnabled(Player player) {
return UserManager.getPlayer(player).getAbilityMode(SuperAbilityType.TREE_FELLER); return hasAbilityEnabled(player, SuperAbilityType.TREE_FELLER);
} }
public static boolean isAnyAbilityEnabled(Player player) { public static boolean isAnyAbilityEnabled(Player player) {
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
if(mmoPlayer == null) {
return false;
}
for (SuperAbilityType ability : SuperAbilityType.values()) { for (SuperAbilityType ability : SuperAbilityType.values()) {
if (mcMMOPlayer.getAbilityMode(ability)) { if (mmoPlayer.getAbilityMode(ability)) {
return true; return true;
} }
} }
@@ -50,39 +56,64 @@ public final class AbilityAPI {
return false; return false;
} }
private static boolean hasAbilityEnabled(Player player, SuperAbilityType ability) {
McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
return mmoPlayer != null && mmoPlayer.getAbilityMode(ability);
}
public static void resetCooldowns(Player player) { public static void resetCooldowns(Player player) {
UserManager.getPlayer(player).resetCooldowns(); McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
if(mmoPlayer == null) {
return;
}
mmoPlayer.resetCooldowns();
} }
public static void setBerserkCooldown(Player player, long cooldown) { public static void setBerserkCooldown(Player player, long cooldown) {
UserManager.getPlayer(player).setAbilityDATS(SuperAbilityType.BERSERK, cooldown); setAbilityCooldown(player, SuperAbilityType.BERSERK, cooldown);
} }
public static void setGigaDrillBreakerCooldown(Player player, long cooldown) { public static void setGigaDrillBreakerCooldown(Player player, long cooldown) {
UserManager.getPlayer(player).setAbilityDATS(SuperAbilityType.GIGA_DRILL_BREAKER, cooldown); setAbilityCooldown(player, SuperAbilityType.GIGA_DRILL_BREAKER, cooldown);
} }
public static void setGreenTerraCooldown(Player player, long cooldown) { public static void setGreenTerraCooldown(Player player, long cooldown) {
UserManager.getPlayer(player).setAbilityDATS(SuperAbilityType.GREEN_TERRA, cooldown); setAbilityCooldown(player, SuperAbilityType.GREEN_TERRA, cooldown);
} }
public static void setSerratedStrikesCooldown(Player player, long cooldown) { public static void setSerratedStrikesCooldown(Player player, long cooldown) {
UserManager.getPlayer(player).setAbilityDATS(SuperAbilityType.SERRATED_STRIKES, cooldown); setAbilityCooldown(player, SuperAbilityType.SERRATED_STRIKES, cooldown);
} }
public static void setSkullSplitterCooldown(Player player, long cooldown) { public static void setSkullSplitterCooldown(Player player, long cooldown) {
UserManager.getPlayer(player).setAbilityDATS(SuperAbilityType.SKULL_SPLITTER, cooldown); setAbilityCooldown(player, SuperAbilityType.SKULL_SPLITTER, cooldown);
} }
public static void setSuperBreakerCooldown(Player player, long cooldown) { public static void setSuperBreakerCooldown(Player player, long cooldown) {
UserManager.getPlayer(player).setAbilityDATS(SuperAbilityType.SUPER_BREAKER, cooldown); setAbilityCooldown(player, SuperAbilityType.SUPER_BREAKER, cooldown);
} }
public static void setTreeFellerCooldown(Player player, long cooldown) { public static void setTreeFellerCooldown(Player player, long cooldown) {
UserManager.getPlayer(player).setAbilityDATS(SuperAbilityType.TREE_FELLER, cooldown); setAbilityCooldown(player, SuperAbilityType.TREE_FELLER, cooldown);
}
private static void setAbilityCooldown(Player player, SuperAbilityType ability, long cooldown) {
McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
if(mmoPlayer == null) {
return;
}
mmoPlayer.setAbilityDATS(ability, cooldown);
} }
public static boolean isBleeding(LivingEntity entity) { public static boolean isBleeding(LivingEntity entity) {
return BleedTimerTask.isBleeding(entity); if (entity.isValid()) {
return entity.hasMetadata(MetadataConstants.METADATA_KEY_RUPTURE);
}
return false;
} }
} }

View File

@@ -1,71 +1,12 @@
package com.gmail.nossr50.api; package com.gmail.nossr50.api;
import com.gmail.nossr50.chat.ChatManager; import com.gmail.nossr50.datatypes.chat.ChatChannel;
import com.gmail.nossr50.chat.ChatManagerFactory; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.chat.PartyChatManager;
import com.gmail.nossr50.datatypes.chat.ChatMode;
import com.gmail.nossr50.party.PartyManager;
import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.player.UserManager;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
public final class ChatAPI { public final class ChatAPI {
private ChatAPI() {} private ChatAPI() {
/**
* Send a message to all members of a party
* </br>
* This function is designed for API usage.
*
* @param plugin The plugin sending the message
* @param sender The name of the sender
* @param displayName The display name of the sender
* @param party The name of the party to send to
* @param message The message to send
*/
public static void sendPartyChat(Plugin plugin, String sender, String displayName, String party, String message) {
getPartyChatManager(plugin, party).handleChat(sender, displayName, message);
}
/**
* Send a message to all members of a party
* </br>
* This function is designed for API usage.
*
* @param plugin The plugin sending the message
* @param sender The name of the sender to display in the chat
* @param party The name of the party to send to
* @param message The message to send
*/
public static void sendPartyChat(Plugin plugin, String sender, String party, String message) {
getPartyChatManager(plugin, party).handleChat(sender, message);
}
/**
* Send a message to administrators
* </br>
* This function is designed for API usage.
*
* @param plugin The plugin sending the message
* @param sender The name of the sender
* @param displayName The display name of the sender
* @param message The message to send
*/
public static void sendAdminChat(Plugin plugin, String sender, String displayName, String message) {
ChatManagerFactory.getChatManager(plugin, ChatMode.ADMIN).handleChat(sender, displayName, message);
}
/**
* Send a message to administrators
* </br>
* This function is designed for API usage.
*
* @param plugin The plugin sending the message
* @param sender The name of the sender to display in the chat
* @param message The message to send
*/
public static void sendAdminChat(Plugin plugin, String sender, String message) {
ChatManagerFactory.getChatManager(plugin, ChatMode.ADMIN).handleChat(sender, message);
} }
/** /**
@@ -75,7 +16,7 @@ public final class ChatAPI {
* @return true if the player is using party chat, false otherwise * @return true if the player is using party chat, false otherwise
*/ */
public static boolean isUsingPartyChat(Player player) { public static boolean isUsingPartyChat(Player player) {
return UserManager.getPlayer(player).isChatEnabled(ChatMode.PARTY); return UserManager.getPlayer(player).getChatChannel() == ChatChannel.PARTY;
} }
/** /**
@@ -85,7 +26,7 @@ public final class ChatAPI {
* @return true if the player is using party chat, false otherwise * @return true if the player is using party chat, false otherwise
*/ */
public static boolean isUsingPartyChat(String playerName) { public static boolean isUsingPartyChat(String playerName) {
return UserManager.getPlayer(playerName).isChatEnabled(ChatMode.PARTY); return UserManager.getPlayer(playerName).getChatChannel() == ChatChannel.PARTY;
} }
/** /**
@@ -95,7 +36,7 @@ public final class ChatAPI {
* @return true if the player is using admin chat, false otherwise * @return true if the player is using admin chat, false otherwise
*/ */
public static boolean isUsingAdminChat(Player player) { public static boolean isUsingAdminChat(Player player) {
return UserManager.getPlayer(player).isChatEnabled(ChatMode.ADMIN); return UserManager.getPlayer(player).getChatChannel() == ChatChannel.ADMIN;
} }
/** /**
@@ -105,7 +46,7 @@ public final class ChatAPI {
* @return true if the player is using admin chat, false otherwise * @return true if the player is using admin chat, false otherwise
*/ */
public static boolean isUsingAdminChat(String playerName) { public static boolean isUsingAdminChat(String playerName) {
return UserManager.getPlayer(playerName).isChatEnabled(ChatMode.ADMIN); return UserManager.getPlayer(playerName).getChatChannel() == ChatChannel.ADMIN;
} }
/** /**
@@ -114,7 +55,8 @@ public final class ChatAPI {
* @param player The player to toggle party chat on. * @param player The player to toggle party chat on.
*/ */
public static void togglePartyChat(Player player) { public static void togglePartyChat(Player player) {
UserManager.getPlayer(player).toggleChat(ChatMode.PARTY); mcMMO.p.getChatManager()
.setOrToggleChatChannel(UserManager.getPlayer(player), ChatChannel.PARTY);
} }
/** /**
@@ -123,7 +65,8 @@ public final class ChatAPI {
* @param playerName The name of the player to toggle party chat on. * @param playerName The name of the player to toggle party chat on.
*/ */
public static void togglePartyChat(String playerName) { public static void togglePartyChat(String playerName) {
UserManager.getPlayer(playerName).toggleChat(ChatMode.PARTY); mcMMO.p.getChatManager()
.setOrToggleChatChannel(UserManager.getPlayer(playerName), ChatChannel.PARTY);
} }
/** /**
@@ -132,7 +75,8 @@ public final class ChatAPI {
* @param player The player to toggle admin chat on. * @param player The player to toggle admin chat on.
*/ */
public static void toggleAdminChat(Player player) { public static void toggleAdminChat(Player player) {
UserManager.getPlayer(player).toggleChat(ChatMode.ADMIN); mcMMO.p.getChatManager()
.setOrToggleChatChannel(UserManager.getPlayer(player), ChatChannel.ADMIN);
} }
/** /**
@@ -141,13 +85,7 @@ public final class ChatAPI {
* @param playerName The name of the player to toggle party chat on. * @param playerName The name of the player to toggle party chat on.
*/ */
public static void toggleAdminChat(String playerName) { public static void toggleAdminChat(String playerName) {
UserManager.getPlayer(playerName).toggleChat(ChatMode.ADMIN); mcMMO.p.getChatManager()
} .setOrToggleChatChannel(UserManager.getPlayer(playerName), ChatChannel.ADMIN);
private static ChatManager getPartyChatManager(Plugin plugin, String party) {
ChatManager chatManager = ChatManagerFactory.getChatManager(plugin, ChatMode.PARTY);
((PartyChatManager) chatManager).setParty(PartyManager.getParty(party));
return chatManager;
} }
} }

View File

@@ -2,27 +2,51 @@ package com.gmail.nossr50.api;
import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import java.util.UUID; import java.util.UUID;
import org.bukkit.OfflinePlayer;
import org.jetbrains.annotations.NotNull;
public class DatabaseAPI { public class DatabaseAPI {
private DatabaseAPI() {
/**
* Checks if a player exists in the mcMMO Database
* @param uuid player UUID
* @return true if the player exists in the DB, false if they do not
*/
public boolean doesPlayerExistInDB(String uuid) {
return doesPlayerExistInDB(UUID.fromString(uuid));
} }
/** /**
* Checks if a player exists in the mcMMO Database * Checks if a player exists in the mcMMO Database
* @param uuid player UUID *
* @param offlinePlayer target player
* @return true if the player exists in the DB, false if they do not * @return true if the player exists in the DB, false if they do not
*/ */
public boolean doesPlayerExistInDB(UUID uuid) { public static boolean doesPlayerExistInDB(@NotNull OfflinePlayer offlinePlayer) {
PlayerProfile playerProfile = mcMMO.getDatabaseManager().loadPlayerProfile(uuid); PlayerProfile playerProfile = mcMMO.getDatabaseManager().loadPlayerProfile(offlinePlayer);
return playerProfile.isLoaded();
}
/**
* Checks if a player exists in the mcMMO Database
*
* @param uuid target player
* @return true if the player exists in the DB, false if they do not
*/
public static boolean doesPlayerExistInDB(@NotNull UUID uuid) {
PlayerProfile playerProfile = null;
try {
playerProfile = mcMMO.getDatabaseManager().loadPlayerProfile(uuid);
} catch (Exception e) {
return false;
}
return playerProfile.isLoaded();
}
/**
* Checks if a player exists in the mcMMO Database
*
* @param playerName target player
* @return true if the player exists in the DB, false if they do not
*/
public static boolean doesPlayerExistInDB(@NotNull String playerName) {
PlayerProfile playerProfile = mcMMO.getDatabaseManager().loadPlayerProfile(playerName);
return playerProfile.isLoaded(); return playerProfile.isLoaded();
} }

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,6 @@
package com.gmail.nossr50.api;
public enum FakeBlockBreakEventType {
FAKE,
TREE_FELLER
}

View File

@@ -0,0 +1,17 @@
package com.gmail.nossr50.api;
public enum ItemSpawnReason {
ARROW_RETRIEVAL_ACTIVATED, //Players sometimes can retrieve arrows instead of losing them when hitting a mob
EXCAVATION_TREASURE, //Any drops when excavation treasures activate fall under this
FISHING_EXTRA_FISH, //A config setting allows more fish to be found when fishing, the extra fish are part of this
FISHING_SHAKE_TREASURE, //When using a fishing rod on a mob and finding a treasure via Shake
HYLIAN_LUCK_TREASURE, //When finding a treasure in grass via hylian luck
BLAST_MINING_DEBRIS_NON_ORES, //The non-ore debris that are dropped from blast mining
BLAST_MINING_ORES, //The ore(s) which may include player placed ores being dropped from blast mining
BLAST_MINING_ORES_BONUS_DROP, //Any bonus ores that drop from a result of a players Mining skills
UNARMED_DISARMED_ITEM, //When you disarm an opponent and they drop their weapon
SALVAGE_ENCHANTMENT_BOOK, //When you salvage an enchanted item and get the enchantment back in book form
SALVAGE_MATERIALS, //When you salvage an item and get materials back
TREE_FELLER_DISPLACED_BLOCK,
BONUS_DROPS, //Can be from Mining, Woodcutting, Herbalism, etc
}

View File

@@ -1,20 +1,24 @@
package com.gmail.nossr50.api; package com.gmail.nossr50.api;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.interactions.NotificationType;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.party.PartyLeader; import com.gmail.nossr50.datatypes.party.PartyLeader;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.party.PartyManager;
import com.gmail.nossr50.util.player.NotificationManager; import com.gmail.nossr50.util.player.NotificationManager;
import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.player.UserManager;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.UUID;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.jetbrains.annotations.Nullable;
import java.util.*;
public final class PartyAPI { public final class PartyAPI {
private PartyAPI() {} private PartyAPI() {
}
/** /**
* Get the name of the party a player is in. * Get the name of the party a player is in.
@@ -25,13 +29,22 @@ public final class PartyAPI {
* @return the name of the player's party, or null if not in a party * @return the name of the player's party, or null if not in a party
*/ */
public static String getPartyName(Player player) { public static String getPartyName(Player player) {
if (!inParty(player)) { if (!mcMMO.p.getPartyConfig().isPartyEnabled() || !inParty(player)) {
return null; return null;
} }
return UserManager.getPlayer(player).getParty().getName(); return UserManager.getPlayer(player).getParty().getName();
} }
/**
* Check if the party system is enabled.
*
* @return true if the party system is enabled, false otherwise
*/
public static boolean isPartySystemEnabled() {
return mcMMO.p.getPartyConfig().isPartyEnabled();
}
/** /**
* Checks if a player is in a party. * Checks if a player is in a party.
* </br> * </br>
@@ -41,8 +54,9 @@ public final class PartyAPI {
* @return true if the player is in a party, false otherwise * @return true if the player is in a party, false otherwise
*/ */
public static boolean inParty(Player player) { public static boolean inParty(Player player) {
if(UserManager.getPlayer(player) == null) if (!mcMMO.p.getPartyConfig().isPartyEnabled() || UserManager.getPlayer(player) == null) {
return false; return false;
}
return UserManager.getPlayer(player).inParty(); return UserManager.getPlayer(player).inParty();
} }
@@ -52,12 +66,16 @@ public final class PartyAPI {
* </br> * </br>
* This function is designed for API usage. * This function is designed for API usage.
* *
* @param playera The first player to check * @param playerA The first player to check
* @param playerb The second player to check * @param playerB The second player to check
* @return true if the two players are in the same party, false otherwise * @return true if the two players are in the same party, false otherwise
*/ */
public static boolean inSameParty(Player playera, Player playerb) { public static boolean inSameParty(Player playerA, Player playerB) {
return PartyManager.inSameParty(playera, playerb); if (!mcMMO.p.getPartyConfig().isPartyEnabled()) {
return false;
}
return mcMMO.p.getPartyManager().inSameParty(playerA, playerB);
} }
/** /**
@@ -68,7 +86,7 @@ public final class PartyAPI {
* @return the list of parties. * @return the list of parties.
*/ */
public static List<Party> getParties() { public static List<Party> getParties() {
return PartyManager.getParties(); return mcMMO.p.getPartyManager().getParties();
} }
/** /**
@@ -82,33 +100,40 @@ public final class PartyAPI {
*/ */
@Deprecated @Deprecated
public static void addToParty(Player player, String partyName) { public static void addToParty(Player player, String partyName) {
//Check if player profile is loaded if (!mcMMO.p.getPartyConfig().isPartyEnabled()) {
if(UserManager.getPlayer(player) == null)
return; return;
}
Party party = PartyManager.getParty(partyName); //Check if player profile is loaded
final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
if (mmoPlayer == null) {
return;
}
Party party = mcMMO.p.getPartyManager().getParty(partyName);
if (party == null) { if (party == null) {
party = new Party(new PartyLeader(player.getUniqueId(), player.getName()), partyName); party = new Party(new PartyLeader(player.getUniqueId(), player.getName()), partyName);
} else { } else {
if(PartyManager.isPartyFull(player, party)) if (mcMMO.p.getPartyManager().isPartyFull(player, party)) {
{ NotificationManager.sendPlayerInformation(
NotificationManager.sendPlayerInformation(player, NotificationType.PARTY_MESSAGE, "Commands.Party.PartyFull", party.toString()); player, NotificationType.PARTY_MESSAGE,
"Commands.Party.PartyFull", party.toString());
return; return;
} }
} }
PartyManager.addToParty(UserManager.getPlayer(player), party); mcMMO.p.getPartyManager().addToParty(mmoPlayer, party);
} }
/** /**
* The max party size of the server * The max party size of the server 0 or less for no size limit
* 0 or less for no size limit *
* @return the max party size on this server * @return the max party size on this server
*/ */
public static int getMaxPartySize() public static int getMaxPartySize() {
{ return mcMMO.p.getGeneralConfig().getPartyMaxSize();
return Config.getInstance().getPartyMaxSize();
} }
/** /**
@@ -120,19 +145,19 @@ public final class PartyAPI {
* @param partyName The party to add the player to * @param partyName The party to add the player to
* @param bypassLimit if true bypasses party size limits * @param bypassLimit if true bypasses party size limits
*/ */
//TODO: bypasslimit not used?
public static void addToParty(Player player, String partyName, boolean bypassLimit) { public static void addToParty(Player player, String partyName, boolean bypassLimit) {
//Check if player profile is loaded //Check if player profile is loaded
if(UserManager.getPlayer(player) == null) if (!mcMMO.p.getPartyConfig().isPartyEnabled() || UserManager.getPlayer(player) == null) {
return; return;
}
Party party = PartyManager.getParty(partyName); Party party = mcMMO.p.getPartyManager().getParty(partyName);
if (party == null) { if (party == null) {
party = new Party(new PartyLeader(player.getUniqueId(), player.getName()), partyName); party = new Party(new PartyLeader(player.getUniqueId(), player.getName()), partyName);
} }
PartyManager.addToParty(UserManager.getPlayer(player), party); mcMMO.p.getPartyManager().addToParty(UserManager.getPlayer(player), party);
} }
/** /**
@@ -144,10 +169,11 @@ public final class PartyAPI {
*/ */
public static void removeFromParty(Player player) { public static void removeFromParty(Player player) {
//Check if player profile is loaded //Check if player profile is loaded
if(UserManager.getPlayer(player) == null) if (!mcMMO.p.getPartyConfig().isPartyEnabled() || UserManager.getPlayer(player) == null) {
return; return;
}
PartyManager.removeFromParty(UserManager.getPlayer(player)); mcMMO.p.getPartyManager().removeFromParty(UserManager.getPlayer(player));
} }
/** /**
@@ -158,8 +184,12 @@ public final class PartyAPI {
* @param partyName The party name * @param partyName The party name
* @return the leader of the party * @return the leader of the party
*/ */
public static String getPartyLeader(String partyName) { public static @Nullable String getPartyLeader(String partyName) {
return PartyManager.getPartyLeaderName(partyName); if (!mcMMO.p.getPartyConfig().isPartyEnabled()) {
return null;
}
return mcMMO.p.getPartyManager().getPartyLeaderName(partyName);
} }
/** /**
@@ -172,7 +202,13 @@ public final class PartyAPI {
*/ */
@Deprecated @Deprecated
public static void setPartyLeader(String partyName, String playerName) { public static void setPartyLeader(String partyName, String playerName) {
PartyManager.setPartyLeader(mcMMO.p.getServer().getOfflinePlayer(playerName).getUniqueId(), PartyManager.getParty(partyName)); if (!mcMMO.p.getPartyConfig().isPartyEnabled()) {
return;
}
mcMMO.p.getPartyManager().setPartyLeader(
mcMMO.p.getServer().getOfflinePlayer(playerName).getUniqueId(),
mcMMO.p.getPartyManager().getParty(partyName));
} }
/** /**
@@ -185,9 +221,12 @@ public final class PartyAPI {
*/ */
@Deprecated @Deprecated
public static List<OfflinePlayer> getOnlineAndOfflineMembers(Player player) { public static List<OfflinePlayer> getOnlineAndOfflineMembers(Player player) {
List<OfflinePlayer> members = new ArrayList<OfflinePlayer>(); if (!mcMMO.p.getPartyConfig().isPartyEnabled()) {
return null;
}
for (UUID memberUniqueId : PartyManager.getAllMembers(player).keySet()) { final List<OfflinePlayer> members = new ArrayList<>();
for (UUID memberUniqueId : mcMMO.p.getPartyManager().getAllMembers(player).keySet()) {
OfflinePlayer member = mcMMO.p.getServer().getOfflinePlayer(memberUniqueId); OfflinePlayer member = mcMMO.p.getServer().getOfflinePlayer(memberUniqueId);
members.add(member); members.add(member);
} }
@@ -204,7 +243,11 @@ public final class PartyAPI {
*/ */
@Deprecated @Deprecated
public static LinkedHashSet<String> getMembers(Player player) { public static LinkedHashSet<String> getMembers(Player player) {
return (LinkedHashSet<String>) PartyManager.getAllMembers(player).values(); if (!mcMMO.p.getPartyConfig().isPartyEnabled()) {
return null;
}
return (LinkedHashSet<String>) mcMMO.p.getPartyManager().getAllMembers(player).values();
} }
/** /**
@@ -216,7 +259,11 @@ public final class PartyAPI {
* @return all the player names and uuids in the player's party * @return all the player names and uuids in the player's party
*/ */
public static LinkedHashMap<UUID, String> getMembersMap(Player player) { public static LinkedHashMap<UUID, String> getMembersMap(Player player) {
return PartyManager.getAllMembers(player); if (!mcMMO.p.getPartyConfig().isPartyEnabled()) {
return null;
}
return mcMMO.p.getPartyManager().getAllMembers(player);
} }
/** /**
@@ -228,7 +275,11 @@ public final class PartyAPI {
* @return all online players in this party * @return all online players in this party
*/ */
public static List<Player> getOnlineMembers(String partyName) { public static List<Player> getOnlineMembers(String partyName) {
return PartyManager.getOnlineMembers(partyName); if (!mcMMO.p.getPartyConfig().isPartyEnabled()) {
return null;
}
return mcMMO.p.getPartyManager().getOnlineMembers(partyName);
} }
/** /**
@@ -240,7 +291,7 @@ public final class PartyAPI {
* @return all online players in the player's party * @return all online players in the player's party
*/ */
public static List<Player> getOnlineMembers(Player player) { public static List<Player> getOnlineMembers(Player player) {
return PartyManager.getOnlineMembers(player); return mcMMO.p.getPartyManager().getOnlineMembers(player);
} }
public static boolean hasAlly(String partyName) { public static boolean hasAlly(String partyName) {
@@ -248,7 +299,7 @@ public final class PartyAPI {
} }
public static String getAllyName(String partyName) { public static String getAllyName(String partyName) {
Party ally = PartyManager.getParty(partyName).getAlly(); Party ally = mcMMO.p.getPartyManager().getParty(partyName).getAlly();
if (ally != null) { if (ally != null) {
return ally.getName(); return ally.getName();
} }

View File

@@ -1,17 +1,18 @@
package com.gmail.nossr50.api; package com.gmail.nossr50.api;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.skills.SkillTools;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
public final class SkillAPI { public final class SkillAPI {
private SkillAPI() {} private SkillAPI() {
}
/** /**
* Returns a list of strings with mcMMO's skills * Returns a list of strings with mcMMO's skills This includes parent and child skills
* This includes parent and child skills
* </br> * </br>
* This function is designed for API usage. * This function is designed for API usage.
* *
@@ -22,67 +23,62 @@ public final class SkillAPI {
} }
/** /**
* Returns a list of strings with mcMMO's skills * Returns a list of strings with mcMMO's skills This only includes parent skills
* This only includes parent skills
* </br> * </br>
* This function is designed for API usage. * This function is designed for API usage.
* *
* @return a list of strings with valid skill names * @return a list of strings with valid skill names
*/ */
public static List<String> getNonChildSkills() { public static List<String> getNonChildSkills() {
return getListFromEnum(PrimarySkillType.NON_CHILD_SKILLS); return getListFromEnum(SkillTools.NON_CHILD_SKILLS);
} }
/** /**
* Returns a list of strings with mcMMO's skills * Returns a list of strings with mcMMO's skills This only includes child skills
* This only includes child skills
* </br> * </br>
* This function is designed for API usage. * This function is designed for API usage.
* *
* @return a list of strings with valid skill names * @return a list of strings with valid skill names
*/ */
public static List<String> getChildSkills() { public static List<String> getChildSkills() {
return getListFromEnum(PrimarySkillType.CHILD_SKILLS); return getListFromEnum(mcMMO.p.getSkillTools().CHILD_SKILLS);
} }
/** /**
* Returns a list of strings with mcMMO's skills * Returns a list of strings with mcMMO's skills This only includes combat skills
* This only includes combat skills
* </br> * </br>
* This function is designed for API usage. * This function is designed for API usage.
* *
* @return a list of strings with valid skill names * @return a list of strings with valid skill names
*/ */
public static List<String> getCombatSkills() { public static List<String> getCombatSkills() {
return getListFromEnum(PrimarySkillType.COMBAT_SKILLS); return getListFromEnum(mcMMO.p.getSkillTools().COMBAT_SKILLS);
} }
/** /**
* Returns a list of strings with mcMMO's skills * Returns a list of strings with mcMMO's skills This only includes gathering skills
* This only includes gathering skills
* </br> * </br>
* This function is designed for API usage. * This function is designed for API usage.
* *
* @return a list of strings with valid skill names * @return a list of strings with valid skill names
*/ */
public static List<String> getGatheringSkills() { public static List<String> getGatheringSkills() {
return getListFromEnum(PrimarySkillType.GATHERING_SKILLS); return getListFromEnum(mcMMO.p.getSkillTools().GATHERING_SKILLS);
} }
/** /**
* Returns a list of strings with mcMMO's skills * Returns a list of strings with mcMMO's skills This only includes misc skills
* This only includes misc skills
* </br> * </br>
* This function is designed for API usage. * This function is designed for API usage.
* *
* @return a list of strings with valid skill names * @return a list of strings with valid skill names
*/ */
public static List<String> getMiscSkills() { public static List<String> getMiscSkills() {
return getListFromEnum(PrimarySkillType.MISC_SKILLS); return getListFromEnum(mcMMO.p.getSkillTools().MISC_SKILLS);
} }
private static List<String> getListFromEnum(List<PrimarySkillType> skillsTypes) { private static List<String> getListFromEnum(List<PrimarySkillType> skillsTypes) {
List<String> skills = new ArrayList<String>(); List<String> skills = new ArrayList<>();
for (PrimarySkillType primarySkillType : skillsTypes) { for (PrimarySkillType primarySkillType : skillsTypes) {
skills.add(primarySkillType.name()); skills.add(primarySkillType.name());

View File

@@ -0,0 +1,12 @@
package com.gmail.nossr50.api;
import com.gmail.nossr50.events.fake.FakeBlockBreakEvent;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
public class TreeFellerBlockBreakEvent extends FakeBlockBreakEvent {
public TreeFellerBlockBreakEvent(@NotNull Block theBlock, @NotNull Player player) {
super(theBlock, player);
}
}

View File

@@ -0,0 +1,13 @@
package com.gmail.nossr50.api.exceptions;
import java.io.Serial;
import org.jetbrains.annotations.NotNull;
public class IncompleteNamespacedKeyRegister extends RuntimeException {
@Serial
private static final long serialVersionUID = -6905157273569301219L;
public IncompleteNamespacedKeyRegister(@NotNull String message) {
super(message);
}
}

View File

@@ -1,6 +1,9 @@
package com.gmail.nossr50.api.exceptions; package com.gmail.nossr50.api.exceptions;
import java.io.Serial;
public class InvalidFormulaTypeException extends RuntimeException { public class InvalidFormulaTypeException extends RuntimeException {
@Serial
private static final long serialVersionUID = 3368670229490121886L; private static final long serialVersionUID = 3368670229490121886L;
public InvalidFormulaTypeException() { public InvalidFormulaTypeException() {

View File

@@ -1,6 +1,9 @@
package com.gmail.nossr50.api.exceptions; package com.gmail.nossr50.api.exceptions;
import java.io.Serial;
public class InvalidPlayerException extends RuntimeException { public class InvalidPlayerException extends RuntimeException {
@Serial
private static final long serialVersionUID = 907213002618581385L; private static final long serialVersionUID = 907213002618581385L;
public InvalidPlayerException() { public InvalidPlayerException() {

View File

@@ -1,9 +1,16 @@
package com.gmail.nossr50.api.exceptions; package com.gmail.nossr50.api.exceptions;
import java.io.Serial;
public class InvalidSkillException extends RuntimeException { public class InvalidSkillException extends RuntimeException {
@Serial
private static final long serialVersionUID = 942705284195791157L; private static final long serialVersionUID = 942705284195791157L;
public InvalidSkillException() { public InvalidSkillException() {
super("That is not a valid skill."); super("That is not a valid skill.");
} }
public InvalidSkillException(String msg) {
super(msg);
}
} }

View File

@@ -1,6 +1,9 @@
package com.gmail.nossr50.api.exceptions; package com.gmail.nossr50.api.exceptions;
import java.io.Serial;
public class InvalidXPGainReasonException extends RuntimeException { public class InvalidXPGainReasonException extends RuntimeException {
@Serial
private static final long serialVersionUID = 4427052841957931157L; private static final long serialVersionUID = 4427052841957931157L;
public InvalidXPGainReasonException() { public InvalidXPGainReasonException() {

View File

@@ -1,11 +1,15 @@
package com.gmail.nossr50.api.exceptions; package com.gmail.nossr50.api.exceptions;
import java.io.Serial;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
public class McMMOPlayerNotFoundException extends RuntimeException { public class McMMOPlayerNotFoundException extends RuntimeException {
@Serial
private static final long serialVersionUID = 761917904993202836L; private static final long serialVersionUID = 761917904993202836L;
public McMMOPlayerNotFoundException(Player player) { public McMMOPlayerNotFoundException(@NotNull Player player) {
super("McMMOPlayer object was not found for [NOTE: This can mean the profile is not loaded yet!] : " + player.getName() + " " + player.getUniqueId()); super("McMMOPlayer object was not found for [NOTE: This can mean the profile is not loaded yet! : "
+ player.getName() + " " + player.getUniqueId());
} }
} }

View File

@@ -1,21 +0,0 @@
package com.gmail.nossr50.chat;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.events.chat.McMMOAdminChatEvent;
import org.bukkit.plugin.Plugin;
public class AdminChatManager extends ChatManager {
protected AdminChatManager(Plugin plugin) {
super(plugin, Config.getInstance().getAdminDisplayNames(), Config.getInstance().getAdminChatPrefix());
}
@Override
public void handleChat(String senderName, String displayName, String message, boolean isAsync) {
handleChat(new McMMOAdminChatEvent(plugin, senderName, displayName, message, isAsync));
}
@Override
protected void sendMessage() {
plugin.getServer().broadcast(message, "mcmmo.chat.adminchat");
}
}

View File

@@ -1,88 +1,244 @@
package com.gmail.nossr50.chat; package com.gmail.nossr50.chat;
import com.gmail.nossr50.chat.author.Author;
import com.gmail.nossr50.chat.author.ConsoleAuthor;
import com.gmail.nossr50.chat.mailer.AdminChatMailer;
import com.gmail.nossr50.chat.mailer.PartyChatMailer;
import com.gmail.nossr50.config.ChatConfig;
import com.gmail.nossr50.datatypes.chat.ChatChannel;
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.McMMOPlayer;
import com.gmail.nossr50.events.chat.McMMOChatEvent;
import com.gmail.nossr50.events.chat.McMMOPartyChatEvent;
import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.mcMMO;
import org.bukkit.entity.Player; import com.gmail.nossr50.util.Misc;
import org.bukkit.plugin.Plugin; import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.text.StringUtils;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.TextComponent;
import org.bukkit.command.ConsoleCommandSender;
import org.jetbrains.annotations.NotNull;
public abstract class ChatManager { //TODO: Micro optimization - Cache audiences and update cache when needed
protected Plugin plugin; public class ChatManager {
protected boolean useDisplayNames;
protected String chatPrefix;
protected String senderName; private final @NotNull AdminChatMailer adminChatMailer;
protected String displayName; private final @NotNull PartyChatMailer partyChatMailer;
protected String message; private final @NotNull ConsoleAuthor consoleAuthor;
private final @NotNull Audience consoleAudience;
protected ChatManager(Plugin plugin, boolean useDisplayNames, String chatPrefix) { private final boolean isChatEnabled;
this.plugin = plugin;
this.useDisplayNames = useDisplayNames; public ChatManager(@NotNull mcMMO pluginRef) {
this.chatPrefix = chatPrefix; adminChatMailer = new AdminChatMailer(pluginRef);
partyChatMailer = new PartyChatMailer(pluginRef);
this.consoleAuthor = new ConsoleAuthor(LocaleLoader.getString("Chat.Identity.Console"));
this.consoleAudience = mcMMO.getAudiences()
.filter((cs) -> cs instanceof ConsoleCommandSender);
this.isChatEnabled = ChatConfig.getInstance().isChatEnabled();
} }
protected void handleChat(McMMOChatEvent event) { /**
plugin.getServer().getPluginManager().callEvent(event); * Handles player messaging when they are either in party chat or admin chat modes
*
* @param mmoPlayer target player
* @param rawMessage the raw message from the player as it was typed
* @param isAsync whether this is getting processed via async
*/
public void processPlayerMessage(@NotNull McMMOPlayer mmoPlayer, @NotNull String rawMessage,
boolean isAsync) {
processPlayerMessage(mmoPlayer, mmoPlayer.getChatChannel(), rawMessage, isAsync);
}
if (event.isCancelled()) { /**
return; * Handles player messaging for a specific chat channel
*
* @param mmoPlayer target player
* @param args the raw command arguments from the player
* @param chatChannel target channel
*/
public void processPlayerMessage(@NotNull McMMOPlayer mmoPlayer, @NotNull String[] args,
@NotNull ChatChannel chatChannel) {
String chatMessageWithoutCommand = buildChatMessage(args);
//Commands are never async
processPlayerMessage(mmoPlayer, chatChannel, chatMessageWithoutCommand, false);
}
/**
* Handles player messaging for a specific chat channel
*
* @param mmoPlayer target player
* @param chatChannel target chat channel
* @param rawMessage raw chat message as it was typed
* @param isAsync whether this is getting processed via async
*/
private void processPlayerMessage(@NotNull McMMOPlayer mmoPlayer,
@NotNull ChatChannel chatChannel,
@NotNull String rawMessage, boolean isAsync) {
switch (chatChannel) {
case ADMIN:
adminChatMailer.processChatMessage(
mmoPlayer.getPlayerAuthor(), rawMessage, isAsync,
Permissions.colorChat(mmoPlayer.getPlayer()));
break;
case PARTY:
partyChatMailer.processChatMessage(
mmoPlayer.getPlayerAuthor(), rawMessage, mmoPlayer.getParty(),
isAsync, Permissions.colorChat(mmoPlayer.getPlayer()),
Misc.isPartyLeader(mmoPlayer));
break;
case PARTY_OFFICER:
case NONE:
break;
} }
}
senderName = event.getSender(); /**
displayName = useDisplayNames ? event.getDisplayName() : senderName; * Handles console messaging to admins
message = LocaleLoader.formatString(chatPrefix, displayName) + " " + event.getMessage(); *
* @param rawMessage raw message from the console
*/
public void processConsoleMessage(@NotNull String rawMessage) {
adminChatMailer.processChatMessage(getConsoleAuthor(), rawMessage, false, true);
}
sendMessage(); /**
* Handles console messaging to admins
*
* @param args raw command args from the console
*/
public void processConsoleMessage(@NotNull String[] args) {
processConsoleMessage(buildChatMessage(args));
}
/* /**
* Party Chat Spying * Handles console messaging to a specific party
* Party messages will be copied to people with the mcmmo.admin.chatspy permission node *
*/ * @param rawMessage raw message from the console
if(event instanceof McMMOPartyChatEvent) * @param party target party
{ */
//We need to grab the party chat name public void processConsoleMessage(@NotNull String rawMessage, @NotNull Party party) {
McMMOPartyChatEvent partyChatEvent = (McMMOPartyChatEvent) event; partyChatMailer.processChatMessage(getConsoleAuthor(), rawMessage, party, false, true,
false);
}
//Find the people with permissions /**
for(McMMOPlayer mcMMOPlayer : UserManager.getPlayers()) * Gets a console author
{ *
Player player = mcMMOPlayer.getPlayer(); * @return a {@link ConsoleAuthor}
*/
private @NotNull Author getConsoleAuthor() {
return consoleAuthor;
}
//Check for toggled players /**
if(mcMMOPlayer.isPartyChatSpying()) * Change the chat channel of a {@link McMMOPlayer} Targeting the channel a player is already in
{ * will remove that player from the chat channel
Party adminParty = mcMMOPlayer.getParty(); *
* @param mmoPlayer target player
* @param targetChatChannel target chat channel
*/
public void setOrToggleChatChannel(@NotNull McMMOPlayer mmoPlayer,
@NotNull ChatChannel targetChatChannel) {
if (targetChatChannel == mmoPlayer.getChatChannel()) {
//Disabled message
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString(
"Chat.Channel.Off",
StringUtils.getCapitalized(targetChatChannel.toString())));
mmoPlayer.setChatMode(ChatChannel.NONE);
} else {
mmoPlayer.setChatMode(targetChatChannel);
mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString(
"Chat.Channel.On",
StringUtils.getCapitalized(targetChatChannel.toString())));
}
}
//Only message admins not part of this party /**
if(adminParty != null) * Create a chat message from an array of {@link String}
{ *
//TODO: Incorporate JSON * @param args array of {@link String}
if(!adminParty.getName().equalsIgnoreCase(partyChatEvent.getParty())) * @return a String built from the array
player.sendMessage(LocaleLoader.getString("Commands.AdminChatSpy.Chat", partyChatEvent.getParty(), message)); */
} else { private @NotNull String buildChatMessage(@NotNull String[] args) {
player.sendMessage(LocaleLoader.getString("Commands.AdminChatSpy.Chat", partyChatEvent.getParty(), message)); StringBuilder stringBuilder = new StringBuilder();
}
} for (int i = 0; i < args.length; i++) {
if (i + 1 >= args.length) {
stringBuilder.append(args[i]);
} else {
stringBuilder.append(args[i]).append(" ");
} }
} }
return stringBuilder.toString();
} }
public void handleChat(String senderName, String message) { /**
handleChat(senderName, senderName, message, false); * Whether the player is allowed to send a message to the chat channel they are targeting
*
* @param mmoPlayer target player
* @return true if the player can send messages to that chat channel
*/
public boolean isMessageAllowed(@NotNull McMMOPlayer mmoPlayer) {
switch (mmoPlayer.getChatChannel()) {
case ADMIN:
if (mmoPlayer.getPlayer().isOp() || Permissions.adminChat(mmoPlayer.getPlayer())) {
return true;
}
break;
case PARTY:
if (mmoPlayer.getParty() != null && Permissions.partyChat(mmoPlayer.getPlayer())) {
return true;
}
break;
case PARTY_OFFICER:
case NONE:
return false;
}
return false;
} }
public void handleChat(Player player, String message, boolean isAsync) { /**
handleChat(player.getName(), player.getDisplayName(), message, isAsync); * Sends just the console a message
*
* @param author author of the message
* @param message message contents in component form
*/
public void sendConsoleMessage(@NotNull Author author, @NotNull TextComponent message) {
consoleAudience.sendMessage(author, message);
} }
public void handleChat(String senderName, String displayName, String message) { /**
handleChat(senderName, displayName, message, false); * Whether the mcMMO chat system which handles party and admin chat is enabled or disabled
*
* @return true if mcMMO chat processing (for party/admin chat) is enabled
*/
public boolean isChatEnabled() {
return isChatEnabled;
} }
public abstract void handleChat(String senderName, String displayName, String message, boolean isAsync); /**
* Whether a specific chat channel is enabled ChatChannels are enabled/disabled via user config
* <p>
* If chat is disabled, this always returns false If NONE is passed as a {@link ChatChannel} it
* will return true
*
* @param chatChannel target chat channel
* @return true if the chat channel is enabled
*/
public boolean isChatChannelEnabled(@NotNull ChatChannel chatChannel) {
if (!isChatEnabled) {
return false;
} else {
return switch (chatChannel) {
case ADMIN, PARTY, PARTY_OFFICER ->
ChatConfig.getInstance().isChatChannelEnabled(chatChannel);
case NONE -> true;
};
}
}
protected abstract void sendMessage(); }
}

View File

@@ -1,30 +0,0 @@
package com.gmail.nossr50.chat;
import com.gmail.nossr50.datatypes.chat.ChatMode;
import org.bukkit.plugin.Plugin;
import java.util.HashMap;
public class ChatManagerFactory {
private static final HashMap<Plugin, AdminChatManager> adminChatManagers = new HashMap<Plugin, AdminChatManager>();
private static final HashMap<Plugin, PartyChatManager> partyChatManagers = new HashMap<Plugin, PartyChatManager>();
public static ChatManager getChatManager(Plugin plugin, ChatMode mode) {
switch (mode) {
case ADMIN:
if (!adminChatManagers.containsKey(plugin)) {
adminChatManagers.put(plugin, new AdminChatManager(plugin));
}
return adminChatManagers.get(plugin);
case PARTY:
if (!partyChatManagers.containsKey(plugin)) {
partyChatManagers.put(plugin, new PartyChatManager(plugin));
}
return partyChatManagers.get(plugin);
default:
return null;
}
}
}

View File

@@ -1,29 +0,0 @@
package com.gmail.nossr50.chat;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.events.chat.McMMOPartyChatEvent;
import com.gmail.nossr50.runnables.party.PartyChatTask;
import org.bukkit.plugin.Plugin;
public class PartyChatManager extends ChatManager {
private Party party;
protected PartyChatManager(Plugin plugin) {
super(plugin, Config.getInstance().getPartyDisplayNames(), Config.getInstance().getPartyChatPrefix());
}
public void setParty(Party party) {
this.party = party;
}
@Override
public void handleChat(String senderName, String displayName, String message, boolean isAsync) {
handleChat(new McMMOPartyChatEvent(plugin, senderName, displayName, party.getName(), message, isAsync));
}
@Override
protected void sendMessage() {
new PartyChatTask(plugin, party, senderName, displayName, message).runTask(plugin);
}
}

View File

@@ -0,0 +1,36 @@
package com.gmail.nossr50.chat;
import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.util.player.UserManager;
import java.util.function.Predicate;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class SamePartyPredicate<T extends CommandSender> implements Predicate<T> {
final Party party;
public SamePartyPredicate(Party party) {
this.party = party;
}
@Override
public boolean test(T t) {
//Include the console in the audience
if (t instanceof ConsoleCommandSender) {
//Party audiences are special, we exclude console from them to avoid double
// messaging since we send a more verbose version to consoles
return false;
} else {
if (t instanceof Player player) {
final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
if (mmoPlayer != null) {
return mmoPlayer.getParty() == party;
}
}
}
return false;
}
}

View File

@@ -0,0 +1,129 @@
package com.gmail.nossr50.chat.author;
import com.gmail.nossr50.datatypes.chat.ChatChannel;
import com.gmail.nossr50.util.text.TextUtils;
import com.google.common.base.Objects;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.bukkit.entity.Player;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.jetbrains.annotations.NotNull;
public abstract class AbstractPlayerAuthor implements Author {
private final @NotNull Player player;
private final @NotNull Map<ChatChannel, String> sanitizedNameCache;
private @NotNull String lastKnownDisplayName;
public AbstractPlayerAuthor(@NotNull Player player) {
this.player = player;
this.lastKnownDisplayName = player.getDisplayName();
this.sanitizedNameCache = new HashMap<>();
}
/**
* Returns true if a players display name has changed
*
* @return true if the players display name has changed
*/
private boolean hasPlayerDisplayNameChanged() {
return !player.getDisplayName().equals(lastKnownDisplayName);
}
/**
* Player display names can change and this method will update the last known display name of
* this player
*/
private void updateLastKnownDisplayName() {
lastKnownDisplayName = player.getDisplayName();
}
/**
* Gets a sanitized name for a channel Sanitized names are names that are friendly to the
* {@link net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer} Sanitized names
* for authors are cached by channel and are only created as needed Sanitized names will update
* if a players display name has updated
*
* @param chatChannel target chat channel
* @return the sanitized name for a player
*/
protected @NotNull String getSanitizedName(@NotNull ChatChannel chatChannel,
boolean useDisplayName) {
//Already in cache
if (sanitizedNameCache.containsKey(chatChannel)) {
//Update cache
if (useDisplayName && hasPlayerDisplayNameChanged()) {
updateLastKnownDisplayName();
updateSanitizedNameCache(chatChannel, true);
}
} else {
//Update last known display name
if (useDisplayName && hasPlayerDisplayNameChanged()) {
updateLastKnownDisplayName();
}
//Add cache entry
updateSanitizedNameCache(chatChannel, useDisplayName);
}
return sanitizedNameCache.get(chatChannel);
}
/**
* Update the sanitized name cache This will add entries if one didn't exit Sanitized names are
* associated with a {@link ChatChannel} as different chat channels have different chat name
* settings
*
* @param chatChannel target chat channel
* @param useDisplayName whether to use this authors display name
*/
private void updateSanitizedNameCache(@NotNull ChatChannel chatChannel,
boolean useDisplayName) {
if (useDisplayName) {
sanitizedNameCache.put(chatChannel,
TextUtils.sanitizeForSerializer(player.getDisplayName()));
} else {
//No need to sanitize a basic String
sanitizedNameCache.put(chatChannel, player.getName());
}
}
@Override
public boolean isConsole() {
return false;
}
@Override
public boolean isPlayer() {
return true;
}
public @NotNull Player getPlayer() {
return player;
}
@Override
public @NonNull UUID uuid() {
return player.getUniqueId();
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
AbstractPlayerAuthor that = (AbstractPlayerAuthor) o;
return Objects.equal(player, that.player) && Objects.equal(
lastKnownDisplayName,
that.lastKnownDisplayName) && Objects.equal(
sanitizedNameCache, that.sanitizedNameCache);
}
@Override
public int hashCode() {
return Objects.hashCode(player, lastKnownDisplayName, sanitizedNameCache);
}
}

View File

@@ -0,0 +1,32 @@
package com.gmail.nossr50.chat.author;
import com.gmail.nossr50.datatypes.chat.ChatChannel;
import net.kyori.adventure.identity.Identity;
import org.jetbrains.annotations.NotNull;
public interface Author extends Identity {
/**
* The name of this author as used in mcMMO chat This is the {@link String} representation of
* the users current chat username This can either be the player's display name or the player's
* official registered nickname with Mojang it depends on the servers chat settings for mcMMO
*
* @param chatChannel which chat channel this is going to
* @return The name of this author as used in mcMMO chat
*/
@NotNull String getAuthoredName(@NotNull ChatChannel chatChannel);
/**
* Whether this author is a {@link org.bukkit.command.ConsoleCommandSender}
*
* @return true if this author is the console
*/
boolean isConsole();
/**
* Whether this author is a {@link org.bukkit.entity.Player}
*
* @return true if this author is a player
*/
boolean isPlayer();
}

View File

@@ -0,0 +1,38 @@
package com.gmail.nossr50.chat.author;
import com.gmail.nossr50.datatypes.chat.ChatChannel;
import com.gmail.nossr50.util.text.TextUtils;
import java.util.UUID;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.jetbrains.annotations.NotNull;
public class ConsoleAuthor implements Author {
private final UUID uuid;
private final @NotNull String name;
public ConsoleAuthor(@NotNull String name) {
this.uuid = new UUID(0, 0);
this.name = TextUtils.sanitizeForSerializer(name);
}
//TODO: Think of a less clunky solution later
@Override
public @NotNull String getAuthoredName(@NotNull ChatChannel chatChannel) {
return name;
}
@Override
public boolean isConsole() {
return true;
}
@Override
public boolean isPlayer() {
return false;
}
@Override
public @NonNull UUID uuid() {
return uuid;
}
}

View File

@@ -0,0 +1,19 @@
package com.gmail.nossr50.chat.author;
import com.gmail.nossr50.config.ChatConfig;
import com.gmail.nossr50.datatypes.chat.ChatChannel;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
public class PlayerAuthor extends AbstractPlayerAuthor {
public PlayerAuthor(@NotNull Player player) {
super(player);
}
@Override
public @NotNull String getAuthoredName(@NotNull ChatChannel chatChannel) {
return getSanitizedName(chatChannel, ChatConfig.getInstance().useDisplayNames(chatChannel));
}
}

View File

@@ -0,0 +1,13 @@
package com.gmail.nossr50.chat.mailer;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
public abstract class AbstractChatMailer implements ChatMailer {
protected final @NotNull Plugin pluginRef;
public AbstractChatMailer(@NotNull Plugin pluginRef) {
this.pluginRef = pluginRef;
}
}

View File

@@ -0,0 +1,101 @@
package com.gmail.nossr50.chat.mailer;
import com.gmail.nossr50.chat.author.Author;
import com.gmail.nossr50.chat.message.AdminChatMessage;
import com.gmail.nossr50.chat.message.ChatMessage;
import com.gmail.nossr50.config.ChatConfig;
import com.gmail.nossr50.datatypes.chat.ChatChannel;
import com.gmail.nossr50.events.chat.McMMOAdminChatEvent;
import com.gmail.nossr50.events.chat.McMMOChatEvent;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.text.TextUtils;
import java.util.function.Predicate;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.TextComponent;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
public class AdminChatMailer extends AbstractChatMailer {
public static final @NotNull String MCMMO_CHAT_ADMINCHAT_PERMISSION = "mcmmo.chat.adminchat";
public AdminChatMailer(Plugin pluginRef) {
super(pluginRef);
}
/**
* Constructs an audience of admins
*
* @return an audience of admins
*/
public @NotNull Audience constructAudience() {
return mcMMO.getAudiences().filter(predicate());
}
/**
* Predicate used to filter the audience
*
* @return admin chat audience predicate
*/
public @NotNull Predicate<CommandSender> predicate() {
return (commandSender) -> commandSender.isOp() || commandSender.hasPermission(
MCMMO_CHAT_ADMINCHAT_PERMISSION) || (
ChatConfig.getInstance().isConsoleIncludedInAudience(
ChatChannel.ADMIN) && commandSender instanceof ConsoleCommandSender);
}
/**
* Styles a string using a locale entry
*
* @param author message author
* @param message message contents
* @param canColor whether to replace colors codes with colors in the raw message
* @return the styled string, based on a locale entry
*/
public @NotNull TextComponent addStyle(@NotNull Author author, @NotNull String message,
boolean canColor) {
if (canColor) {
return LocaleLoader.getTextComponent(
"Chat.Style.Admin", author.getAuthoredName(ChatChannel.ADMIN),
message);
} else {
return TextUtils.ofLegacyTextRaw(
LocaleLoader.getString("Chat.Style.Admin",
author.getAuthoredName(ChatChannel.ADMIN), message));
}
}
@Override
public void sendMail(@NotNull ChatMessage chatMessage) {
chatMessage.sendMessage();
}
/**
* Processes a chat message from an author to an audience of admins
*
* @param author the author
* @param rawString the raw message as the author typed it before any styling
* @param isAsync whether this is being processed asynchronously
* @param canColor whether the author can use colors in chat
*/
public void processChatMessage(@NotNull Author author, @NotNull String rawString,
boolean isAsync,
boolean canColor) {
AdminChatMessage chatMessage = new AdminChatMessage(
pluginRef, author, constructAudience(), rawString,
addStyle(author, rawString, canColor));
McMMOChatEvent chatEvent = new McMMOAdminChatEvent(pluginRef, chatMessage, isAsync);
Bukkit.getPluginManager().callEvent(chatEvent);
if (!chatEvent.isCancelled()) {
sendMail(chatMessage);
}
}
}

View File

@@ -0,0 +1,13 @@
package com.gmail.nossr50.chat.mailer;
import com.gmail.nossr50.chat.message.ChatMessage;
import org.jetbrains.annotations.NotNull;
public interface ChatMailer {
/**
* Send out a chat message
*
* @param chatMessage the {@link ChatMessage}
*/
void sendMail(@NotNull ChatMessage chatMessage);
}

View File

@@ -0,0 +1,97 @@
package com.gmail.nossr50.chat.mailer;
import com.gmail.nossr50.chat.author.Author;
import com.gmail.nossr50.chat.message.ChatMessage;
import com.gmail.nossr50.chat.message.PartyChatMessage;
import com.gmail.nossr50.datatypes.chat.ChatChannel;
import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.events.chat.McMMOChatEvent;
import com.gmail.nossr50.events.chat.McMMOPartyChatEvent;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.text.TextUtils;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.TextComponent;
import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
public class PartyChatMailer extends AbstractChatMailer {
public PartyChatMailer(@NotNull Plugin pluginRef) {
super(pluginRef);
}
/**
* Processes a chat message from an author to an audience of party members
*
* @param author the author
* @param rawString the raw message as the author typed it before any styling
* @param isAsync whether this is being processed asynchronously
* @param canColor whether the author can use colors in chat
*/
public void processChatMessage(@NotNull Author author, @NotNull String rawString,
@NotNull Party party,
boolean isAsync, boolean canColor, boolean isLeader) {
PartyChatMessage chatMessage = new PartyChatMessage(
pluginRef, author, constructPartyAudience(party), rawString,
addStyle(author, rawString, canColor, isLeader), party);
McMMOChatEvent chatEvent = new McMMOPartyChatEvent(pluginRef, chatMessage, party, isAsync);
Bukkit.getPluginManager().callEvent(chatEvent);
if (!chatEvent.isCancelled()) {
sendMail(chatMessage);
}
}
/**
* Constructs an {@link Audience} of party members
*
* @param party target party
* @return an {@link Audience} of party members
*/
public @NotNull Audience constructPartyAudience(@NotNull Party party) {
return mcMMO.getAudiences().filter(party.getSamePartyPredicate());
}
/**
* Styles a string using a locale entry
*
* @param author message author
* @param message message contents
* @param canColor whether to replace colors codes with colors in the raw message
* @return the styled string, based on a locale entry
*/
public @NotNull TextComponent addStyle(@NotNull Author author, @NotNull String message,
boolean canColor,
boolean isLeader) {
if (canColor) {
if (isLeader) {
return LocaleLoader.getTextComponent(
"Chat.Style.Party.Leader",
author.getAuthoredName(ChatChannel.PARTY), message);
} else {
return LocaleLoader.getTextComponent(
"Chat.Style.Party", author.getAuthoredName(ChatChannel.PARTY),
message);
}
} else {
if (isLeader) {
return TextUtils.ofLegacyTextRaw(
LocaleLoader.getString(
"Chat.Style.Party.Leader",
author.getAuthoredName(ChatChannel.PARTY), message));
} else {
return TextUtils.ofLegacyTextRaw(
LocaleLoader.getString("Chat.Style.Party",
author.getAuthoredName(ChatChannel.PARTY), message));
}
}
}
@Override
public void sendMail(@NotNull ChatMessage chatMessage) {
chatMessage.sendMessage();
}
}

View File

@@ -0,0 +1,78 @@
package com.gmail.nossr50.chat.message;
import com.gmail.nossr50.chat.author.Author;
import com.google.common.base.Objects;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.TextComponent;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
public abstract class AbstractChatMessage implements ChatMessage {
protected final @NotNull Plugin pluginRef;
protected final @NotNull Author author;
protected final @NotNull String rawMessage;
protected @NotNull TextComponent componentMessage;
protected @NotNull Audience audience;
public AbstractChatMessage(@NotNull Plugin pluginRef, @NotNull Author author,
@NotNull Audience audience,
@NotNull String rawMessage, @NotNull TextComponent componentMessage) {
this.pluginRef = pluginRef;
this.author = author;
this.audience = audience;
this.rawMessage = rawMessage;
this.componentMessage = componentMessage;
}
@Override
public @NotNull String rawMessage() {
return rawMessage;
}
@Override
public @NotNull Author getAuthor() {
return author;
}
@Override
public @NotNull Audience getAudience() {
return audience;
}
@Override
public void setAudience(@NotNull Audience newAudience) {
audience = newAudience;
}
@Override
public @NotNull TextComponent getChatMessage() {
return componentMessage;
}
@Override
public void setChatMessage(@NotNull TextComponent textComponent) {
this.componentMessage = textComponent;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
AbstractChatMessage that = (AbstractChatMessage) o;
return Objects.equal(pluginRef, that.pluginRef) && Objects.equal(author, that.author)
&& Objects.equal(
rawMessage, that.rawMessage) && Objects.equal(componentMessage,
that.componentMessage) && Objects.equal(
audience, that.audience);
}
@Override
public int hashCode() {
return Objects.hashCode(pluginRef, author, rawMessage, componentMessage, audience);
}
}

View File

@@ -0,0 +1,26 @@
package com.gmail.nossr50.chat.message;
import com.gmail.nossr50.chat.author.Author;
import com.gmail.nossr50.datatypes.chat.ChatChannel;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.TextComponent;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
public class AdminChatMessage extends AbstractChatMessage {
public AdminChatMessage(@NotNull Plugin pluginRef, @NotNull Author author,
@NotNull Audience audience,
@NotNull String rawMessage, @NotNull TextComponent componentMessage) {
super(pluginRef, author, audience, rawMessage, componentMessage);
}
@Override
public void sendMessage() {
audience.sendMessage(author, componentMessage);
}
@Override
public @NotNull String getAuthorDisplayName() {
return author.getAuthoredName(ChatChannel.ADMIN);
}
}

View File

@@ -0,0 +1,75 @@
package com.gmail.nossr50.chat.message;
import com.gmail.nossr50.chat.author.Author;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.TextComponent;
import org.jetbrains.annotations.NotNull;
public interface ChatMessage {
/**
* The original message from the {@link Author} This is formatted and styled before being sent
* out to players by mcMMO
*
* @return the original message without any formatting or alterations
* @see #getChatMessage()
*/
@NotNull String rawMessage();
/**
* The {@link Author} from which this payload originated
*
* @return the source of the chat message
* @see #getChatMessage()
*/
@NotNull Author getAuthor();
/**
* The authors display name which is used in the initial creation of the message payload, it is
* provided for convenience.
* <p>
* This is a name generated by mcMMO during the creation of the {@link ChatMessage}
* <p>
* This is used by mcMMO when generating the message payload
* <p>
* This method provides the display name for the convenience of plugins constructing their own
* {@link TextComponent payloads}
*
* @return the author display name as generated by mcMMO
* @see #getChatMessage()
*/
@NotNull String getAuthorDisplayName();
/**
* The target audience of this chat message Unless modified, this will include the
* {@link Author}
*
* @return target audience
*/
@NotNull Audience getAudience();
/**
* Changes the audience
*
* @param newAudience the replacement audience
*/
void setAudience(@NotNull Audience newAudience);
/**
* The {@link TextComponent message} being sent to the audience
*
* @return the {@link TextComponent message} that will be sent to the audience
*/
@NotNull TextComponent getChatMessage();
/**
* Change the value of the {@link TextComponent message}
*
* @param textComponent new message value
*/
void setChatMessage(@NotNull TextComponent textComponent);
/**
* Deliver the message to the audience
*/
void sendMessage();
}

View File

@@ -0,0 +1,110 @@
package com.gmail.nossr50.chat.message;
import com.gmail.nossr50.chat.author.Author;
import com.gmail.nossr50.config.ChatConfig;
import com.gmail.nossr50.datatypes.chat.ChatChannel;
import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.player.UserManager;
import com.google.common.base.Objects;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.TextComponent;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
public class PartyChatMessage extends AbstractChatMessage {
private final @NotNull Party party;
public PartyChatMessage(@NotNull Plugin pluginRef, @NotNull Author author,
@NotNull Audience audience,
@NotNull String rawMessage, @NotNull TextComponent componentMessage,
@NotNull Party party) {
super(pluginRef, author, audience, rawMessage, componentMessage);
this.party = party;
}
/**
* The party that this chat message was intended for
*
* @return the party that this message was intended for
*/
public @NotNull Party getParty() {
return party;
}
@Override
public @NotNull String getAuthorDisplayName() {
return author.getAuthoredName(ChatChannel.PARTY);
}
@Override
public void sendMessage() {
/*
* It should be noted that Party messages don't include console as part of the audience to avoid double messaging
* The console gets a message that has the party name included, player parties do not
*/
//Sends to everyone but console
audience.sendMessage(author, componentMessage);
final TextComponent spyMessage = LocaleLoader.getTextComponent(
"Chat.Spy.Party",
author.getAuthoredName(ChatChannel.PARTY), rawMessage, party.getName());
//Relay to spies
messagePartyChatSpies(spyMessage);
//Console message
if (ChatConfig.getInstance().isConsoleIncludedInAudience(ChatChannel.PARTY)) {
mcMMO.p.getChatManager().sendConsoleMessage(author, spyMessage);
}
}
/**
* Console and Party Chat Spies get a more verbose version of the message Party Chat Spies will
* get a copy of the message as well
*
* @param spyMessage the message to copy to spies
*/
private void messagePartyChatSpies(@NotNull TextComponent spyMessage) {
//Find the people with permissions
for (McMMOPlayer mmoPlayer : UserManager.getPlayers()) {
final Player player = mmoPlayer.getPlayer();
//Check for toggled players
if (mmoPlayer.isPartyChatSpying()) {
Party adminParty = mmoPlayer.getParty();
//Only message admins not part of this party
if (adminParty == null || adminParty != getParty()) {
//TODO: Hacky, rewrite later
Audience audience = mcMMO.getAudiences().player(player);
audience.sendMessage(spyMessage);
}
}
}
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
if (!super.equals(o)) {
return false;
}
final PartyChatMessage that = (PartyChatMessage) o;
return Objects.equal(party, that.party);
}
@Override
public int hashCode() {
return Objects.hashCode(super.hashCode(), party);
}
}

View File

@@ -0,0 +1,152 @@
package com.gmail.nossr50.commands;
import co.aikar.commands.BukkitCommandIssuer;
import co.aikar.commands.BukkitCommandManager;
import co.aikar.commands.ConditionFailedException;
import com.gmail.nossr50.commands.chat.AdminChatCommand;
import com.gmail.nossr50.commands.chat.PartyChatCommand;
import com.gmail.nossr50.commands.skills.PowerLevelCommand;
import com.gmail.nossr50.config.ChatConfig;
import com.gmail.nossr50.datatypes.chat.ChatChannel;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.player.UserManager;
import org.bukkit.entity.Player;
import org.bukkit.permissions.Permissible;
import org.jetbrains.annotations.NotNull;
/*
* For now this class will only handle ACF converted commands, all other commands will be handled elsewhere
*/
public class CommandManager {
public static final @NotNull String MMO_DATA_LOADED = "mmoDataLoaded";
//CHAT
public static final @NotNull String ADMIN_CONDITION = "adminCondition";
public static final @NotNull String PARTY_CONDITION = "partyCondition";
//SKILLS
public static final @NotNull String POWER_LEVEL_CONDITION = "powerLevelCondition";
private final @NotNull mcMMO pluginRef;
private final @NotNull BukkitCommandManager bukkitCommandManager;
public CommandManager(@NotNull mcMMO pluginRef) {
this.pluginRef = pluginRef;
bukkitCommandManager = new BukkitCommandManager(pluginRef);
registerConditions();
registerCommands();
}
private void registerCommands() {
registerSkillCommands(); //TODO: Implement other skills not just power level
registerChatCommands();
}
private void registerSkillCommands() {
if (mcMMO.p.getGeneralConfig().isMasterySystemEnabled()) {
bukkitCommandManager.registerCommand(new PowerLevelCommand(pluginRef));
}
}
/**
* Registers chat commands if the chat system is enabled
*/
private void registerChatCommands() {
if (ChatConfig.getInstance().isChatEnabled()) {
if (ChatConfig.getInstance().isChatChannelEnabled(ChatChannel.ADMIN)) {
bukkitCommandManager.registerCommand(new AdminChatCommand(pluginRef));
}
if (pluginRef.getPartyConfig().isPartyEnabled() && ChatConfig.getInstance()
.isChatChannelEnabled(ChatChannel.PARTY)) {
bukkitCommandManager.registerCommand(new PartyChatCommand(pluginRef));
}
}
}
public void registerConditions() {
registerChatCommandConditions(); //Chat Commands
registerSkillConditions();
}
private void registerSkillConditions() {
bukkitCommandManager.getCommandConditions()
.addCondition(POWER_LEVEL_CONDITION, (context) -> {
BukkitCommandIssuer issuer = context.getIssuer();
if (issuer.getIssuer() instanceof Player) {
validateLoadedData(issuer.getPlayer());
} else {
throw new ConditionFailedException(
LocaleLoader.getString("Commands.NoConsole"));
}
});
}
private void registerChatCommandConditions() {
// Method or Class based - Can only be used on methods
bukkitCommandManager.getCommandConditions().addCondition(ADMIN_CONDITION, (context) -> {
BukkitCommandIssuer issuer = context.getIssuer();
if (issuer.getIssuer() instanceof Player) {
validateLoadedData(issuer.getPlayer());
validateAdmin(issuer.getPlayer());
}
});
bukkitCommandManager.getCommandConditions().addCondition(MMO_DATA_LOADED, (context) -> {
BukkitCommandIssuer bukkitCommandIssuer = context.getIssuer();
if (bukkitCommandIssuer.getIssuer() instanceof Player) {
validateLoadedData(bukkitCommandIssuer.getPlayer());
}
});
bukkitCommandManager.getCommandConditions().addCondition(PARTY_CONDITION, (context) -> {
BukkitCommandIssuer bukkitCommandIssuer = context.getIssuer();
if (bukkitCommandIssuer.getIssuer() instanceof Player) {
validateLoadedData(bukkitCommandIssuer.getPlayer());
validatePlayerParty(bukkitCommandIssuer.getPlayer());
//TODO: Is there even a point in validating permission? look into this later
validatePermission("mcmmo.chat.partychat", bukkitCommandIssuer.getPlayer());
}
});
}
private void validatePermission(@NotNull String permissionNode,
@NotNull Permissible permissible) {
if (!permissible.hasPermission(permissionNode)) {
throw new ConditionFailedException(LocaleLoader.getString("mcMMO.NoPermission"));
}
}
public void validateAdmin(@NotNull Player player) {
if (!player.isOp() && !Permissions.adminChat(player)) {
throw new ConditionFailedException(
"You are lacking the correct permissions to use this command.");
}
}
public void validateLoadedData(@NotNull Player player) {
if (UserManager.getPlayer(player) == null) {
throw new ConditionFailedException(LocaleLoader.getString("Profile.PendingLoad"));
}
}
public void validatePlayerParty(@NotNull Player player) {
final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
if (!pluginRef.getPartyConfig().isPartyEnabled() || mmoPlayer.getParty() == null) {
throw new ConditionFailedException(LocaleLoader.getString("Commands.Party.None"));
}
}
public @NotNull BukkitCommandManager getBukkitCommandManager() {
return bukkitCommandManager;
}
}

View File

@@ -1,45 +0,0 @@
package com.gmail.nossr50.commands;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.database.FlatfileDatabaseManager;
import com.gmail.nossr50.database.SQLDatabaseManager;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.player.UserManager;
import com.google.common.collect.ImmutableList;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import java.util.List;
public class MHDCommand implements TabExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (mcMMO.getDatabaseManager() instanceof SQLDatabaseManager) {
SQLDatabaseManager m = (SQLDatabaseManager) mcMMO.getDatabaseManager();
m.resetMobHealthSettings();
for (McMMOPlayer player : UserManager.getPlayers()) {
player.getProfile().setMobHealthbarType(Config.getInstance().getMobHealthbarDefault());
}
sender.sendMessage("Mob health reset");
return true;
}
if (mcMMO.getDatabaseManager() instanceof FlatfileDatabaseManager) {
FlatfileDatabaseManager m = (FlatfileDatabaseManager) mcMMO.getDatabaseManager();
m.resetMobHealthSettings();
for (McMMOPlayer player : UserManager.getPlayers()) {
player.getProfile().setMobHealthbarType(Config.getInstance().getMobHealthbarDefault());
}
sender.sendMessage("Mob health reset");
return true;
}
return false;
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
return ImmutableList.of();
}
}

View File

@@ -1,345 +0,0 @@
package com.gmail.nossr50.commands;
import com.gmail.nossr50.datatypes.skills.ModConfigType;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.Misc;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Locale;
public class McImportCommand implements CommandExecutor {
int fileAmount;
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
switch (args.length) {
case 0:
importModConfig();
return true;
default:
return false;
}
}
public boolean importModConfig() {
String importFilePath = mcMMO.getModDirectory() + File.separator + "import";
File importFile = new File(importFilePath, "import.log");
mcMMO.p.getLogger().info("Starting import of mod materials...");
fileAmount = 0;
HashMap<ModConfigType, ArrayList<String>> materialNames = new HashMap<ModConfigType, ArrayList<String>>();
BufferedReader in = null;
try {
// Open the file
in = new BufferedReader(new FileReader(importFile));
String line;
String materialName;
String modName;
// While not at the end of the file
while ((line = in.readLine()) != null) {
String[] split1 = line.split("material ");
if (split1.length != 2) {
continue;
}
String[] split2 = split1[1].split(" with");
if (split2.length != 2) {
continue;
}
materialName = split2[0];
// Categorise each material under a mod config type
ModConfigType type = ModConfigType.getModConfigType(materialName);
if (!materialNames.containsKey(type)) {
materialNames.put(type, new ArrayList<String>());
}
materialNames.get(type).add(materialName);
continue;
}
}
catch (FileNotFoundException e) {
mcMMO.p.getLogger().warning("Could not find " + importFile.getAbsolutePath() + " ! (No such file or directory)");
mcMMO.p.getLogger().warning("Copy and paste latest.log to " + importFile.getParentFile().getAbsolutePath() + " and rename it to import.log");
return false;
}
catch (Exception e) {
e.printStackTrace();
return false;
}
finally {
tryClose(in);
}
createOutput(materialNames);
mcMMO.p.getLogger().info("Import finished! Created " + fileAmount + " files!");
return true;
}
private void createOutput(HashMap<ModConfigType, ArrayList<String>> materialNames) {
for (ModConfigType modConfigType : materialNames.keySet()) {
HashMap<String, ArrayList<String>> materialNamesType = new HashMap<String, ArrayList<String>>();
for (String materialName : materialNames.get(modConfigType)) {
String modName = Misc.getModName(materialName);
if (!materialNamesType.containsKey(modName)) {
materialNamesType.put(modName, new ArrayList<String>());
}
materialNamesType.get(modName).add(materialName);
}
createOutput(modConfigType, materialNamesType);
}
}
private void tryClose(Closeable c) {
if (c == null) {
return;
}
try {
c.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
private void createOutput(ModConfigType modConfigType, HashMap<String, ArrayList<String>> materialNames) {
File outputFilePath = new File(mcMMO.getModDirectory() + File.separator + "output");
if (!outputFilePath.exists() && !outputFilePath.mkdirs()) {
mcMMO.p.getLogger().severe("Could not create output directory! " + outputFilePath.getAbsolutePath());
}
FileWriter out = null;
String type = modConfigType.name().toLowerCase(Locale.ENGLISH);
for (String modName : materialNames.keySet()) {
File outputFile = new File(outputFilePath, modName + "." + type + ".yml");
mcMMO.p.getLogger().info("Creating " + outputFile.getName());
try {
if (outputFile.exists() && !outputFile.delete()) {
mcMMO.p.getLogger().severe("Not able to delete old output file! " + outputFile.getAbsolutePath());
}
if (!outputFile.createNewFile()) {
mcMMO.p.getLogger().severe("Could not create output file! " + outputFile.getAbsolutePath());
continue;
}
StringBuilder writer = new StringBuilder();
HashMap<String, ArrayList<String>> configSections = getConfigSections(modConfigType, modName, materialNames);
if (configSections == null) {
mcMMO.p.getLogger().severe("Something went wrong!! type is " + type);
return;
}
// Write the file, go through each skill and write all the materials
for (String configSection : configSections.keySet()) {
if (configSection.equals("UNIDENTIFIED")) {
writer.append("# This isn't a valid config section and all materials in this category need to be").append("\r\n");
writer.append("# copy and pasted to a valid section of this config file.").append("\r\n");
}
writer.append(configSection).append(":").append("\r\n");
for (String line : configSections.get(configSection)) {
writer.append(line).append("\r\n");
}
writer.append("\r\n");
}
out = new FileWriter(outputFile);
out.write(writer.toString());
}
catch (IOException e) {
e.printStackTrace();
return;
}
catch (Exception e) {
e.printStackTrace();
return;
}
finally {
tryClose(out);
fileAmount++;
}
}
}
private HashMap<String, ArrayList<String>> getConfigSections(ModConfigType type, String modName, HashMap<String, ArrayList<String>> materialNames) {
switch (type) {
case BLOCKS:
return getConfigSectionsBlocks(modName, materialNames);
case TOOLS:
return getConfigSectionsTools(modName, materialNames);
case ARMOR:
return getConfigSectionsArmor(modName, materialNames);
case UNKNOWN:
return getConfigSectionsUnknown(modName, materialNames);
}
return null;
}
private HashMap<String, ArrayList<String>> getConfigSectionsBlocks(String modName, HashMap<String, ArrayList<String>> materialNames) {
HashMap<String, ArrayList<String>> configSections = new HashMap<String, ArrayList<String>>();
// Go through all the materials and categorise them under a skill
for (String materialName : materialNames.get(modName)) {
String skillName = "UNIDENTIFIED";
if (materialName.contains("ORE")) {
skillName = "Mining";
}
else if (materialName.contains("LOG") || materialName.contains("LEAVES")) {
skillName = "Woodcutting";
}
else if (materialName.contains("GRASS") || materialName.contains("FLOWER") || materialName.contains("CROP")) {
skillName = "Herbalism";
}
else if (materialName.contains("DIRT") || materialName.contains("SAND")) {
skillName = "Excavation";
}
if (!configSections.containsKey(skillName)) {
configSections.put(skillName, new ArrayList<String>());
}
ArrayList<String> skillContents = configSections.get(skillName);
skillContents.add(" " + materialName + "|0:");
skillContents.add(" " + " " + "XP_Gain: 99");
skillContents.add(" " + " " + "Double_Drops_Enabled: true");
if (skillName.equals("Mining")) {
skillContents.add(" " + " " + "Smelting_XP_Gain: 9");
}
else if (skillName.equals("Woodcutting")) {
skillContents.add(" " + " " + "Is_Log: " + materialName.contains("LOG"));
}
}
return configSections;
}
private HashMap<String, ArrayList<String>> getConfigSectionsTools(String modName, HashMap<String, ArrayList<String>> materialNames) {
HashMap<String, ArrayList<String>> configSections = new HashMap<String, ArrayList<String>>();
// Go through all the materials and categorise them under a tool type
for (String materialName : materialNames.get(modName)) {
String toolType = "UNIDENTIFIED";
if (materialName.contains("PICKAXE")) {
toolType = "Pickaxes";
}
else if (materialName.contains("AXE")) {
toolType = "Axes";
}
else if (materialName.contains("BOW")) {
toolType = "Bows";
}
else if (materialName.contains("HOE")) {
toolType = "Hoes";
}
else if (materialName.contains("SHOVEL") || materialName.contains("SPADE")) {
toolType = "Shovels";
}
else if (materialName.contains("SWORD")) {
toolType = "Swords";
}
if (!configSections.containsKey(toolType)) {
configSections.put(toolType, new ArrayList<String>());
}
ArrayList<String> skillContents = configSections.get(toolType);
skillContents.add(" " + materialName + ":");
skillContents.add(" " + " " + "XP_Modifier: 1.0");
skillContents.add(" " + " " + "Tier: 1");
skillContents.add(" " + " " + "Ability_Enabled: true");
addRepairableLines(materialName, skillContents);
}
return configSections;
}
private HashMap<String, ArrayList<String>> getConfigSectionsArmor(String modName, HashMap<String, ArrayList<String>> materialNames) {
HashMap<String, ArrayList<String>> configSections = new HashMap<String, ArrayList<String>>();
// Go through all the materials and categorise them under an armor type
for (String materialName : materialNames.get(modName)) {
String toolType = "UNIDENTIFIED";
if (materialName.contains("BOOT") || materialName.contains("SHOE")) {
toolType = "Boots";
}
else if (materialName.contains("CHESTPLATE") || materialName.contains("CHEST")) {
toolType = "Chestplates";
}
else if (materialName.contains("HELM") || materialName.contains("HAT")) {
toolType = "Helmets";
}
else if (materialName.contains("LEGGINGS") || materialName.contains("LEGS") || materialName.contains("PANTS")) {
toolType = "Leggings";
}
if (!configSections.containsKey(toolType)) {
configSections.put(toolType, new ArrayList<String>());
}
ArrayList<String> skillContents = configSections.get(toolType);
skillContents.add(" " + materialName + ":");
addRepairableLines(materialName, skillContents);
}
return configSections;
}
private void addRepairableLines(String materialName, ArrayList<String> skillContents) {
skillContents.add(" " + " " + "Repairable: true");
skillContents.add(" " + " " + "Repair_Material: REPAIR_MATERIAL_NAME");
skillContents.add(" " + " " + "Repair_Material_Data_Value: 0");
skillContents.add(" " + " " + "Repair_Material_Quantity: 9");
skillContents.add(" " + " " + "Repair_Material_Pretty_Name: Repair Item Name");
skillContents.add(" " + " " + "Repair_MinimumLevel: 0");
skillContents.add(" " + " " + "Repair_XpMultiplier: 1.0");
Material material = Material.matchMaterial(materialName);
short durability = (material == null) ? (short) 9999 : material.getMaxDurability();
skillContents.add(" " + " " + "Durability: " + ((durability > 0) ? durability : (short) 9999));
}
private HashMap<String, ArrayList<String>> getConfigSectionsUnknown(String modName, HashMap<String, ArrayList<String>> materialNames) {
HashMap<String, ArrayList<String>> configSections = new HashMap<String, ArrayList<String>>();
// Go through all the materials and print them
for (String materialName : materialNames.get(modName)) {
String configKey = "UNIDENTIFIED";
if (!configSections.containsKey(configKey)) {
configSections.put(configKey, new ArrayList<String>());
}
ArrayList<String> skillContents = configSections.get(configKey);
skillContents.add(" " + materialName);
}
return configSections;
}
}

View File

@@ -17,9 +17,10 @@ public class McabilityCommand extends ToggleCommand {
} }
@Override @Override
protected void applyCommandAction(McMMOPlayer mcMMOPlayer) { protected void applyCommandAction(McMMOPlayer mmoPlayer) {
mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.Ability." + (mcMMOPlayer.getAbilityUse() ? "Off" : "On"))); mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString(
mcMMOPlayer.toggleAbilityUse(); "Commands.Ability." + (mmoPlayer.getAbilityUse() ? "Off" : "On")));
mmoPlayer.toggleAbilityUse();
} }
@Override @Override

View File

@@ -7,27 +7,27 @@ import com.gmail.nossr50.datatypes.database.DatabaseType;
import com.gmail.nossr50.datatypes.experience.FormulaType; import com.gmail.nossr50.datatypes.experience.FormulaType;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
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.command.TabExecutor; import org.bukkit.command.TabExecutor;
import org.bukkit.util.StringUtil; import org.bukkit.util.StringUtil;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class McconvertCommand implements TabExecutor { public class McconvertCommand implements TabExecutor {
private static final List<String> FORMULA_TYPES; private static final List<String> FORMULA_TYPES;
private static final List<String> DATABASE_TYPES; private static final List<String> DATABASE_TYPES;
private static final List<String> SUBCOMMANDS = ImmutableList.of("database", "experience"); private static final List<String> SUBCOMMANDS = ImmutableList.of("database", "experience");
private CommandExecutor databaseConvertCommand = new ConvertDatabaseCommand(); private final CommandExecutor databaseConvertCommand = new ConvertDatabaseCommand();
private CommandExecutor experienceConvertCommand = new ConvertExperienceCommand(); private final CommandExecutor experienceConvertCommand = new ConvertExperienceCommand();
static { static {
ArrayList<String> formulaTypes = new ArrayList<String>(); ArrayList<String> formulaTypes = new ArrayList<>();
ArrayList<String> databaseTypes = new ArrayList<String>(); ArrayList<String> databaseTypes = new ArrayList<>();
for (FormulaType type : FormulaType.values()) { for (FormulaType type : FormulaType.values()) {
formulaTypes.add(type.toString()); formulaTypes.add(type.toString());
@@ -53,34 +53,38 @@ public class McconvertCommand implements TabExecutor {
} }
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
switch (args.length) { @NotNull String label, String[] args) {
case 2: if (args.length == 2) {
if (args[0].equalsIgnoreCase("database") || args[0].equalsIgnoreCase("db")) { if (args[0].equalsIgnoreCase("database") || args[0].equalsIgnoreCase("db")) {
return databaseConvertCommand.onCommand(sender, command, label, args); return databaseConvertCommand.onCommand(sender, command, label, args);
} } else if (args[0].equalsIgnoreCase("experience") || args[0].equalsIgnoreCase("xp")
else if (args[0].equalsIgnoreCase("experience") || args[0].equalsIgnoreCase("xp") || args[1].equalsIgnoreCase("exp")) { || args[1].equalsIgnoreCase("exp")) {
return experienceConvertCommand.onCommand(sender, command, label, args); return experienceConvertCommand.onCommand(sender, command, label, args);
} }
return false; return false;
default:
return false;
} }
return false;
} }
@Override @Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) { public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command,
@NotNull String alias, String[] args) {
switch (args.length) { switch (args.length) {
case 1: case 1:
return StringUtil.copyPartialMatches(args[0], SUBCOMMANDS, new ArrayList<String>(SUBCOMMANDS.size())); return StringUtil.copyPartialMatches(args[0], SUBCOMMANDS,
new ArrayList<>(SUBCOMMANDS.size()));
case 2: case 2:
if (args[0].equalsIgnoreCase("database") || args[0].equalsIgnoreCase("db")) { if (args[0].equalsIgnoreCase("database") || args[0].equalsIgnoreCase("db")) {
return StringUtil.copyPartialMatches(args[0], DATABASE_TYPES, new ArrayList<String>(DATABASE_TYPES.size())); return StringUtil.copyPartialMatches(args[0], DATABASE_TYPES,
new ArrayList<>(DATABASE_TYPES.size()));
} }
if (args[0].equalsIgnoreCase("experience") || args[0].equalsIgnoreCase("xp") || args[0].equalsIgnoreCase("exp")) { if (args[0].equalsIgnoreCase("experience") || args[0].equalsIgnoreCase("xp")
return StringUtil.copyPartialMatches(args[0], FORMULA_TYPES, new ArrayList<String>(FORMULA_TYPES.size())); || args[0].equalsIgnoreCase("exp")) {
return StringUtil.copyPartialMatches(args[0], FORMULA_TYPES,
new ArrayList<>(FORMULA_TYPES.size()));
} }
return ImmutableList.of(); return ImmutableList.of();

View File

@@ -17,9 +17,10 @@ public class McgodCommand extends ToggleCommand {
} }
@Override @Override
protected void applyCommandAction(McMMOPlayer mcMMOPlayer) { protected void applyCommandAction(McMMOPlayer mmoPlayer) {
mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.GodMode." + (mcMMOPlayer.getGodMode() ? "Disabled" : "Enabled"))); mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString(
mcMMOPlayer.toggleGodMode(); "Commands.GodMode." + (mmoPlayer.getGodMode() ? "Disabled" : "Enabled")));
mmoPlayer.toggleGodMode();
} }
@Override @Override

View File

@@ -1,7 +1,6 @@
package com.gmail.nossr50.commands; package com.gmail.nossr50.commands;
import com.gmail.nossr50.commands.party.PartySubcommandType; import com.gmail.nossr50.commands.party.PartySubcommandType;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.Permissions;
@@ -9,10 +8,12 @@ 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.jetbrains.annotations.NotNull;
public class McmmoCommand implements CommandExecutor { public class McmmoCommand implements CommandExecutor {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
@NotNull String label, String[] args) {
switch (args.length) { switch (args.length) {
case 0: case 0:
if (!Permissions.mcmmoDescription(sender)) { if (!Permissions.mcmmoDescription(sender)) {
@@ -25,20 +26,24 @@ public class McmmoCommand implements CommandExecutor {
sender.sendMessage(mcSplit); sender.sendMessage(mcSplit);
sender.sendMessage(LocaleLoader.getString("mcMMO.Description.FormerDevs")); sender.sendMessage(LocaleLoader.getString("mcMMO.Description.FormerDevs"));
if (Config.getInstance().getDonateMessageEnabled()) { if (mcMMO.p.getGeneralConfig().getDonateMessageEnabled()) {
sender.sendMessage(LocaleLoader.getString("MOTD.Donate")); sender.sendMessage(LocaleLoader.getString("MOTD.Donate"));
sender.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "nossr50@gmail.com" + ChatColor.GOLD + " Paypal"); sender.sendMessage(
ChatColor.GOLD + " - " + ChatColor.GREEN + "nossr50@gmail.com"
+ ChatColor.GOLD + " Paypal");
} }
if (Permissions.showversion(sender)) { if (Permissions.showversion(sender)) {
sender.sendMessage(LocaleLoader.getString("MOTD.Version", mcMMO.p.getDescription().getVersion())); sender.sendMessage(LocaleLoader.getString("MOTD.Version",
mcMMO.p.getDescription().getVersion()));
} }
mcMMO.getHolidayManager().anniversaryCheck(sender); // mcMMO.getHolidayManager().anniversaryCheck(sender);
return true; return true;
case 1: case 1:
if (args[0].equalsIgnoreCase("?") || args[0].equalsIgnoreCase("help") || args[0].equalsIgnoreCase("commands")) { if (args[0].equalsIgnoreCase("?") || args[0].equalsIgnoreCase("help")
|| args[0].equalsIgnoreCase("commands")) {
if (!Permissions.mcmmoHelp(sender)) { if (!Permissions.mcmmoHelp(sender)) {
sender.sendMessage(command.getPermissionMessage()); sender.sendMessage(command.getPermissionMessage());
return true; return true;
@@ -57,59 +62,61 @@ public class McmmoCommand implements CommandExecutor {
} }
private void displayGeneralCommands(CommandSender sender) { private void displayGeneralCommands(CommandSender sender) {
sender.sendMessage(ChatColor.DARK_AQUA + " /mcstats " + LocaleLoader.getString("Commands.Stats")); sender.sendMessage(LocaleLoader.getString("Commands.Stats"));
sender.sendMessage(ChatColor.DARK_AQUA + " /<skill>" + LocaleLoader.getString("Commands.SkillInfo")); sender.sendMessage(LocaleLoader.getString("Commands.SkillInfo"));
sender.sendMessage(ChatColor.DARK_AQUA + " /mctop " + LocaleLoader.getString("Commands.Leaderboards")); sender.sendMessage(LocaleLoader.getString("Commands.Leaderboards"));
if (Permissions.inspect(sender)) { if (Permissions.inspect(sender)) {
sender.sendMessage(ChatColor.DARK_AQUA + " /inspect " + LocaleLoader.getString("Commands.Inspect")); sender.sendMessage(LocaleLoader.getString("Commands.Inspect"));
} }
if (Permissions.mcability(sender)) { if (Permissions.mcability(sender)) {
sender.sendMessage(ChatColor.DARK_AQUA + " /mcability " + LocaleLoader.getString("Commands.ToggleAbility")); sender.sendMessage(LocaleLoader.getString("Commands.ToggleAbility"));
} }
} }
private void displayOtherCommands(CommandSender sender) { private void displayOtherCommands(CommandSender sender) {
//Don't show them this category if they have none of the permissions //Don't show them this category if they have none of the permissions
if(!Permissions.skillreset(sender) && !Permissions.mmoedit(sender) && !Permissions.adminChat(sender) && !Permissions.mcgod(sender)) if (!Permissions.skillreset(sender) && !Permissions.mmoedit(sender)
&& !Permissions.adminChat(sender) && !Permissions.mcgod(sender)) {
return; return;
}
sender.sendMessage(LocaleLoader.getString("Commands.Other")); sender.sendMessage(LocaleLoader.getString("Commands.Other"));
if (Permissions.skillreset(sender)) { if (Permissions.skillreset(sender)) {
sender.sendMessage(ChatColor.DARK_AQUA + " /skillreset <skill|all> " + LocaleLoader.getString("Commands.Reset")); sender.sendMessage(LocaleLoader.getString("Commands.Reset"));
} }
if (Permissions.mmoedit(sender)) { if (Permissions.mmoedit(sender)) {
sender.sendMessage(ChatColor.DARK_AQUA + " /mmoedit " + LocaleLoader.getString("Commands.mmoedit")); sender.sendMessage(LocaleLoader.getString("Commands.mmoedit"));
} }
if (Permissions.adminChat(sender)) { if (Permissions.adminChat(sender)) {
sender.sendMessage(ChatColor.DARK_AQUA + " /adminchat " + LocaleLoader.getString("Commands.AdminToggle")); sender.sendMessage(LocaleLoader.getString("Commands.AdminToggle"));
} }
if (Permissions.mcgod(sender)) { if (Permissions.mcgod(sender)) {
sender.sendMessage(ChatColor.DARK_AQUA + " /mcgod " + LocaleLoader.getString("Commands.mcgod")); sender.sendMessage(LocaleLoader.getString("Commands.mcgod"));
} }
} }
private void displayPartyCommands(CommandSender sender) { private void displayPartyCommands(CommandSender sender) {
if (Permissions.party(sender)) { if (Permissions.party(sender)) {
sender.sendMessage(LocaleLoader.getString("Commands.Party.Commands")); sender.sendMessage(LocaleLoader.getString("Commands.Party.Commands"));
sender.sendMessage(ChatColor.DARK_AQUA + " /party create <" + LocaleLoader.getString("Commands.Usage.PartyName") + "> " + LocaleLoader.getString("Commands.Party1")); sender.sendMessage(LocaleLoader.getString("Commands.Party1"));
sender.sendMessage(ChatColor.DARK_AQUA + " /party join <" + LocaleLoader.getString("Commands.Usage.Player") + "> " + LocaleLoader.getString("Commands.Party2")); sender.sendMessage(LocaleLoader.getString("Commands.Party2"));
sender.sendMessage(ChatColor.DARK_AQUA + " /party quit " + LocaleLoader.getString("Commands.Party.Quit")); sender.sendMessage(LocaleLoader.getString("Commands.Party.Quit"));
if (Permissions.partyChat(sender)) { if (Permissions.partyChat(sender)) {
sender.sendMessage(ChatColor.DARK_AQUA + " /party chat " + LocaleLoader.getString("Commands.Party.Toggle")); sender.sendMessage(LocaleLoader.getString("Commands.Party.Toggle"));
} }
sender.sendMessage(ChatColor.DARK_AQUA + " /party invite <" + LocaleLoader.getString("Commands.Usage.Player") + "> " + LocaleLoader.getString("Commands.Party.Invite")); sender.sendMessage(LocaleLoader.getString("Commands.Party.Invite"));
sender.sendMessage(ChatColor.DARK_AQUA + " /party accept " + LocaleLoader.getString("Commands.Party.Accept")); sender.sendMessage(LocaleLoader.getString("Commands.Party.Accept"));
if (Permissions.partySubcommand(sender, PartySubcommandType.TELEPORT)) { if (Permissions.partySubcommand(sender, PartySubcommandType.TELEPORT)) {
sender.sendMessage(ChatColor.DARK_AQUA + " /party teleport <" + LocaleLoader.getString("Commands.Usage.Player") + "> " + LocaleLoader.getString("Commands.Party.Teleport")); sender.sendMessage(LocaleLoader.getString("Commands.Party.Teleport"));
} }
} }
} }

View File

@@ -5,39 +5,41 @@ import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.util.commands.CommandUtils; import com.gmail.nossr50.util.commands.CommandUtils;
import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.player.UserManager;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import java.util.List;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; 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.jetbrains.annotations.NotNull;
import java.util.List;
public class McnotifyCommand implements TabExecutor { public class McnotifyCommand implements TabExecutor {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
@NotNull String label, String[] args) {
if (CommandUtils.noConsoleUsage(sender)) { if (CommandUtils.noConsoleUsage(sender)) {
return true; return true;
} }
switch (args.length) { if (args.length == 0) {
case 0: final McMMOPlayer mmoPlayer = UserManager.getPlayer((Player) sender);
McMMOPlayer mcMMOPlayer = UserManager.getPlayer((Player) sender);
//Not Loaded yet //Not Loaded yet
if(mcMMOPlayer == null) if (mmoPlayer == null) {
sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad")); sender.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));
sender.sendMessage(LocaleLoader.getString("Commands.Notifications." + (mcMMOPlayer.useChatNotifications() ? "Off" : "On")));
mcMMOPlayer.toggleChatNotifications();
return true; return true;
}
default: sender.sendMessage(LocaleLoader.getString(
return false; "Commands.Notifications." + (mmoPlayer.useChatNotifications() ? "Off" : "On")));
mmoPlayer.toggleChatNotifications();
return true;
} }
return false;
} }
@Override @Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) { public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command,
@NotNull String alias, String[] args) {
return ImmutableList.of(); return ImmutableList.of();
} }
} }

View File

@@ -17,13 +17,13 @@ public class McrefreshCommand extends ToggleCommand {
} }
@Override @Override
protected void applyCommandAction(McMMOPlayer mcMMOPlayer) { protected void applyCommandAction(McMMOPlayer mmoPlayer) {
mcMMOPlayer.setRecentlyHurt(0); mmoPlayer.setRecentlyHurt(0);
mcMMOPlayer.resetCooldowns(); mmoPlayer.resetCooldowns();
mcMMOPlayer.resetToolPrepMode(); mmoPlayer.resetToolPrepMode();
mcMMOPlayer.resetAbilityMode(); mmoPlayer.resetAbilityMode();
mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Ability.Generic.Refresh")); mmoPlayer.getPlayer().sendMessage(LocaleLoader.getString("Ability.Generic.Refresh"));
} }
@Override @Override

View File

@@ -1,27 +1,38 @@
package com.gmail.nossr50.commands; package com.gmail.nossr50.commands;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.commands.CommandUtils; import com.gmail.nossr50.util.commands.CommandUtils;
import com.gmail.nossr50.util.scoreboards.ScoreboardManager; import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
import org.bukkit.util.StringUtil; import org.bukkit.util.StringUtil;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
public class McscoreboardCommand implements TabExecutor { public class McscoreboardCommand implements TabExecutor {
private static final List<String> FIRST_ARGS = ImmutableList.of("keep", "time", "clear"); private static final List<String> FIRST_ARGS = ImmutableList.of("keep", "time", "clear");
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
@NotNull String label, String[] args) {
if (CommandUtils.noConsoleUsage(sender)) { if (CommandUtils.noConsoleUsage(sender)) {
return true; return true;
} }
if (!mcMMO.p.getGeneralConfig().getScoreboardsEnabled()) {
sender.sendMessage(LocaleLoader.getString("Scoreboard.Disabled"));
return true;
}
if (!ScoreboardManager.isPlayerBoardSetup(sender.getName())) {
sender.sendMessage(LocaleLoader.getString("Scoreboard.NotSetupYet"));
return true;
}
switch (args.length) { switch (args.length) {
case 1: case 1:
if (args[0].equalsIgnoreCase("clear") || args[0].equalsIgnoreCase("reset")) { if (args[0].equalsIgnoreCase("clear") || args[0].equalsIgnoreCase("reset")) {
@@ -31,7 +42,8 @@ public class McscoreboardCommand implements TabExecutor {
} }
if (args[0].equalsIgnoreCase("keep")) { if (args[0].equalsIgnoreCase("keep")) {
if (!Config.getInstance().getAllowKeepBoard() || !Config.getInstance().getScoreboardsEnabled()) { if (!mcMMO.p.getGeneralConfig().getAllowKeepBoard()
|| !mcMMO.p.getGeneralConfig().getScoreboardsEnabled()) {
sender.sendMessage(LocaleLoader.getString("Commands.Disabled")); sender.sendMessage(LocaleLoader.getString("Commands.Disabled"));
return true; return true;
} }
@@ -69,13 +81,13 @@ public class McscoreboardCommand implements TabExecutor {
} }
@Override @Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) { public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command,
switch (args.length) { @NotNull String alias, String[] args) {
case 1: if (args.length == 1) {
return StringUtil.copyPartialMatches(args[0], FIRST_ARGS, new ArrayList<String>(FIRST_ARGS.size())); return StringUtil.copyPartialMatches(args[0], FIRST_ARGS,
default: new ArrayList<>(FIRST_ARGS.size()));
return ImmutableList.of();
} }
return ImmutableList.of();
} }
private boolean help(CommandSender sender) { private boolean help(CommandSender sender) {

View File

@@ -4,17 +4,18 @@ import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.util.commands.CommandUtils; import com.gmail.nossr50.util.commands.CommandUtils;
import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.player.UserManager;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
import org.bukkit.util.StringUtil; import org.bukkit.util.StringUtil;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
public abstract class ToggleCommand implements TabExecutor { public abstract class ToggleCommand implements TabExecutor {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
@NotNull String label, String[] args) {
switch (args.length) { switch (args.length) {
case 0: case 0:
if (CommandUtils.noConsoleUsage(sender)) { if (CommandUtils.noConsoleUsage(sender)) {
@@ -40,17 +41,17 @@ public abstract class ToggleCommand implements TabExecutor {
} }
String playerName = CommandUtils.getMatchedPlayerName(args[0]); String playerName = CommandUtils.getMatchedPlayerName(args[0]);
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(playerName); final McMMOPlayer mmoPlayer = UserManager.getPlayer(playerName);
if (!CommandUtils.checkPlayerExistence(sender, playerName, mcMMOPlayer)) { if (!CommandUtils.checkPlayerExistence(sender, playerName, mmoPlayer)) {
return true; return true;
} }
if (CommandUtils.isOffline(sender, mcMMOPlayer.getPlayer())) { if (CommandUtils.isOffline(sender, mmoPlayer.getPlayer())) {
return true; return true;
} }
applyCommandAction(mcMMOPlayer); applyCommandAction(mmoPlayer);
sendSuccessMessage(sender, playerName); sendSuccessMessage(sender, playerName);
return true; return true;
@@ -60,18 +61,21 @@ public abstract class ToggleCommand implements TabExecutor {
} }
@Override @Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) { public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command,
switch (args.length) { @NotNull String alias, String[] args) {
case 1: if (args.length == 1) {
List<String> playerNames = CommandUtils.getOnlinePlayerNames(sender); List<String> playerNames = CommandUtils.getOnlinePlayerNames(sender);
return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size())); return StringUtil.copyPartialMatches(args[0], playerNames,
default: new ArrayList<>(playerNames.size()));
return ImmutableList.of();
} }
return ImmutableList.of();
} }
protected abstract boolean hasOtherPermission(CommandSender sender); protected abstract boolean hasOtherPermission(CommandSender sender);
protected abstract boolean hasSelfPermission(CommandSender sender); protected abstract boolean hasSelfPermission(CommandSender sender);
protected abstract void applyCommandAction(McMMOPlayer mcMMOPlayer);
protected abstract void applyCommandAction(McMMOPlayer mmoPlayer);
protected abstract void sendSuccessMessage(CommandSender sender, String playerName); protected abstract void sendSuccessMessage(CommandSender sender, String playerName);
} }

View File

@@ -1,33 +1,33 @@
package com.gmail.nossr50.commands; package com.gmail.nossr50.commands;
import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.config.experience.ExperienceConfig;
import com.gmail.nossr50.datatypes.notifications.SensitiveCommandType; import com.gmail.nossr50.datatypes.notifications.SensitiveCommandType;
import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.StringUtils;
import com.gmail.nossr50.util.commands.CommandUtils; import com.gmail.nossr50.util.commands.CommandUtils;
import com.gmail.nossr50.util.player.NotificationManager; import com.gmail.nossr50.util.player.NotificationManager;
import com.gmail.nossr50.util.text.StringUtils;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.List;
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;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
import org.bukkit.util.StringUtil; import org.bukkit.util.StringUtil;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
public class XprateCommand implements TabExecutor { public class XprateCommand implements TabExecutor {
private final double ORIGINAL_XP_RATE = ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier(); private final double ORIGINAL_XP_RATE = ExperienceConfig.getInstance()
.getExperienceGainsGlobalMultiplier();
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command,
@NotNull String label, String[] args) {
switch (args.length) { switch (args.length) {
case 1: case 1:
if (!args[0].equalsIgnoreCase("reset") && !args[0].equalsIgnoreCase("clear")) { if (!args[0].equalsIgnoreCase("reset") && !args[0].equalsIgnoreCase("clear")) {
return false; return false;
} }
@@ -38,22 +38,23 @@ public class XprateCommand implements TabExecutor {
if (mcMMO.p.isXPEventEnabled()) { if (mcMMO.p.isXPEventEnabled()) {
if(AdvancedConfig.getInstance().useTitlesForXPEvent()) if (mcMMO.p.getAdvancedConfig().useTitlesForXPEvent()) {
{
NotificationManager.broadcastTitle(mcMMO.p.getServer(), NotificationManager.broadcastTitle(mcMMO.p.getServer(),
LocaleLoader.getString("Commands.Event.Stop"), LocaleLoader.getString("Commands.Event.Stop"),
LocaleLoader.getString("Commands.Event.Stop.Subtitle"), LocaleLoader.getString("Commands.Event.Stop.Subtitle"),
10, 10*20, 20); 10, 10 * 20, 20);
} }
if(Config.getInstance().broadcastEventMessages()) if (mcMMO.p.getGeneralConfig().broadcastEventMessages()) {
{ mcMMO.p.getServer()
mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.Event.Stop")); .broadcastMessage(LocaleLoader.getString("Commands.Event.Stop"));
mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.Event.Stop.Subtitle")); mcMMO.p.getServer().broadcastMessage(
LocaleLoader.getString("Commands.Event.Stop.Subtitle"));
} }
//Admin notification //Admin notification
NotificationManager.processSensitiveCommandNotification(sender, SensitiveCommandType.XPRATE_END); NotificationManager.processSensitiveCommandNotification(sender,
SensitiveCommandType.XPRATE_END);
mcMMO.p.toggleXpEventEnabled(); mcMMO.p.toggleXpEventEnabled();
} }
@@ -73,40 +74,39 @@ public class XprateCommand implements TabExecutor {
if (CommandUtils.shouldDisableToggle(args[1])) { if (CommandUtils.shouldDisableToggle(args[1])) {
mcMMO.p.setXPEventEnabled(false); mcMMO.p.setXPEventEnabled(false);
} } else if (CommandUtils.shouldEnableToggle(args[1])) {
else if (CommandUtils.shouldEnableToggle(args[1])) {
mcMMO.p.setXPEventEnabled(true); mcMMO.p.setXPEventEnabled(true);
} } else {
else {
return false; return false;
} }
int newXpRate = Integer.parseInt(args[0]); int newXpRate = Integer.parseInt(args[0]);
if(newXpRate < 0) if (newXpRate < 0) {
{ sender.sendMessage(
sender.sendMessage(ChatColor.RED+LocaleLoader.getString("Commands.NegativeNumberWarn")); ChatColor.RED + LocaleLoader.getString("Commands.NegativeNumberWarn"));
return true; return true;
} }
ExperienceConfig.getInstance().setExperienceGainsGlobalMultiplier(newXpRate); ExperienceConfig.getInstance().setExperienceGainsGlobalMultiplier(newXpRate);
if(AdvancedConfig.getInstance().useTitlesForXPEvent()) if (mcMMO.p.getAdvancedConfig().useTitlesForXPEvent()) {
{
NotificationManager.broadcastTitle(mcMMO.p.getServer(), NotificationManager.broadcastTitle(mcMMO.p.getServer(),
LocaleLoader.getString("Commands.Event.Start"), LocaleLoader.getString("Commands.Event.Start"),
LocaleLoader.getString("Commands.Event.XP", newXpRate), LocaleLoader.getString("Commands.Event.XP", newXpRate),
10, 10*20, 20); 10, 10 * 20, 20);
} }
if(Config.getInstance().broadcastEventMessages()) if (mcMMO.p.getGeneralConfig().broadcastEventMessages()) {
{ mcMMO.p.getServer()
mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.Event.Start")); .broadcastMessage(LocaleLoader.getString("Commands.Event.Start"));
mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.Event.XP", newXpRate)); mcMMO.p.getServer().broadcastMessage(
LocaleLoader.getString("Commands.Event.XP", newXpRate));
} }
//Admin notification //Admin notification
NotificationManager.processSensitiveCommandNotification(sender, SensitiveCommandType.XPRATE_MODIFY, String.valueOf(newXpRate)); NotificationManager.processSensitiveCommandNotification(sender,
SensitiveCommandType.XPRATE_MODIFY, String.valueOf(newXpRate));
return true; return true;
@@ -116,16 +116,19 @@ public class XprateCommand implements TabExecutor {
} }
@Override @Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) { public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command,
@NotNull String alias, String[] args) {
switch (args.length) { switch (args.length) {
case 1: case 1:
if (StringUtils.isInt(args[0])) { if (StringUtils.isInt(args[0])) {
return ImmutableList.of(); return ImmutableList.of();
} }
return StringUtil.copyPartialMatches(args[0], CommandUtils.RESET_OPTIONS, new ArrayList<String>(CommandUtils.RESET_OPTIONS.size())); return StringUtil.copyPartialMatches(args[0], CommandUtils.RESET_OPTIONS,
new ArrayList<>(CommandUtils.RESET_OPTIONS.size()));
case 2: case 2:
return StringUtil.copyPartialMatches(args[1], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<String>(CommandUtils.TRUE_FALSE_OPTIONS.size())); return StringUtil.copyPartialMatches(args[1], CommandUtils.TRUE_FALSE_OPTIONS,
new ArrayList<>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
default: default:
return ImmutableList.of(); return ImmutableList.of();
} }

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