mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2026-02-18 17:53:00 +01:00
Compare commits
163 Commits
dev-queue-
...
1.4.06-bet
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2c87ce06eb | ||
|
|
875091a1ce | ||
|
|
5ad7716137 | ||
|
|
8c97399cec | ||
|
|
27e0a9d3b6 | ||
|
|
07f9b287e7 | ||
|
|
fbee4f1b37 | ||
|
|
26542f3d6e | ||
|
|
14630fe956 | ||
|
|
30f5c761d9 | ||
|
|
365abaaa8f | ||
|
|
f4681a282c | ||
|
|
8a14d9ac26 | ||
|
|
0ab1986202 | ||
|
|
e11dc680de | ||
|
|
71249334c3 | ||
|
|
fa41dbce16 | ||
|
|
4246e6c900 | ||
|
|
1b421a24b0 | ||
|
|
9cc9eead52 | ||
|
|
8b21aea9c7 | ||
|
|
4f87cb6446 | ||
|
|
7525de1a72 | ||
|
|
78d2fa7520 | ||
|
|
7fe8122499 | ||
|
|
532c2e7450 | ||
|
|
b391a53c6b | ||
|
|
f3c6346b95 | ||
|
|
dd8984314f | ||
|
|
b82c3f41d3 | ||
|
|
7d6eb65776 | ||
|
|
dc0800e7e1 | ||
|
|
c151366952 | ||
|
|
212137ec3e | ||
|
|
31f36935d3 | ||
|
|
a14fc3e3c9 | ||
|
|
158b3c43f8 | ||
|
|
e31c1e33d9 | ||
|
|
25dfa6d34d | ||
|
|
431429a29c | ||
|
|
d4c8cc28a1 | ||
|
|
ce08405c00 | ||
|
|
da29185b7d | ||
|
|
87feb8c250 | ||
|
|
12797893df | ||
|
|
6d47e43ba9 | ||
|
|
f6b1643378 | ||
|
|
f1c16df63b | ||
|
|
c16e5231f4 | ||
|
|
2365c253dd | ||
|
|
c4e7f2597e | ||
|
|
13fd522bd4 | ||
|
|
b74f6e92dc | ||
|
|
630c3e81e6 | ||
|
|
0f77cf8066 | ||
|
|
52746fca76 | ||
|
|
dae25c2f2d | ||
|
|
a272316301 | ||
|
|
6772f4f169 | ||
|
|
9463e210b8 | ||
|
|
4c44b72f78 | ||
|
|
c849f751bb | ||
|
|
1cde45599e | ||
|
|
f1a22f5f6b | ||
|
|
90d6fbde48 | ||
|
|
802ad84613 | ||
|
|
c4aa9396fd | ||
|
|
f0c937ad47 | ||
|
|
fcc36ee5d7 | ||
|
|
0f023f627c | ||
|
|
fa645b5e00 | ||
|
|
1fb28eeee0 | ||
|
|
d7f67d43b3 | ||
|
|
5a1ec745ce | ||
|
|
6fd599bd31 | ||
|
|
afd706bed8 | ||
|
|
6c3820c747 | ||
|
|
0ebc555136 | ||
|
|
4992c50098 | ||
|
|
4e9322485a | ||
|
|
fc8ad40b00 | ||
|
|
f62e053a84 | ||
|
|
0af3c7ab7d | ||
|
|
7f4efe1775 | ||
|
|
80a5c2f9c4 | ||
|
|
90e13c9562 | ||
|
|
fe89c19969 | ||
|
|
0b6dfad7e5 | ||
|
|
f2b1758439 | ||
|
|
86eaa3b091 | ||
|
|
24153c2fb1 | ||
|
|
5e36683ff2 | ||
|
|
c53563e7d1 | ||
|
|
d778293531 | ||
|
|
7d8888d47d | ||
|
|
6fbfec48b0 | ||
|
|
1f25b0b00b | ||
|
|
0118346aaf | ||
|
|
287842c675 | ||
|
|
61dc77559b | ||
|
|
ca51b2f70f | ||
|
|
3cf01cb6f3 | ||
|
|
16a4b78580 | ||
|
|
94b560ba01 | ||
|
|
3ae9956df9 | ||
|
|
78109eb499 | ||
|
|
da5238878d | ||
|
|
f9a823e4b0 | ||
|
|
eb20da021d | ||
|
|
596f2fa78a | ||
|
|
fa99ebb391 | ||
|
|
9b685be84e | ||
|
|
96f9d2a030 | ||
|
|
2b7178fb00 | ||
|
|
c47bf84493 | ||
|
|
8cf16d4a1c | ||
|
|
5b5b73cde0 | ||
|
|
9f55c25775 | ||
|
|
92c6a7bfcf | ||
|
|
145a47c890 | ||
|
|
70160468c0 | ||
|
|
9730cdb880 | ||
|
|
399bf8e3b9 | ||
|
|
c3a69c8c55 | ||
|
|
db2bf9ee51 | ||
|
|
255dece550 | ||
|
|
d004361836 | ||
|
|
5453b0511d | ||
|
|
42bc5065df | ||
|
|
b0d609e9a3 | ||
|
|
814ffbe800 | ||
|
|
e7ee23b871 | ||
|
|
c14ceab24d | ||
|
|
70e8e534fe | ||
|
|
c4504de1da | ||
|
|
685f901e09 | ||
|
|
d196710a87 | ||
|
|
050f97e088 | ||
|
|
c2fea660e7 | ||
|
|
b2cdf21de5 | ||
|
|
ed09d1b390 | ||
|
|
171026ba23 | ||
|
|
dafa690a09 | ||
|
|
4cd4223ee0 | ||
|
|
3ac5ac385d | ||
|
|
0ae5421d10 | ||
|
|
3f56c8e690 | ||
|
|
c14f3777c0 | ||
|
|
2838a52e0c | ||
|
|
dcfdfa0e62 | ||
|
|
23719ace47 | ||
|
|
33882983e9 | ||
|
|
5aecedc074 | ||
|
|
69bf17a619 | ||
|
|
0292d3eefb | ||
|
|
0cd3e4ed84 | ||
|
|
3a26194a71 | ||
|
|
1313e3fe4b | ||
|
|
b2f400f61a | ||
|
|
9aa676cee1 | ||
|
|
eabf0f7f82 | ||
|
|
d0171809ec | ||
|
|
410c946faf |
@@ -6,11 +6,72 @@ Key:
|
|||||||
= Fix
|
= Fix
|
||||||
! Change
|
! Change
|
||||||
- Removal
|
- Removal
|
||||||
|
|
||||||
|
Version 1.4.06-dev
|
||||||
|
+ Added ability to configure drops from Shake in treasures.yml
|
||||||
|
+ Added "Master Angler" ability to Fishing.
|
||||||
|
+ Added health display for mobs during combat.
|
||||||
|
+ Added new API method to McMMOPlayerLevelUpEvent to set levels gained
|
||||||
|
+ Added new permission node for /ptp; mcmmo.commands.ptp.send (enabled by default)
|
||||||
|
+ Added configurable cooldown and warmup times when using /ptp
|
||||||
|
= Fixed displaying partial names when trying to use /ptp
|
||||||
|
= Fixed wolves from Call of the Wild only having 8 health
|
||||||
|
= Fixed bug where /party chat was not working
|
||||||
|
= Fixed bug where experience commands were adding levels to all skills when they shouldn't
|
||||||
|
! Changed Chimaera Wing's recipe result to use the ingredient Material
|
||||||
|
! Players will no longer pickup items to their hotbar while using Unarmed
|
||||||
|
! ExperienceAPI methods will now throw InvalidSkillException if the skill name passed in is invalid.
|
||||||
|
! Changed default value for recently-hurt cooldown between teleports, this is also fully configurable now
|
||||||
|
|
||||||
Version 1.4.03-dev
|
Version 1.4.05
|
||||||
|
+ Added option to allow refreshing of chunks after block-breaking abilities. (Disabled by default)
|
||||||
|
+ Added fireworks effects when a player levels-up, for every 100 levels (configurable)
|
||||||
|
= Fixed bug where /addxp was setting instead of adding experience
|
||||||
|
= Fixed bug where /addxp was not processessing level-ups for online players
|
||||||
|
= Fixed bug which allowed players to share experience with nearby dead players
|
||||||
|
= Fixed bug with ChimaeraWings not taking Wings from a players inventory properly
|
||||||
|
= Fixed bug which caused a NPE when trying to use /mctop smelting
|
||||||
|
= Fixed Berserk misbehaving when /reload was used
|
||||||
|
= Fixed parties misbehaving when /reload was used
|
||||||
|
= Fixed Berserk getting "stuck" when /mcrefresh was used
|
||||||
|
= Fixed ClassCastException with Taming
|
||||||
|
= Fixed huge mushroom blocks not being properly tracked
|
||||||
|
= Fixed potion buff option not using the appropriate # of ticks
|
||||||
|
= Fixed Chimera Wing spamming console if Metrics was disabled
|
||||||
|
= Fixed Chimera Wing displaying warmup message if warmup was set to 0
|
||||||
|
= Fixed party & admin chat errors when not aysnc
|
||||||
|
! Updated localization files
|
||||||
|
|
||||||
|
Version 1.4.04
|
||||||
|
+ Added functions to ExperienceAPI for use with offline players
|
||||||
|
+ Added Nether Quartz Ore to Mining
|
||||||
|
+ Added Dropper, Hopper, and Trapped Chest to blocks that shouldn't activate abilities
|
||||||
|
+ Added partial name matching
|
||||||
|
= Fixed bug where trying to activate a Chimaera Wing would require one item too much
|
||||||
|
= Fixed bug where Treefeller would try to cut too many leaves and reach the threshold when it shouldn't
|
||||||
|
= Fixed bug where Mining wasn't awarding double drops
|
||||||
|
= Fixed bug where Shake wouldn't damage mobs whose max health was less than 4
|
||||||
|
= Fixed bug where the API would fail if the name of a player's current party is requested when the player isn't in one (Thanks @dualspiral!)
|
||||||
|
= Fixed bug with retrieving a player's party members
|
||||||
|
= Fixed bug which caused a NPE when trying to join the party of a non-existing player or when ptp to a non-existing player
|
||||||
|
= Fixed bug which causes a NPE when trying to use /mcrefresh from the console
|
||||||
|
= Fixed bug where Carrots and Potatoes weren't awarding Herbalism XP.
|
||||||
|
= Fixed bug where some herbalism drops weren't properly shared within parties.
|
||||||
|
= Fixed bug where players wouldn't be able to pick up items if they logged our while Berserk was still active.
|
||||||
|
! Changed config node name for the skill experience modifiers from "Experience.Formula.Multiplier.[Skill]" to "Experience.Formula.Modifier.[Skill]"
|
||||||
|
! Updated localization files
|
||||||
|
! mcMMO abilities can no longer be activated while in Creative mode
|
||||||
|
! Expanded ChatAPI to allow toggling of chat states for users
|
||||||
|
! Updated to EMetrics 0.0.4-SNAPSHOT
|
||||||
|
- Removed deprecated functions from API classes.
|
||||||
|
- Removed functions for getting the PlayerProfile - using API classes is preferred, but if not the McMMOPlayer should be used instead
|
||||||
|
- Removed Ender Dragon, Wither, and Witch from granting combat experience and related configuration options
|
||||||
|
|
||||||
|
Version 1.4.03
|
||||||
+ Added option to advanced.yml to determine the # of enchant levels used when buffing Super Breaker & Giga Drill Breaker
|
+ Added option to advanced.yml to determine the # of enchant levels used when buffing Super Breaker & Giga Drill Breaker
|
||||||
+ Improved stats display for child skills
|
+ Improved stats display for child skills
|
||||||
+ Added cooldown between using Chimaera Wings
|
+ Added cooldown between using Chimaera Wings
|
||||||
|
= Fixed bug with '/party chat (on|off)' and '/partychat (on|off)' not working
|
||||||
= Fixed bug with Repair not decreasing enchanting levels properly
|
= Fixed bug with Repair not decreasing enchanting levels properly
|
||||||
= Fixed bug with Smelting not properly tracking furnaces
|
= Fixed bug with Smelting not properly tracking furnaces
|
||||||
= Fixed bug with Blast Mining not dropping blocks correctly
|
= Fixed bug with Blast Mining not dropping blocks correctly
|
||||||
@@ -28,8 +89,10 @@ Version 1.4.03-dev
|
|||||||
= Fixed bug where the 'mcmmo.commands.ptp.world.all' was registered twice
|
= Fixed bug where the 'mcmmo.commands.ptp.world.all' was registered twice
|
||||||
= Fixed bug where Beast Lore wouldn't work on friendly pets
|
= Fixed bug where Beast Lore wouldn't work on friendly pets
|
||||||
= Fixed bug where Deflect was calculated based on the attacker, not the defender. (We really did this time!)
|
= Fixed bug where Deflect was calculated based on the attacker, not the defender. (We really did this time!)
|
||||||
|
= Fixed bug where Treefeller would not deal durability damage when the axe "splinters into dozens of pieces"
|
||||||
! Moved the Salvage unlock level from config.yml to advanced.yml
|
! Moved the Salvage unlock level from config.yml to advanced.yml
|
||||||
! Changed how Chimaera Wings are acquired, you need to craft them now. (By default, use 5 feathers in a shapeless recipe)
|
! Changed how Chimaera Wings are acquired, you need to craft them now. (By default, use 5 feathers in a shapeless recipe)
|
||||||
|
! Changed how Chimaera Wings teleport players to the spawnpoint, will now check if the location is safe
|
||||||
- Removed option to disable Salvage via the config file. This should be handled via permissions instead.
|
- Removed option to disable Salvage via the config file. This should be handled via permissions instead.
|
||||||
- Removed the option to use Woodcutting without an axe from the config file.
|
- Removed the option to use Woodcutting without an axe from the config file.
|
||||||
|
|
||||||
|
|||||||
10
pom.xml
10
pom.xml
@@ -2,7 +2,7 @@
|
|||||||
<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>1.4.03-dev1</version>
|
<version>1.4.06-beta1</version>
|
||||||
<name>mcMMO</name>
|
<name>mcMMO</name>
|
||||||
<url>https://github.com/mcMMO-Dev/mcMMO</url>
|
<url>https://github.com/mcMMO-Dev/mcMMO</url>
|
||||||
<issueManagement>
|
<issueManagement>
|
||||||
@@ -165,9 +165,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.turt2live.metrics</groupId>
|
<groupId>com.turt2live.metrics</groupId>
|
||||||
<artifactId>MetricsExtension</artifactId>
|
<artifactId>MetricsExtension</artifactId>
|
||||||
<version>0.0.2-SNAPSHOT</version>
|
<version>0.0.4-SNAPSHOT</version>
|
||||||
<type>jar</type>
|
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
@@ -179,4 +177,8 @@
|
|||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
</properties>
|
</properties>
|
||||||
|
<ciManagement>
|
||||||
|
<system>Jenkins</system>
|
||||||
|
<url>ci.mcmmo.org</url>
|
||||||
|
</ciManagement>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -39,22 +39,6 @@ public final class ChatAPI {
|
|||||||
ChatManager.handlePartyChat(plugin, PartyManager.getParty(party), sender, sender, message);
|
ChatManager.handlePartyChat(plugin, PartyManager.getParty(party), sender, sender, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Send a message to all members of a party
|
|
||||||
* </br>
|
|
||||||
* This function is designed for API usage.
|
|
||||||
*
|
|
||||||
* @deprecated Replaced by sendPartyChat(Plugin, String, String, String)
|
|
||||||
*
|
|
||||||
* @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
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public static void sendPartyChat(String sender, String party, String message) {
|
|
||||||
sendPartyChat(null, party, sender, sender, message);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a message to administrators
|
* Send a message to administrators
|
||||||
* </br>
|
* </br>
|
||||||
@@ -82,21 +66,6 @@ public final class ChatAPI {
|
|||||||
ChatManager.handleAdminChat(plugin, sender, sender, message);
|
ChatManager.handleAdminChat(plugin, sender, sender, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Send a message to administrators
|
|
||||||
* </br>
|
|
||||||
* This function is designed for API usage.
|
|
||||||
*
|
|
||||||
* @deprecated Replaced by sendAdminChat(Plugin, String, String)
|
|
||||||
*
|
|
||||||
* @param sender The name of the sender to display in the chat
|
|
||||||
* @param message The message to send
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public static void sendAdminChat(String sender, String message) {
|
|
||||||
sendAdminChat(null, sender, sender, message);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a player is currently talking in party chat.
|
* Check if a player is currently talking in party chat.
|
||||||
*
|
*
|
||||||
@@ -104,7 +73,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).getPartyChatMode();
|
return isUsingPartyChat(player.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -124,7 +93,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).getAdminChatMode();
|
return isUsingAdminChat(player.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -136,4 +105,40 @@ public final class ChatAPI {
|
|||||||
public static boolean isUsingAdminChat(String playerName) {
|
public static boolean isUsingAdminChat(String playerName) {
|
||||||
return UserManager.getPlayer(playerName).getAdminChatMode();
|
return UserManager.getPlayer(playerName).getAdminChatMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggle the party chat mode of a player.
|
||||||
|
*
|
||||||
|
* @param player The player to toggle party chat on.
|
||||||
|
*/
|
||||||
|
public static void togglePartyChat(Player player) {
|
||||||
|
togglePartyChat(player.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggle the party chat mode of a player.
|
||||||
|
*
|
||||||
|
* @param playerName The name of the player to toggle party chat on.
|
||||||
|
*/
|
||||||
|
public static void togglePartyChat(String playerName) {
|
||||||
|
UserManager.getPlayer(playerName).setPartyChat(!isUsingPartyChat(playerName));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggle the admin chat mode of a player.
|
||||||
|
*
|
||||||
|
* @param player The player to toggle admin chat on.
|
||||||
|
*/
|
||||||
|
public static void toggleAdminChat(Player player) {
|
||||||
|
toggleAdminChat(player.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggle the admin chat mode of a player.
|
||||||
|
*
|
||||||
|
* @param playerName The name of the player to toggle party chat on.
|
||||||
|
*/
|
||||||
|
public static void toggleAdminChat(String playerName){
|
||||||
|
UserManager.getPlayer(playerName).setAdminChat(!isUsingAdminChat(playerName));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
package com.gmail.nossr50.api;
|
package com.gmail.nossr50.api;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.api.exceptions.InvalidPlayerException;
|
||||||
|
import com.gmail.nossr50.api.exceptions.InvalidSkillException;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
|
import com.gmail.nossr50.skills.child.FamilyTree;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
|
||||||
|
|
||||||
public final class ExperienceAPI {
|
public final class ExperienceAPI {
|
||||||
private ExperienceAPI() {}
|
private ExperienceAPI() {}
|
||||||
@@ -18,39 +23,39 @@ public final class ExperienceAPI {
|
|||||||
* @param player The player to add XP to
|
* @param player The player to add XP to
|
||||||
* @param skillType The skill to add XP to
|
* @param skillType The skill to add XP to
|
||||||
* @param XP The amount of XP to add
|
* @param XP The amount of XP to add
|
||||||
* @deprecated Use {@link #addRawXP(Player, String, int)} instead
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public static void addRawXP(Player player, SkillType skillType, int XP) {
|
|
||||||
UserManager.getPlayer(player).applyXpGain(skillType, XP);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds raw XP to the player.
|
|
||||||
* </br>
|
|
||||||
* This function is designed for API usage.
|
|
||||||
*
|
*
|
||||||
* @param player The player to add XP to
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
* @param skillType The skill to add XP to
|
|
||||||
* @param XP The amount of XP to add
|
|
||||||
*/
|
*/
|
||||||
public static void addRawXP(Player player, String skillType, int XP) {
|
public static void addRawXP(Player player, String skillType, int XP) {
|
||||||
UserManager.getPlayer(player).applyXpGain(SkillType.getSkill(skillType), XP);
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
UserManager.getPlayer(player).applyXpGain(skill, XP);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds XP to the player, calculates for XP Rate only.
|
* Adds raw XP to an offline player.
|
||||||
* </br>
|
* </br>
|
||||||
* This function is designed for API usage.
|
* This function is designed for API usage.
|
||||||
*
|
*
|
||||||
* @param player The player to add XP to
|
* @param playerName The player to add XP to
|
||||||
* @param skillType The skill to add XP to
|
* @param skillType The skill to add XP to
|
||||||
* @param XP The amount of XP to add
|
* @param XP The amount of XP to add
|
||||||
* @deprecated Use {@link #addMultipliedXP(Player, String, int)} instead
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
|
* @throws InvalidPlayerException if the given player does not exist in the database
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
public static void addRawXPOffline(String playerName, String skillType, int XP) {
|
||||||
public static void addMultipliedXP(Player player, SkillType skillType, int XP) {
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
UserManager.getPlayer(player).applyXpGain(skillType, (int) (XP * Config.getInstance().getExperienceGainsGlobalMultiplier()));
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
addOfflineXP(playerName, skill, XP);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -61,24 +66,82 @@ public final class ExperienceAPI {
|
|||||||
* @param player The player to add XP to
|
* @param player The player to add XP to
|
||||||
* @param skillType The skill to add XP to
|
* @param skillType The skill to add XP to
|
||||||
* @param XP The amount of XP to add
|
* @param XP The amount of XP to add
|
||||||
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
*/
|
*/
|
||||||
public static void addMultipliedXP(Player player, String skillType, int XP) {
|
public static void addMultipliedXP(Player player, String skillType, int XP) {
|
||||||
UserManager.getPlayer(player).applyXpGain(SkillType.getSkill(skillType), (int) (XP * Config.getInstance().getExperienceGainsGlobalMultiplier()));
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
UserManager.getPlayer(player).applyXpGain(skill, (int) (XP * Config.getInstance().getExperienceGainsGlobalMultiplier()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds XP to the player, calculates for XP Rate, skill modifiers and perks. May be shared with the party.
|
* Adds XP to an offline player, calculates for XP Rate only.
|
||||||
* </br>
|
* </br>
|
||||||
* This function is designed for API usage.
|
* This function is designed for API usage.
|
||||||
*
|
*
|
||||||
* @param player The player to add XP to
|
* @param playerName The player to add XP to
|
||||||
* @param skillType The skill to add XP to
|
* @param skillType The skill to add XP to
|
||||||
* @param XP The amount of XP to add
|
* @param XP The amount of XP to add
|
||||||
* @deprecated Use {@link #addXP(Player, String, int)} instead
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
|
* @throws InvalidPlayerException if the given player does not exist in the database
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
public static void addMultipliedXPOffline(String playerName, String skillType, int XP) {
|
||||||
public static void addXP(Player player, SkillType skillType, int XP) {
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
UserManager.getPlayer(player).beginXpGain(skillType, XP);
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
addOfflineXP(playerName, skill, (int) (XP * Config.getInstance().getExperienceGainsGlobalMultiplier()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds XP to the player, calculates for XP Rate and skill modifier.
|
||||||
|
* </br>
|
||||||
|
* This function is designed for API usage.
|
||||||
|
*
|
||||||
|
* @param player The player to add XP to
|
||||||
|
* @param skillType The skill to add XP to
|
||||||
|
* @param XP The amount of XP to add
|
||||||
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
|
*/
|
||||||
|
public static void addModifiedXP(Player player, String skillType, int XP) {
|
||||||
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
UserManager.getPlayer(player).applyXpGain(skill, (int) (XP / skill.getXpModifier() * Config.getInstance().getExperienceGainsGlobalMultiplier()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds XP to an offline player, calculates for XP Rate and skill modifier.
|
||||||
|
* </br>
|
||||||
|
* This function is designed for API usage.
|
||||||
|
*
|
||||||
|
* @param playerName The player to add XP to
|
||||||
|
* @param skillType The skill to add XP to
|
||||||
|
* @param XP The amount of XP to add
|
||||||
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
|
* @throws InvalidPlayerException if the given player does not exist in the database
|
||||||
|
*/
|
||||||
|
public static void addModifiedXPOffline(String playerName, String skillType, int XP) {
|
||||||
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
addOfflineXP(playerName, skill, (int) (XP / skill.getXpModifier() * Config.getInstance().getExperienceGainsGlobalMultiplier()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -89,9 +152,17 @@ public final class ExperienceAPI {
|
|||||||
* @param player The player to add XP to
|
* @param player The player to add XP to
|
||||||
* @param skillType The skill to add XP to
|
* @param skillType The skill to add XP to
|
||||||
* @param XP The amount of XP to add
|
* @param XP The amount of XP to add
|
||||||
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
*/
|
*/
|
||||||
public static void addXP(Player player, String skillType, int XP) {
|
public static void addXP(Player player, String skillType, int XP) {
|
||||||
UserManager.getPlayer(player).beginXpGain(SkillType.getSkill(skillType), XP);
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
UserManager.getPlayer(player).beginXpGain(skill, XP);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -102,39 +173,39 @@ public final class ExperienceAPI {
|
|||||||
* @param player The player to get XP for
|
* @param player The player to get XP for
|
||||||
* @param skillType The skill to get XP for
|
* @param skillType The skill to get XP for
|
||||||
* @return the amount of XP in a given skill
|
* @return the amount of XP in a given skill
|
||||||
* @deprecated Use {@link #getXP(Player, String)} instead
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public static int getXP(Player player, SkillType skillType) {
|
|
||||||
return UserManager.getPlayer(player).getProfile().getSkillXpLevel(skillType);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the amount of XP a player has in a specific skill.
|
|
||||||
* </br>
|
|
||||||
* This function is designed for API usage.
|
|
||||||
*
|
*
|
||||||
* @param player The player to get XP for
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
* @param skillType The skill to get XP for
|
|
||||||
* @return the amount of XP in a given skill
|
|
||||||
*/
|
*/
|
||||||
public static int getXP(Player player, String skillType) {
|
public static int getXP(Player player, String skillType) {
|
||||||
return UserManager.getPlayer(player).getProfile().getSkillXpLevel(SkillType.getSkill(skillType));
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
return UserManager.getPlayer(player).getProfile().getSkillXpLevel(skill);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the amount of XP left before leveling up.
|
* Get the amount of XP an offline player has in a specific skill.
|
||||||
* </br>
|
* </br>
|
||||||
* This function is designed for API usage.
|
* This function is designed for API usage.
|
||||||
*
|
*
|
||||||
* @param player The player to get the XP amount for
|
* @param playerName The player to get XP for
|
||||||
* @param skillType The skill to get the XP amount for
|
* @param skillType The skill to get XP for
|
||||||
* @return the amount of XP left before leveling up a specifc skill
|
* @return the amount of XP in a given skill
|
||||||
* @deprecated Use {@link #getXPToNextLevel(Player, String)} instead
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
|
* @throws InvalidPlayerException if the given player does not exist in the database
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
public static int getOfflineXP(String playerName, String skillType) {
|
||||||
public static int getXPToNextLevel(Player player, SkillType skillType) {
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
return UserManager.getPlayer(player).getProfile().getXpToLevel(skillType);
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
return getOfflineProfile(playerName).getSkillXpLevel(skill);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -145,43 +216,39 @@ public final class ExperienceAPI {
|
|||||||
* @param player The player to get the XP amount for
|
* @param player The player to get the XP amount for
|
||||||
* @param skillType The skill to get the XP amount for
|
* @param skillType The skill to get the XP amount for
|
||||||
* @return the amount of XP left before leveling up a specifc skill
|
* @return the amount of XP left before leveling up a specifc skill
|
||||||
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
*/
|
*/
|
||||||
public static int getXPToNextLevel(Player player, String skillType) {
|
public static int getXPToNextLevel(Player player, String skillType) {
|
||||||
return UserManager.getPlayer(player).getProfile().getXpToLevel(SkillType.getSkill(skillType));
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
if (skill == null) {
|
||||||
* Add levels to a skill.
|
throw new InvalidSkillException();
|
||||||
* </br>
|
|
||||||
* This function is designed for API usage.
|
|
||||||
*
|
|
||||||
* @param player The player to add levels to
|
|
||||||
* @param skillType Type of skill to add levels to
|
|
||||||
* @param levels Number of levels to add
|
|
||||||
* @param notify Unused argument
|
|
||||||
* @deprecated Use addLevel(Player, SKillType, int) instead
|
|
||||||
*/
|
|
||||||
public static void addLevel(Player player, SkillType skillType, int levels, boolean notify) {
|
|
||||||
UserManager.getProfile(player).addLevels(skillType, levels);
|
|
||||||
|
|
||||||
if (notify) {
|
|
||||||
checkXP(player, skillType);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return UserManager.getPlayer(player).getProfile().getXpToLevel(skill);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add levels to a skill.
|
* Get the amount of XP an offline player has left before leveling up.
|
||||||
* </br>
|
* </br>
|
||||||
* This function is designed for API usage.
|
* This function is designed for API usage.
|
||||||
*
|
*
|
||||||
* @param player The player to add levels to
|
* @param playerName The player to get XP for
|
||||||
* @param skillType Type of skill to add levels to
|
* @param skillType The skill to get XP for
|
||||||
* @param levels Number of levels to add
|
* @return the amount of XP in a given skill
|
||||||
* @deprecated Use {@link #addLevel(Player, String, int)} instead
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
|
* @throws InvalidPlayerException if the given player does not exist in the database
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
public static int getOfflineXPToNextLevel(String playerName, String skillType) {
|
||||||
public static void addLevel(Player player, SkillType skillType, int levels) {
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
UserManager.getPlayer(player).getProfile().addLevels(skillType, levels);
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
return getOfflineProfile(playerName).getXpToLevel(skill);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -192,24 +259,52 @@ public final class ExperienceAPI {
|
|||||||
* @param player The player to add levels to
|
* @param player The player to add levels to
|
||||||
* @param skillType Type of skill to add levels to
|
* @param skillType Type of skill to add levels to
|
||||||
* @param levels Number of levels to add
|
* @param levels Number of levels to add
|
||||||
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
*/
|
*/
|
||||||
public static void addLevel(Player player, String skillType, int levels) {
|
public static void addLevel(Player player, String skillType, int levels) {
|
||||||
UserManager.getPlayer(player).getProfile().addLevels(SkillType.getSkill(skillType), levels);
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
UserManager.getPlayer(player).getProfile().addLevels(skill, levels);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the level a player has in a specific skill.
|
* Add levels to a skill for an offline player.
|
||||||
* </br>
|
* </br>
|
||||||
* This function is designed for API usage.
|
* This function is designed for API usage.
|
||||||
*
|
*
|
||||||
* @param player The player to get the level for
|
* @param playerName The player to add levels to
|
||||||
* @param skillType The skill to get the level for
|
* @param skillType Type of skill to add levels to
|
||||||
* @return the level of a given skill
|
* @param levels Number of levels to add
|
||||||
* @deprecated Use {@link #getLevel(Player, String)} instead
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
|
* @throws InvalidPlayerException if the given player does not exist in the database
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
public static void addLevelOffline(String playerName, String skillType, int levels) {
|
||||||
public static int getLevel(Player player, SkillType skillType) {
|
PlayerProfile profile = getOfflineProfile(playerName);
|
||||||
return UserManager.getPlayer(player).getProfile().getSkillLevel(skillType);
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (skill.isChildSkill()) {
|
||||||
|
Set<SkillType> parentSkills = FamilyTree.getParents(skill);
|
||||||
|
|
||||||
|
for (SkillType parentSkill : parentSkills) {
|
||||||
|
profile.addLevels(parentSkill, (levels / parentSkills.size()));
|
||||||
|
}
|
||||||
|
|
||||||
|
profile.save();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
profile.addLevels(skill, levels);
|
||||||
|
profile.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -220,9 +315,39 @@ public final class ExperienceAPI {
|
|||||||
* @param player The player to get the level for
|
* @param player The player to get the level for
|
||||||
* @param skillType The skill to get the level for
|
* @param skillType The skill to get the level for
|
||||||
* @return the level of a given skill
|
* @return the level of a given skill
|
||||||
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
*/
|
*/
|
||||||
public static int getLevel(Player player, String skillType) {
|
public static int getLevel(Player player, String skillType) {
|
||||||
return UserManager.getPlayer(player).getProfile().getSkillLevel(SkillType.getSkill(skillType));
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
return UserManager.getPlayer(player).getProfile().getSkillLevel(skill);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the level an offline player has in a specific skill.
|
||||||
|
* </br>
|
||||||
|
* This function is designed for API usage.
|
||||||
|
*
|
||||||
|
* @param playerName The player to get the level for
|
||||||
|
* @param skillType The skill to get the level for
|
||||||
|
* @return the level of a given skill
|
||||||
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
|
* @throws InvalidPlayerException if the given player does not exist in the database
|
||||||
|
*/
|
||||||
|
public static int getLevelOffline(String playerName, String skillType) {
|
||||||
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
return getOfflineProfile(playerName).getSkillLevel(skill);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -237,6 +362,31 @@ public final class ExperienceAPI {
|
|||||||
return UserManager.getPlayer(player).getPowerLevel();
|
return UserManager.getPlayer(player).getPowerLevel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the power level of an offline player.
|
||||||
|
* </br>
|
||||||
|
* This function is designed for API usage.
|
||||||
|
*
|
||||||
|
* @param playerName The player to get the power level for
|
||||||
|
* @return the power level of the player
|
||||||
|
*
|
||||||
|
* @throws InvalidPlayerException if the given player does not exist in the database
|
||||||
|
*/
|
||||||
|
public static int getPowerLevelOffline(String playerName) {
|
||||||
|
int powerLevel = 0;
|
||||||
|
PlayerProfile profile = getOfflineProfile(playerName);
|
||||||
|
|
||||||
|
for (SkillType type : SkillType.values()) {
|
||||||
|
if (type.isChildSkill()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
powerLevel += profile.getSkillLevel(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
return powerLevel;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the level cap of a specific skill.
|
* Get the level cap of a specific skill.
|
||||||
* </br>
|
* </br>
|
||||||
@@ -244,9 +394,17 @@ public final class ExperienceAPI {
|
|||||||
*
|
*
|
||||||
* @param skillType The skill to get the level cap for
|
* @param skillType The skill to get the level cap for
|
||||||
* @return the level cap of a given skill
|
* @return the level cap of a given skill
|
||||||
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
*/
|
*/
|
||||||
public static int getLevelCap(String skillType) {
|
public static int getLevelCap(String skillType) {
|
||||||
return Config.getInstance().getLevelCap(SkillType.getSkill(skillType));
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Config.getInstance().getLevelCap(skill);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -254,7 +412,7 @@ public final class ExperienceAPI {
|
|||||||
* </br>
|
* </br>
|
||||||
* This function is designed for API usage.
|
* This function is designed for API usage.
|
||||||
*
|
*
|
||||||
* @return the power level cap of a given skill
|
* @return the overall power level cap
|
||||||
*/
|
*/
|
||||||
public static int getPowerLevelCap() {
|
public static int getPowerLevelCap() {
|
||||||
return Config.getInstance().getPowerLevelCap();
|
return Config.getInstance().getPowerLevelCap();
|
||||||
@@ -268,39 +426,39 @@ public final class ExperienceAPI {
|
|||||||
* @param player The player to set the level of
|
* @param player The player to set the level of
|
||||||
* @param skillType The skill to set the level for
|
* @param skillType The skill to set the level for
|
||||||
* @param skillLevel The value to set the level to
|
* @param skillLevel The value to set the level to
|
||||||
* @deprecated Use {@link #setLevel(Player, String, int)} instead
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public static void setLevel(Player player, SkillType skillType, int skillLevel) {
|
|
||||||
UserManager.getPlayer(player).getProfile().modifySkill(skillType, skillLevel);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the level of a player in a specific skill type.
|
|
||||||
* </br>
|
|
||||||
* This function is designed for API usage.
|
|
||||||
*
|
*
|
||||||
* @param player The player to set the level of
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
* @param skillType The skill to set the level for
|
|
||||||
* @param skillLevel The value to set the level to
|
|
||||||
*/
|
*/
|
||||||
public static void setLevel(Player player, String skillType, int skillLevel) {
|
public static void setLevel(Player player, String skillType, int skillLevel) {
|
||||||
UserManager.getPlayer(player).getProfile().modifySkill(SkillType.getSkill(skillType), skillLevel);
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
UserManager.getPlayer(player).getProfile().modifySkill(skill, skillLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the XP of a player in a specific skill type.
|
* Sets the level of an offline player in a specific skill type.
|
||||||
* </br>
|
* </br>
|
||||||
* This function is designed for API usage.
|
* This function is designed for API usage.
|
||||||
*
|
*
|
||||||
* @param player The player to set the XP of
|
* @param playerName The player to set the level of
|
||||||
* @param skillType The skill to set the XP for
|
* @param skillType The skill to set the level for
|
||||||
* @param newValue The value to set the XP to
|
* @param skillLevel The value to set the level to
|
||||||
* @deprecated Use {@link #setXP(Player, String, int)} instead
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
|
* @throws InvalidPlayerException if the given player does not exist in the database
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
public static void setLevelOffline(String playerName, String skillType, int skillLevel) {
|
||||||
public static void setXP(Player player, SkillType skillType, int newValue) {
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
UserManager.getPlayer(player).getProfile().setSkillXpLevel(skillType, newValue);
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
getOfflineProfile(playerName).modifySkill(skill, skillLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -311,24 +469,39 @@ public final class ExperienceAPI {
|
|||||||
* @param player The player to set the XP of
|
* @param player The player to set the XP of
|
||||||
* @param skillType The skill to set the XP for
|
* @param skillType The skill to set the XP for
|
||||||
* @param newValue The value to set the XP to
|
* @param newValue The value to set the XP to
|
||||||
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
*/
|
*/
|
||||||
public static void setXP(Player player, String skillType, int newValue) {
|
public static void setXP(Player player, String skillType, int newValue) {
|
||||||
UserManager.getPlayer(player).getProfile().setSkillXpLevel(SkillType.getSkill(skillType), newValue);
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
UserManager.getPlayer(player).getProfile().setSkillXpLevel(skill, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes XP from a player in a specific skill type.
|
* Sets the XP of an offline player in a specific skill type.
|
||||||
* </br>
|
* </br>
|
||||||
* This function is designed for API usage.
|
* This function is designed for API usage.
|
||||||
*
|
*
|
||||||
* @param player The player to change the XP of
|
* @param playerName The player to set the XP of
|
||||||
* @param skillType The skill to change the XP for
|
* @param skillType The skill to set the XP for
|
||||||
* @param xp The amount of XP to remove
|
* @param newValue The value to set the XP to
|
||||||
* @deprecated Use {@link #removeXP(Player, String, int)} instead
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
|
* @throws InvalidPlayerException if the given player does not exist in the database
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
public static void setXPOffline(String playerName, String skillType, int newValue) {
|
||||||
public static void removeXP(Player player, SkillType skillType, int xp) {
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
UserManager.getPlayer(player).getProfile().removeXp(skillType, xp);
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
getOfflineProfile(playerName).setSkillXpLevel(skill, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -339,20 +512,73 @@ public final class ExperienceAPI {
|
|||||||
* @param player The player to change the XP of
|
* @param player The player to change the XP of
|
||||||
* @param skillType The skill to change the XP for
|
* @param skillType The skill to change the XP for
|
||||||
* @param xp The amount of XP to remove
|
* @param xp The amount of XP to remove
|
||||||
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
*/
|
*/
|
||||||
public static void removeXP(Player player, String skillType, int xp) {
|
public static void removeXP(Player player, String skillType, int xp) {
|
||||||
UserManager.getPlayer(player).getProfile().removeXp(SkillType.getSkill(skillType), xp);
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
UserManager.getPlayer(player).getProfile().removeXp(skill, xp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check the XP of a player. This should be called after giving XP to process level-ups.
|
* Removes XP from an offline player in a specific skill type.
|
||||||
|
* </br>
|
||||||
|
* This function is designed for API usage.
|
||||||
*
|
*
|
||||||
* @param player The player to check
|
* @param playerName The player to change the XP of
|
||||||
* @param skillType The skill to check
|
* @param skillType The skill to change the XP for
|
||||||
* @deprecated Calling this function is no longer needed and should be avoided
|
* @param xp The amount of XP to remove
|
||||||
|
*
|
||||||
|
* @throws InvalidSkillException if the given skill is not valid
|
||||||
|
* @throws InvalidPlayerException if the given player does not exist in the database
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
public static void removeXPOffline(String playerName, String skillType, int xp) {
|
||||||
private static void checkXP(Player player, SkillType skillType) {
|
SkillType skill = SkillType.getSkill(skillType);
|
||||||
SkillUtils.xpCheckSkill(skillType, player, UserManager.getProfile(player));
|
|
||||||
|
if (skill == null) {
|
||||||
|
throw new InvalidSkillException();
|
||||||
|
}
|
||||||
|
|
||||||
|
getOfflineProfile(playerName).removeXp(skill, xp);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add XP to an offline player.
|
||||||
|
*
|
||||||
|
* @param playerName The player to check
|
||||||
|
* @param skillType The skill to check
|
||||||
|
* @param XP The amount of XP to award.
|
||||||
|
*/
|
||||||
|
private static void addOfflineXP(String playerName, SkillType skill, int XP) {
|
||||||
|
PlayerProfile profile = getOfflineProfile(playerName);
|
||||||
|
|
||||||
|
if (skill.isChildSkill()) {
|
||||||
|
Set<SkillType> parentSkills = FamilyTree.getParents(skill);
|
||||||
|
|
||||||
|
for (SkillType parentSkill : parentSkills) {
|
||||||
|
profile.setSkillXpLevel(parentSkill, profile.getSkillLevel(parentSkill) + (XP / parentSkills.size()));
|
||||||
|
}
|
||||||
|
|
||||||
|
profile.save();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
profile.setSkillXpLevel(skill, profile.getSkillXpLevel(skill) + XP);
|
||||||
|
profile.save();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static PlayerProfile getOfflineProfile(String playerName) {
|
||||||
|
PlayerProfile profile = new PlayerProfile(playerName, false);
|
||||||
|
|
||||||
|
if (!profile.isLoaded()) {
|
||||||
|
throw new InvalidPlayerException();
|
||||||
|
}
|
||||||
|
|
||||||
|
return profile;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.gmail.nossr50.api;
|
package com.gmail.nossr50.api;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
@@ -19,9 +18,13 @@ public final class PartyAPI {
|
|||||||
* This function is designed for API usage.
|
* This function is designed for API usage.
|
||||||
*
|
*
|
||||||
* @param player The player to check the party name of
|
* @param player The player to check the party name of
|
||||||
* @return the name of the player's 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)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
return UserManager.getPlayer(player).getParty().getName();
|
return UserManager.getPlayer(player).getParty().getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,26 +119,6 @@ public final class PartyAPI {
|
|||||||
PartyManager.setPartyLeader(player, PartyManager.getParty(partyName));
|
PartyManager.setPartyLeader(player, PartyManager.getParty(partyName));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get a list of all players in this player's party.
|
|
||||||
* </br>
|
|
||||||
* This function is designed for API usage.
|
|
||||||
*
|
|
||||||
* @param player The player to check
|
|
||||||
* @return all the players in the player's party
|
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public static List<String> getAllMembers(Player player) {
|
|
||||||
List<String> memberNames = new ArrayList<String>();
|
|
||||||
|
|
||||||
for (OfflinePlayer member : PartyManager.getAllMembers(player)) {
|
|
||||||
memberNames.add(member.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
return memberNames;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a list of all players in this player's party.
|
* Get a list of all players in this player's party.
|
||||||
* </br>
|
* </br>
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.gmail.nossr50.api.exceptions;
|
||||||
|
|
||||||
|
public class InvalidPlayerException extends RuntimeException {
|
||||||
|
private static final long serialVersionUID = 907213002618581385L;
|
||||||
|
|
||||||
|
public InvalidPlayerException() {
|
||||||
|
super("That player does not exist in the database.");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.gmail.nossr50.api.exceptions;
|
||||||
|
|
||||||
|
public class InvalidSkillException extends RuntimeException {
|
||||||
|
private static final long serialVersionUID = 942705284195791157L;
|
||||||
|
|
||||||
|
public InvalidSkillException() {
|
||||||
|
super("That is not a valid skill.");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,79 +1,29 @@
|
|||||||
package com.gmail.nossr50.commands;
|
package com.gmail.nossr50.commands;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
|
||||||
|
|
||||||
public class McabilityCommand implements CommandExecutor {
|
public class McabilityCommand extends ToggleCommand {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
protected boolean hasOtherPermission(CommandSender sender) {
|
||||||
McMMOPlayer mcMMOPlayer;
|
return Permissions.mcabilityOthers(sender);
|
||||||
|
}
|
||||||
|
|
||||||
switch (args.length) {
|
@Override
|
||||||
case 0:
|
protected boolean hasSelfPermission(CommandSender sender) {
|
||||||
if (!Permissions.mcability(sender)) {
|
return Permissions.mcability(sender);
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer = UserManager.getPlayer((Player) sender);
|
@Override
|
||||||
|
protected void applyCommandAction() {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.Ability." + (mcMMOPlayer.getAbilityUse() ? "Off" : "On")));
|
||||||
|
mcMMOPlayer.toggleAbilityUse();
|
||||||
|
}
|
||||||
|
|
||||||
if (mcMMOPlayer.getAbilityUse()) {
|
@Override
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Ability.Off"));
|
protected void sendSuccessMessage(CommandSender sender) {
|
||||||
}
|
sender.sendMessage("Ability use has been toggled for " + player.getName()); // TODO: Localize
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Ability.On"));
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer.toggleAbilityUse();
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
if (!Permissions.mcabilityOthers(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer = UserManager.getPlayer(args[0]);
|
|
||||||
|
|
||||||
if (mcMMOPlayer == null) {
|
|
||||||
PlayerProfile playerProfile = new PlayerProfile(args[0], false);
|
|
||||||
|
|
||||||
if (!playerProfile.isLoaded()) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Offline"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Player player = mcMMOPlayer.getPlayer();
|
|
||||||
|
|
||||||
if (!player.isOnline()) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Offline"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mcMMOPlayer.getAbilityUse()) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.Ability.Off"));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.Ability.On"));
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer.toggleAbilityUse();
|
|
||||||
return true;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,88 +1,29 @@
|
|||||||
package com.gmail.nossr50.commands;
|
package com.gmail.nossr50.commands;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
|
||||||
|
|
||||||
public class McgodCommand implements CommandExecutor {
|
public class McgodCommand extends ToggleCommand {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
protected boolean hasOtherPermission(CommandSender sender) {
|
||||||
McMMOPlayer mcMMOPlayer;
|
return Permissions.mcgodOthers(sender);
|
||||||
|
}
|
||||||
|
|
||||||
switch (args.length) {
|
@Override
|
||||||
case 0:
|
protected boolean hasSelfPermission(CommandSender sender) {
|
||||||
if (!Permissions.mcgod(sender)) {
|
return Permissions.mcgod(sender);
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(sender instanceof Player)) {
|
@Override
|
||||||
return false;
|
protected void applyCommandAction() {
|
||||||
}
|
player.sendMessage(LocaleLoader.getString("Commands.GodMode." + (mcMMOPlayer.getGodMode() ? "Disabled" : "Enabled")));
|
||||||
|
mcMMOPlayer.toggleGodMode();
|
||||||
|
}
|
||||||
|
|
||||||
mcMMOPlayer = UserManager.getPlayer((Player) sender);
|
@Override
|
||||||
|
protected void sendSuccessMessage(CommandSender sender) {
|
||||||
if (mcMMOPlayer == null) {
|
sender.sendMessage("God mode has been toggled for " + player.getName()); // TODO: Localize
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mcMMOPlayer.getGodMode()) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.GodMode.Disabled"));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.GodMode.Enabled"));
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer.toggleGodMode();
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
if (!Permissions.mcgodOthers(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer = UserManager.getPlayer(args[0]);
|
|
||||||
|
|
||||||
if (mcMMOPlayer == null) {
|
|
||||||
PlayerProfile playerProfile = new PlayerProfile(args[0], false);
|
|
||||||
|
|
||||||
if (!playerProfile.isLoaded()) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Offline"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Player player = mcMMOPlayer.getPlayer();
|
|
||||||
|
|
||||||
if (!player.isOnline()) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Offline"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mcMMOPlayer.getGodMode()) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.GodMode.Disabled"));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.GodMode.Enabled"));
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer.toggleGodMode();
|
|
||||||
return true;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,28 +1,25 @@
|
|||||||
package com.gmail.nossr50.commands;
|
package com.gmail.nossr50.commands;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.command.TabExecutor;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class McnotifyCommand implements CommandExecutor {
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
public class McnotifyCommand implements TabExecutor {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 0:
|
case 0:
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer((Player) sender);
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
|
|
||||||
if (mcMMOPlayer.useChatNotifications()) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Notifications.Off"));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Notifications.On"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.Notifications." + (mcMMOPlayer.useChatNotifications() ? "Off" : "On")));
|
||||||
mcMMOPlayer.toggleChatNotifications();
|
mcMMOPlayer.toggleChatNotifications();
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
@@ -30,4 +27,9 @@ public class McnotifyCommand implements CommandExecutor {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,80 +1,34 @@
|
|||||||
package com.gmail.nossr50.commands;
|
package com.gmail.nossr50.commands;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
|
||||||
|
|
||||||
public class McrefreshCommand implements CommandExecutor {
|
public class McrefreshCommand extends ToggleCommand {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
protected boolean hasOtherPermission(CommandSender sender) {
|
||||||
McMMOPlayer mcMMOPlayer;
|
return Permissions.mcrefreshOthers(sender);
|
||||||
|
}
|
||||||
|
|
||||||
switch (args.length) {
|
@Override
|
||||||
case 0:
|
protected boolean hasSelfPermission(CommandSender sender) {
|
||||||
if (!Permissions.mcrefresh(sender)) {
|
return Permissions.mcrefresh(sender);
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(sender instanceof Player)) {
|
@Override
|
||||||
return false;
|
protected void applyCommandAction() {
|
||||||
}
|
mcMMOPlayer.setRecentlyHurt(0);
|
||||||
|
mcMMOPlayer.getProfile().resetCooldowns();
|
||||||
|
mcMMOPlayer.resetToolPrepMode();
|
||||||
|
mcMMOPlayer.resetAbilityMode();
|
||||||
|
|
||||||
mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
player.setCanPickupItems(true);
|
||||||
|
player.sendMessage(LocaleLoader.getString("Ability.Generic.Refresh"));
|
||||||
|
}
|
||||||
|
|
||||||
mcMMOPlayer.setRecentlyHurt(0);
|
@Override
|
||||||
mcMMOPlayer.getProfile().resetCooldowns();
|
protected void sendSuccessMessage(CommandSender sender) {
|
||||||
mcMMOPlayer.resetToolPrepMode();
|
sender.sendMessage(LocaleLoader.getString("Commands.mcrefresh.Success", player.getName()));
|
||||||
mcMMOPlayer.resetAbilityMode();
|
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Ability.Generic.Refresh"));
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
if (!Permissions.mcrefreshOthers(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer = UserManager.getPlayer(args[0]);
|
|
||||||
|
|
||||||
if (mcMMOPlayer == null) {
|
|
||||||
PlayerProfile playerProfile = new PlayerProfile(args[0], false);
|
|
||||||
|
|
||||||
if (!playerProfile.isLoaded()) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Offline"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Player player = mcMMOPlayer.getPlayer();
|
|
||||||
|
|
||||||
if (!player.isOnline()) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Offline"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer.setRecentlyHurt(0);
|
|
||||||
mcMMOPlayer.getProfile().resetCooldowns();
|
|
||||||
mcMMOPlayer.resetToolPrepMode();
|
|
||||||
mcMMOPlayer.resetAbilityMode();
|
|
||||||
|
|
||||||
player.sendMessage(LocaleLoader.getString("Ability.Generic.Refresh"));
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mcrefresh.Success", args[0]));
|
|
||||||
return true;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
package com.gmail.nossr50.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.util.StringUtil;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.MobHealthbarType;
|
||||||
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
public class MobhealthCommand implements TabExecutor {
|
||||||
|
private static final List<String> MOB_HEALTHBAR_TYPES;
|
||||||
|
|
||||||
|
static {
|
||||||
|
ArrayList<String> types = new ArrayList<String>();
|
||||||
|
|
||||||
|
for (MobHealthbarType type : MobHealthbarType.values()) {
|
||||||
|
types.add(type.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.sort(types);
|
||||||
|
MOB_HEALTHBAR_TYPES = ImmutableList.copyOf(types);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
if (CommandUtils.noConsoleUsage(sender)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
PlayerProfile playerProfile = UserManager.getPlayer(sender.getName()).getProfile();
|
||||||
|
|
||||||
|
try {
|
||||||
|
MobHealthbarType type = MobHealthbarType.valueOf(args[0].toUpperCase().trim());
|
||||||
|
playerProfile.setMobHealthbarType(type);
|
||||||
|
sender.sendMessage("Display type changed to: " + type); //TODO: Localize
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException ex) {
|
||||||
|
sender.sendMessage("Invalid type!"); //TODO: Localize
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
return StringUtil.copyPartialMatches(args[0], MOB_HEALTHBAR_TYPES, new ArrayList<String>(MOB_HEALTHBAR_TYPES.size()));
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
84
src/main/java/com/gmail/nossr50/commands/ToggleCommand.java
Normal file
84
src/main/java/com/gmail/nossr50/commands/ToggleCommand.java
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
package com.gmail.nossr50.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.util.StringUtil;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
public abstract class ToggleCommand implements TabExecutor {
|
||||||
|
protected McMMOPlayer mcMMOPlayer;
|
||||||
|
protected Player player;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 0:
|
||||||
|
if (CommandUtils.noConsoleUsage(sender)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasSelfPermission(sender)) {
|
||||||
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
|
player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
|
applyCommandAction();
|
||||||
|
return true;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
if (!hasOtherPermission(sender)) {
|
||||||
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
mcMMOPlayer = UserManager.getPlayer(args[0]);
|
||||||
|
|
||||||
|
if (!CommandUtils.checkPlayerExistence(sender, args[0], mcMMOPlayer)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
|
if (CommandUtils.isOffline(sender, player)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
applyCommandAction();
|
||||||
|
sendSuccessMessage(sender);
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
Set<String> playerNames = UserManager.getPlayers().keySet();
|
||||||
|
return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract boolean hasOtherPermission(CommandSender sender);
|
||||||
|
protected abstract boolean hasSelfPermission(CommandSender sender);
|
||||||
|
protected abstract void applyCommandAction();
|
||||||
|
protected abstract void sendSuccessMessage(CommandSender sender);
|
||||||
|
}
|
||||||
@@ -1,17 +1,28 @@
|
|||||||
package com.gmail.nossr50.commands;
|
package com.gmail.nossr50.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.util.StringUtil;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
|
|
||||||
public class XprateCommand implements CommandExecutor {
|
import com.google.common.collect.ImmutableList;
|
||||||
private static double originalRate = Config.getInstance().getExperienceGainsGlobalMultiplier();
|
|
||||||
|
public class XprateCommand implements TabExecutor {
|
||||||
|
private double originalRate;
|
||||||
|
|
||||||
|
public XprateCommand() {
|
||||||
|
originalRate = Config.getInstance().getExperienceGainsGlobalMultiplier();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
@@ -35,8 +46,8 @@ public class XprateCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
if (!StringUtils.isInt(args[0])) {
|
if (CommandUtils.isInvalidInteger(sender, args[0])) {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Permissions.xprateSet(sender)) {
|
if (!Permissions.xprateSet(sender)) {
|
||||||
@@ -44,11 +55,16 @@ public class XprateCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!args[1].equalsIgnoreCase("true") && !args[1].equalsIgnoreCase("false")) {
|
if (CommandUtils.shouldDisableToggle(args[1])) {
|
||||||
|
mcMMO.p.setXPEventEnabled(false);
|
||||||
|
}
|
||||||
|
else if (CommandUtils.shouldEnableToggle(args[1])) {
|
||||||
|
mcMMO.p.setXPEventEnabled(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
mcMMO.p.setXPEventEnabled(Boolean.valueOf(args[1]));
|
|
||||||
int newXpRate = Integer.parseInt(args[0]);
|
int newXpRate = Integer.parseInt(args[0]);
|
||||||
Config.getInstance().setExperienceGainsGlobalMultiplier(newXpRate);
|
Config.getInstance().setExperienceGainsGlobalMultiplier(newXpRate);
|
||||||
|
|
||||||
@@ -66,4 +82,20 @@ public class XprateCommand implements CommandExecutor {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
if (StringUtils.isInt(args[0])) {
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
return StringUtil.copyPartialMatches(args[0], CommandUtils.RESET_OPTIONS, new ArrayList<String>(CommandUtils.RESET_OPTIONS.size()));
|
||||||
|
case 2:
|
||||||
|
return StringUtil.copyPartialMatches(args[1], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<String>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,24 @@
|
|||||||
package com.gmail.nossr50.commands.chat;
|
package com.gmail.nossr50.commands.chat;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.util.StringUtil;
|
||||||
|
|
||||||
import com.gmail.nossr50.chat.ChatMode;
|
import com.gmail.nossr50.chat.ChatMode;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public abstract class ChatCommand implements CommandExecutor {
|
import com.google.common.collect.ImmutableList;
|
||||||
protected McMMOPlayer mcMMOPlayer;
|
|
||||||
|
public abstract class ChatCommand implements TabExecutor {
|
||||||
protected ChatMode chatMode;
|
protected ChatMode chatMode;
|
||||||
|
private McMMOPlayer mcMMOPlayer;
|
||||||
|
|
||||||
public ChatCommand(ChatMode chatMode) {
|
public ChatCommand(ChatMode chatMode) {
|
||||||
this.chatMode = chatMode;
|
this.chatMode = chatMode;
|
||||||
@@ -21,11 +28,11 @@ public abstract class ChatCommand implements CommandExecutor {
|
|||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 0:
|
case 0:
|
||||||
if (!(sender instanceof Player)) {
|
if (CommandUtils.noConsoleUsage(sender)) {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
mcMMOPlayer = UserManager.getPlayer((Player) sender);
|
mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
|
|
||||||
if (chatMode.isEnabled(mcMMOPlayer)) {
|
if (chatMode.isEnabled(mcMMOPlayer)) {
|
||||||
disableChatMode(sender);
|
disableChatMode(sender);
|
||||||
@@ -37,20 +44,24 @@ public abstract class ChatCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
if (args[0].equalsIgnoreCase("on")) {
|
if (CommandUtils.shouldEnableToggle(args[0])) {
|
||||||
if (!(sender instanceof Player)) {
|
if (CommandUtils.noConsoleUsage(sender)) {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
|
|
||||||
enableChatMode(sender);
|
enableChatMode(sender);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("off")) {
|
if (CommandUtils.shouldDisableToggle(args[0])) {
|
||||||
if (!(sender instanceof Player)) {
|
if (CommandUtils.noConsoleUsage(sender)) {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
|
|
||||||
disableChatMode(sender);
|
disableChatMode(sender);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -63,6 +74,16 @@ public abstract class ChatCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
return StringUtil.copyPartialMatches(args[0], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<String>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected String buildChatMessage(String[] args, int index) {
|
protected String buildChatMessage(String[] args, int index) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append(args[index]);
|
builder.append(args[index]);
|
||||||
@@ -78,11 +99,21 @@ public abstract class ChatCommand implements CommandExecutor {
|
|||||||
protected abstract void handleChatSending(CommandSender sender, String[] args);
|
protected abstract void handleChatSending(CommandSender sender, String[] args);
|
||||||
|
|
||||||
private void enableChatMode(CommandSender sender) {
|
private void enableChatMode(CommandSender sender) {
|
||||||
|
if (chatMode == ChatMode.PARTY && mcMMOPlayer.getParty() == null) {
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.Party.None"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
chatMode.enable(mcMMOPlayer);
|
chatMode.enable(mcMMOPlayer);
|
||||||
sender.sendMessage(chatMode.getEnabledMessage());
|
sender.sendMessage(chatMode.getEnabledMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void disableChatMode(CommandSender sender) {
|
private void disableChatMode(CommandSender sender) {
|
||||||
|
if (chatMode == ChatMode.PARTY && mcMMOPlayer.getParty() == null) {
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.Party.None"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
chatMode.disable(mcMMOPlayer);
|
chatMode.disable(mcMMOPlayer);
|
||||||
sender.sendMessage(chatMode.getDisabledMessage());
|
sender.sendMessage(chatMode.getDisabledMessage());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package com.gmail.nossr50.commands.database;
|
package com.gmail.nossr50.commands.database;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.database.DatabaseManager;
|
import com.gmail.nossr50.database.DatabaseManager;
|
||||||
@@ -10,7 +12,9 @@ import com.gmail.nossr50.database.LeaderboardManager;
|
|||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
|
||||||
public class McpurgeCommand implements CommandExecutor {
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
public class McpurgeCommand implements TabExecutor {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
if (!Permissions.mcpurge(sender)) {
|
if (!Permissions.mcpurge(sender)) {
|
||||||
@@ -42,4 +46,9 @@ public class McpurgeCommand implements CommandExecutor {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,27 @@
|
|||||||
package com.gmail.nossr50.commands.database;
|
package com.gmail.nossr50.commands.database;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.util.StringUtil;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.database.DatabaseManager;
|
import com.gmail.nossr50.database.DatabaseManager;
|
||||||
import com.gmail.nossr50.database.LeaderboardManager;
|
import com.gmail.nossr50.database.LeaderboardManager;
|
||||||
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.util.Misc;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class McremoveCommand implements CommandExecutor {
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
public class McremoveCommand implements TabExecutor {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
if (!Permissions.mcremove(sender)) {
|
if (!Permissions.mcremove(sender)) {
|
||||||
@@ -20,26 +31,24 @@ public class McremoveCommand implements CommandExecutor {
|
|||||||
|
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 1:
|
case 1:
|
||||||
|
if (UserManager.getPlayer(args[0]) == null && CommandUtils.unloadedProfile(sender, new PlayerProfile(args[0], false))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/* MySQL */
|
/* MySQL */
|
||||||
if (Config.getInstance().getUseMySQL()) {
|
if (Config.getInstance().getUseMySQL()) {
|
||||||
String tablePrefix = Config.getInstance().getMySQLTablePrefix();
|
String tablePrefix = Config.getInstance().getMySQLTablePrefix();
|
||||||
|
|
||||||
if (DatabaseManager.update("DELETE FROM " + tablePrefix + "users WHERE " + tablePrefix + "users.user = '" + args[0] + "'") != 0) {
|
if (DatabaseManager.update("DELETE FROM " + tablePrefix + "users WHERE " + tablePrefix + "users.user = '" + args[0] + "'") != 0) {
|
||||||
DatabaseManager.profileCleanup(args[0]);
|
Misc.profileCleanup(args[0]);
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mcremove.Success", args[0]));
|
sender.sendMessage(LocaleLoader.getString("Commands.mcremove.Success", args[0]));
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (LeaderboardManager.removeFlatFileUser(args[0])) {
|
if (LeaderboardManager.removeFlatFileUser(args[0])) {
|
||||||
DatabaseManager.profileCleanup(args[0]);
|
Misc.profileCleanup(args[0]);
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mcremove.Success", args[0]));
|
sender.sendMessage(LocaleLoader.getString("Commands.mcremove.Success", args[0]));
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -48,4 +57,15 @@ public class McremoveCommand implements CommandExecutor {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
Set<String> playerNames = UserManager.getPlayers().keySet();
|
||||||
|
return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package com.gmail.nossr50.commands.database;
|
package com.gmail.nossr50.commands.database;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
@@ -12,7 +14,9 @@ import com.gmail.nossr50.runnables.database.SQLConversionTask;
|
|||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class MmoupdateCommand implements CommandExecutor {
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
public class MmoupdateCommand implements TabExecutor {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
if (!Permissions.mmoupdate(sender)) {
|
if (!Permissions.mmoupdate(sender)) {
|
||||||
@@ -20,11 +24,17 @@ public class MmoupdateCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!Config.getInstance().getUseMySQL()) {
|
||||||
|
sender.sendMessage("SQL Mode is not enabled."); // TODO: Localize
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 0:
|
case 0:
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mmoupdate.Start"));
|
sender.sendMessage(LocaleLoader.getString("Commands.mmoupdate.Start"));
|
||||||
|
UserManager.saveAll();
|
||||||
UserManager.clearAll();
|
UserManager.clearAll();
|
||||||
convertToMySQL();
|
new SQLConversionTask().runTaskLaterAsynchronously(mcMMO.p, 1);
|
||||||
|
|
||||||
for (Player player : mcMMO.p.getServer().getOnlinePlayers()) {
|
for (Player player : mcMMO.p.getServer().getOnlinePlayers()) {
|
||||||
UserManager.addUser(player);
|
UserManager.addUser(player);
|
||||||
@@ -38,14 +48,8 @@ public class MmoupdateCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Convert FlatFile data to MySQL data.
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
*/
|
return ImmutableList.of();
|
||||||
private void convertToMySQL() {
|
|
||||||
if (!Config.getInstance().getUseMySQL()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMO.p.getServer().getScheduler().runTaskLaterAsynchronously(mcMMO.p, new SQLConversionTask(), 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,154 +1,35 @@
|
|||||||
package com.gmail.nossr50.commands.experience;
|
package com.gmail.nossr50.commands.experience;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
|
||||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||||
|
|
||||||
public class AddlevelsCommand implements CommandExecutor {
|
public class AddlevelsCommand extends ExperienceCommand {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
protected boolean permissionsCheckSelf(CommandSender sender) {
|
||||||
PlayerProfile profile;
|
return Permissions.addlevels(sender);
|
||||||
int levels;
|
}
|
||||||
boolean allSkills = false;
|
|
||||||
SkillType skill = null;
|
|
||||||
|
|
||||||
switch (args.length) {
|
@Override
|
||||||
case 2:
|
protected boolean permissionsCheckOthers(CommandSender sender) {
|
||||||
if (!Permissions.addlevels(sender)) {
|
return Permissions.addlevelsOthers(sender);
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(sender instanceof Player)) {
|
@Override
|
||||||
return false;
|
protected void handleCommand(SkillType skill) {
|
||||||
}
|
profile.addLevels(skill, value);
|
||||||
|
}
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("all")) {
|
@Override
|
||||||
allSkills = true;
|
protected void handlePlayerMessageAll() {
|
||||||
}
|
player.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardAll.1", value));
|
||||||
else if (!SkillUtils.isSkill(args[0])) {
|
}
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!StringUtils.isInt(args[1])) {
|
@Override
|
||||||
return false;
|
protected void handlePlayerMessageSkill() {
|
||||||
}
|
player.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardSkill.1", value, SkillUtils.getSkillName(skill)));
|
||||||
|
|
||||||
levels = Integer.parseInt(args[1]);
|
|
||||||
profile = UserManager.getPlayer((Player) sender).getProfile();
|
|
||||||
|
|
||||||
if (allSkills) {
|
|
||||||
for (SkillType skillType : SkillType.values()) {
|
|
||||||
if (skillType.isChildSkill()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.addLevels(skillType, levels);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
skill = SkillType.getSkill(args[0]);
|
|
||||||
profile.addLevels(skill, levels);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (allSkills) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardAll.1", levels));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardSkill.1", levels, SkillUtils.getSkillName(skill)));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
if (!Permissions.addlevelsOthers(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args[1].equalsIgnoreCase("all")) {
|
|
||||||
allSkills = true;
|
|
||||||
}
|
|
||||||
else if (!SkillUtils.isSkill(args[1])) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!StringUtils.isInt(args[2])) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(args[0]);
|
|
||||||
levels = Integer.parseInt(args[2]);
|
|
||||||
|
|
||||||
// If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process.
|
|
||||||
if (mcMMOPlayer == null) {
|
|
||||||
profile = new PlayerProfile(args[0], false);
|
|
||||||
|
|
||||||
if (!profile.isLoaded()) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (allSkills) {
|
|
||||||
for (SkillType skillType : SkillType.values()) {
|
|
||||||
if (skillType.isChildSkill()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.addLevels(skillType, levels);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
skill = SkillType.getSkill(args[1]);
|
|
||||||
profile.addLevels(skill, levels);
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.save(); // Since this is a temporary profile, we save it here.
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
profile = mcMMOPlayer.getProfile();
|
|
||||||
|
|
||||||
if (allSkills) {
|
|
||||||
for (SkillType skillType : SkillType.values()) {
|
|
||||||
if (skillType.isChildSkill()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.addLevels(skillType, levels);
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.addlevels.AwardAll.1", levels));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
skill = SkillType.getSkill(args[1]);
|
|
||||||
profile.addLevels(skill, levels);
|
|
||||||
mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.addlevels.AwardSkill.1", levels, SkillUtils.getSkillName(skill)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (allSkills) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardAll.2", args[0]));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardSkill.2", SkillUtils.getSkillName(skill), args[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,152 +1,40 @@
|
|||||||
package com.gmail.nossr50.commands.experience;
|
package com.gmail.nossr50.commands.experience;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
|
||||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||||
|
|
||||||
public class AddxpCommand implements CommandExecutor {
|
public class AddxpCommand extends ExperienceCommand {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
protected boolean permissionsCheckSelf(CommandSender sender) {
|
||||||
int xp;
|
return Permissions.addxp(sender);
|
||||||
McMMOPlayer mcMMOPlayer;
|
}
|
||||||
PlayerProfile profile;
|
|
||||||
boolean allSkills = false;
|
|
||||||
SkillType skill = null;
|
|
||||||
|
|
||||||
switch (args.length) {
|
@Override
|
||||||
case 2:
|
protected boolean permissionsCheckOthers(CommandSender sender) {
|
||||||
if (!Permissions.addxp(sender)) {
|
return Permissions.addxpOthers(sender);
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(sender instanceof Player)) {
|
@Override
|
||||||
return false;
|
protected void handleCommand(SkillType skill) {
|
||||||
}
|
if (player != null) {
|
||||||
|
mcMMOPlayer.applyXpGain(skill, value);
|
||||||
if (args[0].equalsIgnoreCase("all")) {
|
}
|
||||||
allSkills = true;
|
else {
|
||||||
}
|
profile.addExperience(skill, value);
|
||||||
else if (!SkillUtils.isSkill(args[0])) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!StringUtils.isInt(args[1])) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
xp = Integer.parseInt(args[1]);
|
|
||||||
mcMMOPlayer = UserManager.getPlayer((Player) sender);
|
|
||||||
profile = mcMMOPlayer.getProfile();
|
|
||||||
|
|
||||||
if (allSkills) {
|
|
||||||
for (SkillType skillType : SkillType.values()) {
|
|
||||||
if (skillType.isChildSkill()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer.applyXpGain(skillType, xp);
|
|
||||||
}
|
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.addxp.AwardAll", xp));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
skill = SkillType.getSkill(args[0]);
|
|
||||||
|
|
||||||
mcMMOPlayer.applyXpGain(skill, xp);
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.addxp.AwardSkill", xp, SkillUtils.getSkillName(skill)));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
if (!Permissions.addxpOthers(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args[1].equalsIgnoreCase("all")) {
|
|
||||||
allSkills = true;
|
|
||||||
}
|
|
||||||
else if (!SkillUtils.isSkill(args[1])) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!StringUtils.isInt(args[2])) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer = UserManager.getPlayer(args[0]);
|
|
||||||
xp = Integer.parseInt(args[2]);
|
|
||||||
|
|
||||||
// If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process.
|
|
||||||
if (mcMMOPlayer == null) {
|
|
||||||
profile = new PlayerProfile(args[0], false);
|
|
||||||
|
|
||||||
if (!profile.isLoaded()) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Currently the offline player doesn't level up automatically
|
|
||||||
if (allSkills) {
|
|
||||||
for (SkillType skillType : SkillType.values()) {
|
|
||||||
if (skillType.isChildSkill()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.setSkillXpLevel(skillType, xp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
skill = SkillType.getSkill(args[1]);
|
|
||||||
profile.setSkillXpLevel(skill, xp);
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.save(); // Since this is a temporary profile, we save it here.
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (allSkills) {
|
|
||||||
for (SkillType skillType : SkillType.values()) {
|
|
||||||
if (skillType.isChildSkill()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer.applyXpGain(skillType, xp);
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.addxp.AwardAll", xp));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
skill = SkillType.getSkill(args[1]);
|
|
||||||
mcMMOPlayer.applyXpGain(skill, xp);
|
|
||||||
mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.addxp.AwardSkill", xp, SkillUtils.getSkillName(skill)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (allSkills) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardAll.2", args[0]));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardSkill.2", SkillUtils.getSkillName(skill), args[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void handlePlayerMessageAll() {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.addxp.AwardAll", value));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void handlePlayerMessageSkill() {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.addxp.AwardSkill", value, SkillUtils.getSkillName(skill)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,171 @@
|
|||||||
|
package com.gmail.nossr50.commands.experience;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.util.StringUtil;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
public abstract class ExperienceCommand implements TabExecutor {
|
||||||
|
protected McMMOPlayer mcMMOPlayer;
|
||||||
|
protected Player player;
|
||||||
|
protected PlayerProfile profile;
|
||||||
|
|
||||||
|
protected boolean allSkills;
|
||||||
|
protected SkillType skill;
|
||||||
|
protected int value;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 2:
|
||||||
|
if (CommandUtils.noConsoleUsage(sender)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!permissionsCheckSelf(sender)) {
|
||||||
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validateArguments(sender, args[0], args[1])) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
|
player = mcMMOPlayer.getPlayer();
|
||||||
|
profile = mcMMOPlayer.getProfile();
|
||||||
|
|
||||||
|
editValues();
|
||||||
|
allSkills = false;
|
||||||
|
return true;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
if (!permissionsCheckOthers(sender)) {
|
||||||
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validateArguments(sender, args[1], args[2])) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
mcMMOPlayer = UserManager.getPlayer(args[0]);
|
||||||
|
|
||||||
|
// If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process.
|
||||||
|
if (mcMMOPlayer == null) {
|
||||||
|
profile = new PlayerProfile(args[0], false);
|
||||||
|
|
||||||
|
if (CommandUtils.unloadedProfile(sender, profile)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
editValues();
|
||||||
|
profile.save(); // Since this is a temporary profile, we save it here.
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
profile = mcMMOPlayer.getProfile();
|
||||||
|
player = mcMMOPlayer.getPlayer();
|
||||||
|
editValues();
|
||||||
|
}
|
||||||
|
|
||||||
|
handleSenderMessage(sender, args[0]);
|
||||||
|
allSkills = false;
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
Set<String> playerNames = UserManager.getPlayers().keySet();
|
||||||
|
return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
|
||||||
|
case 2:
|
||||||
|
return StringUtil.copyPartialMatches(args[1], SkillType.SKILL_NAMES, new ArrayList<String>(SkillType.SKILL_NAMES.size()));
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract boolean permissionsCheckSelf(CommandSender sender);
|
||||||
|
protected abstract boolean permissionsCheckOthers(CommandSender sender);
|
||||||
|
protected abstract void handleCommand(SkillType skill);
|
||||||
|
protected abstract void handlePlayerMessageAll();
|
||||||
|
protected abstract void handlePlayerMessageSkill();
|
||||||
|
|
||||||
|
private boolean validateArguments(CommandSender sender, String skillName, String value) {
|
||||||
|
if (isInvalidInteger(sender, value) || isInvalidSkill(sender, skillName)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isInvalidInteger(CommandSender sender, String value) {
|
||||||
|
if (CommandUtils.isInvalidInteger(sender, value)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.value = Integer.parseInt(value);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean isInvalidSkill(CommandSender sender, String skillName) {
|
||||||
|
if (skillName.equalsIgnoreCase("all")) {
|
||||||
|
allSkills = true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (CommandUtils.isInvalidSkill(sender, skillName)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
skill = SkillType.getSkill(skillName);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void handleSenderMessage(CommandSender sender, String playerName) {
|
||||||
|
if (allSkills) {
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardAll.2", playerName));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardSkill.2", SkillUtils.getSkillName(skill), playerName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void editValues() {
|
||||||
|
if (allSkills) {
|
||||||
|
for (SkillType skillType : SkillType.values()) {
|
||||||
|
handleCommand(skillType);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (player != null) {
|
||||||
|
handlePlayerMessageAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
handleCommand(skill);
|
||||||
|
|
||||||
|
if (player != null) {
|
||||||
|
handlePlayerMessageSkill();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,150 +1,35 @@
|
|||||||
package com.gmail.nossr50.commands.experience;
|
package com.gmail.nossr50.commands.experience;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
|
||||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||||
|
|
||||||
public class MmoeditCommand implements CommandExecutor {
|
public class MmoeditCommand extends ExperienceCommand {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
protected boolean permissionsCheckSelf(CommandSender sender) {
|
||||||
PlayerProfile profile;
|
return Permissions.mmoedit(sender);
|
||||||
int newValue;
|
}
|
||||||
boolean allSkills = false;
|
|
||||||
SkillType skill = null;
|
|
||||||
|
|
||||||
switch (args.length) {
|
@Override
|
||||||
case 2:
|
protected boolean permissionsCheckOthers(CommandSender sender) {
|
||||||
if (!Permissions.mmoedit(sender)) {
|
return Permissions.mmoeditOthers(sender);
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(sender instanceof Player)) {
|
@Override
|
||||||
return false;
|
protected void handleCommand(SkillType skill) {
|
||||||
}
|
profile.modifySkill(skill, value);
|
||||||
|
}
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("all")) {
|
@Override
|
||||||
allSkills = true;
|
protected void handlePlayerMessageAll() {
|
||||||
}
|
player.sendMessage(LocaleLoader.getString("Commands.mmoedit.AllSkills.1", value));
|
||||||
else if (!SkillUtils.isSkill(args[0])) {
|
}
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!StringUtils.isInt(args[1])) {
|
@Override
|
||||||
return false;
|
protected void handlePlayerMessageSkill() {
|
||||||
}
|
player.sendMessage(LocaleLoader.getString("Commands.mmoedit.Modified.1", SkillUtils.getSkillName(skill), value));
|
||||||
|
|
||||||
newValue = Integer.parseInt(args[1]);
|
|
||||||
profile = UserManager.getPlayer((Player) sender).getProfile();
|
|
||||||
|
|
||||||
if (allSkills) {
|
|
||||||
for (SkillType skillType : SkillType.values()) {
|
|
||||||
if (skillType.isChildSkill()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.modifySkill(skillType, newValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mmoedit.AllSkills.1", newValue));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
skill = SkillType.getSkill(args[0]);
|
|
||||||
profile.modifySkill(skill, newValue);
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mmoedit.Modified.1", SkillUtils.getSkillName(skill), newValue));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
if (!Permissions.mmoeditOthers(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args[1].equalsIgnoreCase("all")) {
|
|
||||||
allSkills = true;
|
|
||||||
}
|
|
||||||
else if (!SkillUtils.isSkill(args[1])) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!StringUtils.isInt(args[2])) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
newValue = Integer.parseInt(args[2]);
|
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(args[0]);
|
|
||||||
|
|
||||||
// If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process.
|
|
||||||
if (mcMMOPlayer == null) {
|
|
||||||
profile = new PlayerProfile(args[0], false);
|
|
||||||
|
|
||||||
if (!profile.isLoaded()) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (allSkills) {
|
|
||||||
for (SkillType skillType : SkillType.values()) {
|
|
||||||
if (skillType.isChildSkill()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.modifySkill(skillType, newValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
skill = SkillType.getSkill(args[1]);
|
|
||||||
profile.modifySkill(skill, newValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.save(); // Since this is a temporary profile, we save it here.
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
profile = mcMMOPlayer.getProfile();
|
|
||||||
|
|
||||||
if (allSkills) {
|
|
||||||
for (SkillType skillType : SkillType.values()) {
|
|
||||||
if (skillType.isChildSkill()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.modifySkill(skillType, newValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.mmoedit.AllSkills.1", newValue));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
skill = SkillType.getSkill(args[1]);
|
|
||||||
profile.modifySkill(skill, newValue);
|
|
||||||
mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.mmoedit.Modified.1", SkillUtils.getSkillName(skill), newValue));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (allSkills) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardAll.2", args[0]));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mmoedit.Modified.2", SkillUtils.getSkillName(skill), args[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,76 +1,47 @@
|
|||||||
package com.gmail.nossr50.commands.experience;
|
package com.gmail.nossr50.commands.experience;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||||
|
|
||||||
public class SkillresetCommand implements CommandExecutor {
|
public class SkillresetCommand extends ExperienceCommand {
|
||||||
|
private CommandSender sender;
|
||||||
|
private Command command;
|
||||||
|
private int argsLength;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
PlayerProfile profile;
|
this.command = command;
|
||||||
boolean allSkills = false;
|
this.sender = sender;
|
||||||
SkillType skill = null;
|
argsLength = args.length;
|
||||||
String skillName = "";
|
|
||||||
|
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 1:
|
case 1:
|
||||||
|
if (CommandUtils.noConsoleUsage(sender)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (!Permissions.skillreset(sender)) {
|
if (!Permissions.skillreset(sender)) {
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(sender instanceof Player)) {
|
if (isInvalidSkill(sender, args[0])) {
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("all")) {
|
|
||||||
allSkills = true;
|
|
||||||
}
|
|
||||||
else if (!SkillUtils.isSkill(args[0])) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = UserManager.getPlayer((Player) sender).getProfile();
|
mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
|
player = mcMMOPlayer.getPlayer();
|
||||||
if (allSkills) {
|
profile = mcMMOPlayer.getProfile();
|
||||||
for (SkillType skillType : SkillType.values()) {
|
|
||||||
if (skillType.isChildSkill()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Permissions.skillreset(sender, skillType)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.modifySkill(skillType, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Reset.All"));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
skill = SkillType.getSkill(args[0]);
|
|
||||||
skillName = SkillUtils.getSkillName(skill);
|
|
||||||
|
|
||||||
if (!Permissions.skillreset(sender, skill)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.modifySkill(skill, 0);
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Reset.Single", skillName));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
editValues();
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
@@ -79,91 +50,67 @@ public class SkillresetCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args[1].equalsIgnoreCase("all")) {
|
if (isInvalidSkill(sender, args[1])) {
|
||||||
allSkills = true;
|
|
||||||
}
|
|
||||||
else if (!SkillUtils.isSkill(args[1])) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!allSkills) {
|
mcMMOPlayer = UserManager.getPlayer(args[0]);
|
||||||
skill = SkillType.getSkill(args[1]);
|
|
||||||
skillName = SkillUtils.getSkillName(skill);
|
|
||||||
|
|
||||||
if (!Permissions.skillresetOthers(sender, skill)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(args[0]);
|
|
||||||
|
|
||||||
// If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process.
|
// If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process.
|
||||||
if (mcMMOPlayer == null) {
|
if (mcMMOPlayer == null) {
|
||||||
profile = new PlayerProfile(args[0], false);
|
profile = new PlayerProfile(args[0], false);
|
||||||
|
|
||||||
if (!profile.isLoaded()) {
|
if (CommandUtils.unloadedProfile(sender, profile)) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (allSkills) {
|
editValues();
|
||||||
for (SkillType skillType : SkillType.values()) {
|
|
||||||
if (skillType.isChildSkill()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Permissions.skillresetOthers(sender, skill)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.modifySkill(skillType, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
profile.modifySkill(skill, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.save(); // Since this is a temporary profile, we save it here.
|
profile.save(); // Since this is a temporary profile, we save it here.
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
profile = mcMMOPlayer.getProfile();
|
profile = mcMMOPlayer.getProfile();
|
||||||
|
player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
if (allSkills) {
|
editValues();
|
||||||
for (SkillType skillType : SkillType.values()) {
|
|
||||||
if (skillType.isChildSkill()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Permissions.skillresetOthers(sender, skillType)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
profile.modifySkill(skillType, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.Reset.All"));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
profile.modifySkill(skill, 0);
|
|
||||||
mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Commands.Reset.Single", skillName));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (allSkills) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardAll.2", args[0]));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mmoedit.Modified.2", skillName, args[0]));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleSenderMessage(sender, args[0]);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean permissionsCheckSelf(CommandSender sender) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean permissionsCheckOthers(CommandSender sender) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void handleCommand(SkillType skill) {
|
||||||
|
if (argsLength == 1 && !Permissions.skillreset(sender, skill) || (argsLength == 2 && !Permissions.skillresetOthers(sender, skill))) {
|
||||||
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
profile.modifySkill(skill, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void handlePlayerMessageAll() {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.Reset.All"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void handlePlayerMessageSkill() {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.Reset.Single", SkillUtils.getSkillName(skill)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,85 +1,41 @@
|
|||||||
package com.gmail.nossr50.commands.hardcore;
|
package com.gmail.nossr50.commands.hardcore;
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
|
||||||
|
|
||||||
public class HardcoreCommand implements CommandExecutor {
|
public class HardcoreCommand extends HardcoreModeCommand {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
protected void disable() {
|
||||||
switch (args.length) {
|
|
||||||
case 0:
|
|
||||||
if (!Permissions.hardcoreToggle(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Config.getInstance().getHardcoreEnabled()) {
|
|
||||||
disableHardcore();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
enableHardcore();
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
if (args[0].equalsIgnoreCase("on") || args[0].equalsIgnoreCase("true") || args[0].equalsIgnoreCase("enabled")) {
|
|
||||||
if (!Permissions.hardcoreToggle(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
enableHardcore();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("off") || args[0].equalsIgnoreCase("false") || args[0].equalsIgnoreCase("disabled")) {
|
|
||||||
if (!Permissions.hardcoreToggle(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
disableHardcore();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!StringUtils.isDouble(args[0])) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Permissions.hardcoreModify(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
DecimalFormat percent = new DecimalFormat("##0.00%");
|
|
||||||
double newPercent = Double.parseDouble(args[0]);
|
|
||||||
|
|
||||||
Config.getInstance().setHardcoreDeathStatPenaltyPercentage(newPercent);
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Hardcore.PercentageChanged", percent.format(newPercent / 100D)));
|
|
||||||
return true;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void disableHardcore() {
|
|
||||||
Config.getInstance().setHardcoreEnabled(false);
|
Config.getInstance().setHardcoreEnabled(false);
|
||||||
mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Hardcore.Disabled"));
|
mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Hardcore.Disabled"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void enableHardcore() {
|
@Override
|
||||||
|
protected void enable() {
|
||||||
Config.getInstance().setHardcoreEnabled(true);
|
Config.getInstance().setHardcoreEnabled(true);
|
||||||
mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Hardcore.Enabled"));
|
mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Hardcore.Enabled"));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@Override
|
||||||
|
protected boolean checkTogglePermissions() {
|
||||||
|
return Permissions.hardcoreToggle(sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean checkModifyPermissions() {
|
||||||
|
return Permissions.hardcoreModify(sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean checkEnabled() {
|
||||||
|
return Config.getInstance().getHardcoreEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void modify() {
|
||||||
|
Config.getInstance().setHardcoreDeathStatPenaltyPercentage(newPercent);
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Hardcore.PercentageChanged", percent.format(newPercent / 100D)));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
package com.gmail.nossr50.commands.hardcore;
|
||||||
|
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.util.StringUtil;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
public abstract class HardcoreModeCommand implements TabExecutor {
|
||||||
|
protected CommandSender sender;
|
||||||
|
protected double newPercent;
|
||||||
|
protected DecimalFormat percent;
|
||||||
|
|
||||||
|
public HardcoreModeCommand() {
|
||||||
|
percent = new DecimalFormat("##0.00%");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 0:
|
||||||
|
this.sender = sender;
|
||||||
|
|
||||||
|
if (!checkTogglePermissions()) {
|
||||||
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (checkEnabled()) {
|
||||||
|
disable();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
if (CommandUtils.shouldEnableToggle(args[0])) {
|
||||||
|
if (!Permissions.hardcoreToggle(sender)) {
|
||||||
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
enable();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CommandUtils.shouldDisableToggle(args[0])) {
|
||||||
|
if (!Permissions.hardcoreToggle(sender)) {
|
||||||
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
disable();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isInvalidPercentage(sender, args[0])) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Permissions.hardcoreModify(sender)) {
|
||||||
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
modify();
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
if (StringUtils.isDouble(args[0])) {
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
return StringUtil.copyPartialMatches(args[0], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<String>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract boolean checkTogglePermissions();
|
||||||
|
protected abstract boolean checkModifyPermissions();
|
||||||
|
protected abstract boolean checkEnabled();
|
||||||
|
protected abstract void enable();
|
||||||
|
protected abstract void disable();
|
||||||
|
protected abstract void modify();
|
||||||
|
|
||||||
|
private boolean isInvalidPercentage(CommandSender sender, String value) {
|
||||||
|
if (CommandUtils.isInvalidDouble(sender, value)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
newPercent = Double.parseDouble(value);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,90 +1,41 @@
|
|||||||
package com.gmail.nossr50.commands.hardcore;
|
package com.gmail.nossr50.commands.hardcore;
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
|
||||||
|
|
||||||
public class VampirismCommand implements CommandExecutor {
|
public class VampirismCommand extends HardcoreModeCommand {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
protected boolean checkTogglePermissions() {
|
||||||
if (!Config.getInstance().getHardcoreEnabled()) {
|
return Permissions.vampirismToggle(sender);
|
||||||
sender.sendMessage(LocaleLoader.getString("Hardcore.Disabled"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (args.length) {
|
|
||||||
case 0:
|
|
||||||
if (!Permissions.vampirismToggle(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Config.getInstance().getHardcoreVampirismEnabled()) {
|
|
||||||
disableVampirism();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
enableVampirism();
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
if (args[0].equalsIgnoreCase("on") || args[0].equalsIgnoreCase("true") || args[0].equalsIgnoreCase("enabled")) {
|
|
||||||
if (!Permissions.vampirismToggle(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
enableVampirism();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("off") || args[0].equalsIgnoreCase("false") || args[0].equalsIgnoreCase("disabled")) {
|
|
||||||
if (!Permissions.vampirismToggle(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
disableVampirism();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!StringUtils.isDouble(args[0])) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Permissions.vampirismModify(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
DecimalFormat percent = new DecimalFormat("##0.00%");
|
|
||||||
double newPercent = Double.parseDouble(args[0]);
|
|
||||||
|
|
||||||
Config.getInstance().setHardcoreVampirismStatLeechPercentage(newPercent);
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Vampirism.PercentageChanged", percent.format(newPercent / 100D)));
|
|
||||||
return true;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void disableVampirism() {
|
@Override
|
||||||
|
protected boolean checkModifyPermissions() {
|
||||||
|
return Permissions.vampirismModify(sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean checkEnabled() {
|
||||||
|
return Config.getInstance().getHardcoreVampirismEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void enable() {
|
||||||
|
Config.getInstance().setHardcoreVampirismEnabled(true);
|
||||||
|
mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Vampirism.Enabled"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void disable() {
|
||||||
Config.getInstance().setHardcoreVampirismEnabled(false);
|
Config.getInstance().setHardcoreVampirismEnabled(false);
|
||||||
mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Vampirism.Disabled"));
|
mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Vampirism.Disabled"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void enableVampirism() {
|
@Override
|
||||||
Config.getInstance().setHardcoreVampirismEnabled(true);
|
protected void modify() {
|
||||||
mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Vampirism.Enabled"));
|
Config.getInstance().setHardcoreVampirismStatLeechPercentage(newPercent);
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Vampirism.PercentageChanged", percent.format(newPercent / 100D)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,15 +11,12 @@ import com.gmail.nossr50.party.PartyManager;
|
|||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class PartyAcceptCommand implements CommandExecutor {
|
public class PartyAcceptCommand implements CommandExecutor {
|
||||||
private McMMOPlayer mcMMOPlayer;
|
|
||||||
private Player player;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 1:
|
case 1:
|
||||||
player = (Player) sender;
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
mcMMOPlayer = UserManager.getPlayer(player);
|
Player player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
if (!mcMMOPlayer.hasPartyInvite()) {
|
if (!mcMMOPlayer.hasPartyInvite()) {
|
||||||
sender.sendMessage(LocaleLoader.getString("mcMMO.NoInvites"));
|
sender.sendMessage(LocaleLoader.getString("mcMMO.NoInvites"));
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.gmail.nossr50.commands.party;
|
|||||||
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.entity.Player;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.datatypes.party.Party;
|
import com.gmail.nossr50.datatypes.party.Party;
|
||||||
@@ -16,7 +15,7 @@ public class PartyChangeOwnerCommand implements CommandExecutor {
|
|||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 2:
|
case 2:
|
||||||
Party playerParty = UserManager.getPlayer((Player) sender).getParty();
|
Party playerParty = UserManager.getPlayer(sender.getName()).getParty();
|
||||||
|
|
||||||
if (!playerParty.getMembers().contains(mcMMO.p.getServer().getOfflinePlayer(args[1]))) {
|
if (!playerParty.getMembers().contains(mcMMO.p.getServer().getOfflinePlayer(args[1]))) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Party.NotInYourParty", args[1]));
|
sender.sendMessage(LocaleLoader.getString("Party.NotInYourParty", args[1]));
|
||||||
|
|||||||
@@ -3,29 +3,30 @@ package com.gmail.nossr50.commands.party;
|
|||||||
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.entity.Player;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.party.Party;
|
import com.gmail.nossr50.datatypes.party.Party;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class PartyChangePasswordCommand implements CommandExecutor {
|
public class PartyChangePasswordCommand implements CommandExecutor {
|
||||||
|
private Party playerParty;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
Party playerParty = UserManager.getPlayer((Player) sender).getParty();
|
playerParty = UserManager.getPlayer(sender.getName()).getParty();
|
||||||
|
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 1:
|
case 1:
|
||||||
unprotectParty(sender, playerParty);
|
unprotectParty(sender);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
if (args[1].equalsIgnoreCase("clear") || args[1].equalsIgnoreCase("reset")) {
|
if (args[1].equalsIgnoreCase("clear") || args[1].equalsIgnoreCase("reset")) {
|
||||||
unprotectParty(sender, playerParty);
|
unprotectParty(sender);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protectParty(sender, playerParty, args[1]);
|
protectParty(sender, args[1]);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -35,13 +36,13 @@ public class PartyChangePasswordCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void unprotectParty(CommandSender sender, Party playerParty) {
|
private void unprotectParty(CommandSender sender) {
|
||||||
playerParty.setLocked(true);
|
playerParty.setLocked(true);
|
||||||
playerParty.setPassword(null);
|
playerParty.setPassword(null);
|
||||||
sender.sendMessage(LocaleLoader.getString("Party.Password.Removed"));
|
sender.sendMessage(LocaleLoader.getString("Party.Password.Removed"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void protectParty(CommandSender sender, Party playerParty, String password) {
|
private void protectParty(CommandSender sender, String password) {
|
||||||
playerParty.setLocked(true);
|
playerParty.setLocked(true);
|
||||||
playerParty.setPassword(password);
|
playerParty.setPassword(password);
|
||||||
sender.sendMessage(LocaleLoader.getString("Party.Password.Set", password));
|
sender.sendMessage(LocaleLoader.getString("Party.Password.Set", password));
|
||||||
|
|||||||
@@ -1,21 +1,46 @@
|
|||||||
package com.gmail.nossr50.commands.party;
|
package com.gmail.nossr50.commands.party;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
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.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.util.StringUtil;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.commands.chat.PartyChatCommand;
|
import com.gmail.nossr50.commands.chat.PartyChatCommand;
|
||||||
|
import com.gmail.nossr50.commands.party.teleport.PtpCommand;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
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;
|
||||||
|
|
||||||
public class PartyCommand implements CommandExecutor {
|
public class PartyCommand implements TabExecutor {
|
||||||
private McMMOPlayer mcMMOPlayer;
|
private McMMOPlayer mcMMOPlayer;
|
||||||
private Player player;
|
private Player player;
|
||||||
|
|
||||||
|
private static final List<String> PARTY_SUBCOMMANDS;
|
||||||
|
private static final List<String> EXPSHARE_COMPLETIONS = ImmutableList.of("none", "equal");
|
||||||
|
private static final List<String> ITEMSHARE_COMPLETIONS = ImmutableList.of("none", "equal", "random", "loot", "mining", "herbalism", "woodcutting");
|
||||||
|
|
||||||
|
static {
|
||||||
|
ArrayList<String> subcommands = new ArrayList<String>();
|
||||||
|
|
||||||
|
for (PartySubcommandType subcommand : PartySubcommandType.values()) {
|
||||||
|
subcommands.add(subcommand.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.sort(subcommands);
|
||||||
|
PARTY_SUBCOMMANDS = ImmutableList.copyOf(subcommands);
|
||||||
|
}
|
||||||
|
|
||||||
private CommandExecutor partyJoinCommand = new PartyJoinCommand();
|
private CommandExecutor partyJoinCommand = new PartyJoinCommand();
|
||||||
private CommandExecutor partyAcceptCommand = new PartyAcceptCommand();
|
private CommandExecutor partyAcceptCommand = new PartyAcceptCommand();
|
||||||
private CommandExecutor partyCreateCommand = new PartyCreateCommand();
|
private CommandExecutor partyCreateCommand = new PartyCreateCommand();
|
||||||
@@ -31,7 +56,7 @@ public class PartyCommand implements CommandExecutor {
|
|||||||
private CommandExecutor partyRenameCommand = new PartyRenameCommand();
|
private CommandExecutor partyRenameCommand = new PartyRenameCommand();
|
||||||
private CommandExecutor partyInfoCommand = new PartyInfoCommand();
|
private CommandExecutor partyInfoCommand = new PartyInfoCommand();
|
||||||
private CommandExecutor partyHelpCommand = new PartyHelpCommand();
|
private CommandExecutor partyHelpCommand = new PartyHelpCommand();
|
||||||
private CommandExecutor partyTeleportCommand = new PtpCommand();
|
private CommandExecutor partyTeleportCommand = mcMMO.p.getCommand("ptp").getExecutor();
|
||||||
private CommandExecutor partyChatCommand = new PartyChatCommand();
|
private CommandExecutor partyChatCommand = new PartyChatCommand();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -45,8 +70,8 @@ public class PartyCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
player = (Player) sender;
|
mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
mcMMOPlayer = UserManager.getPlayer(player);
|
player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
if (args.length < 1) {
|
if (args.length < 1) {
|
||||||
if (!mcMMOPlayer.inParty()) {
|
if (!mcMMOPlayer.inParty()) {
|
||||||
@@ -121,7 +146,6 @@ public class PartyCommand implements CommandExecutor {
|
|||||||
case OWNER:
|
case OWNER:
|
||||||
return partyChangeOwnerCommand.onCommand(sender, command, label, args);
|
return partyChangeOwnerCommand.onCommand(sender, command, label, args);
|
||||||
case LOCK:
|
case LOCK:
|
||||||
// Fallthrough
|
|
||||||
case UNLOCK:
|
case UNLOCK:
|
||||||
return partyLockCommand.onCommand(sender, command, label, args);
|
return partyLockCommand.onCommand(sender, command, label, args);
|
||||||
case PASSWORD:
|
case PASSWORD:
|
||||||
@@ -135,6 +159,57 @@ public class PartyCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
return StringUtil.copyPartialMatches(args[0], PARTY_SUBCOMMANDS, new ArrayList<String>(PARTY_SUBCOMMANDS.size()));
|
||||||
|
case 2:
|
||||||
|
PartySubcommandType subcommand = PartySubcommandType.getSubcommand(args[0]);
|
||||||
|
|
||||||
|
if (subcommand == null) {
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (PartySubcommandType.valueOf(args[0].toUpperCase())) {
|
||||||
|
case JOIN:
|
||||||
|
case INVITE:
|
||||||
|
case KICK:
|
||||||
|
case OWNER:
|
||||||
|
Set<String> playerNames = UserManager.getPlayers().keySet();
|
||||||
|
return StringUtil.copyPartialMatches(args[1], playerNames, new ArrayList<String>(playerNames.size()));
|
||||||
|
case EXPSHARE:
|
||||||
|
return StringUtil.copyPartialMatches(args[1], EXPSHARE_COMPLETIONS, new ArrayList<String>(EXPSHARE_COMPLETIONS.size()));
|
||||||
|
case ITEMSHARE:
|
||||||
|
return StringUtil.copyPartialMatches(args[1], ITEMSHARE_COMPLETIONS, new ArrayList<String>(ITEMSHARE_COMPLETIONS.size()));
|
||||||
|
case LOCK:
|
||||||
|
case CHAT:
|
||||||
|
return StringUtil.copyPartialMatches(args[1], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<String>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
|
||||||
|
case PASSWORD:
|
||||||
|
return StringUtil.copyPartialMatches(args[1], CommandUtils.RESET_OPTIONS, new ArrayList<String>(CommandUtils.RESET_OPTIONS.size()));
|
||||||
|
case TELEPORT:
|
||||||
|
List<String> matches = StringUtil.copyPartialMatches(args[1], PtpCommand.TELEPORT_SUBCOMMANDS, new ArrayList<String>(PtpCommand.TELEPORT_SUBCOMMANDS.size()));
|
||||||
|
|
||||||
|
if (matches.size() == 0) {
|
||||||
|
playerNames = UserManager.getPlayers().keySet();
|
||||||
|
return StringUtil.copyPartialMatches(args[1], playerNames, new ArrayList<String>(playerNames.size()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return matches;
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
if (PartySubcommandType.getSubcommand(args[0]) == PartySubcommandType.ITEMSHARE && isItemShareCategory(args[1])) {
|
||||||
|
return StringUtil.copyPartialMatches(args[2], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<String>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return ImmutableList.of();
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private boolean printUsage() {
|
private boolean printUsage() {
|
||||||
player.sendMessage(LocaleLoader.getString("Party.Help.0", "/party join"));
|
player.sendMessage(LocaleLoader.getString("Party.Help.0", "/party join"));
|
||||||
player.sendMessage(LocaleLoader.getString("Party.Help.1", "/party create"));
|
player.sendMessage(LocaleLoader.getString("Party.Help.1", "/party create"));
|
||||||
@@ -151,4 +226,9 @@ public class PartyCommand implements CommandExecutor {
|
|||||||
|
|
||||||
return newArgs;
|
return newArgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isItemShareCategory(String category) {
|
||||||
|
return category.equalsIgnoreCase("loot") || category.equalsIgnoreCase("mining") || category.equalsIgnoreCase("herbalism") || category.equalsIgnoreCase("woodcutting");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,26 +12,21 @@ import com.gmail.nossr50.party.PartyManager;
|
|||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class PartyCreateCommand implements CommandExecutor {
|
public class PartyCreateCommand implements CommandExecutor {
|
||||||
private McMMOPlayer mcMMOPlayer;
|
|
||||||
private Player player;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 2:
|
case 2:
|
||||||
// Fallthrough
|
|
||||||
case 3:
|
case 3:
|
||||||
Party newParty = PartyManager.getParty(args[1]);
|
Party newParty = PartyManager.getParty(args[1]);
|
||||||
|
|
||||||
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
|
Player player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
// Check to see if the party exists, and if it does cancel creating a new party
|
// Check to see if the party exists, and if it does cancel creating a new party
|
||||||
if (newParty != null) {
|
if (PartyManager.checkPartyExistence(player, newParty, args[1])) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Party.AlreadyExists", args[1]));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
player = (Player) sender;
|
|
||||||
mcMMOPlayer = UserManager.getPlayer(player);
|
|
||||||
|
|
||||||
// Changing parties
|
// Changing parties
|
||||||
if (!PartyManager.changeOrJoinParty(mcMMOPlayer, player, mcMMOPlayer.getParty(), args[1])) {
|
if (!PartyManager.changeOrJoinParty(mcMMOPlayer, player, mcMMOPlayer.getParty(), args[1])) {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -16,10 +16,11 @@ public class PartyDisbandCommand implements CommandExecutor {
|
|||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 1:
|
case 1:
|
||||||
Party playerParty = UserManager.getPlayer((Player) sender).getParty();
|
Party playerParty = UserManager.getPlayer(sender.getName()).getParty();
|
||||||
|
String partyName = playerParty.getName();
|
||||||
|
|
||||||
for (Player member : playerParty.getOnlineMembers()) {
|
for (Player member : playerParty.getOnlineMembers()) {
|
||||||
if (!PartyManager.handlePartyChangeEvent(member, playerParty.getName(), null, EventReason.KICKED_FROM_PARTY)) {
|
if (!PartyManager.handlePartyChangeEvent(member, partyName, null, EventReason.KICKED_FROM_PARTY)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import com.gmail.nossr50.locale.LocaleLoader;
|
|||||||
import com.gmail.nossr50.party.ShareHandler;
|
import com.gmail.nossr50.party.ShareHandler;
|
||||||
import com.gmail.nossr50.party.ShareHandler.ShareMode;
|
import com.gmail.nossr50.party.ShareHandler.ShareMode;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class PartyExpShareCommand implements CommandExecutor {
|
public class PartyExpShareCommand implements CommandExecutor {
|
||||||
@@ -25,16 +26,16 @@ public class PartyExpShareCommand implements CommandExecutor {
|
|||||||
|
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 2:
|
case 2:
|
||||||
playerParty = UserManager.getPlayer((Player) sender).getParty();
|
playerParty = UserManager.getPlayer(sender.getName()).getParty();
|
||||||
|
|
||||||
if (args[1].equalsIgnoreCase("none") || args[1].equalsIgnoreCase("off") || args[1].equalsIgnoreCase("false")) {
|
if (args[1].equalsIgnoreCase("none") || CommandUtils.shouldDisableToggle(args[1])) {
|
||||||
handleChangingShareMode(ShareMode.NONE);
|
handleChangingShareMode(ShareMode.NONE);
|
||||||
}
|
}
|
||||||
else if (args[1].equalsIgnoreCase("equal") || args[1].equalsIgnoreCase("even") || args[1].equalsIgnoreCase("on") || args[1].equalsIgnoreCase("true")) {
|
else if (args[1].equalsIgnoreCase("equal") || args[1].equalsIgnoreCase("even") || CommandUtils.shouldEnableToggle(args[1])) {
|
||||||
handleChangingShareMode(ShareMode.EQUAL);
|
handleChangingShareMode(ShareMode.EQUAL);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "expshare", "[NONE | EQUAL]"));
|
sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "expshare", "<NONE | EQUAL>"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -48,8 +49,10 @@ public class PartyExpShareCommand implements CommandExecutor {
|
|||||||
private void handleChangingShareMode(ShareHandler.ShareMode mode) {
|
private void handleChangingShareMode(ShareHandler.ShareMode mode) {
|
||||||
playerParty.setXpShareMode(mode);
|
playerParty.setXpShareMode(mode);
|
||||||
|
|
||||||
|
String changeModeMessage = LocaleLoader.getString("Commands.Party.SetSharing", LocaleLoader.getString("Party.ShareType.Exp"), LocaleLoader.getString("Party.ShareMode." + StringUtils.getCapitalized(mode.toString())));
|
||||||
|
|
||||||
for (Player member : playerParty.getOnlineMembers()) {
|
for (Player member : playerParty.getOnlineMembers()) {
|
||||||
member.sendMessage(LocaleLoader.getString("Commands.Party.SetSharing", LocaleLoader.getString("Party.ShareType.Exp"), LocaleLoader.getString("Party.ShareMode." + StringUtils.getCapitalized(mode.toString()))));
|
member.sendMessage(changeModeMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,5 +26,4 @@ public class PartyHelpCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,29 +21,40 @@ public class PartyInfoCommand implements CommandExecutor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
player = (Player) sender;
|
switch (args.length) {
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
case 0:
|
||||||
playerParty = mcMMOPlayer.getParty();
|
case 1:
|
||||||
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
|
player = mcMMOPlayer.getPlayer();
|
||||||
|
playerParty = mcMMOPlayer.getParty();
|
||||||
|
|
||||||
displayPartyHeader();
|
displayPartyHeader();
|
||||||
displayShareModeInfo();
|
displayShareModeInfo();
|
||||||
displayMemberInfo();
|
displayMemberInfo();
|
||||||
return true;
|
return true;
|
||||||
|
default:
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.Usage.1", "party", "info"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String createMembersList() {
|
private String createMembersList() {
|
||||||
StringBuilder memberList = new StringBuilder();
|
StringBuilder memberList = new StringBuilder();
|
||||||
|
|
||||||
for (OfflinePlayer member : playerParty.getMembers()) {
|
for (OfflinePlayer member : playerParty.getMembers()) {
|
||||||
if (playerParty.getLeader().equalsIgnoreCase(member.getName())) {
|
String memberName = member.getName();
|
||||||
memberList.append(ChatColor.GOLD).append(member.getName()).append(" ");
|
|
||||||
|
if (playerParty.getLeader().equalsIgnoreCase(memberName)) {
|
||||||
|
memberList.append(ChatColor.GOLD);
|
||||||
}
|
}
|
||||||
else if (member.isOnline()) {
|
else if (member.isOnline()) {
|
||||||
memberList.append(ChatColor.WHITE).append(member.getName()).append(" ");
|
memberList.append(ChatColor.WHITE);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
memberList.append(ChatColor.GRAY).append(member.getName()).append(" ");
|
memberList.append(ChatColor.GRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memberList.append(memberName).append(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
return memberList.toString();
|
return memberList.toString();
|
||||||
@@ -52,7 +63,7 @@ public class PartyInfoCommand implements CommandExecutor {
|
|||||||
private void displayShareModeInfo() {
|
private void displayShareModeInfo() {
|
||||||
boolean xpShareEnabled = Config.getInstance().getExpShareEnabled();
|
boolean xpShareEnabled = Config.getInstance().getExpShareEnabled();
|
||||||
boolean itemShareEnabled = Config.getInstance().getItemShareEnabled();
|
boolean itemShareEnabled = Config.getInstance().getItemShareEnabled();
|
||||||
boolean itemSharingActive = playerParty.getItemShareMode() != ShareHandler.ShareMode.NONE;
|
boolean itemSharingActive = (playerParty.getItemShareMode() != ShareHandler.ShareMode.NONE);
|
||||||
|
|
||||||
if (!xpShareEnabled && !itemShareEnabled) {
|
if (!xpShareEnabled && !itemShareEnabled) {
|
||||||
return;
|
return;
|
||||||
@@ -97,6 +108,6 @@ public class PartyInfoCommand implements CommandExecutor {
|
|||||||
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.Party.Members.Header"));
|
player.sendMessage(LocaleLoader.getString("Commands.Party.Members.Header"));
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.Party.MembersNear", membersNear, membersOnline));
|
player.sendMessage(LocaleLoader.getString("Commands.Party.MembersNear", membersNear, membersOnline));
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.Party.Members", createMembersList()));
|
player.sendMessage(createMembersList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,40 +5,27 @@ import org.bukkit.command.CommandExecutor;
|
|||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
|
||||||
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.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class PartyInviteCommand implements CommandExecutor {
|
public class PartyInviteCommand implements CommandExecutor {
|
||||||
private McMMOPlayer mcMMOTarget;
|
|
||||||
private Player target;
|
|
||||||
|
|
||||||
private McMMOPlayer mcMMOPlayer;
|
|
||||||
private Player player;
|
|
||||||
private Party playerParty;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 2:
|
case 2:
|
||||||
if (!mcMMO.p.getServer().getOfflinePlayer(args[1]).isOnline()) {
|
McMMOPlayer mcMMOTarget = UserManager.getPlayer(args[1]);
|
||||||
sender.sendMessage(LocaleLoader.getString("Party.NotOnline", args[1]));
|
|
||||||
return true;
|
if (!CommandUtils.checkPlayerExistence(sender, args[1], mcMMOTarget)) {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
mcMMOTarget = UserManager.getPlayer(args[1]);
|
Player target = mcMMOTarget.getPlayer();
|
||||||
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
if (mcMMOTarget == null) {
|
Player player = mcMMOPlayer.getPlayer();
|
||||||
sender.sendMessage(LocaleLoader.getString("Party.Player.Invalid"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
target = mcMMOTarget.getPlayer();
|
|
||||||
mcMMOPlayer = UserManager.getPlayer((Player) sender);
|
|
||||||
player = mcMMOPlayer.getPlayer();
|
|
||||||
|
|
||||||
if (player.equals(target)) {
|
if (player.equals(target)) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Party.Invite.Self"));
|
sender.sendMessage(LocaleLoader.getString("Party.Invite.Self"));
|
||||||
@@ -50,7 +37,7 @@ public class PartyInviteCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
playerParty = mcMMOPlayer.getParty();
|
Party playerParty = mcMMOPlayer.getParty();
|
||||||
|
|
||||||
if (!PartyManager.canInvite(player, playerParty)) {
|
if (!PartyManager.canInvite(player, playerParty)) {
|
||||||
player.sendMessage(LocaleLoader.getString("Party.Locked"));
|
player.sendMessage(LocaleLoader.getString("Party.Locked"));
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import com.gmail.nossr50.locale.LocaleLoader;
|
|||||||
import com.gmail.nossr50.party.ShareHandler;
|
import com.gmail.nossr50.party.ShareHandler;
|
||||||
import com.gmail.nossr50.party.ShareHandler.ShareMode;
|
import com.gmail.nossr50.party.ShareHandler.ShareMode;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class PartyItemShareCommand implements CommandExecutor {
|
public class PartyItemShareCommand implements CommandExecutor {
|
||||||
@@ -25,9 +26,9 @@ public class PartyItemShareCommand implements CommandExecutor {
|
|||||||
|
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 2:
|
case 2:
|
||||||
playerParty = UserManager.getPlayer((Player) sender).getParty();
|
playerParty = UserManager.getPlayer(sender.getName()).getParty();
|
||||||
|
|
||||||
if (args[1].equalsIgnoreCase("none") || args[1].equalsIgnoreCase("off") || args[1].equalsIgnoreCase("false")) {
|
if (args[1].equalsIgnoreCase("none") || CommandUtils.shouldDisableToggle(args[1])) {
|
||||||
handleChangingShareMode(ShareMode.NONE);
|
handleChangingShareMode(ShareMode.NONE);
|
||||||
}
|
}
|
||||||
else if (args[1].equalsIgnoreCase("equal") || args[1].equalsIgnoreCase("even")) {
|
else if (args[1].equalsIgnoreCase("equal") || args[1].equalsIgnoreCase("even")) {
|
||||||
@@ -43,15 +44,19 @@ public class PartyItemShareCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
playerParty = UserManager.getPlayer((Player) sender).getParty();
|
playerParty = UserManager.getPlayer(sender.getName()).getParty();
|
||||||
boolean toggle = false;
|
boolean toggle = false;
|
||||||
|
|
||||||
if (args[2].equalsIgnoreCase("true") || args[2].equalsIgnoreCase("on") || args[2].equalsIgnoreCase("enabled")) {
|
if (CommandUtils.shouldEnableToggle(args[2])) {
|
||||||
toggle = true;
|
toggle = true;
|
||||||
}
|
}
|
||||||
else if (args[2].equalsIgnoreCase("false") || args[2].equalsIgnoreCase("off") || args[2].equalsIgnoreCase("disabled")) {
|
else if (CommandUtils.shouldDisableToggle(args[2])) {
|
||||||
toggle = false;
|
toggle = false;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "itemshare", "<loot | mining | herbalism | woodcutting> <true | false>"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (args[1].equalsIgnoreCase("loot")) {
|
if (args[1].equalsIgnoreCase("loot")) {
|
||||||
playerParty.setSharingLootDrops(toggle);
|
playerParty.setSharingLootDrops(toggle);
|
||||||
@@ -69,7 +74,7 @@ public class PartyItemShareCommand implements CommandExecutor {
|
|||||||
sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "itemshare", "<loot | mining | herbalism | woodcutting> <true | false>"));
|
sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "itemshare", "<loot | mining | herbalism | woodcutting> <true | false>"));
|
||||||
}
|
}
|
||||||
|
|
||||||
notifyToggleItemShareCategory(args, toggle);
|
notifyToggleItemShareCategory(args[1], toggle);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -82,20 +87,20 @@ public class PartyItemShareCommand implements CommandExecutor {
|
|||||||
private void handleChangingShareMode(ShareHandler.ShareMode mode) {
|
private void handleChangingShareMode(ShareHandler.ShareMode mode) {
|
||||||
playerParty.setItemShareMode(mode);
|
playerParty.setItemShareMode(mode);
|
||||||
|
|
||||||
|
String changeModeMessage = LocaleLoader.getString("Commands.Party.SetSharing", LocaleLoader.getString("Party.ShareType.Item"), LocaleLoader.getString("Party.ShareMode." + StringUtils.getCapitalized(mode.toString())));
|
||||||
|
|
||||||
for (Player member : playerParty.getOnlineMembers()) {
|
for (Player member : playerParty.getOnlineMembers()) {
|
||||||
member.sendMessage(LocaleLoader.getString("Commands.Party.SetSharing", LocaleLoader.getString("Party.ShareType.Item"), LocaleLoader.getString("Party.ShareMode." + StringUtils.getCapitalized(mode.toString()))));
|
member.sendMessage(changeModeMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void notifyToggleItemShareCategory(String[] args, boolean toggle) {
|
private void notifyToggleItemShareCategory(String category, boolean toggle) {
|
||||||
String state = "disabled";
|
String state = toggle ? "enabled" : "disabled";
|
||||||
|
|
||||||
if (toggle) {
|
String toggleMessage = LocaleLoader.getString("Commands.Party.ToggleShareCategory", StringUtils.getCapitalized(category), state);
|
||||||
state = "enabled";
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Player member : playerParty.getOnlineMembers()) {
|
for (Player member : playerParty.getOnlineMembers()) {
|
||||||
member.sendMessage(LocaleLoader.getString("Commands.Party.ToggleShareCategory", StringUtils.getCapitalized(args[1]), state));
|
member.sendMessage(toggleMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ import org.bukkit.command.CommandExecutor;
|
|||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
|
||||||
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.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class PartyJoinCommand implements CommandExecutor {
|
public class PartyJoinCommand implements CommandExecutor {
|
||||||
@@ -25,13 +25,15 @@ public class PartyJoinCommand implements CommandExecutor {
|
|||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 2:
|
case 2:
|
||||||
// Fallthrough
|
|
||||||
case 3:
|
case 3:
|
||||||
// Verify target exists and is in a different party than the player
|
// Verify target exists and is in a different party than the player
|
||||||
if (!canJoinParty(sender, args[1])) {
|
if (!canJoinParty(sender, args[1])) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mcMMOPlayer = UserManager.getPlayer((Player) sender);
|
||||||
|
player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
String password = getPassword(args);
|
String password = getPassword(args);
|
||||||
|
|
||||||
// Make sure party passwords match
|
// Make sure party passwords match
|
||||||
@@ -62,15 +64,9 @@ public class PartyJoinCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean canJoinParty(CommandSender sender, String targetName) {
|
private boolean canJoinParty(CommandSender sender, String targetName) {
|
||||||
if (!mcMMO.p.getServer().getOfflinePlayer(targetName).isOnline()) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Party.NotOnline", targetName));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOTarget = UserManager.getPlayer(targetName);
|
mcMMOTarget = UserManager.getPlayer(targetName);
|
||||||
|
|
||||||
if (mcMMOTarget == null) {
|
if (!CommandUtils.checkPlayerExistence(sender, targetName, mcMMOTarget)) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Party.Player.Invalid"));
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,8 +77,9 @@ public class PartyJoinCommand implements CommandExecutor {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
player = (Player) sender;
|
mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
mcMMOPlayer = UserManager.getPlayer(player);
|
player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
playerParty = mcMMOPlayer.getParty();
|
playerParty = mcMMOPlayer.getParty();
|
||||||
targetParty = mcMMOTarget.getParty();
|
targetParty = mcMMOTarget.getParty();
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,7 @@ public class PartyKickCommand implements CommandExecutor {
|
|||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 2:
|
case 2:
|
||||||
Party playerParty = UserManager.getPlayer((Player) sender).getParty();
|
Party playerParty = UserManager.getPlayer(sender.getName()).getParty();
|
||||||
|
|
||||||
OfflinePlayer target = mcMMO.p.getServer().getOfflinePlayer(args[1]);
|
OfflinePlayer target = mcMMO.p.getServer().getOfflinePlayer(args[1]);
|
||||||
|
|
||||||
if (!playerParty.getMembers().contains(target)) {
|
if (!playerParty.getMembers().contains(target)) {
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ package com.gmail.nossr50.commands.party;
|
|||||||
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.entity.Player;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.party.Party;
|
import com.gmail.nossr50.datatypes.party.Party;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class PartyLockCommand implements CommandExecutor {
|
public class PartyLockCommand implements CommandExecutor {
|
||||||
@@ -15,15 +15,15 @@ public class PartyLockCommand implements CommandExecutor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
playerParty = UserManager.getPlayer((Player) sender).getParty();
|
playerParty = UserManager.getPlayer(sender.getName()).getParty();
|
||||||
|
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 1:
|
case 1:
|
||||||
if (args[0].equalsIgnoreCase("lock")) {
|
if (args[0].equalsIgnoreCase("lock")) {
|
||||||
lockParty(sender, command);
|
lockParty(sender, command.getPermissionMessage());
|
||||||
}
|
}
|
||||||
else if (args[0].equalsIgnoreCase("unlock")) {
|
else if (args[0].equalsIgnoreCase("unlock")) {
|
||||||
unlockParty(sender, command);
|
unlockParty(sender, command.getPermissionMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -34,11 +34,11 @@ public class PartyLockCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args[1].equalsIgnoreCase("on") || args[1].equalsIgnoreCase("true")) {
|
if (CommandUtils.shouldEnableToggle(args[1])) {
|
||||||
lockParty(sender, command);
|
lockParty(sender, command.getPermissionMessage());
|
||||||
}
|
}
|
||||||
else if (args[1].equalsIgnoreCase("off") || args[1].equalsIgnoreCase("false")) {
|
else if (CommandUtils.shouldDisableToggle(args[1])) {
|
||||||
unlockParty(sender, command);
|
unlockParty(sender, command.getPermissionMessage());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sendUsageStrings(sender);
|
sendUsageStrings(sender);
|
||||||
@@ -55,9 +55,9 @@ public class PartyLockCommand implements CommandExecutor {
|
|||||||
/**
|
/**
|
||||||
* Handle locking a party.
|
* Handle locking a party.
|
||||||
*/
|
*/
|
||||||
private void lockParty(CommandSender sender, Command command) {
|
private void lockParty(CommandSender sender, String permissionMessage) {
|
||||||
if (!Permissions.partySubcommand(sender, PartySubcommandType.LOCK)) {
|
if (!Permissions.partySubcommand(sender, PartySubcommandType.LOCK)) {
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
sender.sendMessage(permissionMessage);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,9 +75,9 @@ public class PartyLockCommand implements CommandExecutor {
|
|||||||
*
|
*
|
||||||
* @return true if party is successfully unlocked, false otherwise.
|
* @return true if party is successfully unlocked, false otherwise.
|
||||||
*/
|
*/
|
||||||
private void unlockParty(CommandSender sender, Command command) {
|
private void unlockParty(CommandSender sender, String permissionMessage) {
|
||||||
if (!Permissions.partySubcommand(sender, PartySubcommandType.UNLOCK)) {
|
if (!Permissions.partySubcommand(sender, PartySubcommandType.UNLOCK)) {
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
sender.sendMessage(permissionMessage);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,15 +12,12 @@ import com.gmail.nossr50.party.PartyManager;
|
|||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class PartyQuitCommand implements CommandExecutor {
|
public class PartyQuitCommand implements CommandExecutor {
|
||||||
private Player player;
|
|
||||||
private Party playerParty;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 1:
|
case 1:
|
||||||
player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
playerParty = UserManager.getPlayer(player).getParty();
|
Party playerParty = UserManager.getPlayer(player).getParty();
|
||||||
|
|
||||||
if (!PartyManager.handlePartyChangeEvent(player, playerParty.getName(), null, EventReason.LEFT_PARTY)) {
|
if (!PartyManager.handlePartyChangeEvent(player, playerParty.getName(), null, EventReason.LEFT_PARTY)) {
|
||||||
return true;
|
return true;
|
||||||
@@ -31,7 +28,7 @@ public class PartyQuitCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Usage.1", "party", "[quit|q|leave]"));
|
sender.sendMessage(LocaleLoader.getString("Commands.Usage.1", "party", "quit"));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
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.events.party.McMMOPartyChangeEvent.EventReason;
|
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
@@ -14,29 +15,32 @@ import com.gmail.nossr50.util.player.UserManager;
|
|||||||
public class PartyRenameCommand implements CommandExecutor {
|
public class PartyRenameCommand implements CommandExecutor {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
Party playerParty = UserManager.getPlayer((Player) sender).getParty();
|
|
||||||
String leaderName = playerParty.getLeader();
|
|
||||||
|
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 2:
|
case 2:
|
||||||
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
|
Party playerParty = mcMMOPlayer.getParty();
|
||||||
|
|
||||||
|
String oldPartyName = playerParty.getName();
|
||||||
String newPartyName = args[1];
|
String newPartyName = args[1];
|
||||||
|
|
||||||
// This is to prevent party leaders from spamming other players with the rename message
|
// This is to prevent party leaders from spamming other players with the rename message
|
||||||
if (playerParty.getName().equalsIgnoreCase(newPartyName)) {
|
if (oldPartyName.equalsIgnoreCase(newPartyName)) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Party.Rename.Same"));
|
sender.sendMessage(LocaleLoader.getString("Party.Rename.Same"));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Player player = mcMMOPlayer.getPlayer();
|
||||||
Party newParty = PartyManager.getParty(newPartyName);
|
Party newParty = PartyManager.getParty(newPartyName);
|
||||||
|
|
||||||
// Check to see if the party exists, and if it does cancel renaming the party
|
// Check to see if the party exists, and if it does cancel renaming the party
|
||||||
if (newParty != null) {
|
if (PartyManager.checkPartyExistence(player, newParty, newPartyName)) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Party.AlreadyExists", newPartyName));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String leaderName = playerParty.getLeader();
|
||||||
|
|
||||||
for (Player member : playerParty.getOnlineMembers()) {
|
for (Player member : playerParty.getOnlineMembers()) {
|
||||||
if (!PartyManager.handlePartyChangeEvent(member, playerParty.getName(), newPartyName, EventReason.CHANGED_PARTIES)) {
|
if (!PartyManager.handlePartyChangeEvent(member, oldPartyName, newPartyName, EventReason.CHANGED_PARTIES)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,218 +0,0 @@
|
|||||||
package com.gmail.nossr50.commands.party;
|
|
||||||
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
|
||||||
import com.gmail.nossr50.config.Config;
|
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
||||||
import com.gmail.nossr50.events.party.McMMOPartyTeleportEvent;
|
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
|
||||||
import com.gmail.nossr50.util.Misc;
|
|
||||||
import com.gmail.nossr50.util.Permissions;
|
|
||||||
import com.gmail.nossr50.util.commands.CommandUtils;
|
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
|
||||||
|
|
||||||
public class PtpCommand implements CommandExecutor {
|
|
||||||
private Player player;
|
|
||||||
private McMMOPlayer mcMMOPlayer;
|
|
||||||
|
|
||||||
private Player target;
|
|
||||||
private McMMOPlayer mcMMOTarget;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
|
||||||
if (CommandUtils.noConsoleUsage(sender)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (args.length) {
|
|
||||||
case 1:
|
|
||||||
player = (Player) sender;
|
|
||||||
mcMMOPlayer = UserManager.getPlayer(player);
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("toggle")) {
|
|
||||||
if (!Permissions.partyTeleportToggle(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return togglePartyTeleportation();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("acceptany") || args[0].equalsIgnoreCase("acceptall")) {
|
|
||||||
if (!Permissions.partyTeleportAcceptAll(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return acceptAnyTeleportRequest();
|
|
||||||
}
|
|
||||||
|
|
||||||
int ptpCooldown = Config.getInstance().getPTPCommandCooldown();
|
|
||||||
long recentlyHurt = UserManager.getPlayer(player).getRecentlyHurt();
|
|
||||||
|
|
||||||
if ((recentlyHurt * Misc.TIME_CONVERSION_FACTOR + ptpCooldown * Misc.TIME_CONVERSION_FACTOR) > System.currentTimeMillis()) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Party.Teleport.Hurt", ptpCooldown));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("accept")) {
|
|
||||||
if (!Permissions.partyTeleportAccept(sender)) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return acceptTeleportRequest();
|
|
||||||
}
|
|
||||||
|
|
||||||
return sendTeleportRequest(args[0]);
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean sendTeleportRequest(String targetName) {
|
|
||||||
if (!canTeleport(targetName)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!mcMMOTarget.getPtpConfirmRequired()) {
|
|
||||||
return handlePartyTeleportEvent(player, target);
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOTarget.setPtpRequest(player);
|
|
||||||
mcMMOTarget.actualizePtpTimeout();
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.Invite.Success"));
|
|
||||||
|
|
||||||
int ptpRequestExpire = Config.getInstance().getPTPCommandTimeout();
|
|
||||||
|
|
||||||
target.sendMessage(LocaleLoader.getString("Commands.ptp.Request1", player.getName()));
|
|
||||||
target.sendMessage(LocaleLoader.getString("Commands.ptp.Request2", ptpRequestExpire));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean acceptTeleportRequest() {
|
|
||||||
if (!mcMMOPlayer.hasPtpRequest()) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.ptp.NoRequests"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ptpRequestExpire = Config.getInstance().getPTPCommandTimeout();
|
|
||||||
|
|
||||||
if ((mcMMOPlayer.getPtpTimeout() + ptpRequestExpire) * Misc.TIME_CONVERSION_FACTOR < System.currentTimeMillis()) {
|
|
||||||
mcMMOPlayer.removePtpRequest();
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.ptp.RequestExpired"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
target = mcMMOPlayer.getPtpRequest();
|
|
||||||
mcMMOPlayer.removePtpRequest();
|
|
||||||
|
|
||||||
if (!canTeleport(target.getName())) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Config.getInstance().getPTPCommandWorldPermissions()) {
|
|
||||||
World targetWorld = target.getWorld();
|
|
||||||
World playerWorld = player.getWorld();
|
|
||||||
|
|
||||||
if (!Permissions.partyTeleportAllWorlds(target)) {
|
|
||||||
if (!Permissions.partyTeleportWorld(target, targetWorld)) {
|
|
||||||
target.sendMessage(LocaleLoader.getString("Commands.ptp.NoWorldPermissions", targetWorld.getName()));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (targetWorld != playerWorld && !Permissions.partyTeleportWorld(target, playerWorld)) {
|
|
||||||
target.sendMessage(LocaleLoader.getString("Commands.ptp.NoWorldPermissions", playerWorld.getName()));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return handlePartyTeleportEvent(target, player);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean acceptAnyTeleportRequest() {
|
|
||||||
if (mcMMOPlayer.getPtpConfirmRequired()) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.ptp.AcceptAny.Disabled"));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.ptp.AcceptAny.Enabled"));
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer.togglePtpConfirmRequired();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean togglePartyTeleportation() {
|
|
||||||
if (mcMMOPlayer.getPtpEnabled()) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.ptp.Disabled"));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.ptp.Enabled"));
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOPlayer.togglePtpUse();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean canTeleport(String targetName) {
|
|
||||||
if (!mcMMO.p.getServer().getOfflinePlayer(targetName).isOnline()) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Party.NotOnline", targetName));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
mcMMOTarget = UserManager.getPlayer(targetName);
|
|
||||||
|
|
||||||
if (mcMMOTarget == null) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Party.Player.Invalid"));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
target = mcMMOTarget.getPlayer();
|
|
||||||
|
|
||||||
if (player.equals(target)) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Party.Teleport.Self"));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!PartyManager.inSameParty(player, target)) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Party.NotInYourParty", targetName));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!mcMMOTarget.getPtpEnabled()) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Party.Teleport.Disabled", target.getName()));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (target.isDead()) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Party.Teleport.Dead"));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean handlePartyTeleportEvent(Player player, Player target) {
|
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
|
||||||
McMMOPartyTeleportEvent event = new McMMOPartyTeleportEvent(player, target, mcMMOPlayer.getParty().getName());
|
|
||||||
|
|
||||||
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
|
||||||
|
|
||||||
if (event.isCancelled()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
player.teleport(target);
|
|
||||||
player.sendMessage(LocaleLoader.getString("Party.Teleport.Player", target.getName()));
|
|
||||||
target.sendMessage(LocaleLoader.getString("Party.Teleport.Target", player.getName()));
|
|
||||||
mcMMOPlayer.actualizeRecentlyHurt();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package com.gmail.nossr50.commands.party.teleport;
|
||||||
|
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
|
public class PtpAcceptAnyCommand implements CommandExecutor {
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
if (!Permissions.partyTeleportAcceptAll(sender)) {
|
||||||
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
|
Player player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
|
if (mcMMOPlayer.getPtpConfirmRequired()) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.ptp.AcceptAny.Disabled"));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.ptp.AcceptAny.Enabled"));
|
||||||
|
}
|
||||||
|
|
||||||
|
mcMMOPlayer.togglePtpConfirmRequired();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
package com.gmail.nossr50.commands.party.teleport;
|
||||||
|
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.util.Misc;
|
||||||
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
|
public class PtpAcceptCommand implements CommandExecutor {
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
if (!Permissions.partyTeleportAccept(sender)) {
|
||||||
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
|
Player player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
|
if (!mcMMOPlayer.hasPtpRequest()) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.ptp.NoRequests"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((mcMMOPlayer.getPtpTimeout() + Config.getInstance().getPTPCommandTimeout()) * Misc.TIME_CONVERSION_FACTOR < System.currentTimeMillis()) {
|
||||||
|
mcMMOPlayer.removePtpRequest();
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.ptp.RequestExpired"));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Player target = mcMMOPlayer.getPtpRequest();
|
||||||
|
mcMMOPlayer.removePtpRequest();
|
||||||
|
|
||||||
|
if (!PtpCommand.canTeleport(sender, player, target.getName())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Config.getInstance().getPTPCommandWorldPermissions()) {
|
||||||
|
World targetWorld = target.getWorld();
|
||||||
|
World playerWorld = player.getWorld();
|
||||||
|
|
||||||
|
if (!Permissions.partyTeleportAllWorlds(target)) {
|
||||||
|
if (!Permissions.partyTeleportWorld(target, targetWorld)) {
|
||||||
|
target.sendMessage(LocaleLoader.getString("Commands.ptp.NoWorldPermissions", targetWorld.getName()));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (targetWorld != playerWorld && !Permissions.partyTeleportWorld(target, playerWorld)) {
|
||||||
|
target.sendMessage(LocaleLoader.getString("Commands.ptp.NoWorldPermissions", playerWorld.getName()));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PtpCommand.handleTeleportWarmup(target, player);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,194 @@
|
|||||||
|
package com.gmail.nossr50.commands.party.teleport;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.util.StringUtil;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
|
import com.gmail.nossr50.events.party.McMMOPartyTeleportEvent;
|
||||||
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
|
import com.gmail.nossr50.runnables.items.TeleportationWarmup;
|
||||||
|
import com.gmail.nossr50.util.Misc;
|
||||||
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
public class PtpCommand implements TabExecutor {
|
||||||
|
private static Player target;
|
||||||
|
private static McMMOPlayer mcMMOTarget;
|
||||||
|
|
||||||
|
public static final List<String> TELEPORT_SUBCOMMANDS = ImmutableList.of("toggle", "accept", "acceptany", "acceptall");
|
||||||
|
|
||||||
|
private CommandExecutor ptpToggleCommand = new PtpToggleCommand();
|
||||||
|
private CommandExecutor ptpAcceptAnyCommand = new PtpAcceptAnyCommand();
|
||||||
|
private CommandExecutor ptpAcceptCommand = new PtpAcceptCommand();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
if (CommandUtils.noConsoleUsage(sender)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
if (args[0].equalsIgnoreCase("toggle")) {
|
||||||
|
return ptpToggleCommand.onCommand(sender, command, label, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args[0].equalsIgnoreCase("acceptany") || args[0].equalsIgnoreCase("acceptall")) {
|
||||||
|
return ptpAcceptAnyCommand.onCommand(sender, command, label, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
|
Player player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
|
long recentlyHurt = mcMMOPlayer.getRecentlyHurt();
|
||||||
|
int recentlyhurt_cooldown = Config.getInstance().getPTPCommandRecentlyHurtCooldown();
|
||||||
|
|
||||||
|
if (!SkillUtils.cooldownOver(recentlyHurt * Misc.TIME_CONVERSION_FACTOR, recentlyhurt_cooldown, player)) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Item.Injured.Wait", SkillUtils.calculateTimeLeft(recentlyHurt * Misc.TIME_CONVERSION_FACTOR, recentlyhurt_cooldown, player)));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args[0].equalsIgnoreCase("accept")) {
|
||||||
|
return ptpAcceptCommand.onCommand(sender, command, label, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Permissions.partyTeleportSend(sender)) {
|
||||||
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ptpCooldown = Config.getInstance().getPTPCommandCooldown();
|
||||||
|
long lastTeleport = mcMMOPlayer.getLastTeleport();
|
||||||
|
|
||||||
|
if (!SkillUtils.cooldownOver(lastTeleport * Misc.TIME_CONVERSION_FACTOR, ptpCooldown, player)) {
|
||||||
|
player.sendMessage(ChatColor.RED + "You need to wait before you can use this again! " + ChatColor.YELLOW + "(" + SkillUtils.calculateTimeLeft(lastTeleport * Misc.TIME_CONVERSION_FACTOR, ptpCooldown, player) + ")"); //TODO Locale!
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
sendTeleportRequest(sender, player, args[0]);
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
List<String> matches = StringUtil.copyPartialMatches(args[0], TELEPORT_SUBCOMMANDS, new ArrayList<String>(TELEPORT_SUBCOMMANDS.size()));
|
||||||
|
|
||||||
|
if (matches.size() == 0) {
|
||||||
|
Set<String> playerNames = UserManager.getPlayers().keySet();
|
||||||
|
return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return matches;
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendTeleportRequest(CommandSender sender, Player player, String targetName) {
|
||||||
|
if (!canTeleport(sender, player, targetName)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mcMMOTarget.getPtpConfirmRequired()) {
|
||||||
|
handleTeleportWarmup(player, target);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mcMMOTarget.setPtpRequest(player);
|
||||||
|
mcMMOTarget.actualizePtpTimeout();
|
||||||
|
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.Invite.Success"));
|
||||||
|
|
||||||
|
target.sendMessage(LocaleLoader.getString("Commands.ptp.Request1", player.getName()));
|
||||||
|
target.sendMessage(LocaleLoader.getString("Commands.ptp.Request2", Config.getInstance().getPTPCommandTimeout()));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static boolean canTeleport(CommandSender sender, Player player, String targetName) {
|
||||||
|
mcMMOTarget = UserManager.getPlayer(targetName);
|
||||||
|
|
||||||
|
if (!CommandUtils.checkPlayerExistence(sender, targetName, mcMMOTarget)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
target = mcMMOTarget.getPlayer();
|
||||||
|
targetName = target.getName();
|
||||||
|
|
||||||
|
if (player.equals(target)) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Party.Teleport.Self"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!PartyManager.inSameParty(player, target)) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Party.NotInYourParty", targetName));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mcMMOTarget.getPtpEnabled()) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Party.Teleport.Disabled", targetName));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!target.isValid()) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Party.Teleport.Dead"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static void handleTeleportWarmup(Player teleportingPlayer, Player targetPlayer) {
|
||||||
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(teleportingPlayer);
|
||||||
|
mcMMOTarget = UserManager.getPlayer(targetPlayer);
|
||||||
|
|
||||||
|
long warmup = Config.getInstance().getPTPCommandWarmup();
|
||||||
|
|
||||||
|
mcMMOPlayer.actualizeTeleportCommenceLocation(teleportingPlayer);
|
||||||
|
|
||||||
|
if (warmup > 0) {
|
||||||
|
teleportingPlayer.sendMessage(ChatColor.GRAY + "Commencing teleport in " + ChatColor.GOLD + "(" + warmup + ")" + ChatColor.GRAY + " seconds, please stand still..."); //TODO Locale!
|
||||||
|
new TeleportationWarmup(mcMMOPlayer, mcMMOTarget).runTaskLater(mcMMO.p, 20 * warmup);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
handlePartyTeleportEvent(teleportingPlayer, targetPlayer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void handlePartyTeleportEvent(Player teleportingPlayer, Player targetPlayer) {
|
||||||
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(teleportingPlayer);
|
||||||
|
McMMOPartyTeleportEvent event = new McMMOPartyTeleportEvent(teleportingPlayer, targetPlayer, mcMMOPlayer.getParty().getName());
|
||||||
|
|
||||||
|
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
||||||
|
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
teleportingPlayer.teleport(targetPlayer);
|
||||||
|
|
||||||
|
teleportingPlayer.sendMessage(LocaleLoader.getString("Party.Teleport.Player", targetPlayer.getName()));
|
||||||
|
targetPlayer.sendMessage(LocaleLoader.getString("Party.Teleport.Target", teleportingPlayer.getName()));
|
||||||
|
|
||||||
|
mcMMOPlayer.actualizeRecentlyHurt();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package com.gmail.nossr50.commands.party.teleport;
|
||||||
|
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
|
public class PtpToggleCommand implements CommandExecutor {
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
if (!Permissions.partyTeleportToggle(sender)) {
|
||||||
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
|
Player player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
|
if (mcMMOPlayer.getPtpEnabled()) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.ptp.Disabled"));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.ptp.Enabled"));
|
||||||
|
}
|
||||||
|
|
||||||
|
mcMMOPlayer.togglePtpUse();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,80 +1,71 @@
|
|||||||
package com.gmail.nossr50.commands.player;
|
package com.gmail.nossr50.commands.player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.util.StringUtil;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Misc;
|
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
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;
|
||||||
|
|
||||||
public class InspectCommand implements CommandExecutor {
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
public class InspectCommand implements TabExecutor {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
PlayerProfile profile;
|
|
||||||
|
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 1:
|
case 1:
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(args[0]);
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(args[0]);
|
||||||
|
|
||||||
// If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process.
|
// If the mcMMOPlayer doesn't exist, create a temporary profile and check if it's present in the database. If it's not, abort the process.
|
||||||
if (mcMMOPlayer == null) {
|
if (mcMMOPlayer == null) {
|
||||||
profile = new PlayerProfile(args[0], false); // Temporary Profile
|
PlayerProfile profile = new PlayerProfile(args[0], false); // Temporary Profile
|
||||||
|
|
||||||
if (!profile.isLoaded()) {
|
if (CommandUtils.inspectOffline(sender, profile, Permissions.inspectOffline(sender))) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Why do we care if this is a player?
|
|
||||||
if (sender instanceof Player && !Permissions.inspectOffline(sender)) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Inspect.Offline"));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Inspect.OfflineStats", args[0]));
|
sender.sendMessage(LocaleLoader.getString("Inspect.OfflineStats", args[0]));
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Stats.Header.Gathering"));
|
sender.sendMessage(LocaleLoader.getString("Stats.Header.Gathering"));
|
||||||
sender.sendMessage(LocaleLoader.getString("Skills.Stats", LocaleLoader.getString("Excavation.Listener"), profile.getSkillLevel(SkillType.EXCAVATION), profile.getSkillXpLevel(SkillType.EXCAVATION), profile.getXpToLevel(SkillType.EXCAVATION)));
|
CommandUtils.displaySkill(sender, profile, SkillType.EXCAVATION);
|
||||||
sender.sendMessage(LocaleLoader.getString("Skills.Stats", LocaleLoader.getString("Fishing.Listener"), profile.getSkillLevel(SkillType.FISHING), profile.getSkillXpLevel(SkillType.FISHING), profile.getXpToLevel(SkillType.FISHING)));
|
CommandUtils.displaySkill(sender, profile, SkillType.FISHING);
|
||||||
sender.sendMessage(LocaleLoader.getString("Skills.Stats", LocaleLoader.getString("Herbalism.Listener"), profile.getSkillLevel(SkillType.HERBALISM), profile.getSkillXpLevel(SkillType.HERBALISM), profile.getXpToLevel(SkillType.HERBALISM)));
|
CommandUtils.displaySkill(sender, profile, SkillType.HERBALISM);
|
||||||
sender.sendMessage(LocaleLoader.getString("Skills.Stats", LocaleLoader.getString("Mining.Listener"), profile.getSkillLevel(SkillType.MINING), profile.getSkillXpLevel(SkillType.MINING), profile.getXpToLevel(SkillType.MINING)));
|
CommandUtils.displaySkill(sender, profile, SkillType.MINING);
|
||||||
sender.sendMessage(LocaleLoader.getString("Skills.Stats", LocaleLoader.getString("Woodcutting.Listener"), profile.getSkillLevel(SkillType.WOODCUTTING), profile.getSkillXpLevel(SkillType.WOODCUTTING), profile.getXpToLevel(SkillType.WOODCUTTING)));
|
CommandUtils.displaySkill(sender, profile, SkillType.WOODCUTTING);
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Stats.Header.Combat"));
|
sender.sendMessage(LocaleLoader.getString("Stats.Header.Combat"));
|
||||||
sender.sendMessage(LocaleLoader.getString("Skills.Stats", LocaleLoader.getString("Axes.Listener"), profile.getSkillLevel(SkillType.AXES), profile.getSkillXpLevel(SkillType.AXES), profile.getXpToLevel(SkillType.AXES)));
|
CommandUtils.displaySkill(sender, profile, SkillType.AXES);
|
||||||
sender.sendMessage(LocaleLoader.getString("Skills.Stats", LocaleLoader.getString("Archery.Listener"), profile.getSkillLevel(SkillType.ARCHERY), profile.getSkillXpLevel(SkillType.ARCHERY), profile.getXpToLevel(SkillType.ARCHERY)));
|
CommandUtils.displaySkill(sender, profile, SkillType.ARCHERY);
|
||||||
sender.sendMessage(LocaleLoader.getString("Skills.Stats", LocaleLoader.getString("Swords.Listener"), profile.getSkillLevel(SkillType.SWORDS), profile.getSkillXpLevel(SkillType.SWORDS), profile.getXpToLevel(SkillType.SWORDS)));
|
CommandUtils.displaySkill(sender, profile, SkillType.SWORDS);
|
||||||
sender.sendMessage(LocaleLoader.getString("Skills.Stats", LocaleLoader.getString("Taming.Listener"), profile.getSkillLevel(SkillType.TAMING), profile.getSkillXpLevel(SkillType.TAMING), profile.getXpToLevel(SkillType.TAMING)));
|
CommandUtils.displaySkill(sender, profile, SkillType.TAMING);
|
||||||
sender.sendMessage(LocaleLoader.getString("Skills.Stats", LocaleLoader.getString("Unarmed.Listener"), profile.getSkillLevel(SkillType.UNARMED), profile.getSkillXpLevel(SkillType.UNARMED), profile.getXpToLevel(SkillType.UNARMED)));
|
CommandUtils.displaySkill(sender, profile, SkillType.UNARMED);
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Stats.Header.Misc"));
|
sender.sendMessage(LocaleLoader.getString("Stats.Header.Misc"));
|
||||||
sender.sendMessage(LocaleLoader.getString("Skills.Stats", LocaleLoader.getString("Acrobatics.Listener"), profile.getSkillLevel(SkillType.ACROBATICS), profile.getSkillXpLevel(SkillType.ACROBATICS), profile.getXpToLevel(SkillType.ACROBATICS)));
|
CommandUtils.displaySkill(sender, profile, SkillType.ACROBATICS);
|
||||||
sender.sendMessage(LocaleLoader.getString("Skills.Stats", LocaleLoader.getString("Repair.Listener"), profile.getSkillLevel(SkillType.REPAIR), profile.getSkillXpLevel(SkillType.REPAIR), profile.getXpToLevel(SkillType.REPAIR)));
|
CommandUtils.displaySkill(sender, profile, SkillType.REPAIR);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Player target = mcMMOPlayer.getPlayer();
|
Player target = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
if (sender instanceof Player) {
|
if (CommandUtils.tooFar(sender, target, Permissions.inspectFar(sender))) {
|
||||||
Player inspector = (Player) sender;
|
return true;
|
||||||
|
|
||||||
if (!Misc.isNear(inspector.getLocation(), target.getLocation(), 5.0) && !Permissions.inspectFar(inspector)) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Inspect.TooFar"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
profile = mcMMOPlayer.getProfile();
|
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Inspect.Stats", target.getName()));
|
sender.sendMessage(LocaleLoader.getString("Inspect.Stats", target.getName()));
|
||||||
CommandUtils.printGatheringSkills(target, profile, sender);
|
CommandUtils.printGatheringSkills(target, sender);
|
||||||
CommandUtils.printCombatSkills(target, profile, sender);
|
CommandUtils.printCombatSkills(target, sender);
|
||||||
CommandUtils.printMiscSkills(target, profile, sender);
|
CommandUtils.printMiscSkills(target, sender);
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.PowerLevel", mcMMOPlayer.getPowerLevel()));
|
sender.sendMessage(LocaleLoader.getString("Commands.PowerLevel", mcMMOPlayer.getPowerLevel()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,4 +75,15 @@ public class InspectCommand implements CommandExecutor {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
Set<String> playerNames = UserManager.getPlayers().keySet();
|
||||||
|
return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
package com.gmail.nossr50.commands.player;
|
package com.gmail.nossr50.commands.player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.util.StringUtil;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
@@ -13,30 +17,31 @@ import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
|||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.runnables.commands.McrankCommandAsyncTask;
|
import com.gmail.nossr50.runnables.commands.McrankCommandAsyncTask;
|
||||||
import com.gmail.nossr50.util.Misc;
|
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||||
|
|
||||||
public class McrankCommand implements CommandExecutor {
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
public class McrankCommand implements TabExecutor {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 0:
|
case 0:
|
||||||
if (!Permissions.mcrank(sender)) {
|
if (CommandUtils.noConsoleUsage(sender)) {
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(sender instanceof Player)) {
|
if (!Permissions.mcrank(sender)) {
|
||||||
return false;
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.getInstance().getUseMySQL()) {
|
if (Config.getInstance().getUseMySQL()) {
|
||||||
sqlDisplay(sender, sender.getName());
|
sqlDisplay(sender, sender.getName());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
LeaderboardManager.updateLeaderboards(); // Make sure the information is up to date
|
|
||||||
flatfileDisplay(sender, sender.getName());
|
flatfileDisplay(sender, sender.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,36 +53,25 @@ public class McrankCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(args[0]);
|
String playerName = args[0];
|
||||||
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(playerName);
|
||||||
|
|
||||||
if (mcMMOPlayer == null) {
|
if (mcMMOPlayer != null) {
|
||||||
PlayerProfile profile = new PlayerProfile(args[0], false); // Temporary Profile
|
playerName = mcMMOPlayer.getPlayer().getName();
|
||||||
|
|
||||||
if (!profile.isLoaded()) {
|
if (CommandUtils.tooFar(sender, mcMMOPlayer.getPlayer(), Permissions.mcrankFar(sender))) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sender instanceof Player && !Permissions.mcrankOffline(sender)) {
|
} else if (CommandUtils.inspectOffline(sender, new PlayerProfile(playerName, false), Permissions.mcrankOffline(sender))) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Inspect.Offline"));
|
return true;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Player target = mcMMOPlayer.getPlayer();
|
|
||||||
|
|
||||||
if (sender instanceof Player && !Misc.isNear(((Player) sender).getLocation(), target.getLocation(), 5.0) && !Permissions.mcrankFar(sender)) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Inspect.TooFar"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config.getInstance().getUseMySQL()) {
|
if (Config.getInstance().getUseMySQL()) {
|
||||||
sqlDisplay(sender, args[0]);
|
sqlDisplay(sender, playerName);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
LeaderboardManager.updateLeaderboards(); // Make sure the information is up to date
|
flatfileDisplay(sender, playerName);
|
||||||
flatfileDisplay(sender, args[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -87,18 +81,27 @@ public class McrankCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
Set<String> playerNames = UserManager.getPlayers().keySet();
|
||||||
|
return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList<String>(playerNames.size()));
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void flatfileDisplay(CommandSender sender, String playerName) {
|
private void flatfileDisplay(CommandSender sender, String playerName) {
|
||||||
|
LeaderboardManager.updateLeaderboards(); // Make sure the information is up to date
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Heading"));
|
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Heading"));
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Player", playerName));
|
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Player", playerName));
|
||||||
|
|
||||||
for (SkillType skillType : SkillType.values()) {
|
for (SkillType skillType : SkillType.values()) {
|
||||||
int[] rankInts = LeaderboardManager.getPlayerRank(playerName, skillType);
|
int[] rankInts = LeaderboardManager.getPlayerRank(playerName, skillType);
|
||||||
|
|
||||||
if (skillType.isChildSkill()) {
|
if (!Permissions.skillEnabled(sender, skillType) || skillType.isChildSkill()) {
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((sender instanceof Player) && !Permissions.skillEnabled((Player) sender, skillType)) {
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,6 +125,6 @@ public class McrankCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void sqlDisplay(CommandSender sender, String playerName) {
|
private void sqlDisplay(CommandSender sender, String playerName) {
|
||||||
mcMMO.p.getServer().getScheduler().runTaskAsynchronously(mcMMO.p, new McrankCommandAsyncTask(playerName, sender));
|
new McrankCommandAsyncTask(playerName, sender).runTaskAsynchronously(mcMMO.p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,21 @@
|
|||||||
package com.gmail.nossr50.commands.player;
|
package com.gmail.nossr50.commands.player;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
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;
|
||||||
|
|
||||||
public class McstatsCommand implements CommandExecutor {
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
public class McstatsCommand implements TabExecutor {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
if (CommandUtils.noConsoleUsage(sender)) {
|
if (CommandUtils.noConsoleUsage(sender)) {
|
||||||
@@ -21,24 +24,23 @@ public class McstatsCommand implements CommandExecutor {
|
|||||||
|
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 0:
|
case 0:
|
||||||
Player player = (Player) sender;
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
Player player = mcMMOPlayer.getPlayer();
|
||||||
PlayerProfile profile = mcMMOPlayer.getProfile();
|
|
||||||
|
|
||||||
player.sendMessage(LocaleLoader.getString("Stats.Own.Stats"));
|
player.sendMessage(LocaleLoader.getString("Stats.Own.Stats"));
|
||||||
player.sendMessage(LocaleLoader.getString("mcMMO.NoSkillNote"));
|
player.sendMessage(LocaleLoader.getString("mcMMO.NoSkillNote"));
|
||||||
|
|
||||||
CommandUtils.printGatheringSkills(player, profile);
|
CommandUtils.printGatheringSkills(player);
|
||||||
CommandUtils.printCombatSkills(player, profile);
|
CommandUtils.printCombatSkills(player);
|
||||||
CommandUtils.printMiscSkills(player, profile);
|
CommandUtils.printMiscSkills(player);
|
||||||
|
|
||||||
int powerLevelCap = Config.getInstance().getPowerLevelCap();
|
int powerLevelCap = Config.getInstance().getPowerLevelCap();
|
||||||
|
|
||||||
if (powerLevelCap != Integer.MAX_VALUE) {
|
if (powerLevelCap != Integer.MAX_VALUE) {
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.PowerLevel.Capped", mcMMOPlayer.getPowerLevel(), powerLevelCap));
|
player.sendMessage(LocaleLoader.getString("Commands.PowerLevel.Capped", UserManager.getPlayer(player).getPowerLevel(), powerLevelCap));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.PowerLevel", mcMMOPlayer.getPowerLevel()));
|
player.sendMessage(LocaleLoader.getString("Commands.PowerLevel", UserManager.getPlayer(player).getPowerLevel()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -47,4 +49,9 @@ public class McstatsCommand implements CommandExecutor {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
package com.gmail.nossr50.commands.player;
|
package com.gmail.nossr50.commands.player;
|
||||||
|
|
||||||
|
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.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabExecutor;
|
||||||
|
import org.bukkit.util.StringUtil;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
@@ -13,13 +17,18 @@ import com.gmail.nossr50.locale.LocaleLoader;
|
|||||||
import com.gmail.nossr50.runnables.commands.MctopCommandAsyncTask;
|
import com.gmail.nossr50.runnables.commands.MctopCommandAsyncTask;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
public class MctopCommand implements TabExecutor {
|
||||||
|
private SkillType skill;
|
||||||
|
|
||||||
public class MctopCommand implements CommandExecutor {
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
boolean useMySQL = Config.getInstance().getUseMySQL();
|
boolean useMySQL = Config.getInstance().getUseMySQL();
|
||||||
|
|
||||||
|
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 0:
|
case 0:
|
||||||
display(1, "ALL", sender, useMySQL, command);
|
display(1, "ALL", sender, useMySQL, command);
|
||||||
@@ -27,43 +36,27 @@ public class MctopCommand implements CommandExecutor {
|
|||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
if (StringUtils.isInt(args[0])) {
|
if (StringUtils.isInt(args[0])) {
|
||||||
display(Integer.parseInt(args[0]), "ALL", sender, useMySQL, command);
|
display(Math.abs(Integer.parseInt(args[0])), "ALL", sender, useMySQL, command);
|
||||||
}
|
return true;
|
||||||
else if (SkillUtils.isSkill(args[0])) {
|
|
||||||
SkillType skill = SkillType.getSkill(args[0]);
|
|
||||||
|
|
||||||
if (skill.isChildSkill()) {
|
|
||||||
sender.sendMessage("Child skills are not yet supported by this command."); // TODO: Localize this
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
display(1, skill.toString(), sender, useMySQL, command);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!extractSkill(sender, args[0])) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
display(1, skill.toString(), sender, useMySQL, command);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
if (!StringUtils.isInt(args[1])) {
|
if (CommandUtils.isInvalidInteger(sender, args[1])) {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SkillUtils.isSkill(args[0])) {
|
if (!extractSkill(sender, args[0])) {
|
||||||
SkillType skill = SkillType.getSkill(args[0]);
|
return true;
|
||||||
|
|
||||||
if (skill.isChildSkill()) {
|
|
||||||
sender.sendMessage("Child skills are not yet supported by this command."); // TODO: Localize this
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
display(Integer.parseInt(args[1]), skill.toString(), sender, useMySQL, command);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
display(Math.abs(Integer.parseInt(args[1])), skill.toString(), sender, useMySQL, command);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -71,30 +64,38 @@ public class MctopCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
return StringUtil.copyPartialMatches(args[1], SkillType.SKILL_NAMES, new ArrayList<String>(SkillType.SKILL_NAMES.size()));
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void display(int page, String skill, CommandSender sender, boolean sql, Command command) {
|
private void display(int page, String skill, CommandSender sender, boolean sql, Command command) {
|
||||||
if (!skill.equalsIgnoreCase("all") && !Permissions.mctop(sender, SkillType.getSkill(skill))) {
|
if (!skill.equalsIgnoreCase("all") && !Permissions.mctop(sender, this.skill)) {
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
sender.sendMessage(command.getPermissionMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sql) {
|
if (sql) {
|
||||||
if (skill.equalsIgnoreCase("all")) {
|
if (skill.equalsIgnoreCase("all")) {
|
||||||
sqlDisplay(page, "taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing", sender, command);
|
sqlDisplay(page, "taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing", sender);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sqlDisplay(page, skill, sender, command);
|
sqlDisplay(page, skill, sender);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
flatfileDisplay(page, skill, sender, command);
|
flatfileDisplay(page, skill, sender);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void flatfileDisplay(int page, String skill, CommandSender sender, Command command) {
|
private void flatfileDisplay(int page, String skill, CommandSender sender) {
|
||||||
LeaderboardManager.updateLeaderboards(); // Make sure we have the latest information
|
LeaderboardManager.updateLeaderboards(); // Make sure we have the latest information
|
||||||
|
|
||||||
String[] info = LeaderboardManager.retrieveInfo(skill, page);
|
|
||||||
|
|
||||||
if (skill.equalsIgnoreCase("all")) {
|
if (skill.equalsIgnoreCase("all")) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.PowerLevel.Leaderboard"));
|
sender.sendMessage(LocaleLoader.getString("Commands.PowerLevel.Leaderboard"));
|
||||||
}
|
}
|
||||||
@@ -102,27 +103,44 @@ public class MctopCommand implements CommandExecutor {
|
|||||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Leaderboard", StringUtils.getCapitalized(skill)));
|
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Leaderboard", StringUtils.getCapitalized(skill)));
|
||||||
}
|
}
|
||||||
|
|
||||||
int n = (page * 10) - 9; // Position
|
int position = (page * 10) - 9;
|
||||||
for (String x : info) {
|
|
||||||
if (x != null) {
|
|
||||||
String digit = String.valueOf(n);
|
|
||||||
|
|
||||||
if (n < 10) {
|
for (String playerStat : LeaderboardManager.retrieveInfo(skill, page)) {
|
||||||
digit = "0" + digit;
|
if (playerStat == null) {
|
||||||
}
|
continue;
|
||||||
|
|
||||||
String[] splitx = x.split(":");
|
|
||||||
|
|
||||||
// Format: 1. Playername - skill value
|
|
||||||
sender.sendMessage(digit + ". " + ChatColor.GREEN + splitx[1] + " - " + ChatColor.WHITE + splitx[0]);
|
|
||||||
n++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String digit = String.valueOf(position);
|
||||||
|
|
||||||
|
if (position < 10) {
|
||||||
|
digit = "0" + digit;
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] splitStat = playerStat.split(":");
|
||||||
|
|
||||||
|
// Format: 1. Playername - skill value
|
||||||
|
sender.sendMessage(digit + ". " + ChatColor.GREEN + splitStat[1] + " - " + ChatColor.WHITE + splitStat[0]);
|
||||||
|
position++;
|
||||||
}
|
}
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mctop.Tip"));
|
sender.sendMessage(LocaleLoader.getString("Commands.mctop.Tip"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sqlDisplay(int page, String query, CommandSender sender, Command command) {
|
private void sqlDisplay(int page, String query, CommandSender sender) {
|
||||||
mcMMO.p.getServer().getScheduler().runTaskAsynchronously(mcMMO.p, new MctopCommandAsyncTask(page, query, sender, command));
|
new MctopCommandAsyncTask(page, query, sender).runTaskAsynchronously(mcMMO.p);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean extractSkill(CommandSender sender, String skillName) {
|
||||||
|
if (CommandUtils.isInvalidSkill(sender, skillName)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
skill = SkillType.getSkill(skillName);
|
||||||
|
|
||||||
|
if (CommandUtils.isChildSkill(sender, skill)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,19 +24,25 @@ public class AcrobaticsCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void dataCalculations() {
|
protected void dataCalculations() {
|
||||||
// DODGE
|
// DODGE
|
||||||
String[] dodgeStrings = calculateAbilityDisplayValues(Acrobatics.dodgeMaxBonusLevel, Acrobatics.dodgeMaxChance);
|
if (canDodge) {
|
||||||
dodgeChance = dodgeStrings[0];
|
String[] dodgeStrings = calculateAbilityDisplayValues(Acrobatics.dodgeMaxBonusLevel, Acrobatics.dodgeMaxChance);
|
||||||
dodgeChanceLucky = dodgeStrings[1];
|
dodgeChance = dodgeStrings[0];
|
||||||
|
dodgeChanceLucky = dodgeStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// ROLL
|
// ROLL
|
||||||
String[] rollStrings = calculateAbilityDisplayValues(Acrobatics.rollMaxBonusLevel, Acrobatics.rollMaxChance);
|
if (canRoll) {
|
||||||
rollChance = rollStrings[0];
|
String[] rollStrings = calculateAbilityDisplayValues(Acrobatics.rollMaxBonusLevel, Acrobatics.rollMaxChance);
|
||||||
rollChanceLucky = rollStrings[1];
|
rollChance = rollStrings[0];
|
||||||
|
rollChanceLucky = rollStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// GRACEFUL ROLL
|
// GRACEFUL ROLL
|
||||||
String[] gracefulRollStrings = calculateAbilityDisplayValues(Acrobatics.gracefulRollMaxBonusLevel, Acrobatics.gracefulRollMaxChance);
|
if (canGracefulRoll) {
|
||||||
gracefulRollChance = gracefulRollStrings[0];
|
String[] gracefulRollStrings = calculateAbilityDisplayValues(Acrobatics.gracefulRollMaxBonusLevel, Acrobatics.gracefulRollMaxChance);
|
||||||
gracefulRollChanceLucky = gracefulRollStrings[1];
|
gracefulRollChance = gracefulRollStrings[0];
|
||||||
|
gracefulRollChanceLucky = gracefulRollStrings[1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -76,30 +82,15 @@ public class AcrobaticsCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void statsDisplay() {
|
protected void statsDisplay() {
|
||||||
if (canRoll) {
|
if (canRoll) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.Chance", rollChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", rollChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.Chance", new Object[] { rollChance }) + LocaleLoader.getString("Perks.lucky.bonus", new Object[] { rollChanceLucky }));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.Chance", new Object[] { rollChance }));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canGracefulRoll) {
|
if (canGracefulRoll) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.GraceChance", gracefulRollChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", gracefulRollChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.GraceChance", new Object[] { gracefulRollChance }) + LocaleLoader.getString("Perks.lucky.bonus", new Object[] { gracefulRollChanceLucky }));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.GraceChance", new Object[] { gracefulRollChance }));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canDodge) {
|
if (canDodge) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Acrobatics.DodgeChance", dodgeChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", dodgeChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Acrobatics.DodgeChance", new Object[] { dodgeChance }) + LocaleLoader.getString("Perks.lucky.bonus", new Object[] { dodgeChanceLucky }));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Acrobatics.DodgeChance", new Object[] { dodgeChance }));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,24 +23,24 @@ public class ArcheryCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void dataCalculations() {
|
protected void dataCalculations() {
|
||||||
// SKILL SHOT
|
// SKILL SHOT
|
||||||
double bonus = (skillValue / Archery.skillShotIncreaseLevel) * Archery.skillShotIncreasePercentage;
|
if (canSkillShot) {
|
||||||
|
double bonus = (skillValue / Archery.skillShotIncreaseLevel) * Archery.skillShotIncreasePercentage;
|
||||||
if (bonus > Archery.skillShotMaxBonusPercentage) {
|
skillShotBonus = percent.format(Math.min(bonus, Archery.skillShotMaxBonusPercentage));
|
||||||
skillShotBonus = percent.format(Archery.skillShotMaxBonusPercentage);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
skillShotBonus = percent.format(bonus);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DAZE
|
// DAZE
|
||||||
String[] dazeStrings = calculateAbilityDisplayValues(Archery.dazeMaxBonusLevel, Archery.dazeMaxBonus);
|
if (canDaze) {
|
||||||
dazeChance = dazeStrings[0];
|
String[] dazeStrings = calculateAbilityDisplayValues(Archery.dazeMaxBonusLevel, Archery.dazeMaxBonus);
|
||||||
dazeChanceLucky = dazeStrings[1];
|
dazeChance = dazeStrings[0];
|
||||||
|
dazeChanceLucky = dazeStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// RETRIEVE
|
// RETRIEVE
|
||||||
String[] retrieveStrings = calculateAbilityDisplayValues(Archery.retrieveMaxBonusLevel, Archery.retrieveMaxChance);
|
if (canRetrieve) {
|
||||||
retrieveChance = retrieveStrings[0];
|
String[] retrieveStrings = calculateAbilityDisplayValues(Archery.retrieveMaxBonusLevel, Archery.retrieveMaxChance);
|
||||||
retrieveChanceLucky = retrieveStrings[1];
|
retrieveChance = retrieveStrings[0];
|
||||||
|
retrieveChanceLucky = retrieveStrings[1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -84,21 +84,11 @@ public class ArcheryCommand extends SkillCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (canDaze) {
|
if (canDaze) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Archery.Combat.DazeChance", dazeChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", dazeChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Archery.Combat.DazeChance", dazeChance) + LocaleLoader.getString("Perks.lucky.bonus", dazeChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Archery.Combat.DazeChance", dazeChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canRetrieve) {
|
if (canRetrieve) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Archery.Combat.RetrieveChance", retrieveChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", retrieveChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Archery.Combat.RetrieveChance", retrieveChance) + LocaleLoader.getString("Perks.lucky.bonus", retrieveChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Archery.Combat.RetrieveChance", retrieveChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,8 @@ import com.gmail.nossr50.util.Permissions;
|
|||||||
public class AxesCommand extends SkillCommand {
|
public class AxesCommand extends SkillCommand {
|
||||||
private String critChance;
|
private String critChance;
|
||||||
private String critChanceLucky;
|
private String critChanceLucky;
|
||||||
private String bonusDamage;
|
private float bonusDamage;
|
||||||
private String impactDamage;
|
private float impactDamage;
|
||||||
private String greaterImpactDamage;
|
|
||||||
private String skullSplitterLength;
|
private String skullSplitterLength;
|
||||||
private String skullSplitterLengthEndurance;
|
private String skullSplitterLengthEndurance;
|
||||||
|
|
||||||
@@ -27,25 +26,27 @@ public class AxesCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void dataCalculations() {
|
protected void dataCalculations() {
|
||||||
// IMPACT
|
// IMPACT
|
||||||
impactDamage = String.valueOf(1 + (skillValue / Axes.impactIncreaseLevel));
|
if (canImpact) {
|
||||||
greaterImpactDamage = String.valueOf(Axes.greaterImpactBonusDamage);
|
impactDamage = 1 + (skillValue / Axes.impactIncreaseLevel);
|
||||||
|
}
|
||||||
|
|
||||||
// SKULL SPLITTER
|
// SKULL SPLITTER
|
||||||
String[] skullSplitterStrings = calculateLengthDisplayValues();
|
if (canSkullSplitter) {
|
||||||
skullSplitterLength = skullSplitterStrings[0];
|
String[] skullSplitterStrings = calculateLengthDisplayValues();
|
||||||
skullSplitterLengthEndurance = skullSplitterStrings[1];
|
skullSplitterLength = skullSplitterStrings[0];
|
||||||
|
skullSplitterLengthEndurance = skullSplitterStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// CRITICAL STRIKES
|
// CRITICAL STRIKES
|
||||||
String[] criticalStrikeStrings = calculateAbilityDisplayValues(Axes.criticalHitMaxBonusLevel, Axes.criticalHitMaxChance);
|
if (canCritical) {
|
||||||
critChance = criticalStrikeStrings[0];
|
String[] criticalStrikeStrings = calculateAbilityDisplayValues(Axes.criticalHitMaxBonusLevel, Axes.criticalHitMaxChance);
|
||||||
critChanceLucky = criticalStrikeStrings[1];
|
critChance = criticalStrikeStrings[0];
|
||||||
|
critChanceLucky = criticalStrikeStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// AXE MASTERY
|
// AXE MASTERY
|
||||||
if (skillValue >= Axes.bonusDamageMaxBonusLevel) {
|
if (canBonusDamage) {
|
||||||
bonusDamage = String.valueOf(Axes.bonusDamageMaxBonus);
|
bonusDamage = Math.min(skillValue / (Axes.bonusDamageMaxBonusLevel / Axes.bonusDamageMaxBonus), Axes.bonusDamageMaxBonus);
|
||||||
}
|
|
||||||
else {
|
|
||||||
bonusDamage = String.valueOf(skillValue / (Axes.bonusDamageMaxBonusLevel / Axes.bonusDamageMaxBonus));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,25 +105,15 @@ public class AxesCommand extends SkillCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (canGreaterImpact) {
|
if (canGreaterImpact) {
|
||||||
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Axes.Ability.Bonus.4"), LocaleLoader.getString("Axes.Ability.Bonus.5", greaterImpactDamage)));
|
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Axes.Ability.Bonus.4"), LocaleLoader.getString("Axes.Ability.Bonus.5", Axes.greaterImpactBonusDamage)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canCritical) {
|
if (canCritical) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Axes.Combat.CritChance", critChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", critChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Axes.Combat.CritChance", critChance) + LocaleLoader.getString("Perks.lucky.bonus", critChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Axes.Combat.CritChance", critChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canSkullSplitter) {
|
if (canSkullSplitter) {
|
||||||
if (hasEndurance) {
|
player.sendMessage(LocaleLoader.getString("Axes.Combat.SS.Length", skullSplitterLength) + (hasEndurance ? LocaleLoader.getString("Perks.activationtime.bonus", skullSplitterLengthEndurance) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Axes.Combat.SS.Length", skullSplitterLength) + LocaleLoader.getString("Perks.activationtime.bonus", skullSplitterLengthEndurance));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Axes.Combat.SS.Length", skullSplitterLength));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,11 @@ public class ExcavationCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void dataCalculations() {
|
protected void dataCalculations() {
|
||||||
// GIGA DRILL BREAKER
|
// GIGA DRILL BREAKER
|
||||||
String gigaDrillStrings[] = calculateLengthDisplayValues();
|
if (canGigaDrill) {
|
||||||
gigaDrillBreakerLength = gigaDrillStrings[0];
|
String gigaDrillStrings[] = calculateLengthDisplayValues();
|
||||||
gigaDrillBreakerLengthEndurance = gigaDrillStrings[1];
|
gigaDrillBreakerLength = gigaDrillStrings[0];
|
||||||
|
gigaDrillBreakerLengthEndurance = gigaDrillStrings[1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -55,12 +57,7 @@ public class ExcavationCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void statsDisplay() {
|
protected void statsDisplay() {
|
||||||
if (canGigaDrill) {
|
if (canGigaDrill) {
|
||||||
if (hasEndurance) {
|
player.sendMessage(LocaleLoader.getString("Excavation.Effect.Length", gigaDrillBreakerLength) + (hasEndurance ? LocaleLoader.getString("Perks.activationtime.bonus", gigaDrillBreakerLengthEndurance) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Excavation.Effect.Length", gigaDrillBreakerLength) + LocaleLoader.getString("Perks.activationtime.bonus", gigaDrillBreakerLengthEndurance));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Excavation.Effect.Length", gigaDrillBreakerLength));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,12 +14,14 @@ public class FishingCommand extends SkillCommand {
|
|||||||
private String chanceRaining = "";
|
private String chanceRaining = "";
|
||||||
private String shakeChance;
|
private String shakeChance;
|
||||||
private String shakeChanceLucky;
|
private String shakeChanceLucky;
|
||||||
private String fishermansDietRank;
|
private int fishermansDietRank;
|
||||||
|
private String biteChance;
|
||||||
|
|
||||||
private boolean canTreasureHunt;
|
private boolean canTreasureHunt;
|
||||||
private boolean canMagicHunt;
|
private boolean canMagicHunt;
|
||||||
private boolean canShake;
|
private boolean canShake;
|
||||||
private boolean canFishermansDiet;
|
private boolean canFishermansDiet;
|
||||||
|
private boolean canMasterAngler;
|
||||||
|
|
||||||
public FishingCommand() {
|
public FishingCommand() {
|
||||||
super(SkillType.FISHING);
|
super(SkillType.FISHING);
|
||||||
@@ -27,27 +29,39 @@ public class FishingCommand extends SkillCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void dataCalculations() {
|
protected void dataCalculations() {
|
||||||
lootTier = UserManager.getPlayer(player).getFishingManager().getLootTier();
|
boolean isStorming = player.getWorld().hasStorm();
|
||||||
|
|
||||||
// TREASURE HUNTER
|
// TREASURE HUNTER
|
||||||
double enchantChance = lootTier * AdvancedConfig.getInstance().getFishingMagicMultiplier();
|
if (canTreasureHunt) {
|
||||||
|
lootTier = mcMMOPlayer.getFishingManager().getLootTier();
|
||||||
|
double enchantChance = lootTier * AdvancedConfig.getInstance().getFishingMagicMultiplier();
|
||||||
|
|
||||||
if (player.getWorld().hasStorm()) {
|
if (isStorming) {
|
||||||
chanceRaining = LocaleLoader.getString("Fishing.Chance.Raining");
|
chanceRaining = LocaleLoader.getString("Fishing.Chance.Raining");
|
||||||
enchantChance = enchantChance * 1.1D;
|
enchantChance *= 1.1D;
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] treasureHunterStrings = calculateAbilityDisplayValues(enchantChance);
|
||||||
|
magicChance = treasureHunterStrings[0];
|
||||||
|
magicChanceLucky = treasureHunterStrings[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
String[] treasureHunterStrings = calculateAbilityDisplayValues(enchantChance);
|
|
||||||
magicChance = treasureHunterStrings[0];
|
|
||||||
magicChanceLucky = treasureHunterStrings[1];
|
|
||||||
|
|
||||||
// SHAKE
|
// SHAKE
|
||||||
String[] shakeStrings = calculateAbilityDisplayValues(UserManager.getPlayer(player).getFishingManager().getShakeProbability());
|
if (canShake) {
|
||||||
shakeChance = shakeStrings[0];
|
String[] shakeStrings = calculateAbilityDisplayValues(UserManager.getPlayer(player).getFishingManager().getShakeProbability());
|
||||||
shakeChanceLucky = shakeStrings[1];
|
shakeChance = shakeStrings[0];
|
||||||
|
shakeChanceLucky = shakeStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// FISHERMAN'S DIET
|
// FISHERMAN'S DIET
|
||||||
fishermansDietRank = calculateRank(Fishing.fishermansDietMaxLevel, Fishing.fishermansDietRankLevel1);
|
if (canFishermansDiet) {
|
||||||
|
fishermansDietRank = calculateRank(Fishing.fishermansDietMaxLevel, Fishing.fishermansDietRankLevel1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// MASTER ANGLER
|
||||||
|
if (canMasterAngler) {
|
||||||
|
biteChance = calculateAbilityDisplayValues((skillValue / 10) / (isStorming ? 300 : 500))[0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -56,11 +70,12 @@ public class FishingCommand extends SkillCommand {
|
|||||||
canMagicHunt = Permissions.magicHunter(player);
|
canMagicHunt = Permissions.magicHunter(player);
|
||||||
canShake = Permissions.shake(player);
|
canShake = Permissions.shake(player);
|
||||||
canFishermansDiet = Permissions.fishermansDiet(player);
|
canFishermansDiet = Permissions.fishermansDiet(player);
|
||||||
|
canMasterAngler = Permissions.masterAngler(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean effectsHeaderPermissions() {
|
protected boolean effectsHeaderPermissions() {
|
||||||
return canTreasureHunt || canMagicHunt || canShake;
|
return canTreasureHunt || canMagicHunt || canShake || canMasterAngler || canFishermansDiet;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -82,39 +97,39 @@ public class FishingCommand extends SkillCommand {
|
|||||||
if (canFishermansDiet) {
|
if (canFishermansDiet) {
|
||||||
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Fishing.Effect.6"), LocaleLoader.getString("Fishing.Effect.7")));
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Fishing.Effect.6"), LocaleLoader.getString("Fishing.Effect.7")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (canMasterAngler) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Fishing.Effect.8"), LocaleLoader.getString("Fishing.Effect.9")));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean statsHeaderPermissions() {
|
protected boolean statsHeaderPermissions() {
|
||||||
return canTreasureHunt || canMagicHunt || canShake;
|
return canTreasureHunt || canMagicHunt || canShake || canMasterAngler || canFishermansDiet;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void statsDisplay() {
|
protected void statsDisplay() {
|
||||||
|
if (canMasterAngler) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Fishing.Ability.Chance", biteChance));
|
||||||
|
}
|
||||||
|
|
||||||
if (canTreasureHunt) {
|
if (canTreasureHunt) {
|
||||||
player.sendMessage(LocaleLoader.getString("Fishing.Ability.Rank", lootTier));
|
player.sendMessage(LocaleLoader.getString("Fishing.Ability.Rank", lootTier));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canMagicHunt) {
|
if (canMagicHunt) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Fishing.Enchant.Chance", magicChance) + chanceRaining + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", magicChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Fishing.Enchant.Chance", magicChance) + chanceRaining + LocaleLoader.getString("Perks.lucky.bonus", magicChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Fishing.Enchant.Chance", magicChance) + chanceRaining);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canShake) {
|
if (canShake) {
|
||||||
if (skillValue < AdvancedConfig.getInstance().getShakeUnlockLevel()) {
|
int unlockLevel = AdvancedConfig.getInstance().getShakeUnlockLevel();
|
||||||
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Fishing.Ability.Locked.0", AdvancedConfig.getInstance().getShakeUnlockLevel())));
|
|
||||||
|
if (skillValue < unlockLevel) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Fishing.Ability.Locked.0", unlockLevel)));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Fishing.Ability.Shake", shakeChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", shakeChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Fishing.Ability.Shake", shakeChance) + LocaleLoader.getString("Perks.lucky.bonus", shakeChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Fishing.Ability.Shake", shakeChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ public class HerbalismCommand extends SkillCommand {
|
|||||||
private String greenTerraLengthEndurance;
|
private String greenTerraLengthEndurance;
|
||||||
private String greenThumbChance;
|
private String greenThumbChance;
|
||||||
private String greenThumbChanceLucky;
|
private String greenThumbChanceLucky;
|
||||||
private String greenThumbStage;
|
private int greenThumbStage;
|
||||||
private String farmersDietRank;
|
private int farmersDietRank;
|
||||||
private String doubleDropChance;
|
private String doubleDropChance;
|
||||||
private String doubleDropChanceLucky;
|
private String doubleDropChanceLucky;
|
||||||
private String hylianLuckChance;
|
private String hylianLuckChance;
|
||||||
@@ -23,12 +23,11 @@ public class HerbalismCommand extends SkillCommand {
|
|||||||
|
|
||||||
private boolean hasHylianLuck;
|
private boolean hasHylianLuck;
|
||||||
private boolean canGreenTerra;
|
private boolean canGreenTerra;
|
||||||
private boolean canGreenThumbWheat;
|
private boolean canGreenThumbPlants;
|
||||||
private boolean canGreenThumbBlocks;
|
private boolean canGreenThumbBlocks;
|
||||||
private boolean canFarmersDiet;
|
private boolean canFarmersDiet;
|
||||||
private boolean canDoubleDrop;
|
private boolean canDoubleDrop;
|
||||||
private boolean canShroomThumb;
|
private boolean canShroomThumb;
|
||||||
private boolean doubleDropsDisabled;
|
|
||||||
|
|
||||||
public HerbalismCommand() {
|
public HerbalismCommand() {
|
||||||
super(SkillType.HERBALISM);
|
super(SkillType.HERBALISM);
|
||||||
@@ -37,51 +36,62 @@ public class HerbalismCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void dataCalculations() {
|
protected void dataCalculations() {
|
||||||
// GREEN TERRA
|
// GREEN TERRA
|
||||||
String[] greenTerraStrings = calculateLengthDisplayValues();
|
if (canGreenTerra) {
|
||||||
greenTerraLength = greenTerraStrings[0];
|
String[] greenTerraStrings = calculateLengthDisplayValues();
|
||||||
greenTerraLengthEndurance = greenTerraStrings[1];
|
greenTerraLength = greenTerraStrings[0];
|
||||||
|
greenTerraLengthEndurance = greenTerraStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// FARMERS DIET
|
// FARMERS DIET
|
||||||
farmersDietRank = calculateRank(Herbalism.farmersDietMaxLevel, Herbalism.farmersDietRankLevel1);
|
if (canFarmersDiet) {
|
||||||
|
farmersDietRank = calculateRank(Herbalism.farmersDietMaxLevel, Herbalism.farmersDietRankLevel1);
|
||||||
|
}
|
||||||
|
|
||||||
// GREEN THUMB
|
// GREEN THUMB
|
||||||
greenThumbStage = calculateRank(Herbalism.greenThumbStageMaxLevel, Herbalism.greenThumbStageChangeLevel);
|
if (canGreenThumbBlocks || canGreenThumbPlants) {
|
||||||
|
greenThumbStage = calculateRank(Herbalism.greenThumbStageMaxLevel, Herbalism.greenThumbStageChangeLevel);
|
||||||
|
|
||||||
String[] greenThumbStrings = calculateAbilityDisplayValues(Herbalism.greenThumbMaxLevel, Herbalism.greenThumbMaxChance);
|
String[] greenThumbStrings = calculateAbilityDisplayValues(Herbalism.greenThumbMaxLevel, Herbalism.greenThumbMaxChance);
|
||||||
greenThumbChance = greenThumbStrings[0];
|
greenThumbChance = greenThumbStrings[0];
|
||||||
greenThumbChanceLucky = greenThumbStrings[1];
|
greenThumbChanceLucky = greenThumbStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// DOUBLE DROPS
|
// DOUBLE DROPS
|
||||||
String[] doubleDropStrings = calculateAbilityDisplayValues(Herbalism.doubleDropsMaxLevel, Herbalism.doubleDropsMaxChance);
|
if (canDoubleDrop) {
|
||||||
doubleDropChance = doubleDropStrings[0];
|
String[] doubleDropStrings = calculateAbilityDisplayValues(Herbalism.doubleDropsMaxLevel, Herbalism.doubleDropsMaxChance);
|
||||||
doubleDropChanceLucky = doubleDropStrings[1];
|
doubleDropChance = doubleDropStrings[0];
|
||||||
|
doubleDropChanceLucky = doubleDropStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// HYLIAN LUCK
|
// HYLIAN LUCK
|
||||||
String[] hylianLuckStrings = calculateAbilityDisplayValues(Herbalism.hylianLuckMaxLevel, Herbalism.hylianLuckMaxChance);
|
if (hasHylianLuck) {
|
||||||
hylianLuckChance = hylianLuckStrings[0];
|
String[] hylianLuckStrings = calculateAbilityDisplayValues(Herbalism.hylianLuckMaxLevel, Herbalism.hylianLuckMaxChance);
|
||||||
hylianLuckChanceLucky = hylianLuckStrings[1];
|
hylianLuckChance = hylianLuckStrings[0];
|
||||||
|
hylianLuckChanceLucky = hylianLuckStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// SHROOM THUMB
|
// SHROOM THUMB
|
||||||
String[] shroomThumbStrings = calculateAbilityDisplayValues(Herbalism.shroomThumbMaxLevel, Herbalism.shroomThumbMaxChance);
|
if (canShroomThumb) {
|
||||||
shroomThumbChance = shroomThumbStrings[0];
|
String[] shroomThumbStrings = calculateAbilityDisplayValues(Herbalism.shroomThumbMaxLevel, Herbalism.shroomThumbMaxChance);
|
||||||
shroomThumbChanceLucky = shroomThumbStrings[1];
|
shroomThumbChance = shroomThumbStrings[0];
|
||||||
|
shroomThumbChanceLucky = shroomThumbStrings[1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void permissionsCheck() {
|
protected void permissionsCheck() {
|
||||||
hasHylianLuck = Permissions.hylianLuck(player);
|
hasHylianLuck = Permissions.hylianLuck(player);
|
||||||
canGreenTerra = Permissions.greenTerra(player);
|
canGreenTerra = Permissions.greenTerra(player);
|
||||||
canGreenThumbWheat = Permissions.greenThumbPlant(player, Material.CROPS); // TODO: This isn't really accurate - they could have perms for other crops but not wheat.
|
canGreenThumbPlants = Permissions.greenThumbPlant(player, Material.CROPS) || Permissions.greenThumbPlant(player, Material.CARROT) || Permissions.greenThumbPlant(player, Material.POTATO) || Permissions.greenThumbPlant(player, Material.NETHER_WARTS) || Permissions.greenThumbPlant(player, Material.COCOA);
|
||||||
canGreenThumbBlocks = (Permissions.greenThumbBlock(player, Material.DIRT) || Permissions.greenThumbBlock(player, Material.COBBLESTONE) || Permissions.greenThumbBlock(player, Material.COBBLE_WALL) || Permissions.greenThumbBlock(player, Material.SMOOTH_BRICK));
|
canGreenThumbBlocks = Permissions.greenThumbBlock(player, Material.DIRT) || Permissions.greenThumbBlock(player, Material.COBBLESTONE) || Permissions.greenThumbBlock(player, Material.COBBLE_WALL) || Permissions.greenThumbBlock(player, Material.SMOOTH_BRICK);
|
||||||
canFarmersDiet = Permissions.farmersDiet(player);
|
canFarmersDiet = Permissions.farmersDiet(player);
|
||||||
canDoubleDrop = Permissions.doubleDrops(player, skill);
|
canDoubleDrop = Permissions.doubleDrops(player, skill) && !skill.getDoubleDropsDisabled();
|
||||||
doubleDropsDisabled = skill.getDoubleDropsDisabled();
|
|
||||||
canShroomThumb = Permissions.shroomThumb(player);
|
canShroomThumb = Permissions.shroomThumb(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean effectsHeaderPermissions() {
|
protected boolean effectsHeaderPermissions() {
|
||||||
return canGreenTerra || (canDoubleDrop && !doubleDropsDisabled) || canFarmersDiet || canGreenThumbBlocks || canGreenThumbWheat || canShroomThumb;
|
return canGreenTerra || canDoubleDrop || canFarmersDiet || canGreenThumbBlocks || canGreenThumbPlants || canShroomThumb;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -92,7 +102,7 @@ public class HerbalismCommand extends SkillCommand {
|
|||||||
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Herbalism.Effect.0"), LocaleLoader.getString("Herbalism.Effect.1")));
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Herbalism.Effect.0"), LocaleLoader.getString("Herbalism.Effect.1")));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canGreenThumbWheat) {
|
if (canGreenThumbPlants) {
|
||||||
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Herbalism.Effect.2"), LocaleLoader.getString("Herbalism.Effect.3")));
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Herbalism.Effect.2"), LocaleLoader.getString("Herbalism.Effect.3")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,37 +122,27 @@ public class HerbalismCommand extends SkillCommand {
|
|||||||
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Herbalism.Effect.12"), LocaleLoader.getString("Herbalism.Effect.13")));
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Herbalism.Effect.12"), LocaleLoader.getString("Herbalism.Effect.13")));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canDoubleDrop && !doubleDropsDisabled) {
|
if (canDoubleDrop) {
|
||||||
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Herbalism.Effect.8"), LocaleLoader.getString("Herbalism.Effect.9")));
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Herbalism.Effect.8"), LocaleLoader.getString("Herbalism.Effect.9")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean statsHeaderPermissions() {
|
protected boolean statsHeaderPermissions() {
|
||||||
return canGreenTerra || (canDoubleDrop && !doubleDropsDisabled) || canFarmersDiet || canGreenThumbBlocks || canGreenThumbWheat || canShroomThumb;
|
return canGreenTerra || canDoubleDrop || canFarmersDiet || canGreenThumbBlocks || canGreenThumbPlants || canShroomThumb;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void statsDisplay() {
|
protected void statsDisplay() {
|
||||||
if (canGreenTerra) {
|
if (canGreenTerra) {
|
||||||
if (hasEndurance) {
|
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTe.Length", greenTerraLength) + (hasEndurance ? LocaleLoader.getString("Perks.activationtime.bonus", greenTerraLengthEndurance) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTe.Length", greenTerraLength) + LocaleLoader.getString("Perks.activationtime.bonus", greenTerraLengthEndurance));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTe.Length", greenTerraLength));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canGreenThumbBlocks || canGreenThumbWheat) {
|
if (canGreenThumbBlocks || canGreenThumbPlants) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Chance", greenThumbChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", greenThumbChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Chance", greenThumbChance) + LocaleLoader.getString("Perks.lucky.bonus", greenThumbChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Chance", greenThumbChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canGreenThumbWheat) {
|
if (canGreenThumbPlants) {
|
||||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Stage", greenThumbStage));
|
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Stage", greenThumbStage));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,30 +151,15 @@ public class HerbalismCommand extends SkillCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (hasHylianLuck) {
|
if (hasHylianLuck) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.HylianLuck", hylianLuckChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", hylianLuckChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.HylianLuck", hylianLuckChance) + LocaleLoader.getString("Perks.lucky.bonus", hylianLuckChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.HylianLuck", hylianLuckChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canShroomThumb) {
|
if (canShroomThumb) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.ShroomThumb.Chance", shroomThumbChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", shroomThumbChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.ShroomThumb.Chance", shroomThumbChance) + LocaleLoader.getString("Perks.lucky.bonus", shroomThumbChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.ShroomThumb.Chance", shroomThumbChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canDoubleDrop && !doubleDropsDisabled) {
|
if (canDoubleDrop) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.DoubleDropChance", doubleDropChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", doubleDropChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.DoubleDropChance", doubleDropChance) + LocaleLoader.getString("Perks.lucky.bonus", doubleDropChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.DoubleDropChance", doubleDropChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import com.gmail.nossr50.locale.LocaleLoader;
|
|||||||
import com.gmail.nossr50.skills.mining.Mining;
|
import com.gmail.nossr50.skills.mining.Mining;
|
||||||
import com.gmail.nossr50.skills.mining.MiningManager;
|
import com.gmail.nossr50.skills.mining.MiningManager;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
|
||||||
|
|
||||||
public class MiningCommand extends SkillCommand {
|
public class MiningCommand extends SkillCommand {
|
||||||
private String doubleDropChance;
|
private String doubleDropChance;
|
||||||
@@ -26,7 +25,6 @@ public class MiningCommand extends SkillCommand {
|
|||||||
private boolean canBlast;
|
private boolean canBlast;
|
||||||
private boolean canBiggerBombs;
|
private boolean canBiggerBombs;
|
||||||
private boolean canDemoExpert;
|
private boolean canDemoExpert;
|
||||||
private boolean doubleDropsDisabled;
|
|
||||||
|
|
||||||
public MiningCommand() {
|
public MiningCommand() {
|
||||||
super(SkillType.MINING);
|
super(SkillType.MINING);
|
||||||
@@ -35,23 +33,30 @@ public class MiningCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void dataCalculations() {
|
protected void dataCalculations() {
|
||||||
// SUPER BREAKER
|
// SUPER BREAKER
|
||||||
String[] superBreakerStrings = calculateLengthDisplayValues();
|
if (canSuperBreaker) {
|
||||||
superBreakerLength = superBreakerStrings[0];
|
String[] superBreakerStrings = calculateLengthDisplayValues();
|
||||||
superBreakerLengthEndurance = superBreakerStrings[1];
|
superBreakerLength = superBreakerStrings[0];
|
||||||
|
superBreakerLengthEndurance = superBreakerStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// DOUBLE DROPS
|
// DOUBLE DROPS
|
||||||
String[] doubleDropStrings = calculateAbilityDisplayValues(Mining.doubleDropsMaxLevel, Mining.doubleDropsMaxChance);
|
if (canDoubleDrop) {
|
||||||
doubleDropChance = doubleDropStrings[0];
|
String[] doubleDropStrings = calculateAbilityDisplayValues(Mining.doubleDropsMaxLevel, Mining.doubleDropsMaxChance);
|
||||||
doubleDropChanceLucky = doubleDropStrings[1];
|
doubleDropChance = doubleDropStrings[0];
|
||||||
|
doubleDropChanceLucky = doubleDropStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// BLAST MINING
|
// BLAST MINING
|
||||||
MiningManager miningManager = UserManager.getPlayer(player).getMiningManager();
|
if (canBlast || canDemoExpert || canBiggerBombs) {
|
||||||
blastMiningRank = miningManager.getBlastMiningTier();
|
MiningManager miningManager = mcMMOPlayer.getMiningManager();
|
||||||
bonusTNTDrops = miningManager.getDropMultiplier();
|
|
||||||
oreBonus = percent.format(miningManager.getOreBonus() / 30.0D); // Base received in TNT is 30%
|
blastMiningRank = miningManager.getBlastMiningTier();
|
||||||
debrisReduction = percent.format(miningManager.getDebrisReduction() / 30.0D); // Base received in TNT is 30%
|
bonusTNTDrops = miningManager.getDropMultiplier();
|
||||||
blastDamageDecrease = percent.format(miningManager.getBlastDamageModifier() / 100.0D);
|
oreBonus = percent.format(miningManager.getOreBonus() / 30.0D); // Base received in TNT is 30%
|
||||||
blastRadiusIncrease = miningManager.getBlastRadiusModifier();
|
debrisReduction = percent.format(miningManager.getDebrisReduction() / 30.0D); // Base received in TNT is 30%
|
||||||
|
blastDamageDecrease = percent.format(miningManager.getBlastDamageModifier() / 100.0D);
|
||||||
|
blastRadiusIncrease = miningManager.getBlastRadiusModifier();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -59,14 +64,13 @@ public class MiningCommand extends SkillCommand {
|
|||||||
canBiggerBombs = Permissions.biggerBombs(player);
|
canBiggerBombs = Permissions.biggerBombs(player);
|
||||||
canBlast = Permissions.remoteDetonation(player);
|
canBlast = Permissions.remoteDetonation(player);
|
||||||
canDemoExpert = Permissions.demolitionsExpertise(player);
|
canDemoExpert = Permissions.demolitionsExpertise(player);
|
||||||
canDoubleDrop = Permissions.doubleDrops(player, skill);
|
canDoubleDrop = Permissions.doubleDrops(player, skill) && !skill.getDoubleDropsDisabled();
|
||||||
canSuperBreaker = Permissions.superBreaker(player);
|
canSuperBreaker = Permissions.superBreaker(player);
|
||||||
doubleDropsDisabled = skill.getDoubleDropsDisabled();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean effectsHeaderPermissions() {
|
protected boolean effectsHeaderPermissions() {
|
||||||
return canBiggerBombs || canBlast || canDemoExpert || (canDoubleDrop && !doubleDropsDisabled) || canSuperBreaker;
|
return canBiggerBombs || canBlast || canDemoExpert || canDoubleDrop || canSuperBreaker;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -77,7 +81,7 @@ public class MiningCommand extends SkillCommand {
|
|||||||
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Mining.Effect.0"), LocaleLoader.getString("Mining.Effect.1")));
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Mining.Effect.0"), LocaleLoader.getString("Mining.Effect.1")));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canDoubleDrop && !doubleDropsDisabled) {
|
if (canDoubleDrop) {
|
||||||
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Mining.Effect.2"), LocaleLoader.getString("Mining.Effect.3")));
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Mining.Effect.2"), LocaleLoader.getString("Mining.Effect.3")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,32 +100,24 @@ public class MiningCommand extends SkillCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean statsHeaderPermissions() {
|
protected boolean statsHeaderPermissions() {
|
||||||
return canBiggerBombs || canBlast || canDemoExpert || (canDoubleDrop && !doubleDropsDisabled) || canSuperBreaker;
|
return canBiggerBombs || canBlast || canDemoExpert || canDoubleDrop || canSuperBreaker;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void statsDisplay() {
|
protected void statsDisplay() {
|
||||||
if (canDoubleDrop && !doubleDropsDisabled) {
|
if (canDoubleDrop) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Mining.Effect.DropChance", doubleDropChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", doubleDropChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Mining.Effect.DropChance", doubleDropChance) + LocaleLoader.getString("Perks.lucky.bonus", doubleDropChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Mining.Effect.DropChance", doubleDropChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canSuperBreaker) {
|
if (canSuperBreaker) {
|
||||||
if (hasEndurance) {
|
player.sendMessage(LocaleLoader.getString("Mining.Ability.Length", superBreakerLength) + (hasEndurance ? LocaleLoader.getString("Perks.activationtime.bonus", superBreakerLengthEndurance) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Mining.Ability.Length", superBreakerLength) + LocaleLoader.getString("Perks.activationtime.bonus", superBreakerLengthEndurance));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Mining.Ability.Length", superBreakerLength));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canBlast) {
|
if (canBlast) {
|
||||||
if (skillValue < AdvancedConfig.getInstance().getBlastMiningRank1()) {
|
int unlockLevel = AdvancedConfig.getInstance().getBlastMiningRank1();
|
||||||
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Mining.Ability.Locked.0", AdvancedConfig.getInstance().getBlastMiningRank1())));
|
|
||||||
|
if (skillValue < unlockLevel) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Mining.Ability.Locked.0", unlockLevel)));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
player.sendMessage(LocaleLoader.getString("Mining.Blast.Rank", blastMiningRank, LocaleLoader.getString("Mining.Blast.Effect", oreBonus, debrisReduction, bonusTNTDrops)));
|
player.sendMessage(LocaleLoader.getString("Mining.Blast.Rank", blastMiningRank, LocaleLoader.getString("Mining.Blast.Effect", oreBonus, debrisReduction, bonusTNTDrops)));
|
||||||
@@ -129,8 +125,10 @@ public class MiningCommand extends SkillCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (canBiggerBombs) {
|
if (canBiggerBombs) {
|
||||||
if (skillValue < AdvancedConfig.getInstance().getBlastMiningRank2()) {
|
int unlockLevel = AdvancedConfig.getInstance().getBlastMiningRank2();
|
||||||
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Mining.Ability.Locked.1", AdvancedConfig.getInstance().getBlastMiningRank2())));
|
|
||||||
|
if (skillValue < unlockLevel) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Mining.Ability.Locked.1", unlockLevel)));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
player.sendMessage(LocaleLoader.getString("Mining.Blast.Radius.Increase", blastRadiusIncrease));
|
player.sendMessage(LocaleLoader.getString("Mining.Blast.Radius.Increase", blastRadiusIncrease));
|
||||||
@@ -138,8 +136,10 @@ public class MiningCommand extends SkillCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (canDemoExpert) {
|
if (canDemoExpert) {
|
||||||
if (skillValue < AdvancedConfig.getInstance().getBlastMiningRank4()) {
|
int unlockLevel = AdvancedConfig.getInstance().getBlastMiningRank4();
|
||||||
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Mining.Ability.Locked.2", AdvancedConfig.getInstance().getBlastMiningRank4())));
|
|
||||||
|
if (skillValue < unlockLevel) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Mining.Ability.Locked.2", unlockLevel)));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
player.sendMessage(LocaleLoader.getString("Mining.Effect.Decrease", blastDamageDecrease));
|
player.sendMessage(LocaleLoader.getString("Mining.Effect.Decrease", blastDamageDecrease));
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ import org.bukkit.Material;
|
|||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.skills.repair.ArcaneForging;
|
||||||
import com.gmail.nossr50.skills.repair.Repair;
|
import com.gmail.nossr50.skills.repair.Repair;
|
||||||
|
import com.gmail.nossr50.skills.repair.RepairManager;
|
||||||
import com.gmail.nossr50.skills.repair.Repairable;
|
import com.gmail.nossr50.skills.repair.Repairable;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
|
||||||
|
|
||||||
public class RepairCommand extends SkillCommand {
|
public class RepairCommand extends SkillCommand {
|
||||||
private int arcaneForgingRank;
|
|
||||||
private String repairMasteryBonus;
|
private String repairMasteryBonus;
|
||||||
private String superRepairChance;
|
private String superRepairChance;
|
||||||
private String superRepairChanceLucky;
|
private String superRepairChanceLucky;
|
||||||
@@ -53,20 +53,16 @@ public class RepairCommand extends SkillCommand {
|
|||||||
stoneLevel = (stoneRepairable == null) ? 0 : stoneRepairable.getMinimumLevel();
|
stoneLevel = (stoneRepairable == null) ? 0 : stoneRepairable.getMinimumLevel();
|
||||||
|
|
||||||
// REPAIR MASTERY
|
// REPAIR MASTERY
|
||||||
if (skillValue >= Repair.repairMasteryMaxBonusLevel) {
|
if (canMasterRepair) {
|
||||||
repairMasteryBonus = percent.format(Repair.repairMasteryMaxBonus / 100D);
|
repairMasteryBonus = percent.format(Math.min(((Repair.repairMasteryMaxBonus / Repair.repairMasteryMaxBonusLevel) * skillValue), Repair.repairMasteryMaxBonus) / 100D);
|
||||||
}
|
|
||||||
else {
|
|
||||||
repairMasteryBonus = percent.format(((Repair.repairMasteryMaxBonus / Repair.repairMasteryMaxBonusLevel) * skillValue) / 100D);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SUPER REPAIR
|
// SUPER REPAIR
|
||||||
String[] superRepairStrings = calculateAbilityDisplayValues(Repair.superRepairMaxBonusLevel, Repair.superRepairMaxChance);
|
if (canSuperRepair) {
|
||||||
superRepairChance = superRepairStrings[0];
|
String[] superRepairStrings = calculateAbilityDisplayValues(Repair.superRepairMaxBonusLevel, Repair.superRepairMaxChance);
|
||||||
superRepairChanceLucky = superRepairStrings[1];
|
superRepairChance = superRepairStrings[0];
|
||||||
|
superRepairChanceLucky = superRepairStrings[1];
|
||||||
// ARCANE FORGING
|
}
|
||||||
arcaneForgingRank = UserManager.getPlayer(player).getRepairManager().getArcaneForgingRank();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -143,23 +139,20 @@ public class RepairCommand extends SkillCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (canSuperRepair) {
|
if (canSuperRepair) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Repair.Skills.Super.Chance", superRepairChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", superRepairChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Repair.Skills.Super.Chance", superRepairChance) + LocaleLoader.getString("Perks.lucky.bonus", superRepairChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Repair.Skills.Super.Chance", superRepairChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canArcaneForge) {
|
if (canArcaneForge) {
|
||||||
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Rank", arcaneForgingRank));
|
RepairManager repairManager = mcMMOPlayer.getRepairManager();
|
||||||
|
|
||||||
if (Repair.arcaneForgingEnchantLoss) {
|
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Rank", repairManager.getArcaneForgingRank()));
|
||||||
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Chance.Success", (arcaneBypass ? 100 : UserManager.getPlayer(player).getRepairManager().getKeepEnchantChance())));
|
|
||||||
|
if (ArcaneForging.arcaneForgingEnchantLoss) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Chance.Success", (arcaneBypass ? 100 : repairManager.getKeepEnchantChance())));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Repair.arcaneForgingDowngrades) {
|
if (ArcaneForging.arcaneForgingDowngrades) {
|
||||||
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Chance.Downgrade", (arcaneBypass ? 0 : UserManager.getPlayer(player).getRepairManager().getDowngradeEnchantChance())));
|
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Chance.Downgrade", (arcaneBypass ? 0 : repairManager.getDowngradeEnchantChance())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,17 @@
|
|||||||
package com.gmail.nossr50.commands.skills;
|
package com.gmail.nossr50.commands.skills;
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
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.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
@@ -20,12 +23,16 @@ import com.gmail.nossr50.util.player.UserManager;
|
|||||||
import com.gmail.nossr50.util.skills.PerksUtils;
|
import com.gmail.nossr50.util.skills.PerksUtils;
|
||||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||||
|
|
||||||
public abstract class SkillCommand implements CommandExecutor {
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
|
public abstract class SkillCommand implements TabExecutor {
|
||||||
protected SkillType skill;
|
protected SkillType skill;
|
||||||
private String skillString;
|
protected String skillName;
|
||||||
|
|
||||||
protected Player player;
|
protected Player player;
|
||||||
protected PlayerProfile profile;
|
protected PlayerProfile profile;
|
||||||
|
protected McMMOPlayer mcMMOPlayer;
|
||||||
|
|
||||||
protected float skillValue;
|
protected float skillValue;
|
||||||
protected boolean isLucky;
|
protected boolean isLucky;
|
||||||
protected boolean hasEndurance;
|
protected boolean hasEndurance;
|
||||||
@@ -33,9 +40,12 @@ public abstract class SkillCommand implements CommandExecutor {
|
|||||||
protected DecimalFormat percent = new DecimalFormat("##0.00%");
|
protected DecimalFormat percent = new DecimalFormat("##0.00%");
|
||||||
protected DecimalFormat decimal = new DecimalFormat("##0.00");
|
protected DecimalFormat decimal = new DecimalFormat("##0.00");
|
||||||
|
|
||||||
|
private CommandExecutor skillGuideCommand;
|
||||||
|
|
||||||
public SkillCommand(SkillType skill) {
|
public SkillCommand(SkillType skill) {
|
||||||
this.skill = skill;
|
this.skill = skill;
|
||||||
this.skillString = StringUtils.getCapitalized(skill.toString());
|
skillName = SkillUtils.getSkillName(skill);
|
||||||
|
skillGuideCommand = new SkillGuideCommand(skill);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -44,97 +54,83 @@ public abstract class SkillCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
player = (Player) sender;
|
mcMMOPlayer = UserManager.getPlayer(sender.getName());
|
||||||
profile = UserManager.getPlayer(player).getProfile();
|
player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
if (profile == null) {
|
switch (args.length) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
|
case 0:
|
||||||
return true;
|
profile = mcMMOPlayer.getProfile();
|
||||||
|
|
||||||
|
skillValue = profile.getSkillLevel(skill);
|
||||||
|
isLucky = Permissions.lucky(sender, skill);
|
||||||
|
hasEndurance = (PerksUtils.handleActivationPerks(player, 0, 0) != 0);
|
||||||
|
|
||||||
|
permissionsCheck();
|
||||||
|
dataCalculations();
|
||||||
|
|
||||||
|
if (!skill.isChildSkill()) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Skills.Header", skillName));
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.XPGain", LocaleLoader.getString("Commands.XPGain." + StringUtils.getCapitalized(skill.toString()))));
|
||||||
|
player.sendMessage(LocaleLoader.getString("Effects.Level", (int) skillValue, profile.getSkillXpLevel(skill), profile.getXpToLevel(skill)));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Skills.Header", skillName + " " + LocaleLoader.getString("Skills.Child")));
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.XPGain", LocaleLoader.getString("Commands.XPGain.Child")));
|
||||||
|
player.sendMessage(LocaleLoader.getString("Effects.Child", (int) skillValue));
|
||||||
|
|
||||||
|
player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Skills.Parents")));
|
||||||
|
Set<SkillType> parents = FamilyTree.getParents(skill);
|
||||||
|
|
||||||
|
for (SkillType parent : parents) {
|
||||||
|
player.sendMessage(SkillUtils.getSkillName(parent) + " - " + LocaleLoader.getString("Effects.Level", profile.getSkillLevel(parent), profile.getSkillXpLevel(parent), profile.getXpToLevel(parent)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (effectsHeaderPermissions()) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Effects.Effects")));
|
||||||
|
}
|
||||||
|
|
||||||
|
effectsDisplay();
|
||||||
|
|
||||||
|
if (statsHeaderPermissions()) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Commands.Stats.Self")));
|
||||||
|
}
|
||||||
|
|
||||||
|
statsDisplay();
|
||||||
|
|
||||||
|
player.sendMessage(LocaleLoader.getString("Guides.Available", skillName, skillName.toLowerCase()));
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return skillGuideCommand.onCommand(sender, command, label, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
skillValue = profile.getSkillLevel(skill);
|
|
||||||
isLucky = Permissions.lucky(sender, skill);
|
|
||||||
hasEndurance = (Permissions.twelveSecondActivationBoost(sender) || Permissions.eightSecondActivationBoost(sender) || Permissions.fourSecondActivationBoost(sender));
|
|
||||||
|
|
||||||
dataCalculations();
|
|
||||||
permissionsCheck();
|
|
||||||
|
|
||||||
if (!skill.isChildSkill()) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Skills.Header", SkillUtils.getSkillName(skill)));
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.XPGain", LocaleLoader.getString("Commands.XPGain." + skillString)));
|
|
||||||
player.sendMessage(LocaleLoader.getString("Effects.Level", profile.getSkillLevel(skill), profile.getSkillXpLevel(skill), profile.getXpToLevel(skill)));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Skills.Header", SkillUtils.getSkillName(skill) + " " + LocaleLoader.getString("Skills.Child")));
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.XPGain", LocaleLoader.getString("Commands.XPGain.Child")));
|
|
||||||
player.sendMessage(LocaleLoader.getString("Effects.Child", profile.getSkillLevel(skill)));
|
|
||||||
|
|
||||||
player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Skills.Parents")));
|
|
||||||
Set<SkillType> parents = FamilyTree.getParents(skill);
|
|
||||||
|
|
||||||
for (SkillType parent : parents) {
|
|
||||||
player.sendMessage(SkillUtils.getSkillName(parent) + " - " + LocaleLoader.getString("Effects.Level", profile.getSkillLevel(parent), profile.getSkillXpLevel(parent), profile.getXpToLevel(parent)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (effectsHeaderPermissions()) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Effects.Effects")));
|
|
||||||
}
|
|
||||||
|
|
||||||
effectsDisplay();
|
|
||||||
|
|
||||||
if (statsHeaderPermissions()) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Commands.Stats.Self")));
|
|
||||||
}
|
|
||||||
|
|
||||||
statsDisplay();
|
|
||||||
|
|
||||||
return SkillGuideCommand.grabGuidePageForSkill(skill, player, args);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String calculateRank(int maxLevel, int rankChangeLevel) {
|
@Override
|
||||||
if (skillValue >= maxLevel) {
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
return String.valueOf(maxLevel / rankChangeLevel);
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
return ImmutableList.of("?");
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return String.valueOf((int) (skillValue / rankChangeLevel));
|
protected int calculateRank(int maxLevel, int rankChangeLevel) {
|
||||||
|
return Math.min((int) skillValue, maxLevel) / rankChangeLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String[] calculateAbilityDisplayValues(double chance) {
|
protected String[] calculateAbilityDisplayValues(double chance) {
|
||||||
if (isLucky) {
|
String[] displayValues = new String[2];
|
||||||
double luckyChance = chance * 1.3333D;
|
|
||||||
|
|
||||||
if (luckyChance >= 100D) {
|
displayValues[0] = percent.format(Math.min(chance, 100.0D) / 100.0D);
|
||||||
return new String[] { percent.format(chance / 100.0D), percent.format(1.0D) };
|
displayValues[1] = isLucky ? percent.format(Math.min(chance * 1.3333D, 100.0D) / 100.0D) : null;
|
||||||
}
|
|
||||||
|
|
||||||
return new String[] { percent.format(chance / 100.0D), percent.format(luckyChance / 100.0D) };
|
return displayValues;
|
||||||
}
|
|
||||||
|
|
||||||
return new String[] { percent.format(chance / 100.0D), null };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String[] calculateAbilityDisplayValues(int maxBonusLevel, double maxChance) {
|
protected String[] calculateAbilityDisplayValues(int maxBonusLevel, double maxChance) {
|
||||||
double abilityChance;
|
return calculateAbilityDisplayValues((maxChance / maxBonusLevel) * Math.min(skillValue, maxBonusLevel));
|
||||||
|
|
||||||
if (skillValue >= maxBonusLevel) {
|
|
||||||
abilityChance = maxChance;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
abilityChance = (maxChance / maxBonusLevel) * skillValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isLucky) {
|
|
||||||
double luckyChance = abilityChance * 1.3333D;
|
|
||||||
|
|
||||||
if (luckyChance >= 100D) {
|
|
||||||
return new String[] { percent.format(abilityChance / 100.0D), percent.format(1.0D) };
|
|
||||||
}
|
|
||||||
|
|
||||||
return new String[] { percent.format(abilityChance / 100.0D), percent.format(luckyChance / 100.0D) };
|
|
||||||
}
|
|
||||||
|
|
||||||
return new String[] { percent.format(abilityChance / 100.0D), null };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String[] calculateLengthDisplayValues() {
|
protected String[] calculateLengthDisplayValues() {
|
||||||
@@ -143,9 +139,7 @@ public abstract class SkillCommand implements CommandExecutor {
|
|||||||
int enduranceLength = PerksUtils.handleActivationPerks(player, length, maxLength);
|
int enduranceLength = PerksUtils.handleActivationPerks(player, length, maxLength);
|
||||||
|
|
||||||
if (maxLength != 0) {
|
if (maxLength != 0) {
|
||||||
if (length > maxLength) {
|
length = Math.min(length, maxLength);
|
||||||
length = maxLength;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new String[] { String.valueOf(length), String.valueOf(enduranceLength) };
|
return new String[] { String.valueOf(length), String.valueOf(enduranceLength) };
|
||||||
@@ -154,7 +148,7 @@ public abstract class SkillCommand implements CommandExecutor {
|
|||||||
protected void luckyEffectsDisplay() {
|
protected void luckyEffectsDisplay() {
|
||||||
if (isLucky) {
|
if (isLucky) {
|
||||||
String perkPrefix = LocaleLoader.getString("MOTD.PerksPrefix");
|
String perkPrefix = LocaleLoader.getString("MOTD.PerksPrefix");
|
||||||
player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.lucky.name"), LocaleLoader.getString("Perks.lucky.desc", SkillUtils.getSkillName(skill))));
|
player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.lucky.name"), LocaleLoader.getString("Perks.lucky.desc", skillName)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,106 +2,89 @@ package com.gmail.nossr50.commands.skills;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||||
|
|
||||||
public final class SkillGuideCommand {
|
public class SkillGuideCommand implements CommandExecutor {
|
||||||
private SkillGuideCommand() {}
|
private String header;
|
||||||
|
private String[] guide;
|
||||||
|
|
||||||
public static int getTotalPageNumber(String address) {
|
private String invalidPage;
|
||||||
String[] addressSplit = LocaleLoader.getString(address).split("\n");
|
|
||||||
|
|
||||||
if (addressSplit.length <= 8) {
|
public SkillGuideCommand(SkillType skillType) {
|
||||||
return 1;
|
header = LocaleLoader.getString("Guides.Header", SkillUtils.getSkillName(skillType));
|
||||||
}
|
guide = LocaleLoader.getString("Guides." + StringUtils.getCapitalized(skillType.toString())).split("\n");
|
||||||
|
|
||||||
return (addressSplit.length / 8) + 1;
|
invalidPage = LocaleLoader.getString("Guides.Page.Invalid");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ArrayList<String> grabPageContents(String header, String address, int pagenum) {
|
@Override
|
||||||
int pageIndexStart = 0;
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
|
||||||
// Determine what string to start at
|
|
||||||
if (pagenum > 1) {
|
|
||||||
pageIndexStart = 8 * (pagenum - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
ArrayList<String> allStrings = new ArrayList<String>();
|
|
||||||
String split[] = LocaleLoader.getString(address).split("\n");
|
|
||||||
|
|
||||||
allStrings.add(LocaleLoader.getString("Guides.Header", header));
|
|
||||||
|
|
||||||
// Add targeted strings
|
|
||||||
while (allStrings.size() < 9) {
|
|
||||||
if (pageIndexStart + allStrings.size() > split.length) {
|
|
||||||
allStrings.add("");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
allStrings.add(split[pageIndexStart + allStrings.size() - 1]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
allStrings.add("Page " + pagenum + " of " + getTotalPageNumber(address));
|
|
||||||
return allStrings;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void clearChat(Player player) {
|
|
||||||
player.sendMessage("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); // Dear god why?
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean grabGuidePageForSkill(SkillType skilltype, Player player, String[] args) {
|
|
||||||
String skillName = skilltype.toString();
|
|
||||||
String capitalized = StringUtils.getCapitalized(skillName);
|
|
||||||
String localized = SkillUtils.getSkillName(skilltype);
|
|
||||||
player.sendMessage(LocaleLoader.getString("Guides.Available", localized, localized.toLowerCase()));
|
|
||||||
|
|
||||||
String address = "Guides." + capitalized;
|
|
||||||
|
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 0:
|
|
||||||
// We have to specify this, otherwise we get the usage string every time we call /skillname...
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
if (!args[0].equals("?")) {
|
if (!args[0].equals("?")) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillGuideCommand.clearChat(player);
|
sendGuide(sender, 1);
|
||||||
|
|
||||||
for (String target : SkillGuideCommand.grabPageContents(localized, address, 1)) {
|
|
||||||
player.sendMessage(target);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
int totalPages = SkillGuideCommand.getTotalPageNumber(address);
|
int totalPages = getTotalPageNumber();
|
||||||
|
|
||||||
if (!StringUtils.isInt(args[1])) {
|
if (!StringUtils.isInt(args[1])) {
|
||||||
player.sendMessage(LocaleLoader.getString("Guides.Page.Invalid"));
|
sender.sendMessage(invalidPage);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Integer.parseInt(args[1]) > totalPages) {
|
int pageNumber = Integer.parseInt(args[1]);
|
||||||
player.sendMessage(LocaleLoader.getString("Guides.Page.OutOfRange", totalPages));
|
|
||||||
|
if (pageNumber > totalPages || pageNumber <= 0) {
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Guides.Page.OutOfRange", totalPages));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillGuideCommand.clearChat(player);
|
sendGuide(sender, pageNumber);
|
||||||
|
|
||||||
for (String target : SkillGuideCommand.grabPageContents(localized, address, Integer.parseInt(args[1]))) {
|
|
||||||
player.sendMessage(target);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int getTotalPageNumber() {
|
||||||
|
return (int) Math.ceil(guide.length / 8.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendGuide(CommandSender sender, int pageNumber) {
|
||||||
|
for (String target : grabPageContents(pageNumber)) {
|
||||||
|
sender.sendMessage(target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ArrayList<String> grabPageContents(int pagenum) {
|
||||||
|
int pageIndexStart = 8 * (pagenum - 1); // Determine what string to start at
|
||||||
|
ArrayList<String> allStrings = new ArrayList<String>();
|
||||||
|
|
||||||
|
allStrings.add(header);
|
||||||
|
|
||||||
|
// Add targeted strings
|
||||||
|
while (allStrings.size() < 9) {
|
||||||
|
if (pageIndexStart + allStrings.size() > guide.length) {
|
||||||
|
allStrings.add("");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
allStrings.add(guide[pageIndexStart + (allStrings.size() - 1)]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
allStrings.add("Page " + pagenum + " of " + getTotalPageNumber());
|
||||||
|
return allStrings;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import com.gmail.nossr50.datatypes.skills.SkillType;
|
|||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.skills.smelting.Smelting;
|
import com.gmail.nossr50.skills.smelting.Smelting;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
|
||||||
|
|
||||||
public class SmeltingCommand extends SkillCommand {
|
public class SmeltingCommand extends SkillCommand {
|
||||||
private String burnTimeModifier;
|
private String burnTimeModifier;
|
||||||
@@ -14,8 +13,6 @@ public class SmeltingCommand extends SkillCommand {
|
|||||||
private String fluxMiningChance;
|
private String fluxMiningChance;
|
||||||
private String fluxMiningChanceLucky;
|
private String fluxMiningChanceLucky;
|
||||||
|
|
||||||
private int vanillaXPModifier;
|
|
||||||
|
|
||||||
private boolean canFuelEfficiency;
|
private boolean canFuelEfficiency;
|
||||||
private boolean canSecondSmelt;
|
private boolean canSecondSmelt;
|
||||||
private boolean canFluxMine;
|
private boolean canFluxMine;
|
||||||
@@ -28,20 +25,23 @@ public class SmeltingCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void dataCalculations() {
|
protected void dataCalculations() {
|
||||||
// FUEL EFFICIENCY
|
// FUEL EFFICIENCY
|
||||||
burnTimeModifier = decimal.format(1 + ((skillValue / Smelting.burnModifierMaxLevel) * Smelting.burnTimeMultiplier));
|
if (canFuelEfficiency) {
|
||||||
|
burnTimeModifier = decimal.format(1 + ((skillValue / Smelting.burnModifierMaxLevel) * Smelting.burnTimeMultiplier));
|
||||||
|
}
|
||||||
|
|
||||||
// SECOND SMELT
|
// SECOND SMELT
|
||||||
String[] secondSmeltStrings = calculateAbilityDisplayValues(Smelting.secondSmeltMaxLevel, Smelting.secondSmeltMaxChance);
|
if (canSecondSmelt) {
|
||||||
secondSmeltChance = secondSmeltStrings[0];
|
String[] secondSmeltStrings = calculateAbilityDisplayValues(Smelting.secondSmeltMaxLevel, Smelting.secondSmeltMaxChance);
|
||||||
secondSmeltChanceLucky = secondSmeltStrings[1];
|
secondSmeltChance = secondSmeltStrings[0];
|
||||||
|
secondSmeltChanceLucky = secondSmeltStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// FLUX MINING
|
// FLUX MINING
|
||||||
String[] fluxMiningStrings = calculateAbilityDisplayValues(Smelting.fluxMiningChance);
|
if (canFluxMine) {
|
||||||
fluxMiningChance = fluxMiningStrings[0];
|
String[] fluxMiningStrings = calculateAbilityDisplayValues(Smelting.fluxMiningChance);
|
||||||
fluxMiningChanceLucky = fluxMiningStrings[1];
|
fluxMiningChance = fluxMiningStrings[0];
|
||||||
|
fluxMiningChanceLucky = fluxMiningStrings[1];
|
||||||
// VANILLA XP BOOST
|
}
|
||||||
vanillaXPModifier = UserManager.getPlayer(player).getSmeltingManager().getVanillaXpMultiplier();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -90,20 +90,17 @@ public class SmeltingCommand extends SkillCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (canSecondSmelt) {
|
if (canSecondSmelt) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Smelting.Ability.SecondSmelt", secondSmeltChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", secondSmeltChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Smelting.Ability.SecondSmelt", secondSmeltChance) + LocaleLoader.getString("Perks.lucky.bonus", secondSmeltChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Smelting.Ability.SecondSmelt", secondSmeltChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canVanillaXPBoost) {
|
if (canVanillaXPBoost) {
|
||||||
if (skillValue < AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank1Level()) {
|
int unlockLevel = AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank1Level();
|
||||||
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Smelting.Ability.Locked.0", AdvancedConfig.getInstance().getSmeltingVanillaXPBoostRank1Level())));
|
|
||||||
|
if (skillValue < unlockLevel) {
|
||||||
|
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Smelting.Ability.Locked.0", unlockLevel)));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
player.sendMessage(LocaleLoader.getString("Smelting.Ability.VanillaXPBoost", vanillaXPModifier));
|
player.sendMessage(LocaleLoader.getString("Smelting.Ability.VanillaXPBoost", mcMMOPlayer.getSmeltingManager().getVanillaXpMultiplier()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,11 +108,8 @@ public class SmeltingCommand extends SkillCommand {
|
|||||||
if (skillValue < Smelting.fluxMiningUnlockLevel) {
|
if (skillValue < Smelting.fluxMiningUnlockLevel) {
|
||||||
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Smelting.Ability.Locked.1", Smelting.fluxMiningUnlockLevel)));
|
player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Smelting.Ability.Locked.1", Smelting.fluxMiningUnlockLevel)));
|
||||||
}
|
}
|
||||||
else if (isLucky) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Smelting.Ability.FluxMining", fluxMiningChance) + LocaleLoader.getString("Perks.lucky.bonus", fluxMiningChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
player.sendMessage(LocaleLoader.getString("Smelting.Ability.FluxMining", fluxMiningChance));
|
player.sendMessage(LocaleLoader.getString("Smelting.Ability.FluxMining", fluxMiningChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", fluxMiningChanceLucky) : ""));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import com.gmail.nossr50.util.Permissions;
|
|||||||
public class SwordsCommand extends SkillCommand {
|
public class SwordsCommand extends SkillCommand {
|
||||||
private String counterAttackChance;
|
private String counterAttackChance;
|
||||||
private String counterAttackChanceLucky;
|
private String counterAttackChanceLucky;
|
||||||
private String bleedLength;
|
private int bleedLength;
|
||||||
private String bleedChance;
|
private String bleedChance;
|
||||||
private String bleedChanceLucky;
|
private String bleedChanceLucky;
|
||||||
private String serratedStrikesLength;
|
private String serratedStrikesLength;
|
||||||
@@ -25,26 +25,27 @@ public class SwordsCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void dataCalculations() {
|
protected void dataCalculations() {
|
||||||
// SERRATED STRIKES
|
// SERRATED STRIKES
|
||||||
String[] serratedStrikesStrings = calculateLengthDisplayValues();
|
if (canSerratedStrike) {
|
||||||
serratedStrikesLength = serratedStrikesStrings[0];
|
String[] serratedStrikesStrings = calculateLengthDisplayValues();
|
||||||
serratedStrikesLengthEndurance = serratedStrikesStrings[1];
|
serratedStrikesLength = serratedStrikesStrings[0];
|
||||||
|
serratedStrikesLengthEndurance = serratedStrikesStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// BLEED
|
// BLEED
|
||||||
if (skillValue >= Swords.bleedMaxBonusLevel) {
|
if (canBleed) {
|
||||||
bleedLength = String.valueOf(Swords.bleedMaxTicks);
|
bleedLength = (skillValue >= Swords.bleedMaxBonusLevel) ? Swords.bleedMaxTicks : Swords.bleedBaseTicks;
|
||||||
}
|
|
||||||
else {
|
|
||||||
bleedLength = String.valueOf(Swords.bleedBaseTicks);
|
|
||||||
}
|
|
||||||
|
|
||||||
String[] bleedStrings = calculateAbilityDisplayValues(Swords.bleedMaxBonusLevel, Swords.bleedMaxChance);
|
String[] bleedStrings = calculateAbilityDisplayValues(Swords.bleedMaxBonusLevel, Swords.bleedMaxChance);
|
||||||
bleedChance = bleedStrings[0];
|
bleedChance = bleedStrings[0];
|
||||||
bleedChanceLucky = bleedStrings[1];
|
bleedChanceLucky = bleedStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// COUNTER ATTACK
|
// COUNTER ATTACK
|
||||||
String[] counterAttackStrings = calculateAbilityDisplayValues(Swords.counterAttackMaxBonusLevel, Swords.counterAttackMaxChance);
|
if (canCounter) {
|
||||||
counterAttackChance = counterAttackStrings[0];
|
String[] counterAttackStrings = calculateAbilityDisplayValues(Swords.counterAttackMaxBonusLevel, Swords.counterAttackMaxChance);
|
||||||
counterAttackChanceLucky = counterAttackStrings[1];
|
counterAttackChance = counterAttackStrings[0];
|
||||||
|
counterAttackChanceLucky = counterAttackStrings[1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -85,33 +86,17 @@ public class SwordsCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void statsDisplay() {
|
protected void statsDisplay() {
|
||||||
if (canCounter) {
|
if (canCounter) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Swords.Combat.Counter.Chance", counterAttackChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", counterAttackChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Swords.Combat.Counter.Chance", counterAttackChance) + LocaleLoader.getString("Perks.lucky.bonus", counterAttackChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Swords.Combat.Counter.Chance", counterAttackChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canBleed) {
|
if (canBleed) {
|
||||||
player.sendMessage(LocaleLoader.getString("Swords.Combat.Bleed.Length", bleedLength));
|
player.sendMessage(LocaleLoader.getString("Swords.Combat.Bleed.Length", bleedLength));
|
||||||
player.sendMessage(LocaleLoader.getString("Swords.Combat.Bleed.Note"));
|
player.sendMessage(LocaleLoader.getString("Swords.Combat.Bleed.Note"));
|
||||||
|
player.sendMessage(LocaleLoader.getString("Swords.Combat.Bleed.Chance", bleedChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", bleedChanceLucky) : ""));
|
||||||
if (isLucky) {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Swords.Combat.Bleed.Chance", bleedChance) + LocaleLoader.getString("Perks.lucky.bonus", bleedChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Swords.Combat.Bleed.Chance", bleedChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canSerratedStrike) {
|
if (canSerratedStrike) {
|
||||||
if (hasEndurance) {
|
player.sendMessage(LocaleLoader.getString("Swords.SS.Length", serratedStrikesLength) + (hasEndurance ? LocaleLoader.getString("Perks.activationtime.bonus", serratedStrikesLengthEndurance) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Swords.SS.Length", serratedStrikesLength) + LocaleLoader.getString("Perks.activationtime.bonus", serratedStrikesLengthEndurance));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Swords.SS.Length", serratedStrikesLength));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,9 +26,11 @@ public class TamingCommand extends SkillCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void dataCalculations() {
|
protected void dataCalculations() {
|
||||||
String[] goreStrings = calculateAbilityDisplayValues(Taming.goreMaxBonusLevel, Taming.goreMaxChance);
|
if (canGore) {
|
||||||
goreChance = goreStrings[0];
|
String[] goreStrings = calculateAbilityDisplayValues(Taming.goreMaxBonusLevel, Taming.goreMaxChance);
|
||||||
goreChanceLucky = goreStrings[1];
|
goreChance = goreStrings[0];
|
||||||
|
goreChanceLucky = goreStrings[1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -154,12 +156,7 @@ public class TamingCommand extends SkillCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (canGore) {
|
if (canGore) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Taming.Combat.Chance.Gore", goreChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", goreChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Taming.Combat.Chance.Gore", goreChance) + LocaleLoader.getString("Perks.lucky.bonus", goreChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Taming.Combat.Chance.Gore", goreChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ public class UnarmedCommand extends SkillCommand {
|
|||||||
private String disarmChanceLucky;
|
private String disarmChanceLucky;
|
||||||
private String ironGripChance;
|
private String ironGripChance;
|
||||||
private String ironGripChanceLucky;
|
private String ironGripChanceLucky;
|
||||||
private String ironArmBonus;
|
private int ironArmBonus;
|
||||||
|
|
||||||
private boolean canBerserk;
|
private boolean canBerserk;
|
||||||
private boolean canDisarm;
|
private boolean canDisarm;
|
||||||
@@ -29,32 +29,37 @@ public class UnarmedCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void dataCalculations() {
|
protected void dataCalculations() {
|
||||||
// BERSERK
|
// BERSERK
|
||||||
String[] berserkStrings = calculateLengthDisplayValues();
|
if (canBerserk) {
|
||||||
berserkLength = berserkStrings[0];
|
String[] berserkStrings = calculateLengthDisplayValues();
|
||||||
berserkLengthEndurance = berserkStrings[1];
|
berserkLength = berserkStrings[0];
|
||||||
|
berserkLengthEndurance = berserkStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// DISARM
|
// DISARM
|
||||||
String[] disarmStrings = calculateAbilityDisplayValues(Unarmed.disarmMaxBonusLevel, Unarmed.disarmMaxChance);
|
if (canDisarm) {
|
||||||
disarmChance = disarmStrings[0];
|
String[] disarmStrings = calculateAbilityDisplayValues(Unarmed.disarmMaxBonusLevel, Unarmed.disarmMaxChance);
|
||||||
disarmChanceLucky = disarmStrings[1];
|
disarmChance = disarmStrings[0];
|
||||||
|
disarmChanceLucky = disarmStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// DEFLECT
|
// DEFLECT
|
||||||
String[] deflectStrings = calculateAbilityDisplayValues(Unarmed.deflectMaxBonusLevel, Unarmed.deflectMaxChance);
|
if (canDeflect) {
|
||||||
deflectChance = deflectStrings[0];
|
String[] deflectStrings = calculateAbilityDisplayValues(Unarmed.deflectMaxBonusLevel, Unarmed.deflectMaxChance);
|
||||||
deflectChanceLucky = deflectStrings[1];
|
deflectChance = deflectStrings[0];
|
||||||
|
deflectChanceLucky = deflectStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// IRON ARM
|
// IRON ARM
|
||||||
if (skillValue >= ((Unarmed.ironArmMaxBonusDamage - 3) * Unarmed.ironArmIncreaseLevel)) {
|
if (canBonusDamage) {
|
||||||
ironArmBonus = String.valueOf(Unarmed.ironArmMaxBonusDamage);
|
ironArmBonus = Math.min(3 + ((int) skillValue / Unarmed.ironArmIncreaseLevel), Unarmed.ironArmMaxBonusDamage);
|
||||||
}
|
|
||||||
else {
|
|
||||||
ironArmBonus = String.valueOf(3 + (skillValue / Unarmed.ironArmIncreaseLevel));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// IRON GRIP
|
// IRON GRIP
|
||||||
String[] ironGripStrings = calculateAbilityDisplayValues(Unarmed.ironGripMaxBonusLevel, Unarmed.ironGripMaxChance);
|
if (canIronGrip) {
|
||||||
ironGripChance = ironGripStrings[0];
|
String[] ironGripStrings = calculateAbilityDisplayValues(Unarmed.ironGripMaxBonusLevel, Unarmed.ironGripMaxChance);
|
||||||
ironGripChanceLucky = ironGripStrings[1];
|
ironGripChance = ironGripStrings[0];
|
||||||
|
ironGripChanceLucky = ironGripStrings[1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -108,39 +113,19 @@ public class UnarmedCommand extends SkillCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (canDeflect) {
|
if (canDeflect) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Chance.ArrowDeflect", deflectChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", deflectChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Chance.ArrowDeflect", deflectChance) + LocaleLoader.getString("Perks.lucky.bonus", deflectChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Chance.ArrowDeflect", deflectChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canDisarm) {
|
if (canDisarm) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Chance.Disarm", disarmChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", disarmChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Chance.Disarm", disarmChance) + LocaleLoader.getString("Perks.lucky.bonus", disarmChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Chance.Disarm", disarmChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canIronGrip) {
|
if (canIronGrip) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Chance.IronGrip", ironGripChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", ironGripChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Chance.IronGrip", ironGripChance) + LocaleLoader.getString("Perks.lucky.bonus", ironGripChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Chance.IronGrip", ironGripChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canBerserk) {
|
if (canBerserk) {
|
||||||
if (hasEndurance) {
|
player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Berserk.Length", berserkLength) + (hasEndurance ? LocaleLoader.getString("Perks.activationtime.bonus", berserkLengthEndurance) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Berserk.Length", berserkLength) + LocaleLoader.getString("Perks.activationtime.bonus", berserkLengthEndurance));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Unarmed.Ability.Berserk.Length", berserkLength));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ public class WoodcuttingCommand extends SkillCommand {
|
|||||||
private boolean canTreeFell;
|
private boolean canTreeFell;
|
||||||
private boolean canLeafBlow;
|
private boolean canLeafBlow;
|
||||||
private boolean canDoubleDrop;
|
private boolean canDoubleDrop;
|
||||||
private boolean doubleDropsDisabled;
|
|
||||||
|
|
||||||
public WoodcuttingCommand() {
|
public WoodcuttingCommand() {
|
||||||
super(SkillType.WOODCUTTING);
|
super(SkillType.WOODCUTTING);
|
||||||
@@ -24,27 +23,30 @@ public class WoodcuttingCommand extends SkillCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void dataCalculations() {
|
protected void dataCalculations() {
|
||||||
// TREE FELLER
|
// TREE FELLER
|
||||||
String[] treeFellerStrings = calculateLengthDisplayValues();
|
if (canTreeFell) {
|
||||||
treeFellerLength = treeFellerStrings[0];
|
String[] treeFellerStrings = calculateLengthDisplayValues();
|
||||||
treeFellerLengthEndurance = treeFellerStrings[1];
|
treeFellerLength = treeFellerStrings[0];
|
||||||
|
treeFellerLengthEndurance = treeFellerStrings[1];
|
||||||
|
}
|
||||||
|
|
||||||
// DOUBLE DROPS
|
// DOUBLE DROPS
|
||||||
String[] doubleDropStrings = calculateAbilityDisplayValues(Woodcutting.doubleDropsMaxLevel, Woodcutting.doubleDropsMaxChance);
|
if (canDoubleDrop) {
|
||||||
doubleDropChance = doubleDropStrings[0];
|
String[] doubleDropStrings = calculateAbilityDisplayValues(Woodcutting.doubleDropsMaxLevel, Woodcutting.doubleDropsMaxChance);
|
||||||
doubleDropChanceLucky = doubleDropStrings[1];
|
doubleDropChance = doubleDropStrings[0];
|
||||||
|
doubleDropChanceLucky = doubleDropStrings[1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void permissionsCheck() {
|
protected void permissionsCheck() {
|
||||||
canTreeFell = Permissions.treeFeller(player);
|
canTreeFell = Permissions.treeFeller(player);
|
||||||
canDoubleDrop = Permissions.doubleDrops(player, skill);
|
canDoubleDrop = Permissions.doubleDrops(player, skill) && !skill.getDoubleDropsDisabled();
|
||||||
canLeafBlow = Permissions.leafBlower(player);
|
canLeafBlow = Permissions.leafBlower(player);
|
||||||
doubleDropsDisabled = skill.getDoubleDropsDisabled();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean effectsHeaderPermissions() {
|
protected boolean effectsHeaderPermissions() {
|
||||||
return (canDoubleDrop && !doubleDropsDisabled) || canLeafBlow || canTreeFell;
|
return canDoubleDrop || canLeafBlow || canTreeFell;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -59,14 +61,14 @@ public class WoodcuttingCommand extends SkillCommand {
|
|||||||
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Woodcutting.Effect.2"), LocaleLoader.getString("Woodcutting.Effect.3")));
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Woodcutting.Effect.2"), LocaleLoader.getString("Woodcutting.Effect.3")));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canDoubleDrop && !doubleDropsDisabled) {
|
if (canDoubleDrop) {
|
||||||
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Woodcutting.Effect.4"), LocaleLoader.getString("Woodcutting.Effect.5")));
|
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Woodcutting.Effect.4"), LocaleLoader.getString("Woodcutting.Effect.5")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean statsHeaderPermissions() {
|
protected boolean statsHeaderPermissions() {
|
||||||
return (canDoubleDrop && !doubleDropsDisabled) || canLeafBlow || canTreeFell;
|
return canDoubleDrop || canLeafBlow || canTreeFell;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -82,22 +84,12 @@ public class WoodcuttingCommand extends SkillCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canDoubleDrop && !doubleDropsDisabled) {
|
if (canDoubleDrop) {
|
||||||
if (isLucky) {
|
player.sendMessage(LocaleLoader.getString("Woodcutting.Ability.Chance.DDrop", doubleDropChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", doubleDropChanceLucky) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Woodcutting.Ability.Chance.DDrop", doubleDropChance) + LocaleLoader.getString("Perks.lucky.bonus", doubleDropChanceLucky));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Woodcutting.Ability.Chance.DDrop", doubleDropChance));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canTreeFell) {
|
if (canTreeFell) {
|
||||||
if (hasEndurance) {
|
player.sendMessage(LocaleLoader.getString("Woodcutting.Ability.Length", treeFellerLength) + (hasEndurance ? LocaleLoader.getString("Perks.activationtime.bonus", treeFellerLengthEndurance) : ""));
|
||||||
player.sendMessage(LocaleLoader.getString("Woodcutting.Ability.Length", treeFellerLength) + LocaleLoader.getString("Perks.activationtime.bonus", treeFellerLengthEndurance));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.sendMessage(LocaleLoader.getString("Woodcutting.Ability.Length", treeFellerLength));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,41 @@
|
|||||||
package com.gmail.nossr50.commands.spout;
|
package com.gmail.nossr50.commands.spout;
|
||||||
|
|
||||||
|
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.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.util.StringUtil;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
public class MchudCommand extends SpoutCommand {
|
public class MchudCommand extends SpoutCommand {
|
||||||
|
private static final List<String> HUD_TYPES;
|
||||||
|
|
||||||
|
static {
|
||||||
|
ArrayList<String> types = new ArrayList<String>();
|
||||||
|
|
||||||
|
for (HudType type : HudType.values()) {
|
||||||
|
types.add(type.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.sort(types);
|
||||||
|
HUD_TYPES = ImmutableList.copyOf(types);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
return StringUtil.copyPartialMatches(args[0], HUD_TYPES, new ArrayList<String>(HUD_TYPES.size()));
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean noArguments(Command command, CommandSender sender, String[] args) {
|
protected boolean noArguments(Command command, CommandSender sender, String[] args) {
|
||||||
return false;
|
return false;
|
||||||
@@ -14,16 +43,15 @@ public class MchudCommand extends SpoutCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean oneArgument(Command command, CommandSender sender, String[] args) {
|
protected boolean oneArgument(Command command, CommandSender sender, String[] args) {
|
||||||
for (HudType hudType : HudType.values()) {
|
try {
|
||||||
if (hudType.toString().equalsIgnoreCase(args[0])) {
|
playerProfile.setHudType(HudType.valueOf(args[0].toUpperCase().trim()));
|
||||||
playerProfile.setHudType(hudType);
|
spoutHud.initializeXpBar();
|
||||||
spoutHud.initializeXpBar();
|
spoutHud.updateXpBar();
|
||||||
spoutHud.updateXpBar();
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
catch (IllegalArgumentException ex) {
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.mchud.Invalid"));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mchud.Invalid"));
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
package com.gmail.nossr50.commands.spout;
|
package com.gmail.nossr50.commands.spout;
|
||||||
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.command.TabExecutor;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.spout.SpoutConfig;
|
import com.gmail.nossr50.config.spout.SpoutConfig;
|
||||||
@@ -13,7 +12,7 @@ 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;
|
||||||
|
|
||||||
public abstract class SpoutCommand implements CommandExecutor {
|
public abstract class SpoutCommand implements TabExecutor {
|
||||||
protected PlayerProfile playerProfile;
|
protected PlayerProfile playerProfile;
|
||||||
protected McMMOHud spoutHud;
|
protected McMMOHud spoutHud;
|
||||||
|
|
||||||
@@ -28,7 +27,7 @@ public abstract class SpoutCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
playerProfile = UserManager.getPlayer((Player) sender).getProfile();
|
playerProfile = UserManager.getPlayer(sender.getName()).getProfile();
|
||||||
spoutHud = playerProfile.getSpoutHud();
|
spoutHud = playerProfile.getSpoutHud();
|
||||||
|
|
||||||
if (spoutHud == null) {
|
if (spoutHud == null) {
|
||||||
|
|||||||
@@ -1,14 +1,36 @@
|
|||||||
package com.gmail.nossr50.commands.spout;
|
package com.gmail.nossr50.commands.spout;
|
||||||
|
|
||||||
|
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.util.StringUtil;
|
||||||
|
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
public class XplockCommand extends SpoutCommand {
|
public class XplockCommand extends SpoutCommand {
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
switch (args.length) {
|
||||||
|
case 1:
|
||||||
|
List<String> matches = StringUtil.copyPartialMatches(args[0], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<String>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
|
||||||
|
|
||||||
|
if (matches.size() == 0) {
|
||||||
|
return StringUtil.copyPartialMatches(args[0], SkillType.SKILL_NAMES, new ArrayList<String>(SkillType.SKILL_NAMES.size()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return matches;
|
||||||
|
default:
|
||||||
|
return ImmutableList.of();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean noArguments(Command command, CommandSender sender, String[] args) {
|
protected boolean noArguments(Command command, CommandSender sender, String[] args) {
|
||||||
if (spoutHud.getXpBarLocked()) {
|
if (spoutHud.getXpBarLocked()) {
|
||||||
@@ -22,25 +44,23 @@ public class XplockCommand extends SpoutCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean oneArgument(Command command, CommandSender sender, String[] args) {
|
protected boolean oneArgument(Command command, CommandSender sender, String[] args) {
|
||||||
if (args[0].equalsIgnoreCase("on")) {
|
if (CommandUtils.shouldEnableToggle(args[0])) {
|
||||||
lockXpBar(sender, spoutHud.getLastGained());
|
lockXpBar(sender, spoutHud.getLastGained());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("off")) {
|
if (CommandUtils.shouldDisableToggle(args[0])) {
|
||||||
unlockXpBar(sender);
|
unlockXpBar(sender);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!SkillUtils.isSkill(args[0])) {
|
if (CommandUtils.isInvalidSkill(sender, args[0])) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Invalid"));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillType skill = SkillType.getSkill(args[0]);
|
SkillType skill = SkillType.getSkill(args[0]);
|
||||||
|
|
||||||
if (skill.isChildSkill()) {
|
if (CommandUtils.isChildSkill(sender, skill)) {
|
||||||
sender.sendMessage("Child skills are not yet supported by this command."); // TODO: Localize this
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import org.bukkit.Material;
|
|||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.MobHealthbarType;
|
||||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
@@ -48,6 +49,18 @@ public class Config extends AutoUpdateConfigLoader {
|
|||||||
public boolean getPartyDisplayNames() { return config.getBoolean("Commands.p.Use_Display_Names", true); }
|
public boolean getPartyDisplayNames() { return config.getBoolean("Commands.p.Use_Display_Names", true); }
|
||||||
public boolean getAdminDisplayNames() { return config.getBoolean("Commands.a.Use_Display_Names", true); }
|
public boolean getAdminDisplayNames() { return config.getBoolean("Commands.a.Use_Display_Names", true); }
|
||||||
|
|
||||||
|
/* Mob Healthbar */
|
||||||
|
public MobHealthbarType getMobHealthbarDefault() {
|
||||||
|
try {
|
||||||
|
return MobHealthbarType.valueOf(config.getString("Mob_Healthbar.Display_Type", "HEARTS").toUpperCase().trim());
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException ex) {
|
||||||
|
return MobHealthbarType.HEARTS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMobHealthbarTime() { return config.getInt("Mob_Healthbar.Display_Time", 3); }
|
||||||
|
|
||||||
/* Database Purging */
|
/* Database Purging */
|
||||||
public int getPurgeInterval() { return config.getInt("Database_Purging.Purge_Interval", -1); }
|
public int getPurgeInterval() { return config.getInt("Database_Purging.Purge_Interval", -1); }
|
||||||
public int getOldUsersCutoff() { return config.getInt("Database_Purging.Old_User_Cutoff", 6); }
|
public int getOldUsersCutoff() { return config.getInt("Database_Purging.Old_User_Cutoff", 6); }
|
||||||
@@ -107,6 +120,8 @@ public class Config extends AutoUpdateConfigLoader {
|
|||||||
public boolean getChimaeraEnabled() { return config.getBoolean("Items.Chimaera_Wing.Enabled", true); }
|
public boolean getChimaeraEnabled() { return config.getBoolean("Items.Chimaera_Wing.Enabled", true); }
|
||||||
public boolean getChimaeraPreventUseUnderground() { return config.getBoolean("Items.Chimaera_Wing.Prevent_Use_Underground", true); }
|
public boolean getChimaeraPreventUseUnderground() { return config.getBoolean("Items.Chimaera_Wing.Prevent_Use_Underground", true); }
|
||||||
public int getChimaeraCooldown() { return config.getInt("Items.Chimaera_Wing.Cooldown", 240); }
|
public int getChimaeraCooldown() { return config.getInt("Items.Chimaera_Wing.Cooldown", 240); }
|
||||||
|
public int getChimaeraWarmup() { return config.getInt("Items.Chimaera_Wing.Warmup", 5); }
|
||||||
|
public int getChimaeraRecentlyHurtCooldown() { return config.getInt("Items.Chimaera_Wing.RecentlyHurt_Cooldown", 60); }
|
||||||
|
|
||||||
/* Particles */
|
/* Particles */
|
||||||
public boolean getAbilityActivationEffectEnabled() { return config.getBoolean("Particles.Ability_Activation", true); }
|
public boolean getAbilityActivationEffectEnabled() { return config.getBoolean("Particles.Ability_Activation", true); }
|
||||||
@@ -114,6 +129,8 @@ public class Config extends AutoUpdateConfigLoader {
|
|||||||
public boolean getDodgeEffectEnabled() { return config.getBoolean("Particles.Dodge", true); }
|
public boolean getDodgeEffectEnabled() { return config.getBoolean("Particles.Dodge", true); }
|
||||||
public boolean getBleedEffectEnabled() { return config.getBoolean("Particles.Bleed", true); }
|
public boolean getBleedEffectEnabled() { return config.getBoolean("Particles.Bleed", true); }
|
||||||
public boolean getGreaterImpactEffectEnabled() { return config.getBoolean("Particles.Greater_Impact", true); }
|
public boolean getGreaterImpactEffectEnabled() { return config.getBoolean("Particles.Greater_Impact", true); }
|
||||||
|
public boolean getLevelUpEffectsEnabled() { return config.getBoolean("Particles.LevelUp_Enabled", true); }
|
||||||
|
public int getLevelUpEffectsTier() { return config.getInt("Particles.LevelUp_Tier", 100); }
|
||||||
|
|
||||||
/* PARTY SETTINGS */
|
/* PARTY SETTINGS */
|
||||||
public int getAutoPartyKickInterval() { return config.getInt("Party.AutoKick_Interval", 12); }
|
public int getAutoPartyKickInterval() { return config.getInt("Party.AutoKick_Interval", 12); }
|
||||||
@@ -126,7 +143,9 @@ public class Config extends AutoUpdateConfigLoader {
|
|||||||
public double getPartyShareRange() { return config.getDouble("Party.Sharing.Range", 75.0); }
|
public double getPartyShareRange() { return config.getDouble("Party.Sharing.Range", 75.0); }
|
||||||
|
|
||||||
/* Party Teleport Settings */
|
/* Party Teleport Settings */
|
||||||
public int getPTPCommandCooldown() { return config.getInt("Commands.ptp.Cooldown", 30); }
|
public int getPTPCommandCooldown() { return config.getInt("Commands.ptp.Cooldown", 120); }
|
||||||
|
public int getPTPCommandWarmup() { return config.getInt("Commands.ptp.Warmup", 5); }
|
||||||
|
public int getPTPCommandRecentlyHurtCooldown() { return config.getInt("Commands.ptp.RecentlyHurt_Cooldown", 60); }
|
||||||
public int getPTPCommandTimeout() { return config.getInt("Commands.ptp.Request_Timeout", 300); }
|
public int getPTPCommandTimeout() { return config.getInt("Commands.ptp.Request_Timeout", 300); }
|
||||||
public boolean getPTPCommandConfirmRequired() { return config.getBoolean("Commands.ptp.Confirm_Required", true); }
|
public boolean getPTPCommandConfirmRequired() { return config.getBoolean("Commands.ptp.Confirm_Required", true); }
|
||||||
public boolean getPTPCommandWorldPermissions() { return config.getBoolean("Commands.ptp.World_Based_Permissions", false); }
|
public boolean getPTPCommandWorldPermissions() { return config.getBoolean("Commands.ptp.World_Based_Permissions", false); }
|
||||||
@@ -252,5 +271,5 @@ public class Config extends AutoUpdateConfigLoader {
|
|||||||
|
|
||||||
/* XP Formula Multiplier */
|
/* XP Formula Multiplier */
|
||||||
public int getFormulaMultiplierCurve() { return config.getInt("Experience.Formula.Curve_Modifier", 20); }
|
public int getFormulaMultiplierCurve() { return config.getInt("Experience.Formula.Curve_Modifier", 20); }
|
||||||
public double getForumulaMultiplier(SkillType skill) { return config.getDouble("Experience.Formula.Multiplier." + StringUtils.getCapitalized(skill.toString())); }
|
public double getForumulaMultiplier(SkillType skill) { return config.getDouble("Experience.Formula.Modifier." + StringUtils.getCapitalized(skill.toString())); }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ public class HiddenConfig {
|
|||||||
private static boolean chunkletsEnabled;
|
private static boolean chunkletsEnabled;
|
||||||
private static int conversionRate;
|
private static int conversionRate;
|
||||||
private static boolean useEnchantmentBuffs;
|
private static boolean useEnchantmentBuffs;
|
||||||
|
private static boolean resendChunksAfterBlockAbility;
|
||||||
|
|
||||||
public HiddenConfig(String fileName) {
|
public HiddenConfig(String fileName) {
|
||||||
HiddenConfig.fileName = fileName;
|
HiddenConfig.fileName = fileName;
|
||||||
@@ -31,6 +32,7 @@ public class HiddenConfig {
|
|||||||
chunkletsEnabled = config.getBoolean("Options.Chunklets", true);
|
chunkletsEnabled = config.getBoolean("Options.Chunklets", true);
|
||||||
conversionRate = config.getInt("Options.ConversionRate", 1);
|
conversionRate = config.getInt("Options.ConversionRate", 1);
|
||||||
useEnchantmentBuffs = config.getBoolean("Options.EnchantmentBuffs", true);
|
useEnchantmentBuffs = config.getBoolean("Options.EnchantmentBuffs", true);
|
||||||
|
resendChunksAfterBlockAbility = config.getBoolean("Options.RefreshChunks", false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,4 +47,8 @@ public class HiddenConfig {
|
|||||||
public boolean useEnchantmentBuffs() {
|
public boolean useEnchantmentBuffs() {
|
||||||
return useEnchantmentBuffs;
|
return useEnchantmentBuffs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean resendChunksAfterBlockAbility() {
|
||||||
|
return resendChunksAfterBlockAbility;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,11 +6,9 @@ import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
|||||||
|
|
||||||
public class SpoutConfig extends ConfigLoader {
|
public class SpoutConfig extends ConfigLoader {
|
||||||
private static SpoutConfig instance;
|
private static SpoutConfig instance;
|
||||||
public HudType defaultHudType;
|
|
||||||
|
|
||||||
private SpoutConfig() {
|
private SpoutConfig() {
|
||||||
super("spout.yml");
|
super("spout.yml");
|
||||||
loadKeys();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SpoutConfig getInstance() {
|
public static SpoutConfig getInstance() {
|
||||||
@@ -24,17 +22,14 @@ public class SpoutConfig extends ConfigLoader {
|
|||||||
@Override
|
@Override
|
||||||
protected void loadKeys() {
|
protected void loadKeys() {
|
||||||
// Setup default HUD
|
// Setup default HUD
|
||||||
String temp = config.getString("Spout.HUD.Default", "STANDARD");
|
}
|
||||||
|
|
||||||
for (HudType hudType : HudType.values()) {
|
public HudType getDefaultHudType() {
|
||||||
if (hudType.toString().equalsIgnoreCase(temp)) {
|
try {
|
||||||
defaultHudType = hudType;
|
return HudType.valueOf(config.getString("Spout.HUD.Default", "STANDARD").toUpperCase().trim());
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
catch (IllegalArgumentException ex) {
|
||||||
if (defaultHudType == null) {
|
return HudType.STANDARD;
|
||||||
defaultHudType = HudType.STANDARD;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,13 +9,17 @@ import java.util.Set;
|
|||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.material.MaterialData;
|
import org.bukkit.material.MaterialData;
|
||||||
|
import org.bukkit.potion.Potion;
|
||||||
|
import org.bukkit.potion.PotionType;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.ConfigLoader;
|
import com.gmail.nossr50.config.ConfigLoader;
|
||||||
import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
|
import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure;
|
||||||
import com.gmail.nossr50.datatypes.treasure.FishingTreasure;
|
import com.gmail.nossr50.datatypes.treasure.FishingTreasure;
|
||||||
import com.gmail.nossr50.datatypes.treasure.HylianTreasure;
|
import com.gmail.nossr50.datatypes.treasure.HylianTreasure;
|
||||||
|
import com.gmail.nossr50.datatypes.treasure.ShakeTreasure;
|
||||||
import com.gmail.nossr50.datatypes.treasure.Treasure;
|
import com.gmail.nossr50.datatypes.treasure.Treasure;
|
||||||
|
|
||||||
public class TreasureConfig extends ConfigLoader {
|
public class TreasureConfig extends ConfigLoader {
|
||||||
@@ -33,6 +37,27 @@ public class TreasureConfig extends ConfigLoader {
|
|||||||
public List<HylianTreasure> hylianFromFlowers = new ArrayList<HylianTreasure>();
|
public List<HylianTreasure> hylianFromFlowers = new ArrayList<HylianTreasure>();
|
||||||
public List<HylianTreasure> hylianFromPots = new ArrayList<HylianTreasure>();
|
public List<HylianTreasure> hylianFromPots = new ArrayList<HylianTreasure>();
|
||||||
|
|
||||||
|
public List<ShakeTreasure> shakeFromBlaze = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromCaveSpider = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromSpider = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromChicken = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromCow = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromCreeper = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromEnderman = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromGhast = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromIronGolem = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromMagmaCube = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromMushroomCow = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromPig = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromPigZombie = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromSheep = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromSkeleton = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromSlime = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromSnowman = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromSquid = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromWitch = new ArrayList<ShakeTreasure>();
|
||||||
|
public List<ShakeTreasure> shakeFromZombie = new ArrayList<ShakeTreasure>();
|
||||||
|
|
||||||
public List<FishingTreasure> fishingRewards = new ArrayList<FishingTreasure>();
|
public List<FishingTreasure> fishingRewards = new ArrayList<FishingTreasure>();
|
||||||
|
|
||||||
private TreasureConfig() {
|
private TreasureConfig() {
|
||||||
@@ -128,15 +153,32 @@ public class TreasureConfig extends ConfigLoader {
|
|||||||
reason.add("Invalid Drop_Level: " + dropLevel);
|
reason.add("Invalid Drop_Level: " + dropLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Potions
|
||||||
|
*/
|
||||||
|
|
||||||
|
ItemStack item = null;
|
||||||
|
|
||||||
|
if (config.contains("Treasures." + treasureName + ".Potion_Type")) {
|
||||||
|
String potionType = config.getString("Treasures." + treasureName + ".Potion_Type");
|
||||||
|
try {
|
||||||
|
item = new Potion(PotionType.valueOf(potionType.toUpperCase())).toItemStack(amount);
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException ex) {
|
||||||
|
reason.add("Invalid Potion_Type: " + potionType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
item = (new MaterialData(id, (byte) data)).toItemStack(amount);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Drops From & Max Level
|
* Drops From & Max Level
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ItemStack item = (new MaterialData(id, (byte) data)).toItemStack(amount);
|
|
||||||
|
|
||||||
if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Fishing", false)) {
|
if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Fishing", false)) {
|
||||||
if (config.getConfigurationSection("Treasures." + treasureName + ".Drops_From").getKeys(false).size() != 1) {
|
if (config.getConfigurationSection("Treasures." + treasureName + ".Drops_From").getKeys(false).size() != 1) {
|
||||||
reason.add("Fishing drops cannot also be excavation drops");
|
reason.add("This can only be a fishing drop.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!config.contains("Treasures." + treasureName + ".Max_Level")) {
|
if (!config.contains("Treasures." + treasureName + ".Max_Level")) {
|
||||||
@@ -150,6 +192,30 @@ public class TreasureConfig extends ConfigLoader {
|
|||||||
treasures.put(treasureName, fTreasure);
|
treasures.put(treasureName, fTreasure);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (config.getBoolean("Treasures." + treasureName + "Drops_From.Shake", false)) {
|
||||||
|
if (config.getConfigurationSection("Treasures." + treasureName + ".Drops_From").getKeys(false).size() != 1) {
|
||||||
|
reason.add("This can only be a shake drop.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!config.contains("Treasures." + treasureName + ".Mob")) {
|
||||||
|
reason.add("Missing Mob");
|
||||||
|
}
|
||||||
|
|
||||||
|
String mobType = config.getString("Treasures." + treasureName + ".Mob");
|
||||||
|
EntityType mob = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
mob = EntityType.valueOf(mobType.toUpperCase().trim());
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException ex){
|
||||||
|
reason.add("Invalid Mob: " + mobType);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (noErrorsInTreasure(reason)) {
|
||||||
|
ShakeTreasure sTreasure = new ShakeTreasure(item, xp, dropChance, dropLevel, mob);
|
||||||
|
treasures.put(treasureName, sTreasure);
|
||||||
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
ExcavationTreasure eTreasure = new ExcavationTreasure(item, xp, dropChance, dropLevel);
|
ExcavationTreasure eTreasure = new ExcavationTreasure(item, xp, dropChance, dropLevel);
|
||||||
HylianTreasure hTreasure = new HylianTreasure(item, xp, dropChance, dropLevel);
|
HylianTreasure hTreasure = new HylianTreasure(item, xp, dropChance, dropLevel);
|
||||||
@@ -195,7 +261,11 @@ public class TreasureConfig extends ConfigLoader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Fishing", false)) {
|
if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Fishing", false)) {
|
||||||
reason.add("Excavation drops cannot also be fishing drops");
|
reason.add("This cannot also be a fishing drop.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.getBoolean("Treasures." + treasureName + ".Drops_From.Shake", false)) {
|
||||||
|
reason.add("This cannot also be a shake drop.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (noErrorsInTreasure(reason) && hTreasure.getDropsFrom() == (byte) 0x0) {
|
if (noErrorsInTreasure(reason) && hTreasure.getDropsFrom() == (byte) 0x0) {
|
||||||
@@ -210,6 +280,7 @@ public class TreasureConfig extends ConfigLoader {
|
|||||||
List<String> excavationTreasures = config.getStringList("Excavation.Treasure");
|
List<String> excavationTreasures = config.getStringList("Excavation.Treasure");
|
||||||
List<String> fishingTreasures = config.getStringList("Fishing.Treasure");
|
List<String> fishingTreasures = config.getStringList("Fishing.Treasure");
|
||||||
List<String> hylianTreasures = config.getStringList("Hylian_Luck.Treasure");
|
List<String> hylianTreasures = config.getStringList("Hylian_Luck.Treasure");
|
||||||
|
List<String> shakeTreasures = config.getStringList("Shake.Treasure");
|
||||||
|
|
||||||
for (Entry<String, Treasure> nextEntry : treasures.entrySet()) {
|
for (Entry<String, Treasure> nextEntry : treasures.entrySet()) {
|
||||||
String treasureKey = nextEntry.getKey();
|
String treasureKey = nextEntry.getKey();
|
||||||
@@ -222,6 +293,97 @@ public class TreasureConfig extends ConfigLoader {
|
|||||||
|
|
||||||
fishingRewards.add((FishingTreasure) treasure);
|
fishingRewards.add((FishingTreasure) treasure);
|
||||||
}
|
}
|
||||||
|
else if (treasure instanceof ShakeTreasure) {
|
||||||
|
if (shakeTreasures == null || !shakeTreasures.contains(treasureKey)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShakeTreasure e = (ShakeTreasure) treasure;
|
||||||
|
switch (e.getMob()) {
|
||||||
|
case BLAZE:
|
||||||
|
shakeFromBlaze.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CAVE_SPIDER:
|
||||||
|
shakeFromCaveSpider.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CHICKEN:
|
||||||
|
shakeFromChicken.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case COW:
|
||||||
|
shakeFromCow.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CREEPER:
|
||||||
|
shakeFromCreeper.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ENDERMAN:
|
||||||
|
shakeFromEnderman.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GHAST:
|
||||||
|
shakeFromGhast.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IRON_GOLEM:
|
||||||
|
shakeFromIronGolem.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MAGMA_CUBE:
|
||||||
|
shakeFromMagmaCube.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MUSHROOM_COW:
|
||||||
|
shakeFromMushroomCow.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PIG:
|
||||||
|
shakeFromPig.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PIG_ZOMBIE:
|
||||||
|
shakeFromPigZombie.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SHEEP:
|
||||||
|
shakeFromSheep.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SKELETON:
|
||||||
|
shakeFromSkeleton.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SLIME:
|
||||||
|
shakeFromSlime.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SPIDER:
|
||||||
|
shakeFromSpider.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SNOWMAN:
|
||||||
|
shakeFromSnowman.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SQUID:
|
||||||
|
shakeFromSquid.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WITCH:
|
||||||
|
shakeFromWitch.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ZOMBIE:
|
||||||
|
shakeFromZombie.add(e);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (treasure instanceof HylianTreasure) {
|
else if (treasure instanceof HylianTreasure) {
|
||||||
if (hylianTreasures == null || !hylianTreasures.contains(treasureKey)) {
|
if (hylianTreasures == null || !hylianTreasures.contains(treasureKey)) {
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -10,17 +10,13 @@ import java.util.HashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.datatypes.database.DatabaseUpdateType;
|
import com.gmail.nossr50.datatypes.database.DatabaseUpdateType;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
|
|
||||||
import com.gmail.nossr50.runnables.database.SQLReconnectTask;
|
import com.gmail.nossr50.runnables.database.SQLReconnectTask;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.Misc;
|
||||||
import com.gmail.nossr50.util.spout.SpoutUtils;
|
|
||||||
|
|
||||||
public final class DatabaseManager {
|
public final class DatabaseManager {
|
||||||
private static String connectionString;
|
private static String connectionString;
|
||||||
@@ -100,6 +96,7 @@ public final class DatabaseManager {
|
|||||||
write("CREATE TABLE IF NOT EXISTS `" + tablePrefix + "huds` ("
|
write("CREATE TABLE IF NOT EXISTS `" + tablePrefix + "huds` ("
|
||||||
+ "`user_id` int(10) unsigned NOT NULL,"
|
+ "`user_id` int(10) unsigned NOT NULL,"
|
||||||
+ "`hudtype` varchar(50) NOT NULL DEFAULT 'STANDARD',"
|
+ "`hudtype` varchar(50) NOT NULL DEFAULT 'STANDARD',"
|
||||||
|
+ "`mobhealthbar` varchar(50) NOT NULL DEFAULT 'HEARTS',"
|
||||||
+ "PRIMARY KEY (`user_id`),"
|
+ "PRIMARY KEY (`user_id`),"
|
||||||
+ "FOREIGN KEY (`user_id`) REFERENCES `" + tablePrefix + "users` (`id`) "
|
+ "FOREIGN KEY (`user_id`) REFERENCES `" + tablePrefix + "users` (`id`) "
|
||||||
+ "ON DELETE CASCADE) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
|
+ "ON DELETE CASCADE) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
|
||||||
@@ -157,6 +154,7 @@ public final class DatabaseManager {
|
|||||||
checkDatabaseStructure(DatabaseUpdateType.BLAST_MINING);
|
checkDatabaseStructure(DatabaseUpdateType.BLAST_MINING);
|
||||||
checkDatabaseStructure(DatabaseUpdateType.CASCADE_DELETE);
|
checkDatabaseStructure(DatabaseUpdateType.CASCADE_DELETE);
|
||||||
checkDatabaseStructure(DatabaseUpdateType.INDEX);
|
checkDatabaseStructure(DatabaseUpdateType.INDEX);
|
||||||
|
checkDatabaseStructure(DatabaseUpdateType.MOB_HEALTHBARS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -340,7 +338,7 @@ public final class DatabaseManager {
|
|||||||
if (connection != null && !connection.isClosed()) {
|
if (connection != null && !connection.isClosed()) {
|
||||||
// Schedule a database save if we really had an outage
|
// Schedule a database save if we really had an outage
|
||||||
if (reconnectAttempt > 1) {
|
if (reconnectAttempt > 1) {
|
||||||
mcMMO.p.getServer().getScheduler().scheduleSyncDelayedTask(mcMMO.p, new SQLReconnectTask(), 5);
|
new SQLReconnectTask().runTaskLater(mcMMO.p, 5);
|
||||||
}
|
}
|
||||||
nextReconnectTimestamp = 0;
|
nextReconnectTimestamp = 0;
|
||||||
reconnectAttempt = 0;
|
reconnectAttempt = 0;
|
||||||
@@ -417,9 +415,10 @@ public final class DatabaseManager {
|
|||||||
String skillName = skillType.name().toLowerCase();
|
String skillName = skillType.name().toLowerCase();
|
||||||
String sql = "SELECT COUNT(*) AS rank FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE " + skillName + " > 0 " +
|
String sql = "SELECT COUNT(*) AS rank FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE " + skillName + " > 0 " +
|
||||||
"AND " + skillName + " > (SELECT " + skillName + " FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id " +
|
"AND " + skillName + " > (SELECT " + skillName + " FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id " +
|
||||||
"WHERE user = '" + playerName + "')";
|
"WHERE user = ?)";
|
||||||
|
|
||||||
PreparedStatement statement = connection.prepareStatement(sql);
|
PreparedStatement statement = connection.prepareStatement(sql);
|
||||||
|
statement.setString(1, playerName);
|
||||||
resultSet = statement.executeQuery();
|
resultSet = statement.executeQuery();
|
||||||
|
|
||||||
resultSet.next();
|
resultSet.next();
|
||||||
@@ -447,9 +446,10 @@ public final class DatabaseManager {
|
|||||||
"WHERE taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing > 0 " +
|
"WHERE taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing > 0 " +
|
||||||
"AND taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing > " +
|
"AND taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing > " +
|
||||||
"(SELECT taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing " +
|
"(SELECT taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing " +
|
||||||
"FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE user = '" + playerName + "')";
|
"FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE user = ?)";
|
||||||
|
|
||||||
PreparedStatement statement = connection.prepareStatement(sql);
|
PreparedStatement statement = connection.prepareStatement(sql);
|
||||||
|
statement.setString(1, playerName);
|
||||||
resultSet = statement.executeQuery();
|
resultSet = statement.executeQuery();
|
||||||
|
|
||||||
resultSet.next();
|
resultSet.next();
|
||||||
@@ -461,9 +461,10 @@ public final class DatabaseManager {
|
|||||||
"WHERE taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing > 0 " +
|
"WHERE taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing > 0 " +
|
||||||
"AND taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing = " +
|
"AND taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing = " +
|
||||||
"(SELECT taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing " +
|
"(SELECT taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing " +
|
||||||
"FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE user = '" + playerName + "') ORDER BY user";
|
"FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE user = ?) ORDER BY user";
|
||||||
|
|
||||||
statement = connection.prepareStatement(sql);
|
statement = connection.prepareStatement(sql);
|
||||||
|
statement.setString(1, playerName);
|
||||||
resultSet = statement.executeQuery();
|
resultSet = statement.executeQuery();
|
||||||
|
|
||||||
while (resultSet.next()) {
|
while (resultSet.next()) {
|
||||||
@@ -502,7 +503,7 @@ public final class DatabaseManager {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
profileCleanup(playerName);
|
Misc.profileCleanup(playerName);
|
||||||
purgedUsers++;
|
purgedUsers++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -524,36 +525,13 @@ public final class DatabaseManager {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
profileCleanup(playerName);
|
Misc.profileCleanup(playerName);
|
||||||
purgedUsers++;
|
purgedUsers++;
|
||||||
}
|
}
|
||||||
|
|
||||||
mcMMO.p.getLogger().info("Purged " + purgedUsers + " users from the database.");
|
mcMMO.p.getLogger().info("Purged " + purgedUsers + " users from the database.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void profileCleanup(String playerName) {
|
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(playerName);
|
|
||||||
|
|
||||||
if (mcMMOPlayer != null) {
|
|
||||||
Player player = mcMMOPlayer.getPlayer();
|
|
||||||
McMMOHud spoutHud = mcMMOPlayer.getProfile().getSpoutHud();
|
|
||||||
|
|
||||||
if (spoutHud != null) {
|
|
||||||
spoutHud.removeWidgets();
|
|
||||||
}
|
|
||||||
|
|
||||||
UserManager.remove(playerName);
|
|
||||||
|
|
||||||
if (player.isOnline()) {
|
|
||||||
UserManager.addUser(player);
|
|
||||||
|
|
||||||
if (mcMMO.spoutEnabled) {
|
|
||||||
SpoutUtils.reloadSpoutPlayer(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check database structure for missing values.
|
* Check database structure for missing values.
|
||||||
*
|
*
|
||||||
@@ -598,6 +576,10 @@ public final class DatabaseManager {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MOB_HEALTHBARS:
|
||||||
|
sql = "SELECT * FROM `" + tablePrefix + "huds` ORDER BY `" + tablePrefix + "huds`.`mobhealthbar` ASC LIMIT 0 , 30";
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -634,6 +616,11 @@ public final class DatabaseManager {
|
|||||||
write("ALTER TABLE `"+tablePrefix + "experience` ADD `fishing` int(10) NOT NULL DEFAULT '0' ;");
|
write("ALTER TABLE `"+tablePrefix + "experience` ADD `fishing` int(10) NOT NULL DEFAULT '0' ;");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MOB_HEALTHBARS:
|
||||||
|
mcMMO.p.getLogger().info("Updating mcMMO MySQL tables for mob healthbars...");
|
||||||
|
write("ALTER TABLE `" + tablePrefix + "huds` ADD `mobhealthbar` varchar(50) NOT NULL DEFAULT 'HEARTS' ;");
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,79 +60,79 @@ public final class LeaderboardManager {
|
|||||||
ArrayList<String> players = new ArrayList<String>();
|
ArrayList<String> players = new ArrayList<String>();
|
||||||
|
|
||||||
while ((line = in.readLine()) != null) {
|
while ((line = in.readLine()) != null) {
|
||||||
String[] character = line.split(":");
|
String[] data = line.split(":");
|
||||||
|
|
||||||
String p = character[0];
|
String playerName = data[0];
|
||||||
int powerLevel = 0;
|
int powerLevel = 0;
|
||||||
|
|
||||||
// Prevent the same player from being added multiple times (I'd like to note that this shouldn't happen...)
|
// Prevent the same player from being added multiple times (I'd like to note that this shouldn't happen...)
|
||||||
if (players.contains(p)) {
|
if (players.contains(playerName)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
players.add(p);
|
players.add(playerName);
|
||||||
|
|
||||||
if (character.length > 1 && StringUtils.isInt(character[1])) {
|
if (data.length > 1 && StringUtils.isInt(data[1])) {
|
||||||
mining.add(new PlayerStat(p, Integer.parseInt(character[1])));
|
mining.add(new PlayerStat(playerName, Integer.parseInt(data[1])));
|
||||||
powerLevel += Integer.parseInt(character[1]);
|
powerLevel += Integer.parseInt(data[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 5 && StringUtils.isInt(character[5])) {
|
if (data.length > 5 && StringUtils.isInt(data[5])) {
|
||||||
woodcutting.add(new PlayerStat(p, Integer.parseInt(character[5])));
|
woodcutting.add(new PlayerStat(playerName, Integer.parseInt(data[5])));
|
||||||
powerLevel += Integer.parseInt(character[5]);
|
powerLevel += Integer.parseInt(data[5]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 7 && StringUtils.isInt(character[7])) {
|
if (data.length > 7 && StringUtils.isInt(data[7])) {
|
||||||
repair.add(new PlayerStat(p, Integer.parseInt(character[7])));
|
repair.add(new PlayerStat(playerName, Integer.parseInt(data[7])));
|
||||||
powerLevel += Integer.parseInt(character[7]);
|
powerLevel += Integer.parseInt(data[7]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 8 && StringUtils.isInt(character[8])) {
|
if (data.length > 8 && StringUtils.isInt(data[8])) {
|
||||||
unarmed.add(new PlayerStat(p, Integer.parseInt(character[8])));
|
unarmed.add(new PlayerStat(playerName, Integer.parseInt(data[8])));
|
||||||
powerLevel += Integer.parseInt(character[8]);
|
powerLevel += Integer.parseInt(data[8]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 9 && StringUtils.isInt(character[9])) {
|
if (data.length > 9 && StringUtils.isInt(data[9])) {
|
||||||
herbalism.add(new PlayerStat(p, Integer.parseInt(character[9])));
|
herbalism.add(new PlayerStat(playerName, Integer.parseInt(data[9])));
|
||||||
powerLevel += Integer.parseInt(character[9]);
|
powerLevel += Integer.parseInt(data[9]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 10 && StringUtils.isInt(character[10])) {
|
if (data.length > 10 && StringUtils.isInt(data[10])) {
|
||||||
excavation.add(new PlayerStat(p, Integer.parseInt(character[10])));
|
excavation.add(new PlayerStat(playerName, Integer.parseInt(data[10])));
|
||||||
powerLevel += Integer.parseInt(character[10]);
|
powerLevel += Integer.parseInt(data[10]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 11 && StringUtils.isInt(character[11])) {
|
if (data.length > 11 && StringUtils.isInt(data[11])) {
|
||||||
archery.add(new PlayerStat(p, Integer.parseInt(character[11])));
|
archery.add(new PlayerStat(playerName, Integer.parseInt(data[11])));
|
||||||
powerLevel += Integer.parseInt(character[11]);
|
powerLevel += Integer.parseInt(data[11]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 12 && StringUtils.isInt(character[12])) {
|
if (data.length > 12 && StringUtils.isInt(data[12])) {
|
||||||
swords.add(new PlayerStat(p, Integer.parseInt(character[12])));
|
swords.add(new PlayerStat(playerName, Integer.parseInt(data[12])));
|
||||||
powerLevel += Integer.parseInt(character[12]);
|
powerLevel += Integer.parseInt(data[12]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 13 && StringUtils.isInt(character[13])) {
|
if (data.length > 13 && StringUtils.isInt(data[13])) {
|
||||||
axes.add(new PlayerStat(p, Integer.parseInt(character[13])));
|
axes.add(new PlayerStat(playerName, Integer.parseInt(data[13])));
|
||||||
powerLevel += Integer.parseInt(character[13]);
|
powerLevel += Integer.parseInt(data[13]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 14 && StringUtils.isInt(character[14])) {
|
if (data.length > 14 && StringUtils.isInt(data[14])) {
|
||||||
acrobatics.add(new PlayerStat(p, Integer.parseInt(character[14])));
|
acrobatics.add(new PlayerStat(playerName, Integer.parseInt(data[14])));
|
||||||
powerLevel += Integer.parseInt(character[14]);
|
powerLevel += Integer.parseInt(data[14]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 24 && StringUtils.isInt(character[24])) {
|
if (data.length > 24 && StringUtils.isInt(data[24])) {
|
||||||
taming.add(new PlayerStat(p, Integer.parseInt(character[24])));
|
taming.add(new PlayerStat(playerName, Integer.parseInt(data[24])));
|
||||||
powerLevel += Integer.parseInt(character[24]);
|
powerLevel += Integer.parseInt(data[24]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 34 && StringUtils.isInt(character[34])) {
|
if (data.length > 34 && StringUtils.isInt(data[34])) {
|
||||||
fishing.add(new PlayerStat(p, Integer.parseInt(character[34])));
|
fishing.add(new PlayerStat(playerName, Integer.parseInt(data[34])));
|
||||||
powerLevel += Integer.parseInt(character[34]);
|
powerLevel += Integer.parseInt(data[34]);
|
||||||
}
|
}
|
||||||
|
|
||||||
powerLevels.add(new PlayerStat(p, powerLevel));
|
powerLevels.add(new PlayerStat(playerName, powerLevel));
|
||||||
}
|
}
|
||||||
in.close();
|
in.close();
|
||||||
}
|
}
|
||||||
@@ -188,72 +188,27 @@ public final class LeaderboardManager {
|
|||||||
statsList = playerStatHash.get(SkillType.getSkill(skillType));
|
statsList = playerStatHash.get(SkillType.getSkill(skillType));
|
||||||
}
|
}
|
||||||
|
|
||||||
int destination;
|
if (pageNumber < 1) {
|
||||||
|
pageNumber = 1;
|
||||||
// How many lines to skip through
|
|
||||||
if (pageNumber == 1) {
|
|
||||||
destination = 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
destination = (pageNumber * 10) - 9;
|
|
||||||
}
|
}
|
||||||
|
int destination = (pageNumber - 1) * 10;
|
||||||
|
|
||||||
int currentPos = 0;
|
for (int i = 0; i < 10; i++) {
|
||||||
|
if (destination + i < statsList.size()) {
|
||||||
for (PlayerStat ps : statsList) {
|
PlayerStat ps = statsList.get(destination + i);
|
||||||
if (currentPos == 10) {
|
info[i] = ps.name + ":" + ps.statVal;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (destination > 1) {
|
|
||||||
destination--;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
info[currentPos] = ps.name + ":" + ps.statVal;
|
|
||||||
currentPos++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int[] getPlayerRank(String playerName) {
|
public static int[] getPlayerRank(String playerName) {
|
||||||
int currentPos = 1;
|
return getPlayerRank(playerName, powerLevels);
|
||||||
|
|
||||||
if (powerLevels != null) {
|
|
||||||
for (PlayerStat stat : powerLevels) {
|
|
||||||
if (stat.name.equalsIgnoreCase(playerName)) {
|
|
||||||
return new int[] {currentPos, stat.statVal};
|
|
||||||
}
|
|
||||||
|
|
||||||
currentPos++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new int[] {0, 0};
|
|
||||||
}
|
|
||||||
|
|
||||||
return new int[] {0, 0};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int[] getPlayerRank(String playerName, SkillType skillType) {
|
public static int[] getPlayerRank(String playerName, SkillType skillType) {
|
||||||
int currentPos = 1;
|
return getPlayerRank(playerName, playerStatHash.get(skillType));
|
||||||
List<PlayerStat> statsList = playerStatHash.get(skillType);
|
|
||||||
|
|
||||||
if (statsList != null) {
|
|
||||||
for (PlayerStat stat : statsList) {
|
|
||||||
if (stat.name.equalsIgnoreCase(playerName)) {
|
|
||||||
return new int[] {currentPos, stat.statVal};
|
|
||||||
}
|
|
||||||
|
|
||||||
currentPos++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new int[] {0, 0};
|
|
||||||
}
|
|
||||||
|
|
||||||
return new int[] {0, 0};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean removeFlatFileUser(String playerName) {
|
public static boolean removeFlatFileUser(String playerName) {
|
||||||
@@ -315,8 +270,9 @@ public final class LeaderboardManager {
|
|||||||
mcMMO.p.getLogger().info("Purging powerless users...");
|
mcMMO.p.getLogger().info("Purging powerless users...");
|
||||||
|
|
||||||
int purgedUsers = 0;
|
int purgedUsers = 0;
|
||||||
|
|
||||||
for (PlayerStat stat : powerLevels) {
|
for (PlayerStat stat : powerLevels) {
|
||||||
if (stat.statVal == 0 && removeFlatFileUser(stat.name) && !mcMMO.p.getServer().getOfflinePlayer(stat.name).isOnline()) {
|
if (stat.statVal == 0 && !mcMMO.p.getServer().getOfflinePlayer(stat.name).isOnline() && removeFlatFileUser(stat.name)) {
|
||||||
purgedUsers++;
|
purgedUsers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -394,6 +350,24 @@ public final class LeaderboardManager {
|
|||||||
return removedPlayers;
|
return removedPlayers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int[] getPlayerRank(String playerName, List<PlayerStat> statsList) {
|
||||||
|
int currentPos = 1;
|
||||||
|
|
||||||
|
if (statsList == null) {
|
||||||
|
return new int[] {0, 0};
|
||||||
|
}
|
||||||
|
|
||||||
|
for (PlayerStat stat : statsList) {
|
||||||
|
if (stat.name.equalsIgnoreCase(playerName)) {
|
||||||
|
return new int[] {currentPos, stat.statVal};
|
||||||
|
}
|
||||||
|
|
||||||
|
currentPos++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new int[] {0, 0};
|
||||||
|
}
|
||||||
|
|
||||||
private static class SkillComparator implements Comparator<PlayerStat> {
|
private static class SkillComparator implements Comparator<PlayerStat> {
|
||||||
@Override
|
@Override
|
||||||
public int compare(PlayerStat o1, PlayerStat o2) {
|
public int compare(PlayerStat o1, PlayerStat o2) {
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.gmail.nossr50.datatypes;
|
||||||
|
|
||||||
|
public enum MobHealthbarType {
|
||||||
|
HEARTS,
|
||||||
|
BAR,
|
||||||
|
DISABLED;
|
||||||
|
}
|
||||||
@@ -4,5 +4,6 @@ public enum DatabaseUpdateType {
|
|||||||
FISHING,
|
FISHING,
|
||||||
BLAST_MINING,
|
BLAST_MINING,
|
||||||
CASCADE_DELETE,
|
CASCADE_DELETE,
|
||||||
INDEX;
|
INDEX,
|
||||||
|
MOB_HEALTHBARS;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import java.util.Map;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
@@ -79,8 +80,11 @@ public class McMMOPlayer {
|
|||||||
private Map<ToolType, Integer> toolATS = new HashMap<ToolType, Integer>();
|
private Map<ToolType, Integer> toolATS = new HashMap<ToolType, Integer>();
|
||||||
|
|
||||||
private int recentlyHurt;
|
private int recentlyHurt;
|
||||||
private int chimaeraWing;
|
|
||||||
private int respawnATS;
|
private int respawnATS;
|
||||||
|
private int teleportLastUse;
|
||||||
|
private Location teleportCommence;
|
||||||
|
|
||||||
|
private boolean isUsingUnarmed;
|
||||||
|
|
||||||
public McMMOPlayer(Player player) {
|
public McMMOPlayer(Player player) {
|
||||||
String playerName = player.getName();
|
String playerName = player.getName();
|
||||||
@@ -300,21 +304,32 @@ public class McMMOPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Chimaera Wing
|
* Teleportation cooldown & warmup
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public int getLastChimaeraTeleport() {
|
public int getLastTeleport() {
|
||||||
return chimaeraWing;
|
return teleportLastUse;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLastChimaeraTeleport(int value) {
|
public void setLastTeleport(int value) {
|
||||||
chimaeraWing = value;
|
teleportLastUse = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void actualizeLastChimaeraTeleport() {
|
public void actualizeLastTeleport() {
|
||||||
chimaeraWing = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
|
teleportLastUse = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Location getTeleportCommenceLocation() {
|
||||||
|
return teleportCommence;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTeleportCommenceLocation(Location location) {
|
||||||
|
teleportCommence = location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void actualizeTeleportCommenceLocation(Player player) {
|
||||||
|
setTeleportCommenceLocation(player.getLocation());
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Exploit Prevention
|
* Exploit Prevention
|
||||||
@@ -449,6 +464,19 @@ public class McMMOPlayer {
|
|||||||
* @param xp Experience amount to add
|
* @param xp Experience amount to add
|
||||||
*/
|
*/
|
||||||
public void applyXpGain(SkillType skillType, int xp) {
|
public void applyXpGain(SkillType skillType, int xp) {
|
||||||
|
if (skillType.isChildSkill()) {
|
||||||
|
Set<SkillType> parentSkills = FamilyTree.getParents(skillType);
|
||||||
|
|
||||||
|
for (SkillType parentSkill : parentSkills) {
|
||||||
|
if (Permissions.skillEnabled(player, parentSkill)) {
|
||||||
|
applyXpGain(parentSkill, xp / parentSkills.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
McMMOPlayerXpGainEvent event = new McMMOPlayerXpGainEvent(player, skillType, xp);
|
McMMOPlayerXpGainEvent event = new McMMOPlayerXpGainEvent(player, skillType, xp);
|
||||||
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
||||||
|
|
||||||
@@ -464,6 +492,7 @@ public class McMMOPlayer {
|
|||||||
spoutHud.setLastGained(skillType);
|
spoutHud.setLastGained(skillType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isUsingUnarmed = skillType == SkillType.UNARMED;
|
||||||
SkillUtils.xpCheckSkill(skillType, player, profile);
|
SkillUtils.xpCheckSkill(skillType, player, profile);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -615,6 +644,10 @@ public class McMMOPlayer {
|
|||||||
partyChatMode = !partyChatMode;
|
partyChatMode = !partyChatMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isUsingUnarmed() {
|
||||||
|
return isUsingUnarmed;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Modifies an experience gain using skill modifiers, global rate and perks
|
* Modifies an experience gain using skill modifiers, global rate and perks
|
||||||
*
|
*
|
||||||
@@ -623,11 +656,7 @@ public class McMMOPlayer {
|
|||||||
* @return Modified experience
|
* @return Modified experience
|
||||||
*/
|
*/
|
||||||
private int modifyXpGain(SkillType skillType, int xp) {
|
private int modifyXpGain(SkillType skillType, int xp) {
|
||||||
if (player.getGameMode() == GameMode.CREATIVE) {
|
if (player.getGameMode() == GameMode.CREATIVE || (skillType.getMaxLevel() < profile.getSkillLevel(skillType) + 1) || (Config.getInstance().getPowerLevelCap() < getPowerLevel() + 1)) {
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((skillType.getMaxLevel() < profile.getSkillLevel(skillType) + 1) || (Config.getInstance().getPowerLevelCap() < getPowerLevel() + 1)) {
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.gmail.nossr50.mcMMO;
|
|||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.config.spout.SpoutConfig;
|
import com.gmail.nossr50.config.spout.SpoutConfig;
|
||||||
import com.gmail.nossr50.database.DatabaseManager;
|
import com.gmail.nossr50.database.DatabaseManager;
|
||||||
|
import com.gmail.nossr50.datatypes.MobHealthbarType;
|
||||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
||||||
@@ -27,6 +28,7 @@ public class PlayerProfile {
|
|||||||
// HUD
|
// HUD
|
||||||
private McMMOHud spoutHud;
|
private McMMOHud spoutHud;
|
||||||
private HudType hudType;
|
private HudType hudType;
|
||||||
|
private MobHealthbarType mobHealthbarType;
|
||||||
|
|
||||||
// mySQL Stuff
|
// mySQL Stuff
|
||||||
private int userId;
|
private int userId;
|
||||||
@@ -41,9 +43,10 @@ public class PlayerProfile {
|
|||||||
|
|
||||||
public PlayerProfile(String playerName, boolean addNew) {
|
public PlayerProfile(String playerName, boolean addNew) {
|
||||||
this.playerName = playerName;
|
this.playerName = playerName;
|
||||||
|
mobHealthbarType = Config.getInstance().getMobHealthbarDefault();
|
||||||
|
|
||||||
if (mcMMO.spoutEnabled) {
|
if (mcMMO.spoutEnabled) {
|
||||||
hudType = SpoutConfig.getInstance().defaultHudType;
|
hudType = SpoutConfig.getInstance().getDefaultHudType();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
hudType = HudType.DISABLED;
|
hudType = HudType.DISABLED;
|
||||||
@@ -91,13 +94,11 @@ public class PlayerProfile {
|
|||||||
DatabaseManager.write("INSERT INTO " + tablePrefix + "huds (user_id) VALUES (" + userId + ")");
|
DatabaseManager.write("INSERT INTO " + tablePrefix + "huds (user_id) VALUES (" + userId + ")");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (HudType type : HudType.values()) {
|
hudType = HudType.valueOf(huds.get(1).get(0));
|
||||||
if (type.toString().equalsIgnoreCase(huds.get(1).get(0))) {
|
|
||||||
hudType = type;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mobHealthbarType = MobHealthbarType.valueOf(DatabaseManager.read("SELECT mobhealthbar FROM " + tablePrefix + "huds WHERE user_id = " + userId).get(1).get(0));
|
||||||
|
|
||||||
HashMap<Integer, ArrayList<String>> cooldowns = DatabaseManager.read("SELECT mining, woodcutting, unarmed, herbalism, excavation, swords, axes, blast_mining FROM " + tablePrefix + "cooldowns WHERE user_id = " + userId);
|
HashMap<Integer, ArrayList<String>> cooldowns = DatabaseManager.read("SELECT mining, woodcutting, unarmed, herbalism, excavation, swords, axes, blast_mining FROM " + tablePrefix + "cooldowns WHERE user_id = " + userId);
|
||||||
ArrayList<String> cooldownValues = cooldowns.get(1);
|
ArrayList<String> cooldownValues = cooldowns.get(1);
|
||||||
|
|
||||||
@@ -307,11 +308,7 @@ public class PlayerProfile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 33) {
|
if (character.length > 33) {
|
||||||
for (HudType type : HudType.values()) {
|
hudType = HudType.valueOf(character[33]);
|
||||||
if (type.toString().equalsIgnoreCase(character[33])) {
|
|
||||||
hudType = type;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 34) {
|
if (character.length > 34) {
|
||||||
@@ -326,6 +323,10 @@ public class PlayerProfile {
|
|||||||
skillsDATS.put(AbilityType.BLAST_MINING, Integer.valueOf(character[36]));
|
skillsDATS.put(AbilityType.BLAST_MINING, Integer.valueOf(character[36]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (character.length > 38) {
|
||||||
|
mobHealthbarType = MobHealthbarType.valueOf(character[38]);
|
||||||
|
}
|
||||||
|
|
||||||
loaded = true;
|
loaded = true;
|
||||||
|
|
||||||
in.close();
|
in.close();
|
||||||
@@ -348,6 +349,7 @@ public class PlayerProfile {
|
|||||||
String tablePrefix = Config.getInstance().getMySQLTablePrefix();
|
String tablePrefix = Config.getInstance().getMySQLTablePrefix();
|
||||||
|
|
||||||
DatabaseManager.write("UPDATE " + tablePrefix + "huds SET hudtype = '" + hudType.toString() + "' WHERE user_id = " + userId);
|
DatabaseManager.write("UPDATE " + tablePrefix + "huds SET hudtype = '" + hudType.toString() + "' WHERE user_id = " + userId);
|
||||||
|
DatabaseManager.write("UPDATE " + tablePrefix + "huds SET mobhealthbar = '" + mobHealthbarType.toString() + "' WHERE user_id = " + userId);
|
||||||
DatabaseManager.write("UPDATE " + tablePrefix + "users SET lastlogin = " + ((int) (timestamp / Misc.TIME_CONVERSION_FACTOR)) + " WHERE id = " + userId);
|
DatabaseManager.write("UPDATE " + tablePrefix + "users SET lastlogin = " + ((int) (timestamp / Misc.TIME_CONVERSION_FACTOR)) + " WHERE id = " + userId);
|
||||||
DatabaseManager.write("UPDATE " + tablePrefix + "cooldowns SET "
|
DatabaseManager.write("UPDATE " + tablePrefix + "cooldowns SET "
|
||||||
+ " mining = " + skillsDATS.get(AbilityType.SUPER_BREAKER)
|
+ " mining = " + skillsDATS.get(AbilityType.SUPER_BREAKER)
|
||||||
@@ -443,6 +445,7 @@ public class PlayerProfile {
|
|||||||
writer.append(skillsXp.get(SkillType.FISHING)).append(":");
|
writer.append(skillsXp.get(SkillType.FISHING)).append(":");
|
||||||
writer.append(skillsDATS.get(AbilityType.BLAST_MINING)).append(":");
|
writer.append(skillsDATS.get(AbilityType.BLAST_MINING)).append(":");
|
||||||
writer.append(System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR).append(":");
|
writer.append(System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR).append(":");
|
||||||
|
writer.append(mobHealthbarType.toString()).append(":");
|
||||||
writer.append("\r\n");
|
writer.append("\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -452,6 +455,7 @@ public class PlayerProfile {
|
|||||||
// Write the new file
|
// Write the new file
|
||||||
FileWriter out = new FileWriter(location);
|
FileWriter out = new FileWriter(location);
|
||||||
out.write(writer.toString());
|
out.write(writer.toString());
|
||||||
|
out.flush();
|
||||||
out.close();
|
out.close();
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
@@ -505,6 +509,7 @@ public class PlayerProfile {
|
|||||||
out.append("0:"); // FishingXp
|
out.append("0:"); // FishingXp
|
||||||
out.append("0:"); // Blast Mining
|
out.append("0:"); // Blast Mining
|
||||||
out.append(String.valueOf(System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR)).append(":"); // LastLogin
|
out.append(String.valueOf(System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR)).append(":"); // LastLogin
|
||||||
|
out.append(mobHealthbarType.toString()).append(":"); // Mob Healthbar HUD
|
||||||
|
|
||||||
// Add more in the same format as the line above
|
// Add more in the same format as the line above
|
||||||
|
|
||||||
@@ -548,6 +553,18 @@ public class PlayerProfile {
|
|||||||
this.hudType = hudType;
|
this.hudType = hudType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Mob Healthbars
|
||||||
|
*/
|
||||||
|
|
||||||
|
public MobHealthbarType getMobHealthbarType() {
|
||||||
|
return mobHealthbarType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMobHealthbarType(MobHealthbarType mobHealthbarType) {
|
||||||
|
this.mobHealthbarType = mobHealthbarType;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cooldowns
|
* Cooldowns
|
||||||
*/
|
*/
|
||||||
@@ -611,6 +628,10 @@ public class PlayerProfile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setSkillXpLevel(SkillType skillType, int newValue) {
|
public void setSkillXpLevel(SkillType skillType, int newValue) {
|
||||||
|
if (skillType.isChildSkill()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
skillsXp.put(skillType, newValue);
|
skillsXp.put(skillType, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -662,6 +683,20 @@ public class PlayerProfile {
|
|||||||
skillsXp.put(skillType, 0);
|
skillsXp.put(skillType, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add Experience to a skill.
|
||||||
|
*
|
||||||
|
* @param skillType Type of skill to add experience to
|
||||||
|
* @param experience Number of experience to add
|
||||||
|
*/
|
||||||
|
public void addExperience(SkillType skillType, int experience) {
|
||||||
|
if (skillType.isChildSkill()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
skillsXp.put(skillType, skillsXp.get(skillType) + experience);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the amount of Xp remaining before the next level.
|
* Get the amount of Xp remaining before the next level.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
package com.gmail.nossr50.datatypes.skills;
|
package com.gmail.nossr50.datatypes.skills;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.Color;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
@@ -18,34 +24,52 @@ import com.gmail.nossr50.skills.taming.TamingManager;
|
|||||||
import com.gmail.nossr50.skills.unarmed.UnarmedManager;
|
import com.gmail.nossr50.skills.unarmed.UnarmedManager;
|
||||||
import com.gmail.nossr50.skills.woodcutting.WoodcuttingManager;
|
import com.gmail.nossr50.skills.woodcutting.WoodcuttingManager;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
public enum SkillType {
|
public enum SkillType {
|
||||||
ACROBATICS(AcrobaticsManager.class),
|
ACROBATICS(AcrobaticsManager.class, Color.WHITE),
|
||||||
ARCHERY(ArcheryManager.class),
|
ARCHERY(ArcheryManager.class, Color.MAROON),
|
||||||
AXES(AxesManager.class, AbilityType.SKULL_SPLITTER, ToolType.AXE),
|
AXES(AxesManager.class, Color.AQUA, AbilityType.SKULL_SPLITTER, ToolType.AXE),
|
||||||
EXCAVATION(ExcavationManager.class, AbilityType.GIGA_DRILL_BREAKER, ToolType.SHOVEL),
|
EXCAVATION(ExcavationManager.class, Color.fromRGB(139, 69, 19), AbilityType.GIGA_DRILL_BREAKER, ToolType.SHOVEL),
|
||||||
FISHING(FishingManager.class),
|
FISHING(FishingManager.class, Color.NAVY),
|
||||||
HERBALISM(HerbalismManager.class, AbilityType.GREEN_TERRA, ToolType.HOE),
|
HERBALISM(HerbalismManager.class, Color.GREEN, AbilityType.GREEN_TERRA, ToolType.HOE),
|
||||||
MINING(MiningManager.class, AbilityType.SUPER_BREAKER, ToolType.PICKAXE),
|
MINING(MiningManager.class, Color.GRAY, AbilityType.SUPER_BREAKER, ToolType.PICKAXE),
|
||||||
REPAIR(RepairManager.class),
|
REPAIR(RepairManager.class, Color.SILVER),
|
||||||
SMELTING(SmeltingManager.class),
|
SMELTING(SmeltingManager.class, Color.YELLOW),
|
||||||
SWORDS(SwordsManager.class, AbilityType.SERRATED_STRIKES, ToolType.SWORD),
|
SWORDS(SwordsManager.class, Color.fromRGB(178, 34, 34), AbilityType.SERRATED_STRIKES, ToolType.SWORD),
|
||||||
TAMING(TamingManager.class),
|
TAMING(TamingManager.class, Color.PURPLE),
|
||||||
UNARMED(UnarmedManager.class, AbilityType.BERSERK, ToolType.FISTS),
|
UNARMED(UnarmedManager.class, Color.BLACK, AbilityType.BERSERK, ToolType.FISTS),
|
||||||
WOODCUTTING(WoodcuttingManager.class, AbilityType.TREE_FELLER, ToolType.AXE);
|
WOODCUTTING(WoodcuttingManager.class, Color.OLIVE, AbilityType.TREE_FELLER, ToolType.AXE);
|
||||||
|
|
||||||
private Class<? extends SkillManager> managerClass;
|
private Class<? extends SkillManager> managerClass;
|
||||||
|
private Color runescapeColor;
|
||||||
private AbilityType ability;
|
private AbilityType ability;
|
||||||
private ToolType tool;
|
private ToolType tool;
|
||||||
|
|
||||||
private SkillType(Class<? extends SkillManager> managerClass) {
|
public static final List<String> SKILL_NAMES;
|
||||||
|
|
||||||
|
static {
|
||||||
|
ArrayList<String> names = new ArrayList<String>();
|
||||||
|
|
||||||
|
for (SkillType skill : values()) {
|
||||||
|
names.add(SkillUtils.getSkillName(skill));
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.sort(names);
|
||||||
|
SKILL_NAMES = ImmutableList.copyOf(names);
|
||||||
|
}
|
||||||
|
|
||||||
|
private SkillType(Class<? extends SkillManager> managerClass, Color runescapeColor) {
|
||||||
this.managerClass = managerClass;
|
this.managerClass = managerClass;
|
||||||
|
this.runescapeColor = runescapeColor;
|
||||||
ability = null;
|
ability = null;
|
||||||
tool = null;
|
tool = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SkillType(Class<? extends SkillManager> managerClass, AbilityType ability, ToolType tool) {
|
private SkillType(Class<? extends SkillManager> managerClass, Color runescapeColor, AbilityType ability, ToolType tool) {
|
||||||
this.managerClass = managerClass;
|
this.managerClass = managerClass;
|
||||||
|
this.runescapeColor = runescapeColor;
|
||||||
this.ability = ability;
|
this.ability = ability;
|
||||||
this.tool = tool;
|
this.tool = tool;
|
||||||
}
|
}
|
||||||
@@ -116,4 +140,8 @@ public enum SkillType {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Color getRunescapeModeColor() {
|
||||||
|
return runescapeColor;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.gmail.nossr50.datatypes.treasure;
|
||||||
|
|
||||||
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class ShakeTreasure extends Treasure {
|
||||||
|
private EntityType mob;
|
||||||
|
|
||||||
|
public ShakeTreasure(ItemStack drop, int xp, double dropChance, int dropLevel, EntityType mob) {
|
||||||
|
super(drop, xp, dropChance, dropLevel);
|
||||||
|
this.mob = mob;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntityType getMob() {
|
||||||
|
return mob;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMob(EntityType mob) {
|
||||||
|
this.mob = mob;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,6 +17,14 @@ public class McMMOPlayerLevelUpEvent extends McMMOPlayerExperienceEvent {
|
|||||||
|
|
||||||
public McMMOPlayerLevelUpEvent(Player player, SkillType skill, int levelsGained) {
|
public McMMOPlayerLevelUpEvent(Player player, SkillType skill, int levelsGained) {
|
||||||
super(player, skill);
|
super(player, skill);
|
||||||
|
this.setLevelsGained(levelsGained);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param levelsGained
|
||||||
|
* @return Set the number of levels gained in this event
|
||||||
|
*/
|
||||||
|
public void setLevelsGained(int levelsGained) {
|
||||||
this.levelsGained = levelsGained;
|
this.levelsGained = levelsGained;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.gmail.nossr50.listeners;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
@@ -57,13 +58,12 @@ public class BlockListener implements Listener {
|
|||||||
*/
|
*/
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onBlockPistonExtend(BlockPistonExtendEvent event) {
|
public void onBlockPistonExtend(BlockPistonExtendEvent event) {
|
||||||
|
|
||||||
List<Block> blocks = event.getBlocks();
|
List<Block> blocks = event.getBlocks();
|
||||||
BlockFace direction = event.getDirection();
|
BlockFace direction = event.getDirection();
|
||||||
Block futureEmptyBlock = event.getBlock().getRelative(direction); // Block that would be air after piston is finished
|
Block futureEmptyBlock = event.getBlock().getRelative(direction); // Block that would be air after piston is finished
|
||||||
|
|
||||||
for (Block b : blocks) {
|
for (Block b : blocks) {
|
||||||
if (mcMMO.placeStore.isTrue(b)) {
|
if (BlockUtils.shouldBeWatched(b.getState()) && mcMMO.placeStore.isTrue(b)) {
|
||||||
b.getRelative(direction).setMetadata(mcMMO.blockMetadataKey, mcMMO.metadataValue);
|
b.getRelative(direction).setMetadata(mcMMO.blockMetadataKey, mcMMO.metadataValue);
|
||||||
if (b.equals(futureEmptyBlock)) {
|
if (b.equals(futureEmptyBlock)) {
|
||||||
mcMMO.placeStore.setFalse(b);
|
mcMMO.placeStore.setFalse(b);
|
||||||
@@ -88,7 +88,7 @@ public class BlockListener implements Listener {
|
|||||||
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
|
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
|
||||||
if (event.isSticky()) {
|
if (event.isSticky()) {
|
||||||
// Needed only because under some circumstances Minecraft doesn't move the block
|
// Needed only because under some circumstances Minecraft doesn't move the block
|
||||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new StickyPistonTrackerTask(event), 2);
|
new StickyPistonTrackerTask(event.getDirection(), event.getBlock()).runTaskLater(plugin, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -129,14 +129,19 @@ public class BlockListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BlockState blockState = event.getBlock().getState();
|
||||||
|
|
||||||
|
if (!BlockUtils.shouldBeWatched(blockState)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if (Misc.isNPCEntity(player)) {
|
if (Misc.isNPCEntity(player) || player.getGameMode() == GameMode.CREATIVE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||||
BlockState blockState = event.getBlock().getState();
|
|
||||||
ItemStack heldItem = player.getItemInHand();
|
ItemStack heldItem = player.getItemInHand();
|
||||||
|
|
||||||
/* HERBALISM */
|
/* HERBALISM */
|
||||||
@@ -186,9 +191,7 @@ public class BlockListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Remove metadata from placed watched blocks */
|
/* Remove metadata from placed watched blocks */
|
||||||
if (BlockUtils.shouldBeWatched(blockState) && mcMMO.placeStore.isTrue(blockState)) {
|
mcMMO.placeStore.setFalse(blockState);
|
||||||
mcMMO.placeStore.setFalse(blockState);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -204,7 +207,7 @@ public class BlockListener implements Listener {
|
|||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if (Misc.isNPCEntity(player)) {
|
if (Misc.isNPCEntity(player) || player.getGameMode() == GameMode.CREATIVE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.gmail.nossr50.listeners;
|
package com.gmail.nossr50.listeners;
|
||||||
|
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.AnimalTamer;
|
import org.bukkit.entity.AnimalTamer;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
@@ -106,7 +107,7 @@ public class EntityListener implements Listener {
|
|||||||
else if (attacker instanceof Tameable) {
|
else if (attacker instanceof Tameable) {
|
||||||
AnimalTamer animalTamer = ((Tameable) attacker).getOwner();
|
AnimalTamer animalTamer = ((Tameable) attacker).getOwner();
|
||||||
|
|
||||||
if (animalTamer != null) {
|
if (animalTamer != null && ((OfflinePlayer) animalTamer).isOnline()) {
|
||||||
attacker = (Entity) animalTamer;
|
attacker = (Entity) animalTamer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -317,14 +318,15 @@ public class EntityListener implements Listener {
|
|||||||
public void onExplosionPrime(ExplosionPrimeEvent event) {
|
public void onExplosionPrime(ExplosionPrimeEvent event) {
|
||||||
Entity entity = event.getEntity();
|
Entity entity = event.getEntity();
|
||||||
|
|
||||||
if (entity instanceof TNTPrimed) {
|
if (entity instanceof TNTPrimed && entity.hasMetadata(mcMMO.tntMetadataKey)) {
|
||||||
int id = entity.getEntityId();
|
// We can make this assumption because we (should) be the only ones using this exact metadata
|
||||||
|
Player player = plugin.getServer().getPlayer(entity.getMetadata(mcMMO.tntMetadataKey).get(0).asString());
|
||||||
|
|
||||||
if (!plugin.tntIsTracked(id)) {
|
if (Misc.isNPCEntity(player)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MiningManager miningManager = UserManager.getPlayer(plugin.getTNTPlayer(id)).getMiningManager();
|
MiningManager miningManager = UserManager.getPlayer(player).getMiningManager();
|
||||||
|
|
||||||
if (miningManager.canUseBiggerBombs()) {
|
if (miningManager.canUseBiggerBombs()) {
|
||||||
event.setRadius(miningManager.biggerBombs(event.getRadius()));
|
event.setRadius(miningManager.biggerBombs(event.getRadius()));
|
||||||
@@ -341,21 +343,20 @@ public class EntityListener implements Listener {
|
|||||||
public void onEnitityExplode(EntityExplodeEvent event) {
|
public void onEnitityExplode(EntityExplodeEvent event) {
|
||||||
Entity entity = event.getEntity();
|
Entity entity = event.getEntity();
|
||||||
|
|
||||||
if (entity instanceof TNTPrimed) {
|
if (entity instanceof TNTPrimed && entity.hasMetadata(mcMMO.tntMetadataKey)) {
|
||||||
int id = entity.getEntityId();
|
// We can make this assumption because we (should) be the only ones using this exact metadata
|
||||||
|
Player player = plugin.getServer().getPlayer(entity.getMetadata(mcMMO.tntMetadataKey).get(0).asString());
|
||||||
|
|
||||||
if (!plugin.tntIsTracked(id)) {
|
if (Misc.isNPCEntity(player)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MiningManager miningManager = UserManager.getPlayer(plugin.getTNTPlayer(id)).getMiningManager();
|
MiningManager miningManager = UserManager.getPlayer(player).getMiningManager();
|
||||||
|
|
||||||
if (miningManager.canUseBlastMining()) {
|
if (miningManager.canUseBlastMining()) {
|
||||||
miningManager.blastMiningDropProcessing(event.getYield(), event.blockList());
|
miningManager.blastMiningDropProcessing(event.getYield(), event.blockList());
|
||||||
event.setYield(0);
|
event.setYield(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
plugin.removeFromTNTTracker(id);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.inventory.CraftItemEvent;
|
||||||
import org.bukkit.event.inventory.FurnaceBurnEvent;
|
import org.bukkit.event.inventory.FurnaceBurnEvent;
|
||||||
import org.bukkit.event.inventory.FurnaceExtractEvent;
|
import org.bukkit.event.inventory.FurnaceExtractEvent;
|
||||||
import org.bukkit.event.inventory.FurnaceSmeltEvent;
|
import org.bukkit.event.inventory.FurnaceSmeltEvent;
|
||||||
@@ -142,6 +143,10 @@ public class InventoryListener implements Listener {
|
|||||||
// We can make this assumption because we (should) be the only ones using this exact metadata
|
// We can make this assumption because we (should) be the only ones using this exact metadata
|
||||||
Player player = plugin.getServer().getPlayer(furnaceBlock.getMetadata(mcMMO.furnaceMetadataKey).get(0).asString());
|
Player player = plugin.getServer().getPlayer(furnaceBlock.getMetadata(mcMMO.furnaceMetadataKey).get(0).asString());
|
||||||
|
|
||||||
|
if (Misc.isNPCEntity(player)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
SmeltingManager smeltingManager = UserManager.getPlayer(player).getSmeltingManager();
|
SmeltingManager smeltingManager = UserManager.getPlayer(player).getSmeltingManager();
|
||||||
|
|
||||||
if (smeltingManager.canUseVanillaXpBoost()) {
|
if (smeltingManager.canUseVanillaXpBoost()) {
|
||||||
@@ -155,4 +160,29 @@ public class InventoryListener implements Listener {
|
|||||||
public void onInventoryClickEvent(InventoryClickEvent event) {
|
public void onInventoryClickEvent(InventoryClickEvent event) {
|
||||||
SkillUtils.removeAbilityBuff(event.getCurrentItem());
|
SkillUtils.removeAbilityBuff(event.getCurrentItem());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||||
|
public void onCraftItem(CraftItemEvent event) {
|
||||||
|
if (event.getRecipe().getResult() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (!ItemUtils.isMcMMOItem(event.getRecipe().getResult())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (event.getWhoClicked() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (!(event.getWhoClicked() instanceof Player)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
final Player player = (Player) event.getWhoClicked();
|
||||||
|
|
||||||
|
mcMMO.p.getServer().getScheduler().scheduleSyncDelayedTask(mcMMO.p, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
player.updateInventory();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.gmail.nossr50.listeners;
|
package com.gmail.nossr50.listeners;
|
||||||
|
|
||||||
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockState;
|
import org.bukkit.block.BlockState;
|
||||||
@@ -40,6 +41,7 @@ import com.gmail.nossr50.skills.herbalism.HerbalismManager;
|
|||||||
import com.gmail.nossr50.skills.mining.MiningManager;
|
import com.gmail.nossr50.skills.mining.MiningManager;
|
||||||
import com.gmail.nossr50.skills.repair.Repair;
|
import com.gmail.nossr50.skills.repair.Repair;
|
||||||
import com.gmail.nossr50.skills.taming.TamingManager;
|
import com.gmail.nossr50.skills.taming.TamingManager;
|
||||||
|
import com.gmail.nossr50.skills.unarmed.Unarmed;
|
||||||
import com.gmail.nossr50.util.BlockUtils;
|
import com.gmail.nossr50.util.BlockUtils;
|
||||||
import com.gmail.nossr50.util.ChimaeraWing;
|
import com.gmail.nossr50.util.ChimaeraWing;
|
||||||
import com.gmail.nossr50.util.HardcoreManager;
|
import com.gmail.nossr50.util.HardcoreManager;
|
||||||
@@ -57,6 +59,18 @@ public class PlayerListener implements Listener {
|
|||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||||
|
public void onPlayerDeathLowest(PlayerDeathEvent event) {
|
||||||
|
String deathMessage = event.getDeathMessage();
|
||||||
|
|
||||||
|
if (deathMessage == null) {
|
||||||
|
mcMMO.p.getLogger().severe("You have another plugin causing null death messages. mcMMO cannot process this death message.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
event.setDeathMessage(deathMessage.replaceAll("(?:\u00A7(?:[0-9A-FK-ORa-fk-or]){1}(?:[\u2764\u25A0]{1,10})){1,2}", "a mob"));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Monitor PlayerDeath events.
|
* Monitor PlayerDeath events.
|
||||||
*
|
*
|
||||||
@@ -163,6 +177,12 @@ public class PlayerListener implements Listener {
|
|||||||
FishingManager fishingManager = UserManager.getPlayer(player).getFishingManager();
|
FishingManager fishingManager = UserManager.getPlayer(player).getFishingManager();
|
||||||
|
|
||||||
switch (event.getState()) {
|
switch (event.getState()) {
|
||||||
|
case FISHING:
|
||||||
|
if (fishingManager.canMasterAngler()) {
|
||||||
|
fishingManager.masterAngler(event.getHook());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case CAUGHT_FISH:
|
case CAUGHT_FISH:
|
||||||
fishingManager.handleFishing((Item) event.getCaught());
|
fishingManager.handleFishing((Item) event.getCaught());
|
||||||
|
|
||||||
@@ -192,7 +212,8 @@ public class PlayerListener implements Listener {
|
|||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onPlayerPickupItem(PlayerPickupItemEvent event) {
|
public void onPlayerPickupItem(PlayerPickupItemEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
Item item = event.getItem();
|
Item drop = event.getItem();
|
||||||
|
ItemStack dropStack = drop.getItemStack();
|
||||||
|
|
||||||
if (Misc.isNPCEntity(player)) {
|
if (Misc.isNPCEntity(player)) {
|
||||||
return;
|
return;
|
||||||
@@ -200,8 +221,21 @@ public class PlayerListener implements Listener {
|
|||||||
|
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||||
|
|
||||||
if (mcMMOPlayer.inParty() && ItemUtils.isShareable(item.getItemStack())) {
|
if (mcMMOPlayer.inParty() && ItemUtils.isShareable(dropStack)) {
|
||||||
ShareHandler.handleItemShare(event, mcMMOPlayer);
|
event.setCancelled(ShareHandler.handleItemShare(drop, mcMMOPlayer));
|
||||||
|
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mcMMOPlayer.isUsingUnarmed() && ItemUtils.isShareable(dropStack)) {
|
||||||
|
event.setCancelled(Unarmed.handleItemPickup(player.getInventory(), drop));
|
||||||
|
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
player.updateInventory();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,6 +252,10 @@ public class PlayerListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (UserManager.getPlayer(player).getAbilityMode(AbilityType.BERSERK)) {
|
||||||
|
player.setCanPickupItems(true);
|
||||||
|
}
|
||||||
|
|
||||||
/* GARBAGE COLLECTION */
|
/* GARBAGE COLLECTION */
|
||||||
BleedTimerTask.bleedOut(player); // Bleed it out
|
BleedTimerTask.bleedOut(player); // Bleed it out
|
||||||
}
|
}
|
||||||
@@ -231,6 +269,10 @@ public class PlayerListener implements Listener {
|
|||||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
|
if (UserManager.getPlayer(player).getAbilityMode(AbilityType.BERSERK)) {
|
||||||
|
player.setCanPickupItems(false);
|
||||||
|
}
|
||||||
|
|
||||||
if (Config.getInstance().getMOTDEnabled() && Permissions.motd(player)) {
|
if (Config.getInstance().getMOTDEnabled() && Permissions.motd(player)) {
|
||||||
Motd.displayAll(player);
|
Motd.displayAll(player);
|
||||||
}
|
}
|
||||||
@@ -270,7 +312,7 @@ public class PlayerListener implements Listener {
|
|||||||
public void onPlayerInteractLowest(PlayerInteractEvent event) {
|
public void onPlayerInteractLowest(PlayerInteractEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if (Misc.isNPCEntity(player)) {
|
if (Misc.isNPCEntity(player) || player.getGameMode() == GameMode.CREATIVE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -329,7 +371,7 @@ public class PlayerListener implements Listener {
|
|||||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if (Misc.isNPCEntity(player)) {
|
if (Misc.isNPCEntity(player) || player.getGameMode() == GameMode.CREATIVE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -432,6 +474,7 @@ public class PlayerListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean isAsync = event.isAsynchronous();
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||||
|
|
||||||
if (mcMMOPlayer.getPartyChatMode()) {
|
if (mcMMOPlayer.getPartyChatMode()) {
|
||||||
@@ -442,11 +485,11 @@ public class PlayerListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatManager.handlePartyChat(plugin, party, player.getName(), player.getDisplayName(), event.getMessage(), true);
|
ChatManager.handlePartyChat(plugin, party, player.getName(), player.getDisplayName(), event.getMessage(), isAsync);
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
else if (mcMMOPlayer.getAdminChatMode()) {
|
else if (mcMMOPlayer.getAdminChatMode()) {
|
||||||
ChatManager.handleAdminChat(plugin, player.getName(), player.getDisplayName(), event.getMessage(), true);
|
ChatManager.handleAdminChat(plugin, player.getName(), player.getDisplayName(), event.getMessage(), isAsync);
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
36
src/main/java/com/gmail/nossr50/listeners/SelfListener.java
Normal file
36
src/main/java/com/gmail/nossr50/listeners/SelfListener.java
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
package com.gmail.nossr50.listeners;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.events.experience.McMMOPlayerLevelUpEvent;
|
||||||
|
import com.gmail.nossr50.util.skills.ParticleEffectUtils;
|
||||||
|
|
||||||
|
public class SelfListener implements Listener {
|
||||||
|
protected Player player;
|
||||||
|
|
||||||
|
protected float skillValue;
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||||
|
public void onPlayerLevelUp(McMMOPlayerLevelUpEvent event) {
|
||||||
|
if (!Config.getInstance().getLevelUpEffectsEnabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int tier = Config.getInstance().getLevelUpEffectsTier();
|
||||||
|
|
||||||
|
if (tier <= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
player = event.getPlayer();
|
||||||
|
skillValue = event.getSkillLevel();
|
||||||
|
|
||||||
|
if ((skillValue % tier) == 0) {
|
||||||
|
ParticleEffectUtils.runescapeModeCelebration(player, event.getSkill());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,18 +3,15 @@ package com.gmail.nossr50;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.shatteredlands.shatt.backup.ZipLibrary;
|
import net.shatteredlands.shatt.backup.ZipLibrary;
|
||||||
|
|
||||||
import org.bukkit.OfflinePlayer;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.bukkit.scheduler.BukkitScheduler;
|
|
||||||
|
|
||||||
import com.gmail.nossr50.config.AdvancedConfig;
|
import com.gmail.nossr50.config.AdvancedConfig;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
@@ -27,11 +24,13 @@ import com.gmail.nossr50.config.spout.SpoutConfig;
|
|||||||
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
||||||
import com.gmail.nossr50.database.DatabaseManager;
|
import com.gmail.nossr50.database.DatabaseManager;
|
||||||
import com.gmail.nossr50.database.LeaderboardManager;
|
import com.gmail.nossr50.database.LeaderboardManager;
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
|
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||||
import com.gmail.nossr50.listeners.BlockListener;
|
import com.gmail.nossr50.listeners.BlockListener;
|
||||||
import com.gmail.nossr50.listeners.EntityListener;
|
import com.gmail.nossr50.listeners.EntityListener;
|
||||||
import com.gmail.nossr50.listeners.InventoryListener;
|
import com.gmail.nossr50.listeners.InventoryListener;
|
||||||
import com.gmail.nossr50.listeners.PlayerListener;
|
import com.gmail.nossr50.listeners.PlayerListener;
|
||||||
|
import com.gmail.nossr50.listeners.SelfListener;
|
||||||
import com.gmail.nossr50.listeners.WorldListener;
|
import com.gmail.nossr50.listeners.WorldListener;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
import com.gmail.nossr50.metrics.MetricsManager;
|
import com.gmail.nossr50.metrics.MetricsManager;
|
||||||
@@ -39,7 +38,6 @@ import com.gmail.nossr50.party.PartyManager;
|
|||||||
import com.gmail.nossr50.runnables.SaveTimerTask;
|
import com.gmail.nossr50.runnables.SaveTimerTask;
|
||||||
import com.gmail.nossr50.runnables.database.UserPurgeTask;
|
import com.gmail.nossr50.runnables.database.UserPurgeTask;
|
||||||
import com.gmail.nossr50.runnables.party.PartyAutoKickTask;
|
import com.gmail.nossr50.runnables.party.PartyAutoKickTask;
|
||||||
import com.gmail.nossr50.runnables.party.PartyLoaderTask;
|
|
||||||
import com.gmail.nossr50.runnables.skills.BleedTimerTask;
|
import com.gmail.nossr50.runnables.skills.BleedTimerTask;
|
||||||
import com.gmail.nossr50.runnables.skills.SkillMonitorTask;
|
import com.gmail.nossr50.runnables.skills.SkillMonitorTask;
|
||||||
import com.gmail.nossr50.skills.child.ChildConfig;
|
import com.gmail.nossr50.skills.child.ChildConfig;
|
||||||
@@ -62,10 +60,9 @@ public class mcMMO extends JavaPlugin {
|
|||||||
private final BlockListener blockListener = new BlockListener(this);
|
private final BlockListener blockListener = new BlockListener(this);
|
||||||
private final EntityListener entityListener = new EntityListener(this);
|
private final EntityListener entityListener = new EntityListener(this);
|
||||||
private final InventoryListener inventoryListener = new InventoryListener(this);
|
private final InventoryListener inventoryListener = new InventoryListener(this);
|
||||||
|
private final SelfListener selfListener = new SelfListener();
|
||||||
private final WorldListener worldListener = new WorldListener();
|
private final WorldListener worldListener = new WorldListener();
|
||||||
|
|
||||||
private HashMap<Integer, String> tntTracker = new HashMap<Integer, String>();
|
|
||||||
|
|
||||||
public static mcMMO p;
|
public static mcMMO p;
|
||||||
|
|
||||||
public static ChunkManager placeStore;
|
public static ChunkManager placeStore;
|
||||||
@@ -90,10 +87,14 @@ public class mcMMO extends JavaPlugin {
|
|||||||
private boolean xpEventEnabled = false;
|
private boolean xpEventEnabled = false;
|
||||||
|
|
||||||
// Metadata Values
|
// Metadata Values
|
||||||
public static FixedMetadataValue metadataValue;
|
public final static String entityMetadataKey = "mcMMO: Spawned Entity";
|
||||||
public final static String entityMetadataKey = "mcMMO: Spawned Entity";
|
public final static String blockMetadataKey = "mcMMO: Piston Tracking";
|
||||||
public final static String blockMetadataKey = "mcMMO: Piston Tracking";
|
|
||||||
public final static String furnaceMetadataKey = "mcMMO: Tracked Furnace";
|
public final static String furnaceMetadataKey = "mcMMO: Tracked Furnace";
|
||||||
|
public final static String tntMetadataKey = "mcMMO: Tracked TNT";
|
||||||
|
public final static String customNameKey = "mcMMO: Custom Name";
|
||||||
|
public final static String customVisibleKey = "mcMMO: Name Visibility";
|
||||||
|
|
||||||
|
public static FixedMetadataValue metadataValue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Things to be run when the plugin is enabled.
|
* Things to be run when the plugin is enabled.
|
||||||
@@ -116,6 +117,8 @@ public class mcMMO extends JavaPlugin {
|
|||||||
registerEvents();
|
registerEvents();
|
||||||
registerCustomRecipes();
|
registerCustomRecipes();
|
||||||
|
|
||||||
|
PartyManager.loadParties();
|
||||||
|
|
||||||
// Setup the leader boards
|
// Setup the leader boards
|
||||||
if (Config.getInstance().getUseMySQL()) {
|
if (Config.getInstance().getUseMySQL()) {
|
||||||
// TODO: Why do we have to check for a connection that hasn't be made yet?
|
// TODO: Why do we have to check for a connection that hasn't be made yet?
|
||||||
@@ -127,7 +130,7 @@ public class mcMMO extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (Player player : getServer().getOnlinePlayers()) {
|
for (Player player : getServer().getOnlinePlayers()) {
|
||||||
UserManager.addUser(player); // In case of reload add all users back into PlayerProfile
|
UserManager.addUser(player); // In case of reload add all users back into UserManager
|
||||||
}
|
}
|
||||||
|
|
||||||
getLogger().info("Version " + getDescription().getVersion() + " is enabled!");
|
getLogger().info("Version " + getDescription().getVersion() + " is enabled!");
|
||||||
@@ -165,10 +168,11 @@ public class mcMMO extends JavaPlugin {
|
|||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
try {
|
try {
|
||||||
UserManager.saveAll(); // Make sure to save player information if the server shuts down
|
reloadDisableHelper(); // Prevent Berserk from getting "stuck"
|
||||||
PartyManager.saveParties();
|
UserManager.saveAll(); // Make sure to save player information if the server shuts down
|
||||||
placeStore.saveAll(); // Save our metadata
|
PartyManager.saveParties(); // Save our parties
|
||||||
placeStore.cleanUp(); // Cleanup empty metadata stores
|
placeStore.saveAll(); // Save our metadata
|
||||||
|
placeStore.cleanUp(); // Cleanup empty metadata stores
|
||||||
}
|
}
|
||||||
catch (NullPointerException e) {}
|
catch (NullPointerException e) {}
|
||||||
|
|
||||||
@@ -197,82 +201,6 @@ public class mcMMO extends JavaPlugin {
|
|||||||
getLogger().info("Was disabled."); // How informative!
|
getLogger().info("Was disabled."); // How informative!
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get profile of the player by name.
|
|
||||||
* </br>
|
|
||||||
* This function is designed for API usage.
|
|
||||||
*
|
|
||||||
* @param playerName Name of player whose profile to get
|
|
||||||
* @return the PlayerProfile object
|
|
||||||
*/
|
|
||||||
public PlayerProfile getPlayerProfile(String playerName) {
|
|
||||||
return UserManager.getPlayer(playerName).getProfile();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get profile of the player.
|
|
||||||
* </br>
|
|
||||||
* This function is designed for API usage.
|
|
||||||
*
|
|
||||||
* @param player player whose profile to get
|
|
||||||
* @return the PlayerProfile object
|
|
||||||
*/
|
|
||||||
public PlayerProfile getPlayerProfile(OfflinePlayer player) {
|
|
||||||
return UserManager.getPlayer(player.getName()).getProfile();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get profile of the player.
|
|
||||||
* </br>
|
|
||||||
* This function is designed for API usage.
|
|
||||||
*
|
|
||||||
* @param player player whose profile to get
|
|
||||||
* @return the PlayerProfile object
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public PlayerProfile getPlayerProfile(Player player) {
|
|
||||||
return UserManager.getProfile(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add a set of values to the TNT tracker.
|
|
||||||
*
|
|
||||||
* @param tntID The EntityID of the TNT
|
|
||||||
* @param playerName The name of the detonating player
|
|
||||||
*/
|
|
||||||
public void addToTNTTracker(int tntID, String playerName) {
|
|
||||||
tntTracker.put(tntID, playerName);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check to see if a given TNT Entity is tracked.
|
|
||||||
*
|
|
||||||
* @param tntID The EntityID of the TNT
|
|
||||||
* @return true if the TNT is being tracked, false otherwise
|
|
||||||
*/
|
|
||||||
public boolean tntIsTracked(int tntID) {
|
|
||||||
return tntTracker.containsKey(tntID);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the player who detonated the TNT.
|
|
||||||
*
|
|
||||||
* @param tntID The EntityID of the TNT
|
|
||||||
* @return the Player who detonated it
|
|
||||||
*/
|
|
||||||
public Player getTNTPlayer(int tntID) {
|
|
||||||
return getServer().getPlayer(tntTracker.get(tntID));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove TNT from the tracker after it explodes.
|
|
||||||
*
|
|
||||||
* @param tntID The EntityID of the TNT
|
|
||||||
*/
|
|
||||||
public void removeFromTNTTracker(int tntID) {
|
|
||||||
tntTracker.remove(tntID);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getMainDirectory() {
|
public static String getMainDirectory() {
|
||||||
return mainDirectory;
|
return mainDirectory;
|
||||||
}
|
}
|
||||||
@@ -391,6 +319,7 @@ public class mcMMO extends JavaPlugin {
|
|||||||
pluginManager.registerEvents(blockListener, this);
|
pluginManager.registerEvents(blockListener, this);
|
||||||
pluginManager.registerEvents(entityListener, this);
|
pluginManager.registerEvents(entityListener, this);
|
||||||
pluginManager.registerEvents(inventoryListener, this);
|
pluginManager.registerEvents(inventoryListener, this);
|
||||||
|
pluginManager.registerEvents(selfListener, this);
|
||||||
pluginManager.registerEvents(worldListener, this);
|
pluginManager.registerEvents(worldListener, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -428,6 +357,7 @@ public class mcMMO extends JavaPlugin {
|
|||||||
CommandRegistrationManager.registerHardcoreCommand();
|
CommandRegistrationManager.registerHardcoreCommand();
|
||||||
CommandRegistrationManager.registerVampirismCommand();
|
CommandRegistrationManager.registerVampirismCommand();
|
||||||
CommandRegistrationManager.registerMcnotifyCommand();
|
CommandRegistrationManager.registerMcnotifyCommand();
|
||||||
|
CommandRegistrationManager.registerMobhealthCommand();
|
||||||
|
|
||||||
// Spout commands
|
// Spout commands
|
||||||
CommandRegistrationManager.registerXplockCommand();
|
CommandRegistrationManager.registerXplockCommand();
|
||||||
@@ -441,42 +371,54 @@ public class mcMMO extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void scheduleTasks() {
|
private void scheduleTasks() {
|
||||||
BukkitScheduler scheduler = getServer().getScheduler();
|
|
||||||
|
|
||||||
// Parties are loaded at the end of first server tick otherwise Server.getOfflinePlayer throws an IndexOutOfBoundsException
|
|
||||||
scheduler.scheduleSyncDelayedTask(this, new PartyLoaderTask(), 0);
|
|
||||||
|
|
||||||
// Periodic save timer (Saves every 10 minutes by default)
|
// Periodic save timer (Saves every 10 minutes by default)
|
||||||
long saveIntervalTicks = Config.getInstance().getSaveInterval() * 1200;
|
long saveIntervalTicks = Config.getInstance().getSaveInterval() * 1200;
|
||||||
|
|
||||||
scheduler.scheduleSyncRepeatingTask(this, new SaveTimerTask(), saveIntervalTicks, saveIntervalTicks);
|
new SaveTimerTask().runTaskTimer(this, saveIntervalTicks, saveIntervalTicks);
|
||||||
|
|
||||||
// Regen & Cooldown timer (Runs every second)
|
// Regen & Cooldown timer (Runs every second)
|
||||||
scheduler.scheduleSyncRepeatingTask(this, new SkillMonitorTask(), 20, 20);
|
new SkillMonitorTask().runTaskTimer(this, 20, 20);
|
||||||
|
|
||||||
// Bleed timer (Runs every two seconds)
|
// Bleed timer (Runs every two seconds)
|
||||||
scheduler.scheduleSyncRepeatingTask(this, new BleedTimerTask(), 40, 40);
|
new BleedTimerTask().runTaskTimer(this, 40, 40);
|
||||||
|
|
||||||
// Old & Powerless User remover
|
// Old & Powerless User remover
|
||||||
int purgeInterval = Config.getInstance().getPurgeInterval();
|
int purgeInterval = Config.getInstance().getPurgeInterval();
|
||||||
|
UserPurgeTask userPurgeTask = new UserPurgeTask();
|
||||||
|
|
||||||
if (purgeInterval == 0) {
|
if (purgeInterval == 0) {
|
||||||
scheduler.scheduleSyncDelayedTask(this, new UserPurgeTask(), 40); // Start 2 seconds after startup.
|
userPurgeTask.runTaskLater(this, 40);
|
||||||
}
|
}
|
||||||
else if (purgeInterval > 0) {
|
else if (purgeInterval > 0) {
|
||||||
long purgeIntervalTicks = purgeInterval * 60 * 60 * 20;
|
long purgeIntervalTicks = purgeInterval * 60 * 60 * 20;
|
||||||
|
|
||||||
scheduler.scheduleSyncRepeatingTask(this, new UserPurgeTask(), purgeIntervalTicks, purgeIntervalTicks);
|
userPurgeTask.runTaskTimer(this, purgeIntervalTicks, purgeIntervalTicks);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Automatically remove old members from parties
|
// Automatically remove old members from parties
|
||||||
long kickInterval = Config.getInstance().getAutoPartyKickInterval();
|
long kickInterval = Config.getInstance().getAutoPartyKickInterval();
|
||||||
|
PartyAutoKickTask partyAutoKickTask = new PartyAutoKickTask();
|
||||||
|
|
||||||
if (kickInterval == 0) {
|
if (kickInterval == 0) {
|
||||||
scheduler.scheduleSyncDelayedTask(this, new PartyAutoKickTask(), 40); // Start 2 seconds after startup.
|
partyAutoKickTask.runTaskLater(this, 40); // Start 2 seconds after startup.
|
||||||
}
|
}
|
||||||
else if (kickInterval > 0) {
|
else if (kickInterval > 0) {
|
||||||
long kickIntervalTicks = kickInterval * 60 * 60 * 20;
|
long kickIntervalTicks = kickInterval * 60 * 60 * 20;
|
||||||
|
|
||||||
scheduler.scheduleSyncRepeatingTask(this, new PartyAutoKickTask(), kickIntervalTicks, kickIntervalTicks);
|
partyAutoKickTask.runTaskTimer(this, kickIntervalTicks, kickIntervalTicks);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Because /reload is the biggest piece of garbage in existence,
|
||||||
|
* we have to do some special checks to keep it from breaking everything.
|
||||||
|
*/
|
||||||
|
private void reloadDisableHelper() {
|
||||||
|
for (McMMOPlayer mcMMOPlayer : UserManager.getPlayers().values()) {
|
||||||
|
if (mcMMOPlayer.getAbilityMode(AbilityType.BERSERK)) {
|
||||||
|
mcMMOPlayer.setAbilityMode(AbilityType.BERSERK, false);
|
||||||
|
mcMMOPlayer.getPlayer().setCanPickupItems(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|||||||
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent;
|
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent;
|
||||||
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
|
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.runnables.party.PartyLoaderTask;
|
||||||
import com.gmail.nossr50.util.Misc;
|
import com.gmail.nossr50.util.Misc;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
@@ -24,6 +25,15 @@ public final class PartyManager {
|
|||||||
|
|
||||||
private PartyManager() {}
|
private PartyManager() {}
|
||||||
|
|
||||||
|
public static boolean checkPartyExistence(Player player, Party party, String partyName) {
|
||||||
|
if (party == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
player.sendMessage(LocaleLoader.getString("Commands.Party.AlreadyExists", partyName));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean changeOrJoinParty(McMMOPlayer mcMMOPlayer, Player player, Party oldParty, String newPartyName) {
|
public static boolean changeOrJoinParty(McMMOPlayer mcMMOPlayer, Player player, Party oldParty, String newPartyName) {
|
||||||
if (mcMMOPlayer.inParty()) {
|
if (mcMMOPlayer.inParty()) {
|
||||||
if (!handlePartyChangeEvent(player, oldParty.getName(), newPartyName, EventReason.CHANGED_PARTIES)) {
|
if (!handlePartyChangeEvent(player, oldParty.getName(), newPartyName, EventReason.CHANGED_PARTIES)) {
|
||||||
@@ -75,7 +85,7 @@ public final class PartyManager {
|
|||||||
List<Player> nearMembers = new ArrayList<Player>();
|
List<Player> nearMembers = new ArrayList<Player>();
|
||||||
if (party != null) {
|
if (party != null) {
|
||||||
for (Player member : party.getOnlineMembers()) {
|
for (Player member : party.getOnlineMembers()) {
|
||||||
if (!player.getName().equalsIgnoreCase(member.getName()) && Misc.isNear(player.getLocation(), member.getLocation(), range)) {
|
if (!player.getName().equalsIgnoreCase(member.getName()) && !member.isDead() && Misc.isNear(player.getLocation(), member.getLocation(), range)) {
|
||||||
nearMembers.add(member);
|
nearMembers.add(member);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -122,7 +132,13 @@ public final class PartyManager {
|
|||||||
* @return all online players in this party
|
* @return all online players in this party
|
||||||
*/
|
*/
|
||||||
public static List<Player> getOnlineMembers(Player player) {
|
public static List<Player> getOnlineMembers(Player player) {
|
||||||
return getOnlineMembers(player.getName());
|
Party party = getPlayerParty(player.getName());
|
||||||
|
|
||||||
|
if (party == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return getOnlineMembers(party.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -423,6 +439,14 @@ public final class PartyManager {
|
|||||||
* Load party file.
|
* Load party file.
|
||||||
*/
|
*/
|
||||||
public static void loadParties() {
|
public static void loadParties() {
|
||||||
|
try {
|
||||||
|
mcMMO.p.getServer().getOfflinePlayer("nossr50"); // TODO: Find a less-hacky way to manage reloading.
|
||||||
|
}
|
||||||
|
catch (IndexOutOfBoundsException ex){
|
||||||
|
new PartyLoaderTask().runTaskLater(mcMMO.p, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
File file = new File(partiesFilePath);
|
File file = new File(partiesFilePath);
|
||||||
|
|
||||||
if (!file.exists()) {
|
if (!file.exists()) {
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import java.util.List;
|
|||||||
|
|
||||||
import org.bukkit.entity.Item;
|
import org.bukkit.entity.Item;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.player.PlayerPickupItemEvent;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
@@ -91,9 +90,8 @@ public final class ShareHandler {
|
|||||||
* @param mcMMOPlayer Player who picked up the item
|
* @param mcMMOPlayer Player who picked up the item
|
||||||
* @return True if the item has been shared
|
* @return True if the item has been shared
|
||||||
*/
|
*/
|
||||||
public static boolean handleItemShare(PlayerPickupItemEvent event, McMMOPlayer mcMMOPlayer) {
|
public static boolean handleItemShare(Item drop, McMMOPlayer mcMMOPlayer) {
|
||||||
Item item = event.getItem();
|
ItemStack itemStack = drop.getItemStack();
|
||||||
ItemStack itemStack = item.getItemStack();
|
|
||||||
Party party = mcMMOPlayer.getParty();
|
Party party = mcMMOPlayer.getParty();
|
||||||
Player player = mcMMOPlayer.getPlayer();
|
Player player = mcMMOPlayer.getPlayer();
|
||||||
Player winningPlayer = null;
|
Player winningPlayer = null;
|
||||||
@@ -126,8 +124,7 @@ public final class ShareHandler {
|
|||||||
nearMembers.add(player);
|
nearMembers.add(player);
|
||||||
partySize = nearMembers.size();
|
partySize = nearMembers.size();
|
||||||
|
|
||||||
event.setCancelled(true);
|
drop.remove();
|
||||||
item.remove();
|
|
||||||
int itemWeight = ItemWeightConfig.getInstance().getItemWeight(itemStack.getType());
|
int itemWeight = ItemWeightConfig.getInstance().getItemWeight(itemStack.getType());
|
||||||
|
|
||||||
for (int i = 0; i < itemStack.getAmount(); i++) {
|
for (int i = 0; i < itemStack.getAmount(); i++) {
|
||||||
@@ -172,8 +169,7 @@ public final class ShareHandler {
|
|||||||
|
|
||||||
partySize = nearMembers.size() + 1;
|
partySize = nearMembers.size() + 1;
|
||||||
|
|
||||||
event.setCancelled(true);
|
drop.remove();
|
||||||
item.remove();
|
|
||||||
|
|
||||||
for (int i = 0; i < itemStack.getAmount(); i++) {
|
for (int i = 0; i < itemStack.getAmount(); i++) {
|
||||||
int randomMember = Misc.getRandom().nextInt(partySize);
|
int randomMember = Misc.getRandom().nextInt(partySize);
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package com.gmail.nossr50.runnables;
|
||||||
|
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
|
|
||||||
|
public class MobHealthDisplayUpdaterTask extends BukkitRunnable {
|
||||||
|
private LivingEntity target;
|
||||||
|
private String oldName;
|
||||||
|
private boolean oldNameVisible;
|
||||||
|
|
||||||
|
public MobHealthDisplayUpdaterTask(LivingEntity target) {
|
||||||
|
if (target.isValid()) {
|
||||||
|
this.target = target;
|
||||||
|
this.oldName = target.getMetadata(mcMMO.customNameKey).get(0).asString();
|
||||||
|
this.oldNameVisible = target.getMetadata(mcMMO.customVisibleKey).get(0).asBoolean();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (target.isValid()) {
|
||||||
|
target.setCustomNameVisible(oldNameVisible);
|
||||||
|
target.setCustomName(oldName);
|
||||||
|
target.removeMetadata(mcMMO.customNameKey, mcMMO.p);
|
||||||
|
target.removeMetadata(mcMMO.customVisibleKey, mcMMO.p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.gmail.nossr50.runnables;
|
package com.gmail.nossr50.runnables;
|
||||||
|
|
||||||
import org.bukkit.scheduler.BukkitScheduler;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
@@ -8,15 +8,14 @@ import com.gmail.nossr50.party.PartyManager;
|
|||||||
import com.gmail.nossr50.runnables.player.PlayerProfileSaveTask;
|
import com.gmail.nossr50.runnables.player.PlayerProfileSaveTask;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class SaveTimerTask implements Runnable {
|
public class SaveTimerTask extends BukkitRunnable {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
// All player data will be saved periodically through this
|
// All player data will be saved periodically through this
|
||||||
int count = 1;
|
int count = 1;
|
||||||
BukkitScheduler bukkitScheduler = mcMMO.p.getServer().getScheduler();
|
|
||||||
|
|
||||||
for (McMMOPlayer mcMMOPlayer : UserManager.getPlayers().values()) {
|
for (McMMOPlayer mcMMOPlayer : UserManager.getPlayers().values()) {
|
||||||
bukkitScheduler.scheduleSyncDelayedTask(mcMMO.p, new PlayerProfileSaveTask(mcMMOPlayer), count);
|
new PlayerProfileSaveTask(mcMMOPlayer).runTaskLater(mcMMO.p, count);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,27 +2,26 @@ package com.gmail.nossr50.runnables;
|
|||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.event.block.BlockPistonRetractEvent;
|
import org.bukkit.block.BlockFace;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
|
|
||||||
public class StickyPistonTrackerTask implements Runnable {
|
public class StickyPistonTrackerTask extends BukkitRunnable {
|
||||||
BlockPistonRetractEvent event;
|
private BlockFace direction;
|
||||||
|
private Block block;
|
||||||
|
|
||||||
public StickyPistonTrackerTask(BlockPistonRetractEvent event) {
|
public StickyPistonTrackerTask(BlockFace direction, Block block) {
|
||||||
this.event = event;
|
this.direction = direction;
|
||||||
|
this.block = block;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Block newBlock = event.getBlock().getRelative(event.getDirection());
|
Block newBlock = block.getRelative(direction);
|
||||||
Block originalBlock = newBlock.getRelative(event.getDirection());
|
Block originalBlock = newBlock.getRelative(direction);
|
||||||
|
|
||||||
if (originalBlock.getType() != Material.AIR) {
|
if (originalBlock.getType() != Material.AIR || !mcMMO.placeStore.isTrue(originalBlock)) {
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!mcMMO.placeStore.isTrue(originalBlock)) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,16 +3,12 @@ package com.gmail.nossr50.runnables.commands;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.database.DatabaseManager;
|
import com.gmail.nossr50.database.DatabaseManager;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
|
||||||
import com.gmail.nossr50.util.Permissions;
|
|
||||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
|
||||||
|
|
||||||
public class McrankCommandAsyncTask implements Runnable {
|
public class McrankCommandAsyncTask extends BukkitRunnable {
|
||||||
private final String playerName;
|
private final String playerName;
|
||||||
private final CommandSender sender;
|
private final CommandSender sender;
|
||||||
|
|
||||||
@@ -23,39 +19,8 @@ public class McrankCommandAsyncTask implements Runnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
final Map<String, Integer> skills = DatabaseManager.readSQLRank(playerName);
|
Map<String, Integer> skills = DatabaseManager.readSQLRank(playerName);
|
||||||
|
|
||||||
mcMMO.p.getServer().getScheduler().scheduleSyncDelayedTask(mcMMO.p, new Runnable() {
|
new McrankCommandDisplayTask(skills, sender, playerName).runTaskLater(mcMMO.p, 1);
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Heading"));
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Player", playerName));
|
|
||||||
|
|
||||||
for (SkillType skillType : SkillType.values()) {
|
|
||||||
if (skillType.isChildSkill()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((sender instanceof Player) && !Permissions.skillEnabled((Player) sender, skillType)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (skills.get(skillType.name()) == null) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Skill", SkillUtils.getSkillName(skillType), LocaleLoader.getString("Commands.mcrank.Unranked")));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Skill", SkillUtils.getSkillName(skillType), skills.get(skillType.name())));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (skills.get("ALL") == null) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Overall", LocaleLoader.getString("Commands.mcrank.Unranked")));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Overall", skills.get("ALL")));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}, 1L);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package com.gmail.nossr50.runnables.commands;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.util.Permissions;
|
||||||
|
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||||
|
|
||||||
|
public class McrankCommandDisplayTask extends BukkitRunnable {
|
||||||
|
private final Map<String, Integer> skills;
|
||||||
|
private final CommandSender sender;
|
||||||
|
private final String playerName;
|
||||||
|
|
||||||
|
public McrankCommandDisplayTask(Map<String, Integer> skills, CommandSender sender, String playerName) {
|
||||||
|
this.skills = skills;
|
||||||
|
this.sender = sender;
|
||||||
|
this.playerName = playerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Heading"));
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Player", playerName));
|
||||||
|
|
||||||
|
for (SkillType skillType : SkillType.values()) {
|
||||||
|
if ((sender instanceof Player && !Permissions.skillEnabled(sender, skillType)) || skillType.isChildSkill()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (skills.get(skillType.name()) == null) {
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Skill", SkillUtils.getSkillName(skillType), LocaleLoader.getString("Commands.mcrank.Unranked")));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Skill", SkillUtils.getSkillName(skillType), skills.get(skillType.name())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (skills.get("ALL") == null) {
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Overall", LocaleLoader.getString("Commands.mcrank.Unranked")));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Overall", skills.get("ALL")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,66 +3,31 @@ package com.gmail.nossr50.runnables.commands;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.database.DatabaseManager;
|
import com.gmail.nossr50.database.DatabaseManager;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
|
||||||
import com.gmail.nossr50.util.Permissions;
|
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
|
||||||
|
|
||||||
public class MctopCommandAsyncTask implements Runnable {
|
public class MctopCommandAsyncTask extends BukkitRunnable {
|
||||||
|
|
||||||
private CommandSender sender;
|
private CommandSender sender;
|
||||||
private String query;
|
private String query;
|
||||||
private int page;
|
private int page;
|
||||||
private Command command;
|
|
||||||
|
|
||||||
public MctopCommandAsyncTask(int page, String query, CommandSender sender, Command command) {
|
public MctopCommandAsyncTask(int page, String query, CommandSender sender) {
|
||||||
this.page = page;
|
this.page = page;
|
||||||
this.query = query;
|
this.query = query;
|
||||||
this.sender = sender;
|
this.sender = sender;
|
||||||
this.command = command;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (!query.equalsIgnoreCase("taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing")) {
|
|
||||||
if (!Permissions.mctop(sender, SkillType.getSkill(query))) {
|
|
||||||
sender.sendMessage(command.getPermissionMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String tablePrefix = Config.getInstance().getMySQLTablePrefix();
|
String tablePrefix = Config.getInstance().getMySQLTablePrefix();
|
||||||
final HashMap<Integer, ArrayList<String>> userslist = DatabaseManager.read("SELECT " + query + ", user, NOW() FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON (user_id = id) WHERE " + query + " > 0 ORDER BY " + query + " DESC, user LIMIT " + ((page * 10) - 10) + ",10");
|
final HashMap<Integer, ArrayList<String>> userslist = DatabaseManager.read("SELECT " + query + ", user, NOW() FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON (user_id = id) WHERE " + query + " > 0 ORDER BY " + query + " DESC, user LIMIT " + ((page * 10) - 10) + ",10");
|
||||||
mcMMO.p.getServer().getScheduler().scheduleSyncDelayedTask(mcMMO.p, new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (query.equalsIgnoreCase("taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing")) {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.PowerLevel.Leaderboard"));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Leaderboard", StringUtils.getCapitalized(query)));
|
|
||||||
}
|
|
||||||
|
|
||||||
int place = (page * 10) - 9;
|
new MctopCommandDisplayTask(userslist, page, tablePrefix, sender).runTaskLater(mcMMO.p, 1);
|
||||||
for (int i = 1; i <= 10; i++) {
|
|
||||||
if (userslist.get(i) == null) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Format: 1. Playername - skill value
|
|
||||||
sender.sendMessage(place + ". " + ChatColor.GREEN + userslist.get(i).get(1) + " - " + ChatColor.WHITE + userslist.get(i).get(0));
|
|
||||||
place++;
|
|
||||||
}
|
|
||||||
|
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.mctop.Tip"));
|
|
||||||
}
|
|
||||||
}, 1L);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package com.gmail.nossr50.runnables.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
|
|
||||||
|
public class MctopCommandDisplayTask extends BukkitRunnable {
|
||||||
|
private HashMap<Integer, ArrayList<String>> userslist;
|
||||||
|
private CommandSender sender;
|
||||||
|
private String query;
|
||||||
|
private int page;
|
||||||
|
|
||||||
|
public MctopCommandDisplayTask(HashMap<Integer, ArrayList<String>> userslist, int page, String query, CommandSender sender) {
|
||||||
|
this.userslist = userslist;
|
||||||
|
this.page = page;
|
||||||
|
this.query = query;
|
||||||
|
this.sender = sender;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (query.equalsIgnoreCase("taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing")) {
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.PowerLevel.Leaderboard"));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.Skill.Leaderboard", StringUtils.getCapitalized(query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
int place = (page * 10) - 9;
|
||||||
|
for (int i = 1; i <= 10; i++) {
|
||||||
|
if (userslist.get(i) == null) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Format: 1. Playername - skill value
|
||||||
|
sender.sendMessage(place + ". " + ChatColor.GREEN + userslist.get(i).get(1) + " - " + ChatColor.WHITE + userslist.get(i).get(0));
|
||||||
|
place++;
|
||||||
|
}
|
||||||
|
|
||||||
|
sender.sendMessage(LocaleLoader.getString("Commands.mctop.Tip"));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,13 +3,15 @@ package com.gmail.nossr50.runnables.database;
|
|||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
|
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.database.DatabaseManager;
|
import com.gmail.nossr50.database.DatabaseManager;
|
||||||
import com.gmail.nossr50.util.Misc;
|
import com.gmail.nossr50.util.Misc;
|
||||||
import com.gmail.nossr50.util.StringUtils;
|
import com.gmail.nossr50.util.StringUtils;
|
||||||
|
|
||||||
public class SQLConversionTask implements Runnable {
|
public class SQLConversionTask extends BukkitRunnable {
|
||||||
private String tablePrefix = Config.getInstance().getMySQLTablePrefix();
|
private String tablePrefix = Config.getInstance().getMySQLTablePrefix();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
package com.gmail.nossr50.runnables.database;
|
package com.gmail.nossr50.runnables.database;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.database.DatabaseManager;
|
import com.gmail.nossr50.database.DatabaseManager;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
|
||||||
public class SQLReconnectTask implements Runnable {
|
public class SQLReconnectTask extends BukkitRunnable {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (DatabaseManager.checkConnected()) {
|
if (DatabaseManager.checkConnected()) {
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
package com.gmail.nossr50.runnables.database;
|
package com.gmail.nossr50.runnables.database;
|
||||||
|
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.Config;
|
import com.gmail.nossr50.config.Config;
|
||||||
import com.gmail.nossr50.database.DatabaseManager;
|
import com.gmail.nossr50.database.DatabaseManager;
|
||||||
import com.gmail.nossr50.database.LeaderboardManager;
|
import com.gmail.nossr50.database.LeaderboardManager;
|
||||||
|
|
||||||
public class UserPurgeTask implements Runnable {
|
public class UserPurgeTask extends BukkitRunnable {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (Config.getInstance().getUseMySQL()) {
|
if (Config.getInstance().getUseMySQL()) {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user