Dropped SpoutPlugin support
Because SpoutPlugin is not being updated to 1.6.x and mcMMO 1.4.07 does not support any CB version below 1.6.x SpoutPlugin support is no longer needed. https://blog.spout.org/minecraft-1-6-and-the-legacy-finale/
@ -1,29 +0,0 @@
|
||||
package com.gmail.nossr50.api;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.gmail.nossr50.config.spout.SpoutConfig;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
|
||||
public class SpoutHudAPI {
|
||||
private SpoutHudAPI() {}
|
||||
|
||||
/**
|
||||
* Disable the mcMMO XP bar for a player.
|
||||
* </br>
|
||||
* This function is designed for API usage.
|
||||
*/
|
||||
public static void disableXpBar(Player player) {
|
||||
UserManager.getPlayer(player).getProfile().setHudType(HudType.DISABLED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable the mcMMO XP bar for the server.
|
||||
* </br>
|
||||
* This function is designed for API usage.
|
||||
*/
|
||||
public static void disableXpBar() {
|
||||
SpoutConfig.getInstance().setXPBarEnabled(false);
|
||||
}
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
package com.gmail.nossr50.api;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.gmail.nossr50.datatypes.skills.ToolType;
|
||||
|
||||
public final class SpoutToolsAPI {
|
||||
public static final List<ItemStack> spoutSwords = new ArrayList<ItemStack>();
|
||||
public static final List<ItemStack> spoutAxes = new ArrayList<ItemStack>();
|
||||
public static final List<ItemStack> spoutPickaxes = new ArrayList<ItemStack>();
|
||||
public static final List<ItemStack> spoutHoes = new ArrayList<ItemStack>();
|
||||
public static final List<ItemStack> spoutShovels = new ArrayList<ItemStack>();
|
||||
|
||||
private SpoutToolsAPI() {}
|
||||
|
||||
/**
|
||||
* Add a custom Spout tool to mcMMO for XP gain & ability use.
|
||||
* </br>
|
||||
* This function is designed for API usage.
|
||||
*
|
||||
* @param spoutTool The tool to add
|
||||
* @param type The type of tool to add
|
||||
*/
|
||||
public static void addCustomTool(ItemStack spoutTool, ToolType type) {
|
||||
switch (type) {
|
||||
case AXE:
|
||||
spoutAxes.add(spoutTool);
|
||||
break;
|
||||
|
||||
case HOE:
|
||||
spoutHoes.add(spoutTool);
|
||||
break;
|
||||
|
||||
case PICKAXE:
|
||||
spoutPickaxes.add(spoutTool);
|
||||
break;
|
||||
|
||||
case SHOVEL:
|
||||
spoutShovels.add(spoutTool);
|
||||
break;
|
||||
|
||||
case SWORD:
|
||||
spoutSwords.add(spoutTool);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
@ -4,14 +4,12 @@ import org.bukkit.ChatColor;
|
||||
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.commands.party.PartySubcommandType;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.spout.SpoutUtils;
|
||||
|
||||
public class McmmoCommand implements CommandExecutor {
|
||||
@Override
|
||||
@ -28,13 +26,8 @@ public class McmmoCommand implements CommandExecutor {
|
||||
sender.sendMessage(mcSplit);
|
||||
|
||||
if (Config.getInstance().getDonateMessageEnabled()) {
|
||||
if (mcMMO.isSpoutEnabled() && sender instanceof Player) {
|
||||
SpoutUtils.sendDonationNotification((Player) sender);
|
||||
}
|
||||
else {
|
||||
sender.sendMessage(LocaleLoader.getString("MOTD.Donate"));
|
||||
sender.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "gjmcferrin@gmail.com" + ChatColor.GOLD + " Paypal");
|
||||
}
|
||||
sender.sendMessage(LocaleLoader.getString("MOTD.Donate"));
|
||||
sender.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "gjmcferrin@gmail.com" + ChatColor.GOLD + " Paypal");
|
||||
}
|
||||
|
||||
sender.sendMessage(LocaleLoader.getString("MOTD.Version", mcMMO.p.getDescription().getVersion()));
|
||||
|
@ -1,58 +0,0 @@
|
||||
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.CommandSender;
|
||||
import org.bukkit.util.StringUtil;
|
||||
|
||||
import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
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
|
||||
protected boolean noArguments(Command command, CommandSender sender, String[] args) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean oneArgument(Command command, CommandSender sender, String[] args) {
|
||||
try {
|
||||
playerProfile.setHudType(HudType.valueOf(args[0].toUpperCase().trim()));
|
||||
spoutHud.initializeXpBar();
|
||||
spoutHud.updateXpBar();
|
||||
return true;
|
||||
}
|
||||
catch (IllegalArgumentException ex) {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.mchud.Invalid"));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,54 +0,0 @@
|
||||
package com.gmail.nossr50.commands.spout;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabExecutor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.spout.SpoutConfig;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
|
||||
public abstract class SpoutCommand implements TabExecutor {
|
||||
protected PlayerProfile playerProfile;
|
||||
protected McMMOHud spoutHud;
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if (CommandUtils.noConsoleUsage(sender)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!mcMMO.isSpoutEnabled() || !SpoutConfig.getInstance().getXPBarEnabled()) {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.Disabled"));
|
||||
return true;
|
||||
}
|
||||
|
||||
playerProfile = UserManager.getPlayer((Player) sender).getProfile();
|
||||
spoutHud = playerProfile.getSpoutHud();
|
||||
|
||||
if (spoutHud == null) {
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.Disabled"));
|
||||
return true;
|
||||
}
|
||||
|
||||
switch (args.length) {
|
||||
case 0:
|
||||
return noArguments(command, sender, args);
|
||||
|
||||
case 1:
|
||||
return oneArgument(command, sender, args);
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract boolean noArguments(Command command, CommandSender sender, String[] args);
|
||||
|
||||
protected abstract boolean oneArgument(Command command, CommandSender sender, String[] args);
|
||||
}
|
@ -1,90 +0,0 @@
|
||||
package com.gmail.nossr50.commands.spout;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.util.StringUtil;
|
||||
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
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
|
||||
protected boolean noArguments(Command command, CommandSender sender, String[] args) {
|
||||
if (spoutHud.getXpBarLocked()) {
|
||||
unlockXpBar(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
lockXpBar(sender, spoutHud.getLastGained());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean oneArgument(Command command, CommandSender sender, String[] args) {
|
||||
if (CommandUtils.shouldEnableToggle(args[0])) {
|
||||
lockXpBar(sender, spoutHud.getLastGained());
|
||||
return true;
|
||||
}
|
||||
|
||||
if (CommandUtils.shouldDisableToggle(args[0])) {
|
||||
unlockXpBar(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (CommandUtils.isInvalidSkill(sender, args[0])) {
|
||||
return true;
|
||||
}
|
||||
|
||||
SkillType skill = SkillType.getSkill(args[0]);
|
||||
|
||||
if (CommandUtils.isChildSkill(sender, skill)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!Permissions.xplock(sender, skill)) {
|
||||
sender.sendMessage(command.getPermissionMessage());
|
||||
return true;
|
||||
}
|
||||
|
||||
lockXpBar(sender, skill);
|
||||
return true;
|
||||
}
|
||||
|
||||
private void lockXpBar(CommandSender sender, SkillType skill) {
|
||||
if (skill != null) {
|
||||
spoutHud.setXpBarLocked(true);
|
||||
spoutHud.setSkillLock(skill);
|
||||
spoutHud.updateXpBar();
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.xplock.locked", SkillUtils.getSkillName(skill)));
|
||||
}
|
||||
}
|
||||
|
||||
private void unlockXpBar(CommandSender sender) {
|
||||
spoutHud.setXpBarLocked(false);
|
||||
sender.sendMessage(LocaleLoader.getString("Commands.xplock.unlocked"));
|
||||
}
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
package com.gmail.nossr50.config.spout;
|
||||
|
||||
import com.gmail.nossr50.config.ConfigLoader;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
||||
|
||||
import org.getspout.spoutapi.keyboard.Keyboard;
|
||||
|
||||
public class SpoutConfig extends ConfigLoader {
|
||||
private static SpoutConfig instance;
|
||||
|
||||
private SpoutConfig() {
|
||||
super("spout.yml");
|
||||
}
|
||||
|
||||
public static SpoutConfig getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new SpoutConfig();
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadKeys() {
|
||||
// Setup default HUD
|
||||
}
|
||||
|
||||
public HudType getDefaultHudType() {
|
||||
try {
|
||||
return HudType.valueOf(config.getString("Spout.HUD.Default", "STANDARD").toUpperCase().trim());
|
||||
}
|
||||
catch (IllegalArgumentException ex) {
|
||||
return HudType.STANDARD;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean getShowPowerLevel() { return config.getBoolean("HUD.Show_Power_Level", true); }
|
||||
public Keyboard getMenuKey() {
|
||||
try {
|
||||
return Keyboard.valueOf(config.getString("Menu.Key", "KEY_M").toUpperCase().trim());
|
||||
}
|
||||
catch (IllegalArgumentException ex) {
|
||||
return Keyboard.KEY_M;
|
||||
}
|
||||
}
|
||||
|
||||
/* XP Bar */
|
||||
public boolean getXPBarEnabled() { return config.getBoolean("XP.Bar.Enabled", true); }
|
||||
public void setXPBarEnabled(boolean enabled) { config.set("XP.Bar.Enabled", enabled); }
|
||||
|
||||
public boolean getXPBarIconEnabled() { return config.getBoolean("XP.Icon.Enabled", true); }
|
||||
public int getXPBarXPosition() { return config.getInt("XP.Bar.X_POS", 95); }
|
||||
public int getXPBarYPosition() { return config.getInt("XP.Bar.Y_POS", 6); }
|
||||
public int getXPIconXPosition() { return config.getInt("XP.Icon.X_POS", 78); }
|
||||
public int getXPIconYPosition() { return config.getInt("XP.Icon.Y_POS", 2); }
|
||||
|
||||
/* HUD Colors */
|
||||
public double getRetroHUDXPBorderRed() { return config.getDouble("HUD.Retro.Colors.Border.RED", 0.0); }
|
||||
public double getRetroHUDXPBorderGreen() { return config.getDouble("HUD.Retro.Colors.Border.GREEN", 0.0); }
|
||||
public double getRetroHUDXPBorderBlue() { return config.getDouble("HUD.Retro.Colors.Border.BLUE", 0.0); }
|
||||
public double getRetroHUDXPBackgroundRed() { return config.getDouble("HUD.Retro.Colors.Background.RED", 0.75); }
|
||||
public double getRetroHUDXPBackgroundGreen() { return config.getDouble("HUD.Retro.Colors.Background.GREEN", 0.75); }
|
||||
public double getRetroHUDXPBackgroundBlue() { return config.getDouble("HUD.Retro.Colors.Background.BLUE", 0.75); }
|
||||
|
||||
public double getRetroHUDRed(SkillType skill) { return config.getDouble("HUD.Retro.Colors." + skill.toString().toLowerCase() +".RED", 0.3); }
|
||||
public double getRetroHUDGreen(SkillType skill) { return config.getDouble("HUD.Retro.Colors." + skill.toString().toLowerCase() +".RED", 0.3); }
|
||||
public double getRetroHUDBlue(SkillType skill) { return config.getDouble("HUD.Retro.Colors." + skill.toString().toLowerCase() +".RED", 0.3); }
|
||||
|
||||
/* Notification Tiers */
|
||||
public int getNotificationTier1() { return config.getInt("Notifications.Tier1", 200); }
|
||||
public int getNotificationTier2() { return config.getInt("Notifications.Tier2", 400); }
|
||||
public int getNotificationTier3() { return config.getInt("Notifications.Tier3", 600); }
|
||||
public int getNotificationTier4() { return config.getInt("Notifications.Tier4", 800); }
|
||||
}
|
@ -26,7 +26,6 @@ import com.gmail.nossr50.datatypes.database.PlayerStat;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
|
||||
public final class FlatfileDatabaseManager implements DatabaseManager {
|
||||
@ -259,8 +258,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
|
||||
writer.append((int) profile.getSkillDATS(AbilityType.SERRATED_STRIKES)).append(":");
|
||||
writer.append((int) profile.getSkillDATS(AbilityType.SKULL_SPLITTER)).append(":");
|
||||
writer.append((int) profile.getSkillDATS(AbilityType.SUPER_BREAKER)).append(":");
|
||||
HudType hudType = profile.getHudType();
|
||||
writer.append(hudType == null ? "STANDARD" : hudType.toString()).append(":");
|
||||
writer.append(":");
|
||||
writer.append(profile.getSkillLevel(SkillType.FISHING)).append(":");
|
||||
writer.append(profile.getSkillXpLevel(SkillType.FISHING)).append(":");
|
||||
writer.append((int) profile.getSkillDATS(AbilityType.BLAST_MINING)).append(":");
|
||||
@ -728,7 +726,6 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
|
||||
Map<SkillType, Integer> skills = getSkillMapFromLine(character); // Skill levels
|
||||
Map<SkillType, Float> skillsXp = new HashMap<SkillType, Float>(); // Skill & XP
|
||||
Map<AbilityType, Integer> skillsDATS = new HashMap<AbilityType, Integer>(); // Ability & Cooldown
|
||||
HudType hudType;
|
||||
MobHealthbarType mobHealthbarType;
|
||||
|
||||
// TODO on updates, put new values in a try{} ?
|
||||
@ -759,13 +756,6 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
|
||||
// Acrobatics - Unused
|
||||
skillsDATS.put(AbilityType.BLAST_MINING, Integer.valueOf(character[36]));
|
||||
|
||||
try {
|
||||
hudType = HudType.valueOf(character[33]);
|
||||
}
|
||||
catch (Exception e) {
|
||||
hudType = HudType.STANDARD; // Shouldn't happen unless database is being tampered with
|
||||
}
|
||||
|
||||
try {
|
||||
mobHealthbarType = MobHealthbarType.valueOf(character[38]);
|
||||
}
|
||||
@ -773,7 +763,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
|
||||
mobHealthbarType = Config.getInstance().getMobHealthbarDefault();
|
||||
}
|
||||
|
||||
return new PlayerProfile(character[0], skills, skillsXp, skillsDATS, hudType, mobHealthbarType);
|
||||
return new PlayerProfile(character[0], skills, skillsXp, skillsDATS, mobHealthbarType);
|
||||
}
|
||||
|
||||
private Map<SkillType, Integer> getSkillMapFromLine(String[] character) {
|
||||
|
@ -23,7 +23,6 @@ import com.gmail.nossr50.datatypes.database.PlayerStat;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
||||
import com.gmail.nossr50.runnables.database.SQLReconnectTask;
|
||||
import com.gmail.nossr50.util.Misc;
|
||||
|
||||
@ -129,10 +128,8 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
||||
}
|
||||
}
|
||||
MobHealthbarType mobHealthbarType = profile.getMobHealthbarType();
|
||||
HudType hudType = profile.getHudType();
|
||||
|
||||
saveLogin(userId, ((int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR)));
|
||||
saveHuds(userId, (hudType == null ? "STANDARD" : hudType.toString()), (mobHealthbarType == null ? Config.getInstance().getMobHealthbarDefault().toString() : mobHealthbarType.toString()));
|
||||
saveLongs(
|
||||
"UPDATE " + tablePrefix + "cooldowns SET "
|
||||
+ " mining = ?, woodcutting = ?, unarmed = ?"
|
||||
@ -1150,7 +1147,6 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
||||
Map<SkillType, Integer> skills = new HashMap<SkillType, Integer>(); // Skill & Level
|
||||
Map<SkillType, Float> skillsXp = new HashMap<SkillType, Float>(); // Skill & XP
|
||||
Map<AbilityType, Integer> skillsDATS = new HashMap<AbilityType, Integer>(); // Ability & Cooldown
|
||||
HudType hudType;
|
||||
MobHealthbarType mobHealthbarType;
|
||||
|
||||
final int OFFSET_SKILLS = 0; // TODO update these numbers when the query changes (a new skill is added)
|
||||
@ -1197,13 +1193,6 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
||||
// Acrobatics - Unused - result.getInt(OFFSET_DATS + 11)
|
||||
skillsDATS.put(AbilityType.BLAST_MINING, result.getInt(OFFSET_DATS + 12));
|
||||
|
||||
try {
|
||||
hudType = HudType.valueOf(result.getString(OFFSET_OTHER + 1));
|
||||
}
|
||||
catch (Exception e) {
|
||||
hudType = HudType.STANDARD; // Shouldn't happen unless database is being tampered with
|
||||
}
|
||||
|
||||
try {
|
||||
mobHealthbarType = MobHealthbarType.valueOf(result.getString(OFFSET_OTHER + 2));
|
||||
}
|
||||
@ -1211,7 +1200,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
||||
mobHealthbarType = Config.getInstance().getMobHealthbarDefault();
|
||||
}
|
||||
|
||||
return new PlayerProfile(playerName, skills, skillsXp, skillsDATS, hudType, mobHealthbarType);
|
||||
return new PlayerProfile(playerName, skills, skillsXp, skillsDATS, mobHealthbarType);
|
||||
}
|
||||
|
||||
private void printErrors(SQLException ex) {
|
||||
|
@ -17,7 +17,6 @@ import com.gmail.nossr50.datatypes.party.Party;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.ToolType;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
|
||||
import com.gmail.nossr50.events.experience.McMMOPlayerXpGainEvent;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.party.PartyManager;
|
||||
@ -531,12 +530,6 @@ public class McMMOPlayer {
|
||||
|
||||
profile.setSkillXpLevel(skillType, profile.getSkillXpLevelRaw(skillType) + event.getRawXpGained());
|
||||
|
||||
McMMOHud spoutHud = profile.getSpoutHud();
|
||||
|
||||
if (spoutHud != null) {
|
||||
spoutHud.setLastGained(skillType);
|
||||
}
|
||||
|
||||
isUsingUnarmed = (skillType == SkillType.UNARMED);
|
||||
SkillUtils.xpCheckSkill(skillType, player, profile);
|
||||
}
|
||||
|
@ -9,13 +9,10 @@ import org.bukkit.scoreboard.Scoreboard;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||
import com.gmail.nossr50.config.spout.SpoutConfig;
|
||||
import com.gmail.nossr50.datatypes.MobHealthbarType;
|
||||
import com.gmail.nossr50.datatypes.experience.FormulaType;
|
||||
import com.gmail.nossr50.datatypes.skills.AbilityType;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
|
||||
import com.gmail.nossr50.skills.child.FamilyTree;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
|
||||
@ -25,9 +22,7 @@ public class PlayerProfile {
|
||||
private boolean changed;
|
||||
|
||||
/* HUDs */
|
||||
private HudType hudType;
|
||||
private MobHealthbarType mobHealthbarType;
|
||||
private McMMOHud spoutHud;
|
||||
private Scoreboard playerStatsScoreboard;
|
||||
|
||||
/* Skill Data */
|
||||
@ -38,7 +33,6 @@ public class PlayerProfile {
|
||||
public PlayerProfile(String playerName) {
|
||||
this.playerName = playerName;
|
||||
|
||||
hudType = mcMMO.isSpoutEnabled() ? SpoutConfig.getInstance().getDefaultHudType() : HudType.DISABLED;
|
||||
mobHealthbarType = Config.getInstance().getMobHealthbarDefault();
|
||||
|
||||
for (AbilityType abilityType : AbilityType.values()) {
|
||||
@ -59,10 +53,9 @@ public class PlayerProfile {
|
||||
/**
|
||||
* Calling this constructor is considered loading the profile.
|
||||
*/
|
||||
public PlayerProfile(String playerName, Map<SkillType, Integer> argSkills, Map<SkillType, Float> argSkillsXp, Map<AbilityType, Integer> argSkillsDats, HudType hudType, MobHealthbarType mobHealthbarType) {
|
||||
public PlayerProfile(String playerName, Map<SkillType, Integer> argSkills, Map<SkillType, Float> argSkillsXp, Map<AbilityType, Integer> argSkillsDats, MobHealthbarType mobHealthbarType) {
|
||||
this(playerName, true);
|
||||
|
||||
this.hudType = hudType;
|
||||
this.mobHealthbarType = mobHealthbarType;
|
||||
|
||||
this.skills.putAll(argSkills);
|
||||
@ -89,26 +82,6 @@ public class PlayerProfile {
|
||||
return loaded;
|
||||
}
|
||||
|
||||
/*
|
||||
* HUD Stuff
|
||||
*/
|
||||
|
||||
public HudType getHudType() {
|
||||
return hudType;
|
||||
}
|
||||
|
||||
public McMMOHud getSpoutHud() {
|
||||
return spoutHud;
|
||||
}
|
||||
|
||||
public void setSpoutHud(McMMOHud spoutHud) {
|
||||
this.spoutHud = spoutHud;
|
||||
}
|
||||
|
||||
public void setHudType(HudType hudType) {
|
||||
this.hudType = hudType;
|
||||
}
|
||||
|
||||
/*
|
||||
* Mob Healthbars
|
||||
*/
|
||||
|
@ -1,24 +0,0 @@
|
||||
package com.gmail.nossr50.datatypes.spout.buttons;
|
||||
|
||||
import org.getspout.spoutapi.gui.GenericButton;
|
||||
|
||||
public class McMMOButton extends GenericButton {
|
||||
private Slot slot;
|
||||
|
||||
public McMMOButton(String text, String toolTip) {
|
||||
this.setText(text);
|
||||
this.setTooltip(toolTip);
|
||||
}
|
||||
|
||||
public void connect(Slot slot) {
|
||||
this.slot = slot;
|
||||
}
|
||||
|
||||
public void activate() {
|
||||
slot.activate();
|
||||
}
|
||||
|
||||
public interface Slot {
|
||||
public void activate();
|
||||
}
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
package com.gmail.nossr50.datatypes.spout.huds;
|
||||
|
||||
public enum HudType {
|
||||
DISABLED,
|
||||
STANDARD,
|
||||
SMALL,
|
||||
RETRO;
|
||||
|
||||
public HudType getNext() {
|
||||
return values()[(ordinal() + 1) % values().length];
|
||||
}
|
||||
}
|
@ -1,106 +0,0 @@
|
||||
package com.gmail.nossr50.datatypes.spout.huds;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.spout.SpoutConfig;
|
||||
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.spout.popups.McMMOMenu;
|
||||
import com.gmail.nossr50.datatypes.spout.popups.McMMOXpBar;
|
||||
|
||||
import org.getspout.spoutapi.SpoutManager;
|
||||
|
||||
public class McMMOHud {
|
||||
private Player player;
|
||||
private PlayerProfile profile;
|
||||
|
||||
private SkillType lastGained;
|
||||
private SkillType skillLock;
|
||||
private boolean xpBarLocked;
|
||||
|
||||
private McMMOMenu menu;
|
||||
private McMMOXpBar xpBar;
|
||||
|
||||
public McMMOHud(McMMOPlayer mcMMOPlayer) {
|
||||
this.player = mcMMOPlayer.getPlayer();
|
||||
this.profile = mcMMOPlayer.getProfile();
|
||||
|
||||
initializeXpBar();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the HUD.
|
||||
*/
|
||||
public void initializeXpBar() {
|
||||
if (SpoutConfig.getInstance().getXPBarEnabled()) {
|
||||
if (xpBar != null) {
|
||||
xpBar.removeWidgets();
|
||||
}
|
||||
|
||||
xpBar = new McMMOXpBar(SpoutManager.getPlayer(player), profile.getHudType());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the XP bar.
|
||||
*/
|
||||
public void updateXpBar() {
|
||||
SkillType skillType = xpBarLocked ? skillLock : lastGained;
|
||||
|
||||
if (skillType == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
xpBar.update(skillType, profile);
|
||||
}
|
||||
|
||||
public boolean isMenuOpened() {
|
||||
return (menu != null);
|
||||
}
|
||||
|
||||
public void openMenu() {
|
||||
menu = new McMMOMenu(SpoutManager.getPlayer(player), profile);
|
||||
}
|
||||
|
||||
public void onMenuClose() {
|
||||
menu = null;
|
||||
}
|
||||
|
||||
public void removeWidgets() {
|
||||
if (menu != null) {
|
||||
menu.close();
|
||||
}
|
||||
|
||||
SpoutManager.getPlayer(player).getMainScreen().removeWidgets(mcMMO.p);
|
||||
}
|
||||
|
||||
public SkillType getLastGained() {
|
||||
return lastGained;
|
||||
}
|
||||
|
||||
public void setLastGained(SkillType type) {
|
||||
this.lastGained = type;
|
||||
}
|
||||
|
||||
public boolean getXpBarLocked() {
|
||||
return xpBarLocked;
|
||||
}
|
||||
|
||||
public void setXpBarLocked(boolean locked) {
|
||||
this.xpBarLocked = locked;
|
||||
}
|
||||
|
||||
public void toggleXpBarLocked() {
|
||||
xpBarLocked = !xpBarLocked;
|
||||
}
|
||||
|
||||
public SkillType getSkillLock() {
|
||||
return skillLock;
|
||||
}
|
||||
|
||||
public void setSkillLock(SkillType type) {
|
||||
this.skillLock = type;
|
||||
}
|
||||
}
|
@ -1,82 +0,0 @@
|
||||
package com.gmail.nossr50.datatypes.spout.popups;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.spout.buttons.McMMOButton;
|
||||
import com.gmail.nossr50.datatypes.spout.buttons.McMMOButton.Slot;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
|
||||
import org.getspout.spoutapi.gui.GenericLabel;
|
||||
import org.getspout.spoutapi.gui.GenericPopup;
|
||||
import org.getspout.spoutapi.gui.InGameHUD;
|
||||
import org.getspout.spoutapi.player.SpoutPlayer;
|
||||
|
||||
public class McMMOMenu extends GenericPopup {
|
||||
private McMMOButton hudButton;
|
||||
private McMMOButton escapeButton;
|
||||
|
||||
private GenericLabel titleLabel = new GenericLabel();
|
||||
private GenericLabel escapeLabel = new GenericLabel();
|
||||
|
||||
private static int centerX = 427 / 2;
|
||||
private static int centerY = 240 / 2;
|
||||
|
||||
public McMMOMenu(final SpoutPlayer spoutPlayer, final PlayerProfile playerProfile) {
|
||||
// 240, 427 are the bottom right
|
||||
titleLabel.setText(LocaleLoader.getString("Spout.Menu.Title"));
|
||||
titleLabel.setWidth(100);
|
||||
titleLabel.setHeight(100);
|
||||
titleLabel.setX(centerX - 35);
|
||||
titleLabel.setY((centerY / 2) - 20);
|
||||
|
||||
escapeLabel.setText(LocaleLoader.getString("Spout.Menu.Exit"));
|
||||
escapeLabel.setWidth(100);
|
||||
escapeLabel.setHeight(100);
|
||||
escapeLabel.setX(titleLabel.getX() - 15);
|
||||
escapeLabel.setY(titleLabel.getY() + 10);
|
||||
|
||||
hudButton = new McMMOButton(LocaleLoader.getString("Spout.Menu.HudButton.1", playerProfile.getHudType().toString()), LocaleLoader.getString("Spout.Menu.HudButton.2"));
|
||||
hudButton.setWidth(120);
|
||||
hudButton.setHeight(20);
|
||||
hudButton.setX(centerX - (hudButton.getWidth() / 2));
|
||||
hudButton.setY(centerY / 2);
|
||||
hudButton.connect(new Slot() {
|
||||
@Override
|
||||
public void activate() {
|
||||
HudType nextHudType = playerProfile.getHudType().getNext();
|
||||
McMMOHud spoutHud = playerProfile.getSpoutHud();
|
||||
|
||||
playerProfile.setHudType(nextHudType);
|
||||
spoutHud.initializeXpBar();
|
||||
spoutHud.updateXpBar();
|
||||
|
||||
hudButton.setText("HUD Type: " + nextHudType.toString());
|
||||
hudButton.setDirty(true);
|
||||
}
|
||||
});
|
||||
|
||||
escapeButton = new McMMOButton(LocaleLoader.getString("Spout.Menu.ExitButton"), null);
|
||||
escapeButton.setWidth(60);
|
||||
escapeButton.setHeight(20);
|
||||
escapeButton.setX(centerX - (escapeButton.getWidth() / 2));
|
||||
escapeButton.setY((centerY / 2) + (escapeButton.getHeight() * 2) + 5);
|
||||
escapeButton.connect(new Slot() {
|
||||
@Override
|
||||
public void activate() {
|
||||
spoutPlayer.getMainScreen().closePopup();
|
||||
}
|
||||
});
|
||||
|
||||
attachWidget(mcMMO.p, hudButton);
|
||||
attachWidget(mcMMO.p, titleLabel);
|
||||
attachWidget(mcMMO.p, escapeLabel);
|
||||
attachWidget(mcMMO.p, escapeButton);
|
||||
|
||||
InGameHUD inGameHud = spoutPlayer.getMainScreen();
|
||||
|
||||
inGameHud.attachPopupScreen(this);
|
||||
inGameHud.setDirty(true);
|
||||
}
|
||||
}
|
@ -1,305 +0,0 @@
|
||||
package com.gmail.nossr50.datatypes.spout.popups;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.spout.SpoutConfig;
|
||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.HudType;
|
||||
import com.gmail.nossr50.util.StringUtils;
|
||||
|
||||
import org.getspout.spoutapi.gui.Color;
|
||||
import org.getspout.spoutapi.gui.GenericGradient;
|
||||
import org.getspout.spoutapi.gui.GenericTexture;
|
||||
import org.getspout.spoutapi.gui.InGameHUD;
|
||||
import org.getspout.spoutapi.gui.RenderPriority;
|
||||
import org.getspout.spoutapi.gui.Widget;
|
||||
import org.getspout.spoutapi.player.SpoutPlayer;
|
||||
|
||||
public class McMMOXpBar {
|
||||
private SpoutPlayer spoutPlayer;
|
||||
private Widget xpBar;
|
||||
|
||||
private GenericGradient xpFill;
|
||||
private GenericGradient xpBackground;
|
||||
private GenericGradient xpIconBackground;
|
||||
private GenericGradient xpIconBorder;
|
||||
private GenericTexture xpIcon;
|
||||
|
||||
public McMMOXpBar(SpoutPlayer spoutPlayer, HudType hudType) {
|
||||
this.spoutPlayer = spoutPlayer;
|
||||
|
||||
switch (hudType) {
|
||||
case RETRO:
|
||||
initializeXpBarRetro();
|
||||
break;
|
||||
|
||||
case STANDARD:
|
||||
initializeXpBarStandard();
|
||||
break;
|
||||
|
||||
case SMALL:
|
||||
initializeXpBarSmall();
|
||||
break;
|
||||
|
||||
case DISABLED:
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
spoutPlayer.getMainScreen().setDirty(true);
|
||||
}
|
||||
|
||||
public void removeWidgets() {
|
||||
InGameHUD inGameHud = spoutPlayer.getMainScreen();
|
||||
|
||||
if (xpBar != null) {
|
||||
inGameHud.removeWidget(xpBar);
|
||||
}
|
||||
|
||||
if (xpFill != null) {
|
||||
inGameHud.removeWidget(xpFill);
|
||||
}
|
||||
|
||||
if (xpBackground != null) {
|
||||
inGameHud.removeWidget(xpBackground);
|
||||
}
|
||||
|
||||
if (xpIconBackground != null) {
|
||||
inGameHud.removeWidget(xpIconBackground);
|
||||
}
|
||||
|
||||
if (xpIconBorder != null) {
|
||||
inGameHud.removeWidget(xpIconBorder);
|
||||
}
|
||||
|
||||
if (xpIcon != null) {
|
||||
inGameHud.removeWidget(xpIcon);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize Retro XP bar.
|
||||
*/
|
||||
private void initializeXpBarRetro() {
|
||||
Color border = new Color((float) SpoutConfig.getInstance().getRetroHUDXPBorderRed(), (float) SpoutConfig.getInstance().getRetroHUDXPBorderGreen(), (float) SpoutConfig.getInstance().getRetroHUDXPBorderBlue(), 1f);
|
||||
Color green = new Color(0f, 1f, 0f, 1f);
|
||||
Color background = new Color((float) SpoutConfig.getInstance().getRetroHUDXPBackgroundRed(), (float) SpoutConfig.getInstance().getRetroHUDXPBackgroundGreen(), (float) SpoutConfig.getInstance().getRetroHUDXPBackgroundBlue(), 1f);
|
||||
|
||||
xpBar = new GenericGradient();
|
||||
xpFill = new GenericGradient();
|
||||
xpBackground = new GenericGradient();
|
||||
|
||||
xpBar.setWidth(128);
|
||||
xpBar.setHeight(4);
|
||||
xpBar.setX(149);
|
||||
xpBar.setY(10);
|
||||
((GenericGradient) xpBar).setBottomColor(border);
|
||||
((GenericGradient) xpBar).setTopColor(border);
|
||||
xpBar.setPriority(RenderPriority.Highest);
|
||||
spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpBar);
|
||||
|
||||
xpFill.setWidth(0);
|
||||
xpFill.setHeight(2);
|
||||
xpFill.setX(150);
|
||||
xpFill.setY(11);
|
||||
xpFill.setBottomColor(green);
|
||||
xpFill.setTopColor(green);
|
||||
xpFill.setPriority(RenderPriority.Lowest);
|
||||
spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpFill);
|
||||
|
||||
xpBackground.setWidth(126);
|
||||
xpBackground.setHeight(2);
|
||||
xpBackground.setX(150);
|
||||
xpBackground.setY(11);
|
||||
xpBackground.setBottomColor(background);
|
||||
xpBackground.setTopColor(background);
|
||||
xpBackground.setPriority(RenderPriority.Low);
|
||||
spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpBackground);
|
||||
|
||||
if (SpoutConfig.getInstance().getXPBarIconEnabled()) {
|
||||
Color darkbg = new Color(0.2f, 0.2f, 0.2f, 1f);
|
||||
|
||||
xpIconBackground = new GenericGradient();
|
||||
xpIconBorder = new GenericGradient();
|
||||
xpIcon = new GenericTexture();
|
||||
|
||||
xpIconBackground.setBottomColor(darkbg);
|
||||
xpIconBackground.setTopColor(darkbg);
|
||||
xpIconBackground.setWidth(4);
|
||||
xpIconBackground.setHeight(4);
|
||||
xpIconBackground.setPriority(RenderPriority.High);
|
||||
xpIconBackground.setX(142);
|
||||
xpIconBackground.setY(10);
|
||||
spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpIconBackground);
|
||||
|
||||
xpIconBorder.setBottomColor(border);
|
||||
xpIconBorder.setTopColor(border);
|
||||
xpIconBorder.setWidth(6);
|
||||
xpIconBorder.setHeight(6);
|
||||
xpIconBorder.setPriority(RenderPriority.Highest);
|
||||
xpIconBorder.setX(141);
|
||||
xpIconBorder.setY(9);
|
||||
spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpIconBorder);
|
||||
|
||||
xpIcon.setWidth(6);
|
||||
xpIcon.setHeight(6);
|
||||
xpIcon.setX(141);
|
||||
xpIcon.setY(9);
|
||||
xpIcon.setPriority(RenderPriority.Normal);
|
||||
xpIcon.setUrl("Icon_r.png");
|
||||
spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpIcon);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize Standard XP bar.
|
||||
*/
|
||||
private void initializeXpBarStandard() {
|
||||
xpBar = new GenericTexture();
|
||||
|
||||
((GenericTexture) xpBar).setUrl("xpbar_inc000.png");
|
||||
xpBar.setX(SpoutConfig.getInstance().getXPBarXPosition());
|
||||
xpBar.setY(SpoutConfig.getInstance().getXPBarYPosition());
|
||||
xpBar.setHeight(8);
|
||||
xpBar.setWidth(256);
|
||||
xpBar.setPriority(RenderPriority.Lowest);
|
||||
spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpBar);
|
||||
|
||||
if (SpoutConfig.getInstance().getXPBarIconEnabled()) {
|
||||
xpIcon = new GenericTexture();
|
||||
|
||||
xpIcon.setUrl("Icon.png");
|
||||
xpIcon.setHeight(16);
|
||||
xpIcon.setWidth(32);
|
||||
xpIcon.setX(SpoutConfig.getInstance().getXPIconXPosition());
|
||||
xpIcon.setY(SpoutConfig.getInstance().getXPIconYPosition());
|
||||
xpIcon.setPriority(RenderPriority.High);
|
||||
spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpIcon);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize Small XP bar.
|
||||
*/
|
||||
private void initializeXpBarSmall() {
|
||||
xpBar = new GenericTexture();
|
||||
|
||||
((GenericTexture) xpBar).setUrl("xpbar_inc000.png");
|
||||
xpBar.setX(427 / 2 - 64);
|
||||
xpBar.setY(SpoutConfig.getInstance().getXPBarYPosition());
|
||||
xpBar.setHeight(4);
|
||||
xpBar.setWidth(128);
|
||||
xpBar.setPriority(RenderPriority.Lowest);
|
||||
spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpBar);
|
||||
|
||||
if (SpoutConfig.getInstance().getXPBarIconEnabled()) {
|
||||
xpIcon = new GenericTexture();
|
||||
|
||||
xpIcon.setUrl("Icon.png");
|
||||
xpIcon.setHeight(8);
|
||||
xpIcon.setWidth(16);
|
||||
xpIcon.setX(427 / 2 - (8 + 64));
|
||||
xpIcon.setY(SpoutConfig.getInstance().getXPIconYPosition() + 2);
|
||||
xpIcon.setPriority(RenderPriority.High);
|
||||
spoutPlayer.getMainScreen().attachWidget(mcMMO.p, xpIcon);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the XP bar.
|
||||
*
|
||||
* @param skillType The skill last used
|
||||
* @param playerProfile The profile of the player whose XP bar should be updated
|
||||
*/
|
||||
public void update(SkillType skillType, PlayerProfile playerProfile) {
|
||||
switch (playerProfile.getHudType()) {
|
||||
case RETRO:
|
||||
updateXpBarRetro(skillType, playerProfile);
|
||||
break;
|
||||
|
||||
case STANDARD:
|
||||
case SMALL:
|
||||
updateXpBarStandard(skillType, playerProfile);
|
||||
break;
|
||||
|
||||
case DISABLED:
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update XP bar for Standard & Small styles.
|
||||
*
|
||||
* @param skillType The skill last used
|
||||
* @param playerProfile The profile of the player whose XP bar should be updated
|
||||
*/
|
||||
private void updateXpBarStandard(SkillType skillType, PlayerProfile playerProfile) {
|
||||
xpIcon.setUrl(StringUtils.getCapitalized(skillType.toString()) + ".png");
|
||||
|
||||
((GenericTexture) xpBar).setUrl(getUrlBar(getXpInc(playerProfile.getSkillXpLevel(skillType), playerProfile.getXpToLevel(skillType), HudType.STANDARD)));
|
||||
|
||||
spoutPlayer.getMainScreen().setDirty(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update XP bar for Retro styles.
|
||||
*
|
||||
* @param skillType The skill last used
|
||||
* @param playerProfile The profile of the player whose XP bar should be updated
|
||||
*/
|
||||
private void updateXpBarRetro(SkillType skillType, PlayerProfile playerProfile) {
|
||||
Color color = getRetroColor(skillType);
|
||||
|
||||
xpIcon.setUrl(StringUtils.getCapitalized(skillType.toString()) + "_r.png");
|
||||
|
||||
xpFill.setBottomColor(color);
|
||||
xpFill.setTopColor(color);
|
||||
xpFill.setWidth(getXpInc(playerProfile.getSkillXpLevel(skillType), playerProfile.getXpToLevel(skillType), HudType.RETRO));
|
||||
|
||||
spoutPlayer.getMainScreen().setDirty(true);
|
||||
}
|
||||
|
||||
private static Color getRetroColor(SkillType type) {
|
||||
return new Color((float) SpoutConfig.getInstance().getRetroHUDRed(type), (float) SpoutConfig.getInstance().getRetroHUDGreen(type), (float) SpoutConfig.getInstance().getRetroHUDBlue(type), 1f);
|
||||
}
|
||||
|
||||
private static String getUrlBar(Integer number) {
|
||||
char[] num = number.toString().toCharArray();
|
||||
|
||||
switch (num.length) {
|
||||
case 1:
|
||||
return "xpbar_inc00" + number + ".png";
|
||||
|
||||
case 2:
|
||||
return "xpbar_inc0" + number + ".png";
|
||||
|
||||
default:
|
||||
return "xpbar_inc" + number + ".png";
|
||||
}
|
||||
}
|
||||
|
||||
private static Integer getXpInc(int skillXp, int xpToLevel, HudType hudType) {
|
||||
double percentage = (double) skillXp / xpToLevel;
|
||||
double inc;
|
||||
|
||||
switch (hudType) {
|
||||
case RETRO:
|
||||
inc = 0.0079365079365079;
|
||||
break;
|
||||
|
||||
case STANDARD:
|
||||
inc = 0.0039370078740157;
|
||||
break;
|
||||
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
|
||||
return (int) (percentage / inc);
|
||||
}
|
||||
}
|
@ -1,93 +0,0 @@
|
||||
package com.gmail.nossr50.listeners;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
import com.gmail.nossr50.config.spout.SpoutConfig;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.spout.buttons.McMMOButton;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
|
||||
import com.gmail.nossr50.datatypes.spout.popups.McMMOMenu;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
|
||||
import org.getspout.spoutapi.event.input.KeyPressedEvent;
|
||||
import org.getspout.spoutapi.event.screen.ButtonClickEvent;
|
||||
import org.getspout.spoutapi.event.screen.ScreenCloseEvent;
|
||||
import org.getspout.spoutapi.event.spout.SpoutCraftEnableEvent;
|
||||
import org.getspout.spoutapi.gui.Button;
|
||||
import org.getspout.spoutapi.gui.ScreenType;
|
||||
import org.getspout.spoutapi.player.SpoutPlayer;
|
||||
|
||||
public class SpoutListener implements Listener {
|
||||
|
||||
/**
|
||||
* Monitor SpoutCraftEnable events.
|
||||
*
|
||||
* @param event The event to watch
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onSpoutCraftEnable(SpoutCraftEnableEvent event) {
|
||||
SpoutPlayer spoutPlayer = event.getPlayer();
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(spoutPlayer);
|
||||
|
||||
// TODO: Add custom titles based on skills
|
||||
if (SpoutConfig.getInstance().getShowPowerLevel()) {
|
||||
spoutPlayer.setTitle(LocaleLoader.getString("Spout.Title", spoutPlayer.getTitle(), mcMMOPlayer.getPowerLevel()));
|
||||
}
|
||||
|
||||
mcMMOPlayer.getProfile().setSpoutHud(new McMMOHud(mcMMOPlayer)); // Setup Party HUD stuff
|
||||
}
|
||||
|
||||
/**
|
||||
* Monitor Spout ButtonClick events.
|
||||
*
|
||||
* @param event The event to watch
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onButtonClick(ButtonClickEvent event) {
|
||||
Button button = event.getButton();
|
||||
|
||||
if (button instanceof McMMOButton) {
|
||||
((McMMOButton) button).activate();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Monitor Spout ScreenClose events.
|
||||
*
|
||||
* @param event The event to watch
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onScreenClose(ScreenCloseEvent event) {
|
||||
if (event.getScreen() instanceof McMMOMenu) {
|
||||
SpoutPlayer spoutPlayer = event.getPlayer();
|
||||
|
||||
UserManager.getPlayer(spoutPlayer).getProfile().getSpoutHud().onMenuClose();
|
||||
spoutPlayer.getMainScreen().setDirty(true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Monitor Spout KeyPressed events.
|
||||
*
|
||||
* @param event The event to watch
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
public void onKeyPressedEvent(KeyPressedEvent event) {
|
||||
SpoutPlayer spoutPlayer = event.getPlayer();
|
||||
|
||||
if (spoutPlayer.getMainScreen().getActivePopup() != null || event.getScreenType() != ScreenType.GAME_SCREEN) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getKey() == SpoutConfig.getInstance().getMenuKey()) {
|
||||
McMMOHud spoutHud = UserManager.getPlayer(spoutPlayer).getProfile().getSpoutHud();
|
||||
|
||||
if (!spoutHud.isMenuOpened()) {
|
||||
spoutHud.openMenu();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -18,7 +18,6 @@ import com.gmail.nossr50.config.mods.CustomArmorConfig;
|
||||
import com.gmail.nossr50.config.mods.CustomBlockConfig;
|
||||
import com.gmail.nossr50.config.mods.CustomEntityConfig;
|
||||
import com.gmail.nossr50.config.mods.CustomToolConfig;
|
||||
import com.gmail.nossr50.config.spout.SpoutConfig;
|
||||
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
||||
import com.gmail.nossr50.database.DatabaseManager;
|
||||
import com.gmail.nossr50.database.DatabaseManagerFactory;
|
||||
@ -27,7 +26,6 @@ import com.gmail.nossr50.listeners.EntityListener;
|
||||
import com.gmail.nossr50.listeners.InventoryListener;
|
||||
import com.gmail.nossr50.listeners.PlayerListener;
|
||||
import com.gmail.nossr50.listeners.SelfListener;
|
||||
import com.gmail.nossr50.listeners.SpoutListener;
|
||||
import com.gmail.nossr50.listeners.WorldListener;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
import com.gmail.nossr50.metrics.MetricsManager;
|
||||
@ -50,12 +48,10 @@ import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManagerFactory;
|
||||
import com.gmail.nossr50.util.commands.CommandRegistrationManager;
|
||||
import com.gmail.nossr50.util.experience.FormulaManager;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import com.gmail.nossr50.util.spout.SpoutUtils;
|
||||
|
||||
import net.h31ix.updater.Updater;
|
||||
import net.h31ix.updater.Updater.UpdateResult;
|
||||
import net.h31ix.updater.Updater.UpdateType;
|
||||
|
||||
import net.shatteredlands.shatt.backup.ZipLibrary;
|
||||
|
||||
public class mcMMO extends JavaPlugin {
|
||||
@ -115,7 +111,6 @@ public class mcMMO extends JavaPlugin {
|
||||
metadataValue = new FixedMetadataValue(this, true);
|
||||
|
||||
setupFilePaths();
|
||||
setupSpout();
|
||||
loadConfigFiles();
|
||||
|
||||
if (!noErrorsInConfigFiles) {
|
||||
@ -335,19 +330,6 @@ public class mcMMO extends JavaPlugin {
|
||||
repairableManager.registerRepairables(repairables);
|
||||
}
|
||||
|
||||
private void setupSpout() {
|
||||
if (!getServer().getPluginManager().isPluginEnabled("Spout")) {
|
||||
return;
|
||||
}
|
||||
|
||||
spoutEnabled = true;
|
||||
|
||||
SpoutConfig.getInstance();
|
||||
getServer().getPluginManager().registerEvents(new SpoutListener(), this);
|
||||
SpoutUtils.preCacheFiles();
|
||||
SpoutUtils.reloadSpoutPlayers(); // Handle spout players after a /reload
|
||||
}
|
||||
|
||||
private void registerEvents() {
|
||||
PluginManager pluginManager = getServer().getPluginManager();
|
||||
|
||||
|
@ -25,7 +25,6 @@ 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.spout.SpoutUtils;
|
||||
|
||||
public class RepairManager extends SkillManager {
|
||||
public RepairManager(McMMOPlayer mcMMOPlayer) {
|
||||
@ -44,12 +43,7 @@ public class RepairManager extends SkillManager {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mcMMO.isSpoutEnabled()) {
|
||||
SpoutUtils.sendRepairNotifications(player, anvilType);
|
||||
}
|
||||
else {
|
||||
player.sendMessage(Repair.getAnvilMessage(anvilType));
|
||||
}
|
||||
player.sendMessage(Repair.getAnvilMessage(anvilType));
|
||||
|
||||
player.playSound(player.getLocation(), Sound.ANVIL_LAND, Misc.ANVIL_USE_VOLUME, Misc.ANVIL_USE_PITCH);
|
||||
mcMMOPlayer.togglePlacedAnvil(anvilType);
|
||||
|
@ -7,8 +7,6 @@ import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.material.Dye;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.api.SpoutToolsAPI;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.config.mods.CustomArmorConfig;
|
||||
import com.gmail.nossr50.config.mods.CustomToolConfig;
|
||||
@ -32,7 +30,7 @@ public class ItemUtils {
|
||||
return true;
|
||||
|
||||
default:
|
||||
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customSwordIDs.contains(item.getTypeId())) || (mcMMO.isSpoutEnabled() && SpoutToolsAPI.spoutSwords.contains(item));
|
||||
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customSwordIDs.contains(item.getTypeId()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -52,7 +50,7 @@ public class ItemUtils {
|
||||
return true;
|
||||
|
||||
default:
|
||||
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customHoeIDs.contains(item.getTypeId())) || (mcMMO.isSpoutEnabled() && SpoutToolsAPI.spoutHoes.contains(item));
|
||||
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customHoeIDs.contains(item.getTypeId()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,7 +70,7 @@ public class ItemUtils {
|
||||
return true;
|
||||
|
||||
default:
|
||||
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customShovelIDs.contains(item.getTypeId())) || (mcMMO.isSpoutEnabled() && SpoutToolsAPI.spoutShovels.contains(item));
|
||||
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customShovelIDs.contains(item.getTypeId()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -92,7 +90,7 @@ public class ItemUtils {
|
||||
return true;
|
||||
|
||||
default:
|
||||
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customAxeIDs.contains(item.getTypeId())) || (mcMMO.isSpoutEnabled() && SpoutToolsAPI.spoutAxes.contains(item));
|
||||
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customAxeIDs.contains(item.getTypeId()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -112,7 +110,7 @@ public class ItemUtils {
|
||||
return true;
|
||||
|
||||
default:
|
||||
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customPickaxeIDs.contains(item.getTypeId())) || (mcMMO.isSpoutEnabled() && SpoutToolsAPI.spoutPickaxes.contains(item));
|
||||
return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customPickaxeIDs.contains(item.getTypeId()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -23,10 +23,8 @@ import org.bukkit.metadata.MetadataValue;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
|
||||
import com.gmail.nossr50.events.items.McMMOItemSpawnEvent;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import com.gmail.nossr50.util.spout.SpoutUtils;
|
||||
|
||||
public final class Misc {
|
||||
private static Random random = new Random();
|
||||
@ -186,20 +184,11 @@ public final class Misc {
|
||||
public static void profileCleanup(String playerName) {
|
||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(playerName);
|
||||
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.isSpoutEnabled()) {
|
||||
SpoutUtils.reloadSpoutPlayer(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -46,8 +46,6 @@ import com.gmail.nossr50.commands.skills.SwordsCommand;
|
||||
import com.gmail.nossr50.commands.skills.TamingCommand;
|
||||
import com.gmail.nossr50.commands.skills.UnarmedCommand;
|
||||
import com.gmail.nossr50.commands.skills.WoodcuttingCommand;
|
||||
import com.gmail.nossr50.commands.spout.MchudCommand;
|
||||
import com.gmail.nossr50.commands.spout.XplockCommand;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.locale.LocaleLoader;
|
||||
@ -314,26 +312,6 @@ public final class CommandRegistrationManager {
|
||||
command.setExecutor(new PartyChatCommand());
|
||||
}
|
||||
|
||||
private static void registerMchudCommand() {
|
||||
PluginCommand command = mcMMO.p.getCommand("mchud");
|
||||
command.setDescription(LocaleLoader.getString("Commands.Description.mchud"));
|
||||
command.setPermission("mcmmo.commands.mchud");
|
||||
command.setPermissionMessage(permissionsMessage);
|
||||
command.setUsage(LocaleLoader.getString("Commands.Usage.1", "mchud", "<DISABLED | STANDARD | SMALL | RETRO>"));
|
||||
command.setExecutor(new MchudCommand());
|
||||
}
|
||||
|
||||
private static void registerXplockCommand() {
|
||||
PluginCommand command = mcMMO.p.getCommand("xplock");
|
||||
command.setDescription(LocaleLoader.getString("Commands.Description.xplock"));
|
||||
command.setPermission("mcmmo.commands.xplock");
|
||||
command.setPermissionMessage(permissionsMessage);
|
||||
command.setUsage(LocaleLoader.getString("Commands.Usage.0", "xplock"));
|
||||
command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "xplock", "<on|off>"));
|
||||
command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "xplock", "<" + LocaleLoader.getString("Commands.Usage.Skill") + ">"));
|
||||
command.setExecutor(new XplockCommand());
|
||||
}
|
||||
|
||||
private static void registerPartyCommand() {
|
||||
PluginCommand command = mcMMO.p.getCommand("party");
|
||||
command.setDescription(LocaleLoader.getString("Commands.Description.party"));
|
||||
@ -456,9 +434,5 @@ public final class CommandRegistrationManager {
|
||||
|
||||
// Skill Commands
|
||||
registerSkillCommands();
|
||||
|
||||
// Spout Commands
|
||||
registerXplockCommand();
|
||||
registerMchudCommand();
|
||||
}
|
||||
}
|
||||
|
@ -38,7 +38,6 @@ import com.gmail.nossr50.util.ModUtils;
|
||||
import com.gmail.nossr50.util.Permissions;
|
||||
import com.gmail.nossr50.util.StringUtils;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import com.gmail.nossr50.util.spout.SpoutUtils;
|
||||
|
||||
public class SkillUtils {
|
||||
public static int handleFoodSkills(Player player, SkillType skill, int eventFoodLevel, int baseLevel, int maxLevel, int rankChange) {
|
||||
@ -163,17 +162,8 @@ public class SkillUtils {
|
||||
|
||||
String capitalized = StringUtils.getCapitalized(skillType.toString());
|
||||
|
||||
if (mcMMO.isSpoutEnabled()) {
|
||||
SpoutUtils.processLevelup(mcMMOPlayer, skillType, levelsGained);
|
||||
}
|
||||
else {
|
||||
player.playSound(player.getLocation(), Sound.LEVEL_UP, Misc.LEVELUP_VOLUME, Misc.LEVELUP_PITCH);
|
||||
player.sendMessage(LocaleLoader.getString(capitalized + ".Skillup", levelsGained, profile.getSkillLevel(skillType)));
|
||||
}
|
||||
}
|
||||
|
||||
if (mcMMO.isSpoutEnabled()) {
|
||||
SpoutUtils.processXpGain(player, profile);
|
||||
player.playSound(player.getLocation(), Sound.LEVEL_UP, Misc.LEVELUP_VOLUME, Misc.LEVELUP_PITCH);
|
||||
player.sendMessage(LocaleLoader.getString(capitalized + ".Skillup", levelsGained, profile.getSkillLevel(skillType)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,475 +0,0 @@
|
||||
package com.gmail.nossr50.util.spout;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.jar.JarFile;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.spout.SpoutConfig;
|
||||
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.skills.repair.Repair;
|
||||
import com.gmail.nossr50.util.StringUtils;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import com.gmail.nossr50.util.skills.SkillUtils;
|
||||
|
||||
import org.getspout.spoutapi.SpoutManager;
|
||||
import org.getspout.spoutapi.event.spout.SpoutCraftEnableEvent;
|
||||
import org.getspout.spoutapi.player.SpoutPlayer;
|
||||
|
||||
public class SpoutUtils {
|
||||
// The order of the values is extremely important, a few methods depend on it to work properly
|
||||
protected enum Tier {
|
||||
FOUR(4) {
|
||||
@Override public int getLevel() { return SpoutConfig.getInstance().getNotificationTier4(); }
|
||||
@Override protected Material getAcrobaticsNotificationItem() { return Material.DIAMOND_BOOTS; }
|
||||
@Override protected Material getArcheryNotificationItem() { return Material.BOW; }
|
||||
@Override protected Material getAxesNotificationItem() { return Material.DIAMOND_AXE; }
|
||||
@Override protected Material getExcavationNotificationItem() { return Material.CLAY; }
|
||||
@Override protected Material getFishingNotificationItem() { return Material.FISHING_ROD; }
|
||||
@Override protected Material getHerbalismNotificationItem() { return Material.WATER_LILY; }
|
||||
@Override protected Material getMiningNotificationItem() { return Material.EMERALD_ORE; }
|
||||
@Override protected Material getSwordsNotificationItem() { return Material.DIAMOND_SWORD; }
|
||||
@Override protected Material getTamingNotificationItem() { return Material.BONE; }
|
||||
@Override protected Material getUnarmedNotificationItem() { return Material.DIAMOND_HELMET; }
|
||||
@Override protected Material getWoodcuttingNotificationItem() { return Material.LOG; }},
|
||||
THREE(3) {
|
||||
@Override public int getLevel() { return SpoutConfig.getInstance().getNotificationTier3(); }
|
||||
@Override protected Material getAcrobaticsNotificationItem() { return Material.GOLD_BOOTS; }
|
||||
@Override protected Material getArcheryNotificationItem() { return Material.ARROW; }
|
||||
@Override protected Material getAxesNotificationItem() { return Material.GOLD_AXE; }
|
||||
@Override protected Material getExcavationNotificationItem() { return Material.SAND; }
|
||||
@Override protected Material getFishingNotificationItem() { return Material.COOKED_FISH; }
|
||||
@Override protected Material getHerbalismNotificationItem() { return Material.RED_ROSE; }
|
||||
@Override protected Material getMiningNotificationItem() { return Material.DIAMOND_ORE; }
|
||||
@Override protected Material getSwordsNotificationItem() { return Material.GOLD_SWORD; }
|
||||
@Override protected Material getTamingNotificationItem() { return Material.GRILLED_PORK; }
|
||||
@Override protected Material getUnarmedNotificationItem() { return Material.GOLD_HELMET; }
|
||||
@Override protected Material getWoodcuttingNotificationItem() { return Material.WOOD; }},
|
||||
TWO(2) {
|
||||
@Override public int getLevel() { return SpoutConfig.getInstance().getNotificationTier2(); }
|
||||
@Override protected Material getAcrobaticsNotificationItem() { return Material.IRON_BOOTS; }
|
||||
@Override protected Material getArcheryNotificationItem() { return Material.ARROW; }
|
||||
@Override protected Material getAxesNotificationItem() { return Material.IRON_AXE; }
|
||||
@Override protected Material getExcavationNotificationItem() { return Material.GRAVEL; }
|
||||
@Override protected Material getFishingNotificationItem() { return Material.COOKED_FISH; }
|
||||
@Override protected Material getHerbalismNotificationItem() { return Material.YELLOW_FLOWER; }
|
||||
@Override protected Material getMiningNotificationItem() { return Material.GOLD_ORE; }
|
||||
@Override protected Material getSwordsNotificationItem() { return Material.IRON_SWORD; }
|
||||
@Override protected Material getTamingNotificationItem() { return Material.GRILLED_PORK; }
|
||||
@Override protected Material getUnarmedNotificationItem() { return Material.IRON_HELMET; }
|
||||
@Override protected Material getWoodcuttingNotificationItem() { return Material.LEAVES; }},
|
||||
ONE(1) {
|
||||
@Override public int getLevel() { return SpoutConfig.getInstance().getNotificationTier1(); }
|
||||
@Override protected Material getAcrobaticsNotificationItem() { return Material.CHAINMAIL_BOOTS; }
|
||||
@Override protected Material getArcheryNotificationItem() { return Material.FLINT; }
|
||||
@Override protected Material getAxesNotificationItem() { return Material.STONE_AXE; }
|
||||
@Override protected Material getExcavationNotificationItem() { return Material.GRASS; }
|
||||
@Override protected Material getFishingNotificationItem() { return Material.RAW_FISH; }
|
||||
@Override protected Material getHerbalismNotificationItem() { return Material.CACTUS; }
|
||||
@Override protected Material getMiningNotificationItem() { return Material.IRON_ORE; }
|
||||
@Override protected Material getSwordsNotificationItem() { return Material.STONE_SWORD; }
|
||||
@Override protected Material getTamingNotificationItem() { return Material.PORK; }
|
||||
@Override protected Material getUnarmedNotificationItem() { return Material.CHAINMAIL_HELMET; }
|
||||
@Override protected Material getWoodcuttingNotificationItem() { return Material.SAPLING; }};
|
||||
|
||||
int numerical;
|
||||
|
||||
private Tier(int numerical) {
|
||||
this.numerical = numerical;
|
||||
}
|
||||
|
||||
public int toNumerical() {
|
||||
return numerical;
|
||||
}
|
||||
|
||||
abstract protected int getLevel();
|
||||
abstract protected Material getAcrobaticsNotificationItem();
|
||||
abstract protected Material getArcheryNotificationItem();
|
||||
abstract protected Material getAxesNotificationItem();
|
||||
abstract protected Material getExcavationNotificationItem();
|
||||
abstract protected Material getFishingNotificationItem();
|
||||
abstract protected Material getHerbalismNotificationItem();
|
||||
abstract protected Material getMiningNotificationItem();
|
||||
abstract protected Material getSwordsNotificationItem();
|
||||
abstract protected Material getTamingNotificationItem();
|
||||
abstract protected Material getUnarmedNotificationItem();
|
||||
abstract protected Material getWoodcuttingNotificationItem();
|
||||
}
|
||||
|
||||
private final static String spoutDirectory = mcMMO.getMainDirectory() + "Resources" + File.separator;
|
||||
private final static String hudDirectory = spoutDirectory + "HUD" + File.separator;
|
||||
private final static String hudStandardDirectory = hudDirectory + "Standard" + File.separator;
|
||||
private final static String hudRetroDirectory = hudDirectory + "Retro" + File.separator;
|
||||
private final static String soundDirectory = spoutDirectory + "Sound" + File.separator;
|
||||
|
||||
/**
|
||||
* Write file to disk.
|
||||
*
|
||||
* @param fileName The name of the file
|
||||
* @param filePath The name of the file path
|
||||
*/
|
||||
private static File writeFile(String fileName, String filePath) {
|
||||
File currentFile = new File(filePath + fileName);
|
||||
BufferedOutputStream os = null;
|
||||
JarFile jar = null;
|
||||
|
||||
// No point in writing the file again if it already exists.
|
||||
if (currentFile.exists()) {
|
||||
return currentFile;
|
||||
}
|
||||
|
||||
try {
|
||||
jar = new JarFile(mcMMO.mcmmo);
|
||||
|
||||
@SuppressWarnings("resource")
|
||||
InputStream is = jar.getInputStream(jar.getJarEntry("resources/" + fileName));
|
||||
|
||||
byte[] buf = new byte[2048];
|
||||
int nbRead;
|
||||
|
||||
os = new BufferedOutputStream(new FileOutputStream(currentFile));
|
||||
|
||||
while ((nbRead = is.read(buf)) != -1) {
|
||||
os.write(buf, 0, nbRead);
|
||||
}
|
||||
}
|
||||
catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
finally {
|
||||
if (jar != null) {
|
||||
try {
|
||||
jar.close();
|
||||
}
|
||||
catch (IOException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (os != null) {
|
||||
try {
|
||||
os.close();
|
||||
}
|
||||
catch (IOException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return currentFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract Spout files to the Resources directory.
|
||||
*/
|
||||
public static ArrayList<File> extractFiles() {
|
||||
ArrayList<File> files = new ArrayList<File>();
|
||||
|
||||
// Setup directories
|
||||
new File(spoutDirectory).mkdir();
|
||||
new File(hudDirectory).mkdir();
|
||||
new File(hudStandardDirectory).mkdir();
|
||||
new File(hudRetroDirectory).mkdir();
|
||||
new File(soundDirectory).mkdir();
|
||||
|
||||
// XP Bar images
|
||||
for (int x = 0; x < 255; x++) {
|
||||
String fileName;
|
||||
|
||||
if (x < 10) {
|
||||
fileName = "xpbar_inc00" + x + ".png";
|
||||
}
|
||||
else if (x < 100) {
|
||||
fileName = "xpbar_inc0" + x + ".png";
|
||||
}
|
||||
else {
|
||||
fileName = "xpbar_inc" + x + ".png";
|
||||
}
|
||||
|
||||
files.add(writeFile(fileName, hudStandardDirectory));
|
||||
}
|
||||
|
||||
// Standard XP Icons
|
||||
for (SkillType skillType : SkillType.nonChildSkills()) {
|
||||
String skillName = StringUtils.getCapitalized(skillType.toString());
|
||||
|
||||
files.add(writeFile(skillName + ".png", hudStandardDirectory));
|
||||
files.add(writeFile(skillName + "_r.png", hudRetroDirectory));
|
||||
}
|
||||
|
||||
// Blank icons
|
||||
files.add(writeFile("Icon.png", hudStandardDirectory));
|
||||
files.add(writeFile("Icon_r.png", hudRetroDirectory));
|
||||
|
||||
// Sound FX
|
||||
files.add(writeFile("level.wav", soundDirectory));
|
||||
|
||||
return files;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle level-up notifications through Spout.
|
||||
*
|
||||
* @param skillType The skill that leveled up
|
||||
* @param spoutPlayer The player that leveled up
|
||||
*/
|
||||
public static void levelUpNotification(SkillType skillType, SpoutPlayer spoutPlayer) {
|
||||
PlayerProfile profile = UserManager.getPlayer(spoutPlayer).getProfile();
|
||||
int skillLevel = profile.getSkillLevel(skillType);
|
||||
Material notificationItem;
|
||||
|
||||
switch (skillType) {
|
||||
case ACROBATICS:
|
||||
notificationItem = getAcrobaticsNotificationItem(skillLevel);
|
||||
break;
|
||||
|
||||
case ARCHERY:
|
||||
notificationItem = getArcheryNotificationItem(skillLevel);
|
||||
break;
|
||||
|
||||
case AXES:
|
||||
notificationItem = getAxesNotificationItem(skillLevel);
|
||||
break;
|
||||
|
||||
case EXCAVATION:
|
||||
notificationItem = getExcavationNotificationItem(skillLevel);
|
||||
break;
|
||||
|
||||
case FISHING:
|
||||
notificationItem = getFishingNotificationItem(skillLevel);
|
||||
break;
|
||||
|
||||
case HERBALISM:
|
||||
notificationItem = getHerbalismNotificationItem(skillLevel);
|
||||
break;
|
||||
|
||||
case MINING:
|
||||
notificationItem = getMiningNotificationItem(skillLevel);
|
||||
break;
|
||||
|
||||
case REPAIR:
|
||||
notificationItem = Material.ANVIL;
|
||||
break;
|
||||
|
||||
case SWORDS:
|
||||
notificationItem = getSwordsNotificationItem(skillLevel);
|
||||
break;
|
||||
|
||||
case TAMING:
|
||||
notificationItem = getTamingNotificationItem(skillLevel);
|
||||
break;
|
||||
|
||||
case UNARMED:
|
||||
notificationItem = getUnarmedNotificationItem(skillLevel);
|
||||
break;
|
||||
|
||||
case WOODCUTTING:
|
||||
notificationItem = getWoodcuttingNotificationItem(skillLevel);
|
||||
break;
|
||||
|
||||
default:
|
||||
notificationItem = Material.MAP;
|
||||
break;
|
||||
}
|
||||
|
||||
spoutPlayer.sendNotification(LocaleLoader.getString("Spout.LevelUp.1"), LocaleLoader.getString("Spout.LevelUp.2", SkillUtils.getSkillName(skillType), skillLevel), notificationItem);
|
||||
SpoutManager.getSoundManager().playCustomSoundEffect(mcMMO.p, spoutPlayer, "level.wav", false);
|
||||
}
|
||||
|
||||
private static Material getAcrobaticsNotificationItem(int skillLevel) {
|
||||
for (Tier tier : Tier.values()) {
|
||||
if (skillLevel >= tier.getLevel()) {
|
||||
return tier.getAcrobaticsNotificationItem();
|
||||
}
|
||||
}
|
||||
|
||||
return Material.LEATHER_BOOTS;
|
||||
}
|
||||
|
||||
private static Material getArcheryNotificationItem(int skillLevel) {
|
||||
for (Tier tier : Tier.values()) {
|
||||
if (skillLevel >= tier.getLevel()) {
|
||||
return tier.getArcheryNotificationItem();
|
||||
}
|
||||
}
|
||||
|
||||
return Material.FEATHER;
|
||||
}
|
||||
|
||||
private static Material getAxesNotificationItem(int skillLevel) {
|
||||
for (Tier tier : Tier.values()) {
|
||||
if (skillLevel >= tier.getLevel()) {
|
||||
return tier.getAxesNotificationItem();
|
||||
}
|
||||
}
|
||||
|
||||
return Material.WOOD_AXE;
|
||||
}
|
||||
|
||||
private static Material getExcavationNotificationItem(int skillLevel) {
|
||||
for (Tier tier : Tier.values()) {
|
||||
if (skillLevel >= tier.getLevel()) {
|
||||
return tier.getExcavationNotificationItem();
|
||||
}
|
||||
}
|
||||
|
||||
return Material.DIRT;
|
||||
}
|
||||
|
||||
private static Material getFishingNotificationItem(int skillLevel) {
|
||||
for (Tier tier : Tier.values()) {
|
||||
if (skillLevel >= tier.getLevel()) {
|
||||
return tier.getFishingNotificationItem();
|
||||
}
|
||||
}
|
||||
|
||||
return Material.RAW_FISH;
|
||||
}
|
||||
|
||||
private static Material getHerbalismNotificationItem(int skillLevel) {
|
||||
for (Tier tier : Tier.values()) {
|
||||
if (skillLevel >= tier.getLevel()) {
|
||||
return tier.getHerbalismNotificationItem();
|
||||
}
|
||||
}
|
||||
|
||||
return Material.VINE;
|
||||
}
|
||||
|
||||
private static Material getMiningNotificationItem(int skillLevel) {
|
||||
for (Tier tier : Tier.values()) {
|
||||
if (skillLevel >= tier.getLevel()) {
|
||||
return tier.getMiningNotificationItem();
|
||||
}
|
||||
}
|
||||
|
||||
return Material.COAL_ORE;
|
||||
}
|
||||
|
||||
private static Material getSwordsNotificationItem(int skillLevel) {
|
||||
for (Tier tier : Tier.values()) {
|
||||
if (skillLevel >= tier.getLevel()) {
|
||||
return tier.getSwordsNotificationItem();
|
||||
}
|
||||
}
|
||||
|
||||
return Material.WOOD_SWORD;
|
||||
}
|
||||
|
||||
private static Material getTamingNotificationItem(int skillLevel) {
|
||||
for (Tier tier : Tier.values()) {
|
||||
if (skillLevel >= tier.getLevel()) {
|
||||
return tier.getTamingNotificationItem();
|
||||
}
|
||||
}
|
||||
|
||||
return Material.PORK;
|
||||
}
|
||||
|
||||
private static Material getUnarmedNotificationItem(int skillLevel) {
|
||||
for (Tier tier : Tier.values()) {
|
||||
if (skillLevel >= tier.getLevel()) {
|
||||
return tier.getUnarmedNotificationItem();
|
||||
}
|
||||
}
|
||||
|
||||
return Material.LEATHER_HELMET;
|
||||
}
|
||||
|
||||
private static Material getWoodcuttingNotificationItem(int skillLevel) {
|
||||
for (Tier tier : Tier.values()) {
|
||||
if (skillLevel >= tier.getLevel()) {
|
||||
return tier.getWoodcuttingNotificationItem();
|
||||
}
|
||||
}
|
||||
|
||||
return Material.STICK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-enable SpoutCraft for players after a /reload
|
||||
*/
|
||||
public static void reloadSpoutPlayers() {
|
||||
PluginManager pluginManager = mcMMO.p.getServer().getPluginManager();
|
||||
|
||||
for (SpoutPlayer spoutPlayer : SpoutManager.getPlayerChunkMap().getOnlinePlayers()) {
|
||||
pluginManager.callEvent(new SpoutCraftEnableEvent(spoutPlayer));
|
||||
}
|
||||
}
|
||||
|
||||
public static void reloadSpoutPlayer(Player player) {
|
||||
SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
|
||||
|
||||
if (spoutPlayer != null) {
|
||||
mcMMO.p.getServer().getPluginManager().callEvent(new SpoutCraftEnableEvent(spoutPlayer));
|
||||
}
|
||||
}
|
||||
|
||||
public static void preCacheFiles() {
|
||||
SpoutManager.getFileManager().addToPreLoginCache(mcMMO.p, extractFiles());
|
||||
}
|
||||
|
||||
public static void processLevelup(McMMOPlayer mcMMOPlayer, SkillType skillType, int levelsGained) {
|
||||
Player player = mcMMOPlayer.getPlayer();
|
||||
SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
|
||||
|
||||
if (spoutPlayer.isSpoutCraftEnabled()) {
|
||||
levelUpNotification(skillType, spoutPlayer);
|
||||
|
||||
/* Update custom titles */
|
||||
if (SpoutConfig.getInstance().getShowPowerLevel()) {
|
||||
spoutPlayer.setTitle(LocaleLoader.getString("Spout.Title", spoutPlayer.getName(), mcMMOPlayer.getPowerLevel()));
|
||||
}
|
||||
}
|
||||
else {
|
||||
player.sendMessage(LocaleLoader.getString(StringUtils.getCapitalized(skillType.toString()) + ".Skillup", levelsGained, mcMMOPlayer.getProfile().getSkillLevel(skillType)));
|
||||
}
|
||||
}
|
||||
|
||||
public static void processXpGain(Player player, PlayerProfile profile) {
|
||||
SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
|
||||
|
||||
if (spoutPlayer.isSpoutCraftEnabled() && SpoutConfig.getInstance().getXPBarEnabled()) {
|
||||
profile.getSpoutHud().updateXpBar();
|
||||
}
|
||||
}
|
||||
|
||||
public static void sendRepairNotifications(Player player, Material anvilType) {
|
||||
SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
|
||||
|
||||
if (spoutPlayer.isSpoutCraftEnabled()) {
|
||||
String[] spoutMessages = Repair.getSpoutAnvilMessages(anvilType);
|
||||
spoutPlayer.sendNotification(spoutMessages[0], spoutMessages[1], anvilType);
|
||||
}
|
||||
else {
|
||||
player.sendMessage(Repair.getAnvilMessage(anvilType));
|
||||
}
|
||||
}
|
||||
|
||||
public static void sendDonationNotification(Player player) {
|
||||
SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
|
||||
|
||||
if (spoutPlayer.isSpoutCraftEnabled()) {
|
||||
spoutPlayer.sendNotification(LocaleLoader.getString("Spout.Donate"), ChatColor.GREEN + "gjmcferrin@gmail.com", Material.DIAMOND);
|
||||
}
|
||||
else {
|
||||
player.sendMessage(LocaleLoader.getString("MOTD.Donate"));
|
||||
player.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "gjmcferrin@gmail.com" + ChatColor.GOLD + " Paypal");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,30 +1,24 @@
|
||||
name: mcMMO
|
||||
version: ${project.version}-b${BUILD_NUMBER}
|
||||
description: >
|
||||
mcMMO takes core Minecraft game mechanics and expands them to add an extensive
|
||||
RPG experience, the goal of the project has always been a quality RPG
|
||||
experience. Everything in mcMMO is carefully thought out and is constantly
|
||||
improving. mcMMO adds eleven skills to train in and level in, while also
|
||||
offering a high level of customization for server admins. There are countless
|
||||
features, including custom sounds, graphical elements, and more added when
|
||||
running mcMMO in conjunction with Spout. I carefully read feedback and
|
||||
evaluate the mechanics of mcMMO in every update to provide an ever-evolving
|
||||
experience.
|
||||
The goal of mcMMO is to take core Minecraft game mechanics and expand them into
|
||||
add an extensive and quality RPG experience. Everything in mcMMO has been carefully
|
||||
thought out and is constantly being improved upon. Currently, mcMMO adds thirteen
|
||||
unique skills to train and level in. Each of these skills is highly customizable
|
||||
through our configuration files, allowing server admins to tweak mcMMO to best suit
|
||||
the needs of his or her server. Know that the mcMMO team is dedicated to providing
|
||||
an ever-evolving experience, and that we carefully read all feedback and bug reports
|
||||
in order to evaluate and balance the mechanics of mcMMO in every update.
|
||||
|
||||
author: nossr50
|
||||
authors: [GJ, NuclearW, bm01, Glitchfinder, TfT_02, t00thpick1]
|
||||
website: http://dev.bukkit.org/server-mods/mcmmo/
|
||||
|
||||
main: com.gmail.nossr50.mcMMO
|
||||
softdepend: [Spout, CombatTag]
|
||||
softdepend: [CombatTag]
|
||||
load: STARTUP
|
||||
|
||||
commands:
|
||||
mchud:
|
||||
description: Change your HUD
|
||||
xplock:
|
||||
aliases: [mcxplock]
|
||||
description: Lock your mcMMO XP bar
|
||||
xprate:
|
||||
aliases: [mcxprate]
|
||||
description: Modify the xp rate or start an event
|
||||
@ -698,7 +692,6 @@ permissions:
|
||||
mcmmo.commands.herbalism: true
|
||||
mcmmo.commands.inspect: true
|
||||
mcmmo.commands.mcability: true
|
||||
mcmmo.commands.mchud: true
|
||||
mcmmo.commands.mcmmo.all: true
|
||||
mcmmo.commands.mcnotify: true
|
||||
mcmmo.commands.mcrank: true
|
||||
@ -715,7 +708,6 @@ permissions:
|
||||
mcmmo.commands.taming: true
|
||||
mcmmo.commands.unarmed: true
|
||||
mcmmo.commands.woodcutting: true
|
||||
mcmmo.commands.xplock.all: true
|
||||
mcmmo.commands.defaultsop:
|
||||
description: Implies all default op mcmmo.commands permissions.
|
||||
children:
|
||||
@ -840,8 +832,6 @@ permissions:
|
||||
description: Allows access to the mcgod command
|
||||
mcmmo.commands.mcgod.others:
|
||||
description: Allows access to the mcgod command for other players
|
||||
mcmmo.commands.mchud:
|
||||
description: Allows access to the mchud command
|
||||
mcmmo.commands.mcmmo.*:
|
||||
default: false
|
||||
description: Implies access to all mcmmo.commands.mcmmo permissions
|
||||
@ -1185,56 +1175,6 @@ permissions:
|
||||
description: Allows access to the vampirism command to toggle vampirism on/off
|
||||
mcmmo.commands.woodcutting:
|
||||
description: Allows access to the woodcutting command
|
||||
mcmmo.commands.xplock.*:
|
||||
default: false
|
||||
description: Implies access to all mcmmo.commands.xplock permissions
|
||||
children:
|
||||
mcmmo.commands.xplock.all: true
|
||||
mcmmo.commands.xplock.all:
|
||||
description: Implies access to all mcmmo.commands.xplock permissions
|
||||
children:
|
||||
mcmmo.commands.xplock: true
|
||||
mcmmo.commands.xplock.acrobatics: true
|
||||
mcmmo.commands.xplock.archery: true
|
||||
mcmmo.commands.xplock.axes: true
|
||||
mcmmo.commands.xplock.excavation: true
|
||||
mcmmo.commands.xplock.fishing: true
|
||||
mcmmo.commands.xplock.herbalism: true
|
||||
mcmmo.commands.xplock.mining: true
|
||||
mcmmo.commands.xplock.repair: true
|
||||
mcmmo.commands.xplock.smelting: true
|
||||
mcmmo.commands.xplock.swords: true
|
||||
mcmmo.commands.xplock.taming: true
|
||||
mcmmo.commands.xplock.unarmed: true
|
||||
mcmmo.commands.xplock.woodcutting: true
|
||||
mcmmo.commands.xplock:
|
||||
description: Allows access to the xplock command
|
||||
mcmmo.commands.xplock.acrobatics:
|
||||
description: Allows access to the xplock command for acrobatics
|
||||
mcmmo.commands.xplock.archery:
|
||||
description: Allows access to the xplock command for archery
|
||||
mcmmo.commands.xplock.axes:
|
||||
description: Allows access to the xplock command for axes
|
||||
mcmmo.commands.xplock.excavation:
|
||||
description: Allows access to the xplock command for excavation
|
||||
mcmmo.commands.xplock.fishing:
|
||||
description: Allows access to the xplock command for fishing
|
||||
mcmmo.commands.xplock.herbalism:
|
||||
description: Allows access to the xplock command for herbalism
|
||||
mcmmo.commands.xplock.mining:
|
||||
description: Allows access to the xplock command for mining
|
||||
mcmmo.commands.xplock.repair:
|
||||
description: Allows access to the xplock command for repair
|
||||
mcmmo.commands.xplock.smelting:
|
||||
description: Allows access to the xplock command for smelting
|
||||
mcmmo.commands.xplock.swords:
|
||||
description: Allows access to the xplock command for swords
|
||||
mcmmo.commands.xplock.taming:
|
||||
description: Allows access to the xplock command for taming
|
||||
mcmmo.commands.xplock.unarmed:
|
||||
description: Allows access to the xplock command for unarmed
|
||||
mcmmo.commands.xplock.woodcutting:
|
||||
description: Allows access to the xplock command for woodcutting
|
||||
mcmmo.commands.xprate.*:
|
||||
default: false
|
||||
description: Implies access to all mcmmo.commands.xprate permissions
|
||||
@ -1789,79 +1729,66 @@ permissions:
|
||||
children:
|
||||
mcmmo.ability.acrobatics.all: true
|
||||
mcmmo.commands.acrobatics: true
|
||||
mcmmo.commands.xplock.acrobatics: true
|
||||
mcmmo.skills.archery:
|
||||
description: Allows access to the Archery skill
|
||||
children:
|
||||
mcmmo.ability.archery.all: true
|
||||
mcmmo.commands.archery: true
|
||||
mcmmo.commands.xplock.archery: true
|
||||
mcmmo.skills.axes:
|
||||
description: Allows access to the Axes skill
|
||||
children:
|
||||
mcmmo.ability.axes.all: true
|
||||
mcmmo.commands.axes: true
|
||||
mcmmo.commands.xplock.axes: true
|
||||
mcmmo.skills.excavation:
|
||||
description: Allows access to the Excavation skill
|
||||
children:
|
||||
mcmmo.ability.excavation.all: true
|
||||
mcmmo.commands.excavation: true
|
||||
mcmmo.commands.xplock.excavation: true
|
||||
mcmmo.skills.fishing:
|
||||
description: Allows access to the Fishing skill
|
||||
children:
|
||||
mcmmo.ability.fishing.all: true
|
||||
mcmmo.commands.fishing: true
|
||||
mcmmo.commands.xplock.fishing: true
|
||||
mcmmo.skills.herbalism:
|
||||
description: Allows access to the Herbalism skill
|
||||
children:
|
||||
mcmmo.ability.herbalism.all: true
|
||||
mcmmo.commands.herbalism: true
|
||||
mcmmo.commands.xplock.herbalism: true
|
||||
mcmmo.skills.mining:
|
||||
description: Allows access to the Mining skill
|
||||
children:
|
||||
mcmmo.ability.mining.all: true
|
||||
mcmmo.commands.mining: true
|
||||
mcmmo.commands.xplock.mining: true
|
||||
mcmmo.skills.repair:
|
||||
description: Allows access to the Repair skill
|
||||
children:
|
||||
mcmmo.ability.repair.all: true
|
||||
mcmmo.commands.repair: true
|
||||
mcmmo.commands.xplock.repair: true
|
||||
mcmmo.skills.smelting:
|
||||
description: Allows access to the Smelting skill
|
||||
children:
|
||||
mcmmo.ability.smelting.all: true
|
||||
mcmmo.commands.smelting: true
|
||||
mcmmo.commands.xplock.smelting: true
|
||||
mcmmo.skills.swords:
|
||||
description: Allows access to the Swords skill
|
||||
children:
|
||||
mcmmo.ability.swords.all: true
|
||||
mcmmo.commands.swords: true
|
||||
mcmmo.commands.xplock.swords: true
|
||||
mcmmo.skills.taming:
|
||||
description: Allows access to the Taming skill
|
||||
children:
|
||||
mcmmo.ability.taming.all: true
|
||||
mcmmo.commands.taming: true
|
||||
mcmmo.commands.xplock.taming: true
|
||||
mcmmo.skills.unarmed:
|
||||
description: Allows access to the Unarmed skill
|
||||
children:
|
||||
mcmmo.ability.unarmed.all: true
|
||||
mcmmo.commands.unarmed: true
|
||||
mcmmo.commands.xplock.unarmed: true
|
||||
mcmmo.skills.woodcutting:
|
||||
description: Allows access to the Woodcutting skill
|
||||
children:
|
||||
mcmmo.ability.woodcutting.all: true
|
||||
mcmmo.commands.woodcutting: true
|
||||
mcmmo.commands.xplock.woodcutting: true
|
||||
mcmmo.tools.*:
|
||||
default: false
|
||||
description: Implies all mcmmo.tools permissions.
|
||||
|
Before Width: | Height: | Size: 506 B |
Before Width: | Height: | Size: 229 B |
Before Width: | Height: | Size: 580 B |
Before Width: | Height: | Size: 260 B |
Before Width: | Height: | Size: 210 B |
Before Width: | Height: | Size: 496 B |
Before Width: | Height: | Size: 230 B |
Before Width: | Height: | Size: 547 B |
Before Width: | Height: | Size: 238 B |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 498 B |
Before Width: | Height: | Size: 220 B |
Before Width: | Height: | Size: 365 B |
Before Width: | Height: | Size: 399 B |
Before Width: | Height: | Size: 195 B |
Before Width: | Height: | Size: 520 B |
Before Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 500 B |
Before Width: | Height: | Size: 201 B |
Before Width: | Height: | Size: 534 B |
Before Width: | Height: | Size: 201 B |
Before Width: | Height: | Size: 777 B |
Before Width: | Height: | Size: 205 B |
Before Width: | Height: | Size: 523 B |
Before Width: | Height: | Size: 188 B |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 215 B |
@ -1,77 +0,0 @@
|
||||
Menu:
|
||||
Key: KEY_M
|
||||
XP:
|
||||
Bar:
|
||||
Enabled: true
|
||||
X_POS: 95
|
||||
Y_POS: 6
|
||||
Icon:
|
||||
Enabled: true
|
||||
X_POS: 78
|
||||
Y_POS: 2
|
||||
HUD:
|
||||
Show_Power_Level: true
|
||||
Default: STANDARD
|
||||
Retro:
|
||||
Colors:
|
||||
Swords:
|
||||
BLUE: 0.75
|
||||
GREEN: 0.3
|
||||
RED: 0.3
|
||||
Taming:
|
||||
BLUE: 0.75
|
||||
GREEN: 0.3
|
||||
RED: 0.3
|
||||
Acrobatics:
|
||||
BLUE: 0.75
|
||||
GREEN: 0.3
|
||||
RED: 0.3
|
||||
Border:
|
||||
BLUE: 0.0
|
||||
GREEN: 0.0
|
||||
RED: 0.0
|
||||
Background:
|
||||
BLUE: 0.75
|
||||
GREEN: 0.75
|
||||
RED: 0.75
|
||||
Woodcutting:
|
||||
BLUE: 0.75
|
||||
GREEN: 0.3
|
||||
RED: 0.3
|
||||
Archery:
|
||||
BLUE: 0.75
|
||||
GREEN: 0.3
|
||||
RED: 0.3
|
||||
Axes:
|
||||
BLUE: 0.75
|
||||
GREEN: 0.3
|
||||
RED: 0.3
|
||||
Repair:
|
||||
BLUE: 0.75
|
||||
GREEN: 0.3
|
||||
RED: 0.3
|
||||
Fishing:
|
||||
BLUE: 0.75
|
||||
GREEN: 0.3
|
||||
RED: 0.3
|
||||
Excavation:
|
||||
BLUE: 0.75
|
||||
GREEN: 0.3
|
||||
RED: 0.3
|
||||
Herbalism:
|
||||
BLUE: 0.75
|
||||
GREEN: 0.3
|
||||
RED: 0.3
|
||||
Unarmed:
|
||||
BLUE: 0.75
|
||||
GREEN: 0.3
|
||||
RED: 0.3
|
||||
Mining:
|
||||
BLUE: 0.75
|
||||
GREEN: 0.3
|
||||
RED: 0.3
|
||||
Notifications:
|
||||
Tier1: 200
|
||||
Tier2: 400
|
||||
Tier3: 600
|
||||
Tier4: 800
|
Before Width: | Height: | Size: 377 B |
Before Width: | Height: | Size: 393 B |
Before Width: | Height: | Size: 384 B |
Before Width: | Height: | Size: 411 B |
Before Width: | Height: | Size: 433 B |
Before Width: | Height: | Size: 442 B |
Before Width: | Height: | Size: 446 B |
Before Width: | Height: | Size: 443 B |
Before Width: | Height: | Size: 445 B |
Before Width: | Height: | Size: 440 B |
Before Width: | Height: | Size: 444 B |
Before Width: | Height: | Size: 446 B |
Before Width: | Height: | Size: 447 B |
Before Width: | Height: | Size: 438 B |
Before Width: | Height: | Size: 435 B |
Before Width: | Height: | Size: 440 B |
Before Width: | Height: | Size: 423 B |
Before Width: | Height: | Size: 441 B |
Before Width: | Height: | Size: 463 B |
Before Width: | Height: | Size: 469 B |
Before Width: | Height: | Size: 469 B |
Before Width: | Height: | Size: 465 B |
Before Width: | Height: | Size: 462 B |
Before Width: | Height: | Size: 461 B |
Before Width: | Height: | Size: 466 B |
Before Width: | Height: | Size: 469 B |
Before Width: | Height: | Size: 469 B |
Before Width: | Height: | Size: 461 B |
Before Width: | Height: | Size: 455 B |
Before Width: | Height: | Size: 448 B |
Before Width: | Height: | Size: 437 B |
Before Width: | Height: | Size: 439 B |
Before Width: | Height: | Size: 448 B |
Before Width: | Height: | Size: 449 B |
Before Width: | Height: | Size: 448 B |
Before Width: | Height: | Size: 447 B |
Before Width: | Height: | Size: 445 B |
Before Width: | Height: | Size: 450 B |
Before Width: | Height: | Size: 445 B |
Before Width: | Height: | Size: 450 B |
Before Width: | Height: | Size: 450 B |
Before Width: | Height: | Size: 444 B |
Before Width: | Height: | Size: 440 B |
Before Width: | Height: | Size: 444 B |
Before Width: | Height: | Size: 434 B |