Config files will update automatically again

This commit is contained in:
nossr50 2023-04-11 15:39:01 -07:00
parent 921a0228db
commit 0ab93586fd
45 changed files with 154 additions and 196 deletions

View File

@ -1,3 +1,7 @@
Version 2.1.220
Config files update automatically again
Default configs are now copied to plugins/mcMMO/defaults for easy reference, these configs will always match the default values of the config in the JAR
Version 2.1.219 Version 2.1.219
Fixed Fishing exploit protection being triggered inappropriately by other plugins (Thanks smudgge) Fixed Fishing exploit protection being triggered inappropriately by other plugins (Thanks smudgge)
Fixed wiki url being incorrect in commands Fixed wiki url being incorrect in commands

View File

@ -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>2.1.219</version> <version>2.1.220-SNAPSHOT</version>
<name>mcMMO</name> <name>mcMMO</name>
<url>https://github.com/mcMMO-Dev/mcMMO</url> <url>https://github.com/mcMMO-Dev/mcMMO</url>
<scm> <scm>

View File

@ -41,7 +41,7 @@ public final class ExperienceAPI {
/** /**
* Start the task that gives combat XP. * Start the task that gives combat XP.
* Processes combat XP like mcMMO normally would, so mcMMO will check whether or not the entity should reward XP when giving out the XP * Processes combat XP like mcMMO normally would, so mcMMO will check whether the entity should reward XP when giving out the XP
* *
* @param mcMMOPlayer The attacking player * @param mcMMOPlayer The attacking player
* @param target The defending entity * @param target The defending entity
@ -56,7 +56,7 @@ public final class ExperienceAPI {
/** /**
* Start the task that gives combat XP. * Start the task that gives combat XP.
* Processes combat XP like mcMMO normally would, so mcMMO will check whether or not the entity should reward XP when giving out the XP * Processes combat XP like mcMMO normally would, so mcMMO will check whether the entity should reward XP when giving out the XP
* *
* @param mcMMOPlayer The attacking player * @param mcMMOPlayer The attacking player
* @param target The defending entity * @param target The defending entity

View File

@ -43,7 +43,7 @@ public class ChatManager {
* *
* @param mmoPlayer target player * @param mmoPlayer target player
* @param rawMessage the raw message from the player as it was typed * @param rawMessage the raw message from the player as it was typed
* @param isAsync whether or not this is getting processed via async * @param isAsync whether this is getting processed via async
*/ */
public void processPlayerMessage(@NotNull McMMOPlayer mmoPlayer, @NotNull String rawMessage, boolean isAsync) { public void processPlayerMessage(@NotNull McMMOPlayer mmoPlayer, @NotNull String rawMessage, boolean isAsync) {
processPlayerMessage(mmoPlayer, mmoPlayer.getChatChannel(), rawMessage, isAsync); processPlayerMessage(mmoPlayer, mmoPlayer.getChatChannel(), rawMessage, isAsync);
@ -69,7 +69,7 @@ public class ChatManager {
* @param mmoPlayer target player * @param mmoPlayer target player
* @param chatChannel target chat channel * @param chatChannel target chat channel
* @param rawMessage raw chat message as it was typed * @param rawMessage raw chat message as it was typed
* @param isAsync whether or not this is getting processed via async * @param isAsync whether this is getting processed via async
*/ */
private void processPlayerMessage(@NotNull McMMOPlayer mmoPlayer, @NotNull ChatChannel chatChannel, @NotNull String rawMessage, boolean isAsync) { private void processPlayerMessage(@NotNull McMMOPlayer mmoPlayer, @NotNull ChatChannel chatChannel, @NotNull String rawMessage, boolean isAsync) {
switch (chatChannel) { switch (chatChannel) {
@ -155,7 +155,7 @@ public class ChatManager {
} }
/** /**
* Whether or not the player is allowed to send a message to the chat channel they are targeting * Whether the player is allowed to send a message to the chat channel they are targeting
* @param mmoPlayer target player * @param mmoPlayer target player
* @return true if the player can send messages to that chat channel * @return true if the player can send messages to that chat channel
*/ */
@ -197,7 +197,7 @@ public class ChatManager {
} }
/** /**
* Whether or not a specific chat channel is enabled * Whether a specific chat channel is enabled
* ChatChannels are enabled/disabled via user config * ChatChannels are enabled/disabled via user config
* *
* If chat is disabled, this always returns false * If chat is disabled, this always returns false

View File

@ -73,7 +73,7 @@ public abstract class AbstractPlayerAuthor implements Author {
* Sanitized names are associated with a {@link ChatChannel} as different chat channels have different chat name settings * Sanitized names are associated with a {@link ChatChannel} as different chat channels have different chat name settings
* *
* @param chatChannel target chat channel * @param chatChannel target chat channel
* @param useDisplayName whether or not to use this authors display name * @param useDisplayName whether to use this authors display name
*/ */
private void updateSanitizedNameCache(@NotNull ChatChannel chatChannel, boolean useDisplayName) { private void updateSanitizedNameCache(@NotNull ChatChannel chatChannel, boolean useDisplayName) {
if(useDisplayName) { if(useDisplayName) {

View File

@ -17,14 +17,14 @@ public interface Author extends Identity {
@NotNull String getAuthoredName(@NotNull ChatChannel chatChannel); @NotNull String getAuthoredName(@NotNull ChatChannel chatChannel);
/** /**
* Whether or not this author is a {@link org.bukkit.command.ConsoleCommandSender} * Whether this author is a {@link org.bukkit.command.ConsoleCommandSender}
* *
* @return true if this author is the console * @return true if this author is the console
*/ */
boolean isConsole(); boolean isConsole();
/** /**
* Whether or not this author is a {@link org.bukkit.entity.Player} * Whether this author is a {@link org.bukkit.entity.Player}
* @return true if this author is a player * @return true if this author is a player
*/ */
boolean isPlayer(); boolean isPlayer();

View File

@ -73,8 +73,8 @@ public class AdminChatMailer extends AbstractChatMailer {
* *
* @param author the author * @param author the author
* @param rawString the raw message as the author typed it before any styling * @param rawString the raw message as the author typed it before any styling
* @param isAsync whether or not this is being processed asynchronously * @param isAsync whether this is being processed asynchronously
* @param canColor whether or not the author can use colors in chat * @param canColor whether the author can use colors in chat
*/ */
public void processChatMessage(@NotNull Author author, @NotNull String rawString, boolean isAsync, boolean canColor) { public void processChatMessage(@NotNull Author author, @NotNull String rawString, boolean isAsync, boolean canColor) {
AdminChatMessage chatMessage = new AdminChatMessage(pluginRef, author, constructAudience(), rawString, addStyle(author, rawString, canColor)); AdminChatMessage chatMessage = new AdminChatMessage(pluginRef, author, constructAudience(), rawString, addStyle(author, rawString, canColor));

View File

@ -27,8 +27,8 @@ public class PartyChatMailer extends AbstractChatMailer {
* *
* @param author the author * @param author the author
* @param rawString the raw message as the author typed it before any styling * @param rawString the raw message as the author typed it before any styling
* @param isAsync whether or not this is being processed asynchronously * @param isAsync whether this is being processed asynchronously
* @param canColor whether or not the author can use colors in chat * @param canColor whether the author can use colors in chat
*/ */
public void processChatMessage(@NotNull Author author, @NotNull String rawString, @NotNull Party party, boolean isAsync, boolean canColor, boolean isLeader) { public void processChatMessage(@NotNull Author author, @NotNull String rawString, @NotNull Party party, boolean isAsync, boolean canColor, boolean isLeader) {
PartyChatMessage chatMessage = new PartyChatMessage(pluginRef, author, constructPartyAudience(party), rawString, addStyle(author, rawString, canColor, isLeader), party); PartyChatMessage chatMessage = new PartyChatMessage(pluginRef, author, constructPartyAudience(party), rawString, addStyle(author, rawString, canColor, isLeader), party);

View File

@ -17,11 +17,6 @@ public class AdvancedConfig extends BukkitConfig {
validate(); validate();
} }
@Override
public void initDefaults() {
config.addDefault("Skills.General.StartingLevel", 0);
}
@Override @Override
protected boolean validateKeys() { protected boolean validateKeys() {
// Validate all the settings! // Validate all the settings!
@ -427,7 +422,7 @@ public class AdvancedConfig extends BukkitConfig {
/** /**
* This returns the maximum level at which superabilities will stop lengthening from scaling alongside skill level. * This returns the maximum level at which superabilities will stop lengthening from scaling alongside skill level.
* It returns a different value depending on whether or not the server is in retro mode * It returns a different value depending on whether the server is in retro mode
* *
* @return the level at which abilities stop increasing in length * @return the level at which abilities stop increasing in length
*/ */
@ -440,7 +435,7 @@ public class AdvancedConfig extends BukkitConfig {
/** /**
* This returns the frequency at which abilities will increase in length * This returns the frequency at which abilities will increase in length
* It returns a different value depending on whether or not the server is in retro mode * It returns a different value depending on whether the server is in retro mode
* *
* @return the number of levels required per ability length increase * @return the number of levels required per ability length increase
*/ */

View File

@ -7,53 +7,112 @@ import org.jetbrains.annotations.NotNull;
import java.io.*; import java.io.*;
import java.util.HashSet; import java.util.HashSet;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
public abstract class BukkitConfig { public abstract class BukkitConfig {
public static final String CONFIG_PATCH_PREFIX = "ConfigPatchVersion:"; boolean copyDefaults = true;
public static final String CURRENT_CONFIG_PATCH_VER = "ConfigPatchVersion: 2";
public static final char COMMENT_PREFIX = '#';
protected final String fileName; protected final String fileName;
protected final File configFile; protected final File configFile;
protected YamlConfiguration defaultYamlConfig;
protected YamlConfiguration config; protected YamlConfiguration config;
protected @NotNull protected @NotNull final File dataFolder;
final File dataFolder;
public BukkitConfig(@NotNull String fileName, @NotNull File dataFolder) { public BukkitConfig(@NotNull String fileName, @NotNull File dataFolder) {
mcMMO.p.getLogger().info("[config] Initializing config: " + fileName); mcMMO.p.getLogger().info("[config] Initializing config: " + fileName);
this.fileName = fileName; this.fileName = fileName;
this.dataFolder = dataFolder; this.dataFolder = dataFolder;
configFile = new File(dataFolder, fileName); configFile = new File(dataFolder, fileName);
// purgeComments(true); this.defaultYamlConfig = copyDefaultConfig();
this.config = initConfig();
updateFile();
mcMMO.p.getLogger().info("[config] Config initialized: " + fileName);
}
public BukkitConfig(@NotNull String fileName, @NotNull File dataFolder, boolean copyDefaults) {
mcMMO.p.getLogger().info("[config] Initializing config: " + fileName);
this.copyDefaults = copyDefaults;
this.fileName = fileName;
this.dataFolder = dataFolder;
configFile = new File(dataFolder, fileName);
this.defaultYamlConfig = copyDefaultConfig();
this.config = initConfig(); this.config = initConfig();
initDefaults();
updateFile(); updateFile();
mcMMO.p.getLogger().info("[config] Config initialized: " + fileName); mcMMO.p.getLogger().info("[config] Config initialized: " + fileName);
} }
@Deprecated
public BukkitConfig(@NotNull String fileName) { public BukkitConfig(@NotNull String fileName) {
this(fileName, mcMMO.p.getDataFolder()); this(fileName, mcMMO.p.getDataFolder());
} }
public BukkitConfig(@NotNull String fileName, boolean copyDefaults) {
/** this(fileName, mcMMO.p.getDataFolder(), copyDefaults);
* Initialize default values for the config }
*/
public void initDefaults() {}
/** /**
* Update the file on the disk by copying out any new and missing defaults * Update the file on the disk by copying out any new and missing defaults
*/ */
public void updateFile() { public void updateFile() {
try { try {
if(copyDefaults) {
copyMissingDefaultsFromResource();
}
config.save(configFile); config.save(configFile);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
private YamlConfiguration initConfig() { /**
* Copies missing keys and values from the internal resource config within the JAR
*/
private void copyMissingDefaultsFromResource() {
boolean updated = false;
for (String key : defaultYamlConfig.getKeys(true)) {
if (!config.contains(key)) {
config.set(key, defaultYamlConfig.get(key));
updated = true;
}
}
if (updated) {
updateFile();
}
}
/**
* Copies the config from the JAR to defaults/<fileName>
*/
YamlConfiguration copyDefaultConfig() {
mcMMO.p.getLogger().info("[config] Copying default config to disk: " + fileName + " to defaults/" + fileName);
try(InputStream inputStream = mcMMO.p.getResource(fileName)) {
if(inputStream == null) {
mcMMO.p.getLogger().severe("[config] Unable to copy default config: " + fileName);
return null;
}
//Save default file into defaults/<fileName>
File defaultsFolder = new File(dataFolder, "defaults");
if (!defaultsFolder.exists()) {
defaultsFolder.mkdir();
}
File defaultFile = new File(defaultsFolder, fileName);
Path path = defaultFile.toPath();
Files.copy(inputStream, path, java.nio.file.StandardCopyOption.REPLACE_EXISTING);
// Load file into YAML config
YamlConfiguration defaultYamlConfig = new YamlConfiguration();
defaultYamlConfig.load(defaultFile);
return defaultYamlConfig;
} catch (IOException | InvalidConfigurationException e) {
e.printStackTrace();
}
return null;
}
YamlConfiguration initConfig() {
if (!configFile.exists()) { if (!configFile.exists()) {
mcMMO.p.getLogger().info("[config] User config file not found, copying a default config to disk: " + fileName); mcMMO.p.getLogger().info("[config] User config file not found, copying a default config to disk: " + fileName);
mcMMO.p.saveResource(fileName, false); mcMMO.p.saveResource(fileName, false);
@ -106,8 +165,8 @@ public abstract class BukkitConfig {
} }
public void backup() { public void backup() {
mcMMO.p.getLogger().severe("You are using an old version of the " + fileName + " file."); mcMMO.p.getLogger().info("You are using an old version of the " + fileName + " file.");
mcMMO.p.getLogger().severe("Your old file has been renamed to " + fileName + ".old and has been replaced by an updated version."); mcMMO.p.getLogger().info("Your old file has been renamed to " + fileName + ".old and has been replaced by an updated version.");
configFile.renameTo(new File(configFile.getPath() + ".old")); configFile.renameTo(new File(configFile.getPath() + ".old"));
@ -123,98 +182,4 @@ public abstract class BukkitConfig {
public File getFile() { public File getFile() {
return configFile; return configFile;
} }
// /**
// * Somewhere between December 2021-January 2022 Spigot updated their
// * SnakeYAML dependency/API and due to our own crappy legacy code
// * this introduced a very problematic bug where comments got duplicated
// * <p>
// * This method hotfixes the problem by just deleting any existing comments
// * it's ugly, but it gets the job done
// *
// * @param silentFail when true mcMMO will report errors during the patch process or debug information
// * the option to have it fail silently is because mcMMO wants to check files before they are parsed as a file with a zillion comments will fail to even load
// */
// private void purgeComments(boolean silentFail) {
// if(!configFile.exists())
// return;
//
// int dupedLines = 0, lineCount = 0, lineCountAfter = 0;
// try (FileReader fileReader = new FileReader(configFile);
// BufferedReader bufferedReader = new BufferedReader(fileReader)) {
// StringBuilder stringBuilder = new StringBuilder();
// String line;
// Set<String> seenBefore = new HashSet<>();
//
// stringBuilder.append(CURRENT_CONFIG_PATCH_VER).append(System.lineSeparator());
// boolean noPatchNeeded = false;
//
// // While not at the end of the file
// while ((line = bufferedReader.readLine()) != null) {
// lineCount++;
//
// if(line.startsWith(CURRENT_CONFIG_PATCH_VER)) {
// noPatchNeeded = true;
// break;
// }
//
// //Older version, don't append this line
// if(line.startsWith(CONFIG_PATCH_PREFIX))
// continue;
//
// if (isFirstCharAsciiCharacter(line, COMMENT_PREFIX)) {
// if(seenBefore.contains(line))
// dupedLines++;
// else
// seenBefore.add(line);
//
// continue; //Delete the line by not appending it
// }
//
// stringBuilder
// .append(line) //Convert existing files into two-spaced format
// .append(System.lineSeparator());
// lineCountAfter++;
// }
//
// if(noPatchNeeded)
// return;
//
// if(lineCount == 0 && !silentFail) {
// mcMMO.p.getLogger().info("[config patcher] Config line count: " + lineCount);
// throw new InvalidConfigurationException("[config patcher] Patching of config file resulted in an empty file, this will not be saved. Contact the mcMMO devs!");
// }
//
// if(dupedLines > 0 && !silentFail) {
// mcMMO.p.getLogger().info("[config patcher] Found "+dupedLines+" duplicate comments in config file: " + configFile.getName());
// mcMMO.p.getLogger().info("[config patcher] Purging the duplicate comments... (Nothing is broken, this is just info used for debugging)");
// mcMMO.p.getLogger().info("[config patcher] Line count before: "+lineCount);
// mcMMO.p.getLogger().info("[config patcher] Line count after: "+lineCountAfter);
// }
//
// // Write out the *patched* file
// // AKA the file without any comments
// try (FileWriter fileWriter = new FileWriter(configFile)) {
// fileWriter.write(stringBuilder.toString());
// }
// } catch (IOException | InvalidConfigurationException ex) {
// mcMMO.p.getLogger().severe("Failed to patch config file: " + configFile.getName());
// ex.printStackTrace();
// }
// }
private boolean isFirstCharAsciiCharacter(String line, char character) {
if(line == null || line.isEmpty()) {
return true;
}
for(Character c : line.toCharArray()) {
if(c.equals(' '))
continue;
return c.equals(character);
}
return false;
}
} }

View File

@ -40,7 +40,7 @@ public class ChatConfig extends BukkitConfig {
} }
/** /**
* Whether or not to use display names for players in target {@link ChatChannel} * Whether to use display names for players in target {@link ChatChannel}
* *
* @param chatChannel target chat channel * @param chatChannel target chat channel
* *

View File

@ -35,7 +35,7 @@ public class CoreSkillsConfig extends BukkitConfig {
*/ */
/** /**
* Whether or not a skill is enabled * Whether a skill is enabled
* Defaults true * Defaults true
* *
* @param abstractSubSkill SubSkill definition to check * @param abstractSubSkill SubSkill definition to check
@ -47,7 +47,7 @@ public class CoreSkillsConfig extends BukkitConfig {
} }
/** /**
* Whether or not this primary skill is enabled * Whether this primary skill is enabled
* *
* @param primarySkillType target primary skill * @param primarySkillType target primary skill
* *

View File

@ -25,12 +25,6 @@ public class ExperienceConfig extends BukkitConfig {
validate(); validate();
} }
@Override
public void initDefaults() {
config.addDefault("ExploitFix.Combat.XPCeiling.Enabled", true);
config.addDefault("ExploitFix.Combat.XPCeiling.Damage_Limit", 100);
}
public static ExperienceConfig getInstance() { public static ExperienceConfig getInstance() {
if (instance == null) { if (instance == null) {
instance = new ExperienceConfig(); instance = new ExperienceConfig();

View File

@ -18,7 +18,7 @@ public class RepairConfig extends BukkitConfig {
private List<Repairable> repairables; private List<Repairable> repairables;
public RepairConfig(String fileName) { public RepairConfig(String fileName) {
super(fileName); super(fileName, false);
notSupported = new HashSet<>(); notSupported = new HashSet<>();
loadKeys(); loadKeys();
} }

View File

@ -28,7 +28,7 @@ public class FishingTreasureConfig extends BukkitConfig {
public @NotNull HashMap<EntityType, List<ShakeTreasure>> shakeMap = new HashMap<>(); public @NotNull HashMap<EntityType, List<ShakeTreasure>> shakeMap = new HashMap<>();
private FishingTreasureConfig() { private FishingTreasureConfig() {
super(FILENAME); super(FILENAME, false);
loadKeys(); loadKeys();
validate(); validate();
} }

View File

@ -35,7 +35,7 @@ public class TreasureConfig extends BukkitConfig {
public HashMap<String, List<HylianTreasure>> hylianMap = new HashMap<>(); public HashMap<String, List<HylianTreasure>> hylianMap = new HashMap<>();
private TreasureConfig() { private TreasureConfig() {
super(FILENAME); super(FILENAME, false);
loadKeys(); loadKeys();
validate(); validate();
} }

View File

@ -577,7 +577,7 @@ public class McMMOPlayer implements Identified {
} }
/** /**
* Whether or not a player is level capped * Whether a player is level capped
* If they are at the power level cap, this will return true, otherwise it checks their skill level * If they are at the power level cap, this will return true, otherwise it checks their skill level
* @param primarySkillType * @param primarySkillType
* @return * @return
@ -590,7 +590,7 @@ public class McMMOPlayer implements Identified {
} }
/** /**
* Whether or not a player is power level capped * Whether a player is power level capped
* Compares their power level total to the current set limit * Compares their power level total to the current set limit
* @return true if they have reached the power level cap * @return true if they have reached the power level cap
*/ */
@ -912,7 +912,7 @@ public class McMMOPlayer implements Identified {
return; return;
} }
//These values change depending on whether or not the server is in retro mode //These values change depending on whether the server is in retro mode
int abilityLengthVar = mcMMO.p.getAdvancedConfig().getAbilityLength(); int abilityLengthVar = mcMMO.p.getAdvancedConfig().getAbilityLength();
int abilityLengthCap = mcMMO.p.getAdvancedConfig().getAbilityLengthCap(); int abilityLengthCap = mcMMO.p.getAdvancedConfig().getAbilityLengthCap();

View File

@ -6,7 +6,7 @@ import java.util.Collection;
public interface Toolable { public interface Toolable {
/** /**
* Whether or not this Skill requires a tool * Whether this Skill requires a tool
* Not all skills will require a tool * Not all skills will require a tool
* @return true if tool is required * @return true if tool is required
*/ */

View File

@ -35,7 +35,7 @@ public abstract class AbstractSubSkill implements SubSkill, Interaction, Rank, S
} }
/** /**
* Whether or not this subskill is enabled * Whether this subskill is enabled
* *
* @return true if enabled * @return true if enabled
*/ */

View File

@ -64,7 +64,7 @@ public interface SubSkill extends Skill {
void addStats(TextComponent.Builder componentBuilder, Player player); void addStats(TextComponent.Builder componentBuilder, Player player);
/** /**
* Whether or not this subskill is enabled * Whether this subskill is enabled
* @return true if enabled * @return true if enabled
*/ */
boolean isEnabled(); boolean isEnabled();

View File

@ -56,7 +56,7 @@ public class MobMetadataService {
} }
/** /**
* Whether or not a target {@link LivingEntity} has a specific mcMMO mob flags * Whether a target {@link LivingEntity} has a specific mcMMO mob flags
* *
* @param flag the type of mob flag to check for * @param flag the type of mob flag to check for
* @param livingEntity the living entity to check for metadata * @param livingEntity the living entity to check for metadata
@ -76,7 +76,7 @@ public class MobMetadataService {
} }
/** /**
* Whether or not a target {@link LivingEntity} has any mcMMO mob flags * Whether a target {@link LivingEntity} has any mcMMO mob flags
* *
* @param livingEntity the living entity to check for metadata * @param livingEntity the living entity to check for metadata
* *

View File

@ -476,7 +476,7 @@ public class TamingManager extends SkillManager {
} }
/** /**
* Whether or not the itemstack is used for COTW * Whether the itemstack is used for COTW
* @param itemStack target ItemStack * @param itemStack target ItemStack
* @return true if it is used for any COTW * @return true if it is used for any COTW
*/ */

View File

@ -303,7 +303,7 @@ public final class Misc {
} }
/** /**
* Whether or not a player is the party leader of a party * Whether a player is the party leader of a party
* *
* @param mmoPlayer target player * @param mmoPlayer target player
* @return true if the player is the party leader * @return true if the player is the party leader

View File

@ -5,7 +5,7 @@ package com.gmail.nossr50.util.compat;
*/ */
public interface CompatibilityLayer { public interface CompatibilityLayer {
/** /**
* Whether or not this CompatibilityLayer successfully initialized and in theory should be functional * Whether this CompatibilityLayer successfully initialized and in theory should be functional
* @return true if this CompatibilityLayer is functional * @return true if this CompatibilityLayer is functional
*/ */
default boolean noErrorsOnInitialize() { return true; }; default boolean noErrorsOnInitialize() { return true; };

View File

@ -151,7 +151,10 @@ public class ExperienceBarWrapper {
private void createBossBar() private void createBossBar()
{ {
bossBar = mcMMOPlayer.getPlayer().getServer().createBossBar(title, ExperienceConfig.getInstance().getExperienceBarColor(primarySkillType), ExperienceConfig.getInstance().getExperienceBarStyle(primarySkillType)); bossBar = mcMMOPlayer.getPlayer().getServer().createBossBar(
title,
ExperienceConfig.getInstance().getExperienceBarColor(primarySkillType),
ExperienceConfig.getInstance().getExperienceBarStyle(primarySkillType));
bossBar.addPlayer(mcMMOPlayer.getPlayer()); bossBar.addPlayer(mcMMOPlayer.getPlayer());
} }
} }

View File

@ -84,7 +84,7 @@ public abstract class MajorMinorPatchVersion implements Versioned {
} }
/** /**
* Whether or not this version of Minecraft is a patch * Whether this version of Minecraft is a patch
* a patch version value above 0 will indicate that this is a patch * a patch version value above 0 will indicate that this is a patch
* @return true if this version is a patch * @return true if this version is a patch
*/ */

View File

@ -28,7 +28,7 @@ public class MinecraftGameVersion extends MajorMinorPatchVersion {
} }
/** /**
* Returns whether or not the Minecraft version is at least equal to or higher than a target version * Returns whether the Minecraft version is at least equal to or higher than a target version
* @param majorVerNumber target major version number - for example 1.16.5 , the 1 is the major version * @param majorVerNumber target major version number - for example 1.16.5 , the 1 is the major version
* @param minorVerNumber target minor version number - for example 1.16.5, the 16 is the minor version * @param minorVerNumber target minor version number - for example 1.16.5, the 16 is the minor version
* @param patchVerNumber target patch version number - for example 1.16.5, the 5 is the patch version number * @param patchVerNumber target patch version number - for example 1.16.5, the 5 is the patch version number

View File

@ -104,7 +104,7 @@ public class RankUtils {
} }
/** /**
* Returns whether or not the player has unlocked the first rank in target subskill * Returns whether the player has unlocked the first rank in target subskill
* @param player the player * @param player the player
* @param subSkillType the target subskill * @param subSkillType the target subskill
* @return true if the player has at least one rank in the skill * @return true if the player has at least one rank in the skill
@ -118,7 +118,7 @@ public class RankUtils {
} }
/** /**
* Returns whether or not the player has unlocked the first rank in target subskill * Returns whether the player has unlocked the first rank in target subskill
* @param player the player * @param player the player
* @param abstractSubSkill the target subskill * @param abstractSubSkill the target subskill
* @return true if the player has at least one rank in the skill * @return true if the player has at least one rank in the skill
@ -132,7 +132,7 @@ public class RankUtils {
} }
/** /**
* Returns whether or not the player has reached the specified rank in target subskill * Returns whether the player has reached the specified rank in target subskill
* @param rank the target rank * @param rank the target rank
* @param player the player * @param player the player
* @param subSkillType the target subskill * @param subSkillType the target subskill
@ -144,7 +144,7 @@ public class RankUtils {
} }
/** /**
* Returns whether or not the player has reached the specified rank in target subskill * Returns whether the player has reached the specified rank in target subskill
* @param rank the target rank * @param rank the target rank
* @param player the player * @param player the player
* @param abstractSubSkill the target subskill * @param abstractSubSkill the target subskill

View File

@ -6,15 +6,15 @@ Chat:
Party: Party:
# Enable or disable party chat # Enable or disable party chat
Enable: true Enable: true
# Whether or not to use the current display name of a player # Whether to use the current display name of a player
Use_Display_Names: true Use_Display_Names: true
Spies: Spies:
# Whether or not players with the chat spy permission join the server with chat spying toggled on # Whether players with the chat spy permission join the server with chat spying toggled on
Automatically_Enable_Spying: false Automatically_Enable_Spying: false
Admin: Admin:
# Enable or disable admin chat # Enable or disable admin chat
Enable: true Enable: true
# Whether or not to use the current display name of a player # Whether to use the current display name of a player
Use_Display_Names: true Use_Display_Names: true
# CUSTOMIZATION INFORMATION # CUSTOMIZATION INFORMATION
# If you want to customize the look and feel of chat channels, that is handled through localization which is configurable # If you want to customize the look and feel of chat channels, that is handled through localization which is configurable

View File

@ -10,9 +10,9 @@
General: General:
# When players reach certain level milestones messages will be broadcast # When players reach certain level milestones messages will be broadcast
Level_Up_Chat_Broadcasts: Level_Up_Chat_Broadcasts:
# Whether or not level up broadcasts are enabled # Whether level up broadcasts are enabled
Enabled: true Enabled: true
# Whether or not you want power level milestones to be broadcast # Whether you want power level milestones to be broadcast
Broadcast_Powerlevels: Broadcast_Powerlevels:
Enabled: true Enabled: true
# How often to broadcast, you can change this to 1 to always broadcast a level up event, a setting of 100 will limit it to every 100 levels (for example level 100, level 200, etc) # How often to broadcast, you can change this to 1 to always broadcast a level up event, a setting of 100 will limit it to every 100 levels (for example level 100, level 200, etc)
@ -20,9 +20,9 @@ General:
Broadcast_Targets: Broadcast_Targets:
# Send the message to the console as well # Send the message to the console as well
Send_To_Console: true Send_To_Console: true
# Whether or not to only send chat messages to party members # Whether to only send chat messages to party members
Only_Party_Members: false Only_Party_Members: false
# Whether or not players who recieve a level up broadcast have to be on the same world as the one who leveled up # Whether players who receive a level up broadcast have to be on the same world as the one who leveled up
Only_Same_World: false Only_Same_World: false
# Distance restrictions # Distance restrictions
Distance_Restrictions: Distance_Restrictions:
@ -34,9 +34,9 @@ General:
Broadcast_Targets: Broadcast_Targets:
# Send the message to the console as well # Send the message to the console as well
Send_To_Console: true Send_To_Console: true
# Whether or not to only send chat messages to party members # Whether to only send chat messages to party members
Only_Party_Members: false Only_Party_Members: false
# Whether or not players who recieve a level up broadcast have to be on the same world as the one who leveled up # Whether players who recieve a level up broadcast have to be on the same world as the one who leveled up
Only_Same_World: false Only_Same_World: false
# Distance restrictions # Distance restrictions
Distance_Restrictions: Distance_Restrictions:
@ -44,7 +44,7 @@ General:
# When using Restrict_Distance the blow setting configures the range of the broadcast # When using Restrict_Distance the blow setting configures the range of the broadcast
Restricted_Radius: 100 Restricted_Radius: 100
# Turning this on will scale mcMMO around 1-1000 with default scaling factor # Turning this on will scale mcMMO around 1-1000 with default scaling factor
# Everything in your config related to skill level requirements, skill level bonuses, etc will be multiplied by 10 when this mode is on # Everything in your config related to skill level requirements, skill level bonuses, etc. will be multiplied by 10 when this mode is on
# This change is purely cosmetic, it retains the old feel of mcMMO where you could level up thousands of times # This change is purely cosmetic, it retains the old feel of mcMMO where you could level up thousands of times
RetroMode: RetroMode:
Enabled: true Enabled: true
@ -59,9 +59,6 @@ General:
Save_Interval: 10 Save_Interval: 10
# Allow mcMMO to report on basic anonymous usage # Allow mcMMO to report on basic anonymous usage
Stats_Tracking: true Stats_Tracking: true
# Allow mcMMO to check if a new version is available
Update_Check: true
Prefer_Beta: false
Power_Level_Cap: 0 Power_Level_Cap: 0
# Should mcMMO truncate levels if you lower your max level cap for a skillname # Should mcMMO truncate levels if you lower your max level cap for a skillname
TruncateSkills: true TruncateSkills: true
@ -147,7 +144,7 @@ Scoreboard:
LevelUp_Time: 5 LevelUp_Time: 5
Mob_Healthbar: Mob_Healthbar:
# Enabled: Whether or not the feature is enabled at all # Enabled: Whether the feature is enabled at all
# Display_Type: Per player Default display for mob health bars - HEARTS, BAR, or DISABLED # Display_Type: Per player Default display for mob health bars - HEARTS, BAR, or DISABLED
Enabled: true Enabled: true
Display_Type: HEARTS Display_Type: HEARTS

View File

@ -41,7 +41,7 @@ ExploitFix:
SnowGolemExcavation: true SnowGolemExcavation: true
# This include NPCs from stuff like Citizens, this is not a setting for Vanilla Minecraft Villagers (Which can be considered NPCs) # This include NPCs from stuff like Citizens, this is not a setting for Vanilla Minecraft Villagers (Which can be considered NPCs)
# mcMMO normally doesn't process attacks against an Entity if it is an NPC from another plugin # mcMMO normally doesn't process attacks against an Entity if it is an NPC from another plugin
# Of course, mcMMO doesn't know for sure whether or not something is an NPC, it checks a few known things, see our source code to see how # Of course, mcMMO doesn't know for sure whether something is an NPC, it checks a few known things, see our source code to see how
PreventPluginNPCInteraction: true PreventPluginNPCInteraction: true
Fishing_ExploitFix_Options: Fishing_ExploitFix_Options:
MoveRange: 3 MoveRange: 3

View File

@ -646,4 +646,4 @@ Scoreboard.Misc.RemainingXP=Zbývající XP
Scoreboard.Misc.Overall=Celkově Scoreboard.Misc.Overall=Celkově
Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide> Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide>
Commands.Description.mmoxpbar=Player settings for mcMMO XP bars Commands.Description.mmoxpbar=Player settings for mcMMO XP bars
Commands.Description.mmocompat=Information about mcMMO and whether or not its in compatibility mode or fully functional. Commands.Description.mmocompat=Information about mcMMO and whether its in compatibility mode or fully functional.

View File

@ -467,4 +467,4 @@ Skills.AbilityGateRequirementFail=
Smelting.SubSkill.UnderstandingTheArt.Name= Smelting.SubSkill.UnderstandingTheArt.Name=
Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide> Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide>
Commands.Description.mmoxpbar=Player settings for mcMMO XP bars Commands.Description.mmoxpbar=Player settings for mcMMO XP bars
Commands.Description.mmocompat=Information about mcMMO and whether or not its in compatibility mode or fully functional. Commands.Description.mmocompat=Information about mcMMO and whether its in compatibility mode or fully functional.

View File

@ -466,4 +466,4 @@ MOTD.Version=&6[mcMMO] Kører version &3{0}
MOTD.Website=&6[mcMMO] &a{0}&e - mcMMO Hjemmeside MOTD.Website=&6[mcMMO] &a{0}&e - mcMMO Hjemmeside
Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide> Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide>
Commands.Description.mmoxpbar=Player settings for mcMMO XP bars Commands.Description.mmoxpbar=Player settings for mcMMO XP bars
Commands.Description.mmocompat=Information about mcMMO and whether or not its in compatibility mode or fully functional. Commands.Description.mmocompat=Information about mcMMO and whether its in compatibility mode or fully functional.

View File

@ -172,7 +172,7 @@ Archery.SubSkill.ArrowRetrieval.Name=Arrow Retrieval
Archery.SubSkill.ArrowRetrieval.Description=Chance to retrieve arrows from corpses Archery.SubSkill.ArrowRetrieval.Description=Chance to retrieve arrows from corpses
Archery.SubSkill.ArrowRetrieval.Stat=Arrow Recovery Chance Archery.SubSkill.ArrowRetrieval.Stat=Arrow Recovery Chance
Archery.SubSkill.ArcheryLimitBreak.Name=Archery Limit Break Archery.SubSkill.ArcheryLimitBreak.Name=Archery Limit Break
Archery.SubSkill.ArcheryLimitBreak.Description=Breaking your limits. Increased damage against tough opponents. Intended for PVP, up to server settings for whether or not it will boost damage in PVE. Archery.SubSkill.ArcheryLimitBreak.Description=Breaking your limits. Increased damage against tough opponents. Intended for PVP, up to server settings for whether it will boost damage in PVE.
Archery.SubSkill.ArcheryLimitBreak.Stat=Limit Break Max DMG Archery.SubSkill.ArcheryLimitBreak.Stat=Limit Break Max DMG
Archery.Listener=Archery: Archery.Listener=Archery:
Archery.SkillName=ARCHERY Archery.SkillName=ARCHERY
@ -200,7 +200,7 @@ Axes.SubSkill.CriticalStrikes.Stat=Critical Strike Chance
Axes.SubSkill.AxeMastery.Name=Axe Mastery Axes.SubSkill.AxeMastery.Name=Axe Mastery
Axes.SubSkill.AxeMastery.Description=Adds bonus DMG Axes.SubSkill.AxeMastery.Description=Adds bonus DMG
Axes.SubSkill.AxesLimitBreak.Name=Axes Limit Break Axes.SubSkill.AxesLimitBreak.Name=Axes Limit Break
Axes.SubSkill.AxesLimitBreak.Description=Breaking your limits. Increased damage against tough opponents. Intended for PVP, up to server settings for whether or not it will boost damage in PVE. Axes.SubSkill.AxesLimitBreak.Description=Breaking your limits. Increased damage against tough opponents. Intended for PVP, up to server settings for whether it will boost damage in PVE.
Axes.SubSkill.AxesLimitBreak.Stat=Limit Break Max DMG Axes.SubSkill.AxesLimitBreak.Stat=Limit Break Max DMG
Axes.SubSkill.ArmorImpact.Name=Armor Impact Axes.SubSkill.ArmorImpact.Name=Armor Impact
Axes.SubSkill.ArmorImpact.Description=Strike with enough force to shatter armor Axes.SubSkill.ArmorImpact.Description=Strike with enough force to shatter armor
@ -426,7 +426,7 @@ Swords.SubSkill.Stab.Name=Stab
Swords.SubSkill.Stab.Description=Adds bonus damage to your attacks. Swords.SubSkill.Stab.Description=Adds bonus damage to your attacks.
Swords.SubSkill.Stab.Stat=Stab Damage Swords.SubSkill.Stab.Stat=Stab Damage
Swords.SubSkill.SwordsLimitBreak.Name=Swords Limit Break Swords.SubSkill.SwordsLimitBreak.Name=Swords Limit Break
Swords.SubSkill.SwordsLimitBreak.Description=Breaking your limits. Increased damage against tough opponents. Intended for PVP, up to server settings for whether or not it will boost damage in PVE. Swords.SubSkill.SwordsLimitBreak.Description=Breaking your limits. Increased damage against tough opponents. Intended for PVP, up to server settings for whether it will boost damage in PVE.
Swords.SubSkill.SwordsLimitBreak.Stat=Limit Break Max DMG Swords.SubSkill.SwordsLimitBreak.Stat=Limit Break Max DMG
Swords.SubSkill.Rupture.Stat=Rupture Chance Swords.SubSkill.Rupture.Stat=Rupture Chance
Swords.SubSkill.Rupture.Stat.Extra=[[DARK_AQUA]]Rupture Duration: &e{0}s&a vs Players, &e{1}s&a vs Mobs. Swords.SubSkill.Rupture.Stat.Extra=[[DARK_AQUA]]Rupture Duration: &e{0}s&a vs Players, &e{1}s&a vs Mobs.
@ -508,7 +508,7 @@ Unarmed.SubSkill.Disarm.Name=Disarm
Unarmed.SubSkill.Disarm.Description=Drops the foes item held in hand Unarmed.SubSkill.Disarm.Description=Drops the foes item held in hand
Unarmed.SubSkill.Disarm.Stat=Disarm Chance Unarmed.SubSkill.Disarm.Stat=Disarm Chance
Unarmed.SubSkill.UnarmedLimitBreak.Name=Unarmed Limit Break Unarmed.SubSkill.UnarmedLimitBreak.Name=Unarmed Limit Break
Unarmed.SubSkill.UnarmedLimitBreak.Description=Breaking your limits. Increased damage against tough opponents. Intended for PVP, up to server settings for whether or not it will boost damage in PVE. Unarmed.SubSkill.UnarmedLimitBreak.Description=Breaking your limits. Increased damage against tough opponents. Intended for PVP, up to server settings for whether it will boost damage in PVE.
Unarmed.SubSkill.UnarmedLimitBreak.Stat=Limit Break Max DMG Unarmed.SubSkill.UnarmedLimitBreak.Stat=Limit Break Max DMG
Unarmed.SubSkill.SteelArmStyle.Name=Steel Arm Style Unarmed.SubSkill.SteelArmStyle.Name=Steel Arm Style
Unarmed.SubSkill.SteelArmStyle.Description=Hardens your arm over time Unarmed.SubSkill.SteelArmStyle.Description=Hardens your arm over time
@ -1128,7 +1128,7 @@ LevelCap.PowerLevel=&6(&amcMMO&6) &eYou have reached the power level cap of &c{0
LevelCap.Skill=&6(&amcMMO&6) &eYou have reached the level cap of &c{0}&e for &6{1}&e. You will cease to level in this skill from this point on. LevelCap.Skill=&6(&amcMMO&6) &eYou have reached the level cap of &c{0}&e for &6{1}&e. You will cease to level in this skill from this point on.
Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide> Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide>
Commands.Description.mmoxpbar=Player settings for mcMMO XP bars Commands.Description.mmoxpbar=Player settings for mcMMO XP bars
Commands.Description.mmocompat=Information about mcMMO and whether or not its in compatibility mode or fully functional. Commands.Description.mmocompat=Information about mcMMO and whether its in compatibility mode or fully functional.
Compatibility.Layer.Unsupported=&6Compatibility for &a{0}&6 is not supported by this version of Minecraft. Compatibility.Layer.Unsupported=&6Compatibility for &a{0}&6 is not supported by this version of Minecraft.
Compatibility.Layer.PartialSupport=&6Compatibility for &a{0}&6 is not fully supported by this version of Minecraft, but mcMMO is running a secondary system to emulate some of the missing features. Compatibility.Layer.PartialSupport=&6Compatibility for &a{0}&6 is not fully supported by this version of Minecraft, but mcMMO is running a secondary system to emulate some of the missing features.
Commands.XPBar.DisableAll=&6 All mcMMO XP bars are now disabled, use /mmoxpbar reset to restore default settings. Commands.XPBar.DisableAll=&6 All mcMMO XP bars are now disabled, use /mmoxpbar reset to restore default settings.

View File

@ -674,4 +674,4 @@ Scoreboard.Misc.RemainingXP=XP restante
Scoreboard.Misc.Overall=Total Scoreboard.Misc.Overall=Total
Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide> Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide>
Commands.Description.mmoxpbar=Player settings for mcMMO XP bars Commands.Description.mmoxpbar=Player settings for mcMMO XP bars
Commands.Description.mmocompat=Information about mcMMO and whether or not its in compatibility mode or fully functional. Commands.Description.mmocompat=Information about mcMMO and whether its in compatibility mode or fully functional.

View File

@ -199,4 +199,4 @@ Stats.Header.Misc=&6-=SEKALAISET TAIDOT=-
Stats.Own.Stats=&a[mcMMO] Tilastot Stats.Own.Stats=&a[mcMMO] Tilastot
Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide> Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide>
Commands.Description.mmoxpbar=Player settings for mcMMO XP bars Commands.Description.mmoxpbar=Player settings for mcMMO XP bars
Commands.Description.mmocompat=Information about mcMMO and whether or not its in compatibility mode or fully functional. Commands.Description.mmocompat=Information about mcMMO and whether its in compatibility mode or fully functional.

View File

@ -1139,4 +1139,4 @@ LevelCap.PowerLevel=&6(&amcMMO&6) &eHai raggiunto il livello massimo di potenza
LevelCap.Skill=&6(&amcMMO&6) &eHai raggiunto il livello massimo di &c{0}&e per &6{1}&e. Da questo punto in poi cesserai di salire di livello in questa abilità. LevelCap.Skill=&6(&amcMMO&6) &eHai raggiunto il livello massimo di &c{0}&e per &6{1}&e. Da questo punto in poi cesserai di salire di livello in questa abilità.
Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide> Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide>
Commands.Description.mmoxpbar=Player settings for mcMMO XP bars Commands.Description.mmoxpbar=Player settings for mcMMO XP bars
Commands.Description.mmocompat=Information about mcMMO and whether or not its in compatibility mode or fully functional. Commands.Description.mmocompat=Information about mcMMO and whether its in compatibility mode or fully functional.

View File

@ -990,7 +990,7 @@ Profile.Loading.Failure=mcMMO는 여전히 당신의 데이터를 읽을 수 없
Profile.Loading.AdminFailureNotice=&4[A]&c mcMMO는 &e{0}&c 플레이어 데이터 읽기가 불가능합니다. &d당신의 데이터베이스 설치를 검사해주세요. Profile.Loading.AdminFailureNotice=&4[A]&c mcMMO는 &e{0}&c 플레이어 데이터 읽기가 불가능합니다. &d당신의 데이터베이스 설치를 검사해주세요.
Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide> Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide>
Commands.Description.mmoxpbar=Player settings for mcMMO XP bars Commands.Description.mmoxpbar=Player settings for mcMMO XP bars
Commands.Description.mmocompat=Information about mcMMO and whether or not its in compatibility mode or fully functional. Commands.Description.mmocompat=Information about mcMMO and whether its in compatibility mode or fully functional.
#OVERHAULs #OVERHAULs
Overhaul.Levelup=&l{0} &r(이)가 레벨 &r&a&l{2}&r&f 로 성장 했습니다. Overhaul.Levelup=&l{0} &r(이)가 레벨 &r&a&l{2}&r&f 로 성장 했습니다.

View File

@ -430,4 +430,4 @@ Scoreboard.Misc.RemainingXP=Resterende XP
Scoreboard.Misc.Overall=Globaal Scoreboard.Misc.Overall=Globaal
Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide> Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide>
Commands.Description.mmoxpbar=Player settings for mcMMO XP bars Commands.Description.mmoxpbar=Player settings for mcMMO XP bars
Commands.Description.mmocompat=Information about mcMMO and whether or not its in compatibility mode or fully functional. Commands.Description.mmocompat=Information about mcMMO and whether its in compatibility mode or fully functional.

View File

@ -151,4 +151,4 @@ Stats.Header.Misc=&6-=Varierande Färdogheter=-
Stats.Own.Stats=&a[mcMMO] Stats Stats.Own.Stats=&a[mcMMO] Stats
Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide> Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide>
Commands.Description.mmoxpbar=Player settings for mcMMO XP bars Commands.Description.mmoxpbar=Player settings for mcMMO XP bars
Commands.Description.mmocompat=Information about mcMMO and whether or not its in compatibility mode or fully functional. Commands.Description.mmocompat=Information about mcMMO and whether its in compatibility mode or fully functional.

View File

@ -634,4 +634,4 @@ UpdateChecker.Outdated=You are using an outdated version of mcMMO!
UpdateChecker.NewAvailable=There is a new version available on BukkitDev. UpdateChecker.NewAvailable=There is a new version available on BukkitDev.
Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide> Commands.XPBar.Usage=Proper usage is /mmoxpbar <skillname | reset> <show | hide>
Commands.Description.mmoxpbar=Player settings for mcMMO XP bars Commands.Description.mmoxpbar=Player settings for mcMMO XP bars
Commands.Description.mmocompat=Information about mcMMO and whether or not its in compatibility mode or fully functional. Commands.Description.mmocompat=Information about mcMMO and whether its in compatibility mode or fully functional.

View File

@ -8,7 +8,7 @@
# The bare minimum of an Armor piece is that it has a Repair_Material # The bare minimum of an Armor piece is that it has a Repair_Material
# #
# #
# Repairable: Whether or not the item is repairable # Repairable: Whether the item is repairable
## This defaults to true ## This defaults to true
# #
# Repair_Material: This is the material name of the item used to repair this armor. # Repair_Material: This is the material name of the item used to repair this armor.

View File

@ -18,10 +18,10 @@
## Valid values range from 1 to 4 ## Valid values range from 1 to 4
## This defaults to 1 ## This defaults to 1
# #
# Ability_Enabled: Whether or not abilities are enabled with this tool # Ability_Enabled: Whether abilities are enabled with this tool
## This defaults to true ## This defaults to true
# #
# Repairable: Whether or not the item is repairable # Repairable: Whether the item is repairable
## This defaults to true ## This defaults to true
# #
# Repair_Material: This is the material name of the item used to repair this tool. # Repair_Material: This is the material name of the item used to repair this tool.

View File

@ -26,7 +26,7 @@ commands:
aliases: xpbarsettings aliases: xpbarsettings
description: Change XP bar settings description: Change XP bar settings
mmocompat: mmocompat:
description: Information about the server and whether or not its considered fully compatible or running in compatibility mode description: Information about the server and whether its considered fully compatible or running in compatibility mode
mmodebug: mmodebug:
aliases: [mcmmodebugmode] aliases: [mcmmodebugmode]
description: Toggles a debug mode which will print useful information to chat description: Toggles a debug mode which will print useful information to chat
@ -54,7 +54,7 @@ commands:
description: Add mcMMO levels to a user description: Add mcMMO levels to a user
permission: mcmmo.commands.addlevels permission: mcmmo.commands.addlevels
mcability: mcability:
description: Toggle whether or not abilities get readied on right click description: Toggle whether abilities get readied on right click
permission: mcmmo.commands.mcability permission: mcmmo.commands.mcability
mcrefresh: mcrefresh:
description: Refresh all cooldowns for mcMMO description: Refresh all cooldowns for mcMMO