mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 14:46:46 +01:00
Config files will update automatically again
This commit is contained in:
parent
921a0228db
commit
0ab93586fd
@ -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
|
||||||
|
2
pom.xml
2
pom.xml
@ -2,7 +2,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.gmail.nossr50.mcMMO</groupId>
|
<groupId>com.gmail.nossr50.mcMMO</groupId>
|
||||||
<artifactId>mcMMO</artifactId>
|
<artifactId>mcMMO</artifactId>
|
||||||
<version>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>
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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();
|
||||||
|
@ -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));
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -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
|
||||||
*
|
*
|
||||||
|
@ -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
|
||||||
*
|
*
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
@ -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();
|
||||||
|
@ -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
|
||||||
*
|
*
|
||||||
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
@ -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
|
||||||
|
@ -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; };
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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 로 성장 했습니다.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user