mirror of
https://github.com/RoinujNosde/SimpleClans.git
synced 2026-11-05 17:12:34 -05:00
Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2b46b0adae | ||
|
|
0f15609401 | ||
|
|
ffa738afcc | ||
|
|
2cecee8f21 | ||
|
|
5e7f246de9 | ||
|
|
e97718ec5a | ||
|
|
4867eda532 |
No files matched your search
@@ -15,23 +15,23 @@ jobs:
|
||||
fail-fast: true
|
||||
max-parallel: 4
|
||||
matrix:
|
||||
java-version: [ 16, 21, 23]
|
||||
java-version: [ 16, 17 ]
|
||||
runs-on: ubuntu-latest
|
||||
name: Java ${{ matrix.java-version }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
- name: "Set up JDK ${{ matrix.java-version }}"
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: "${{ matrix.java-version }}"
|
||||
distribution: 'temurin'
|
||||
distribution: 'adopt'
|
||||
cache: 'maven'
|
||||
- name: Build with Maven
|
||||
run: ./mvnw -B -U package --file pom.xml
|
||||
- name: Upload Build Artifact
|
||||
if: "${{ matrix.java-version == 16 }}"
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: SimpleClans
|
||||
path: target/SimpleClans.jar
|
||||
@@ -7,13 +7,13 @@ jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up JDK 16
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: 16
|
||||
cache: 'maven'
|
||||
distribution: 'temurin'
|
||||
distribution: 'adopt'
|
||||
- name: Build with Maven
|
||||
run: ./mvnw -B package --file pom.xml
|
||||
- name: Upload artifact
|
||||
@@ -26,6 +26,6 @@ jobs:
|
||||
changelog: ${{ github.event.release.body }}
|
||||
changelog_type: markdown
|
||||
display_name: ${{ github.event.release.tag_name }}
|
||||
game_versions: 11515,9974,9190,8849,8503,7915,7667,7330,7105,6588,630,591,585,531
|
||||
game_versions: 8849,8503,7915,7667,7330,7105,6588,630,591,585,531
|
||||
release_type: release
|
||||
relations: vault:optionalDependency,worldguard:optionalDependency,grief-prevention:optionalDependency,plotsquared:optionalDependency
|
||||
relations: vault:optionalDependency,worldguard:optionalDependency,grief-prevention:optionalDependency
|
||||
@@ -7,13 +7,13 @@ jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up JDK 16
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: 16
|
||||
cache: 'maven'
|
||||
distribution: 'temurin'
|
||||
distribution: 'adopt'
|
||||
- name: Build with Maven
|
||||
run: ./mvnw -B package --file pom.xml
|
||||
- name: Upload artifact
|
||||
@@ -25,7 +25,7 @@ jobs:
|
||||
changelog: ${{ github.event.release.body }}
|
||||
name: ${{ github.event.release.tag_name }}
|
||||
version: ${{ github.event.release.tag_name }}
|
||||
game_versions: 1.21,1.20,1.19,1.18,1.17,1.16,1.15,1.14,1.13,1.12,1.11,1.10,1.9,1.8
|
||||
game_versions: 1.19,1.18,1.17,1.16,1.15,1.14,1.13,1.12,1.11,1.10,1.9,1.8
|
||||
release_type: release
|
||||
loaders: spigot
|
||||
featured: true
|
||||
@@ -10,16 +10,16 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up JDK 16
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: 16
|
||||
server-id: reposilite # Value of the distributionManagement/repository/id field of the pom.xml
|
||||
server-username: MAVEN_USERNAME
|
||||
server-password: MAVEN_PASSWORD
|
||||
cache: 'maven'
|
||||
distribution: 'temurin'
|
||||
distribution: 'adopt'
|
||||
- name: Build with Maven
|
||||
run: ./mvnw -B package --file pom.xml
|
||||
- name: Publish to Reposilite
|
||||
|
||||
+2
-3
@@ -14,6 +14,5 @@
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
wrapperVersion=3.3.2
|
||||
distributionType=only-script
|
||||
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.8/apache-maven-3.9.8-bin.zip
|
||||
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.3/apache-maven-3.9.3-bin.zip
|
||||
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar
|
||||
@@ -1,20 +1,5 @@
|
||||
# Changelog
|
||||
|
||||
## [2.19.2](https://github.com/RoinujNosde/SimpleClans/compare/v2.19.1...v2.19.2) (2023-08-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* cause check should return true on granting ([#397](https://github.com/RoinujNosde/SimpleClans/issues/397)) ([f29bc74](https://github.com/RoinujNosde/SimpleClans/commit/f29bc746af4940b493ebc43b1e25ff0fc00ab8d0))
|
||||
|
||||
## [2.19.1](https://github.com/RoinujNosde/SimpleClans/compare/v2.19.0...v2.19.1) (2023-08-03)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* charge money on deposit ([#394](https://github.com/RoinujNosde/SimpleClans/issues/394)) ([fe60b25](https://github.com/RoinujNosde/SimpleClans/commit/fe60b25f6107281a9771f6498400c3f8ce81c916))
|
||||
* consider uppercase when checking for disallowed colors ([#391](https://github.com/RoinujNosde/SimpleClans/issues/391)) ([503d679](https://github.com/RoinujNosde/SimpleClans/commit/503d67903e386b1c4b6eb7903a1addbfd42a684a))
|
||||
|
||||
## [2.19.0](https://github.com/RoinujNosde/SimpleClans/compare/v2.18.1...v2.19.0) (2023-07-27)
|
||||
|
||||
|
||||
|
||||
@@ -83,6 +83,3 @@ Feel free to learn our [Javadoc](https://ci.roinujnosde.me/job/SimpleClans/Javad
|
||||
[](https://repo.roinujnosde.me/#/releases/net/sacredlabyrinth/phaed/simpleclans/SimpleClans)
|
||||
##### API Examples
|
||||
* [Examples of how to use the API](https://simpleclans.gitbook.io/simpleclans/other/simpleclans-api)
|
||||
|
||||
|
||||
[](https://mikasa.host/ref/6)
|
||||
@@ -19,241 +19,290 @@
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Apache Maven Wrapper startup batch script, version 3.3.2
|
||||
# Apache Maven Wrapper startup batch script, version 3.2.0
|
||||
#
|
||||
# Required ENV vars:
|
||||
# ------------------
|
||||
# JAVA_HOME - location of a JDK home dir
|
||||
#
|
||||
# Optional ENV vars
|
||||
# -----------------
|
||||
# JAVA_HOME - location of a JDK home dir, required when download maven via java source
|
||||
# MVNW_REPOURL - repo url base for downloading maven distribution
|
||||
# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
|
||||
# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
|
||||
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
|
||||
# e.g. to debug Maven itself, use
|
||||
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
|
||||
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
set -euf
|
||||
[ "${MVNW_VERBOSE-}" != debug ] || set -x
|
||||
if [ -z "$MAVEN_SKIP_RC" ] ; then
|
||||
|
||||
# OS specific support.
|
||||
native_path() { printf %s\\n "$1"; }
|
||||
if [ -f /usr/local/etc/mavenrc ] ; then
|
||||
. /usr/local/etc/mavenrc
|
||||
fi
|
||||
|
||||
if [ -f /etc/mavenrc ] ; then
|
||||
. /etc/mavenrc
|
||||
fi
|
||||
|
||||
if [ -f "$HOME/.mavenrc" ] ; then
|
||||
. "$HOME/.mavenrc"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# OS specific support. $var _must_ be set to either true or false.
|
||||
cygwin=false;
|
||||
darwin=false;
|
||||
mingw=false
|
||||
case "$(uname)" in
|
||||
CYGWIN* | MINGW*)
|
||||
[ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
|
||||
native_path() { cygpath --path --windows "$1"; }
|
||||
;;
|
||||
esac
|
||||
|
||||
# set JAVACMD and JAVACCMD
|
||||
set_java_home() {
|
||||
# For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
|
||||
if [ -n "${JAVA_HOME-}" ]; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ]; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
JAVACCMD="$JAVA_HOME/jre/sh/javac"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
JAVACCMD="$JAVA_HOME/bin/javac"
|
||||
|
||||
if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
|
||||
echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
|
||||
echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
|
||||
return 1
|
||||
CYGWIN*) cygwin=true ;;
|
||||
MINGW*) mingw=true;;
|
||||
Darwin*) darwin=true
|
||||
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
|
||||
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
if [ -x "/usr/libexec/java_home" ]; then
|
||||
JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME
|
||||
else
|
||||
JAVA_HOME="/Library/Java/Home"; export JAVA_HOME
|
||||
fi
|
||||
fi
|
||||
else
|
||||
JAVACMD="$(
|
||||
'set' +e
|
||||
'unset' -f command 2>/dev/null
|
||||
'command' -v java
|
||||
)" || :
|
||||
JAVACCMD="$(
|
||||
'set' +e
|
||||
'unset' -f command 2>/dev/null
|
||||
'command' -v javac
|
||||
)" || :
|
||||
|
||||
if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
|
||||
echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# hash string like Java String::hashCode
|
||||
hash_string() {
|
||||
str="${1:-}" h=0
|
||||
while [ -n "$str" ]; do
|
||||
char="${str%"${str#?}"}"
|
||||
h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
|
||||
str="${str#?}"
|
||||
done
|
||||
printf %x\\n $h
|
||||
}
|
||||
|
||||
verbose() { :; }
|
||||
[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }
|
||||
|
||||
die() {
|
||||
printf %s\\n "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
trim() {
|
||||
# MWRAPPER-139:
|
||||
# Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
|
||||
# Needed for removing poorly interpreted newline sequences when running in more
|
||||
# exotic environments such as mingw bash on Windows.
|
||||
printf "%s" "${1}" | tr -d '[:space:]'
|
||||
}
|
||||
|
||||
# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
|
||||
while IFS="=" read -r key value; do
|
||||
case "${key-}" in
|
||||
distributionUrl) distributionUrl=$(trim "${value-}") ;;
|
||||
distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
|
||||
esac
|
||||
done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties"
|
||||
[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties"
|
||||
|
||||
case "${distributionUrl##*/}" in
|
||||
maven-mvnd-*bin.*)
|
||||
MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
|
||||
case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
|
||||
*AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
|
||||
:Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
|
||||
:Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
|
||||
:Linux*x86_64*) distributionPlatform=linux-amd64 ;;
|
||||
*)
|
||||
echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
|
||||
distributionPlatform=linux-amd64
|
||||
;;
|
||||
esac
|
||||
distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
|
||||
;;
|
||||
maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
|
||||
*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
|
||||
esac
|
||||
|
||||
# apply MVNW_REPOURL and calculate MAVEN_HOME
|
||||
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
|
||||
[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
|
||||
distributionUrlName="${distributionUrl##*/}"
|
||||
distributionUrlNameMain="${distributionUrlName%.*}"
|
||||
distributionUrlNameMain="${distributionUrlNameMain%-bin}"
|
||||
MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
|
||||
MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"
|
||||
|
||||
exec_maven() {
|
||||
unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
|
||||
exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
|
||||
}
|
||||
|
||||
if [ -d "$MAVEN_HOME" ]; then
|
||||
verbose "found existing MAVEN_HOME at $MAVEN_HOME"
|
||||
exec_maven "$@"
|
||||
if [ -z "$JAVA_HOME" ] ; then
|
||||
if [ -r /etc/gentoo-release ] ; then
|
||||
JAVA_HOME=$(java-config --jre-home)
|
||||
fi
|
||||
fi
|
||||
|
||||
case "${distributionUrl-}" in
|
||||
*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
|
||||
*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
|
||||
esac
|
||||
|
||||
# prepare tmp dir
|
||||
if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
|
||||
clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
|
||||
trap clean HUP INT TERM EXIT
|
||||
else
|
||||
die "cannot create temp dir"
|
||||
# For Cygwin, ensure paths are in UNIX format before anything is touched
|
||||
if $cygwin ; then
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
|
||||
[ -n "$CLASSPATH" ] &&
|
||||
CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
|
||||
fi
|
||||
|
||||
mkdir -p -- "${MAVEN_HOME%/*}"
|
||||
|
||||
# Download and Install Apache Maven
|
||||
verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
|
||||
verbose "Downloading from: $distributionUrl"
|
||||
verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
|
||||
|
||||
# select .zip or .tar.gz
|
||||
if ! command -v unzip >/dev/null; then
|
||||
distributionUrl="${distributionUrl%.zip}.tar.gz"
|
||||
distributionUrlName="${distributionUrl##*/}"
|
||||
# For Mingw, ensure paths are in UNIX format before anything is touched
|
||||
if $mingw ; then
|
||||
[ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] &&
|
||||
JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)"
|
||||
fi
|
||||
|
||||
# verbose opt
|
||||
__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
|
||||
[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v
|
||||
|
||||
# normalize http auth
|
||||
case "${MVNW_PASSWORD:+has-password}" in
|
||||
'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
|
||||
has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
|
||||
esac
|
||||
|
||||
if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
|
||||
verbose "Found wget ... using wget"
|
||||
wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
|
||||
elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
|
||||
verbose "Found curl ... using curl"
|
||||
curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
|
||||
elif set_java_home; then
|
||||
verbose "Falling back to use Java to download"
|
||||
javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
|
||||
targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
|
||||
cat >"$javaSource" <<-END
|
||||
public class Downloader extends java.net.Authenticator
|
||||
{
|
||||
protected java.net.PasswordAuthentication getPasswordAuthentication()
|
||||
{
|
||||
return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
|
||||
}
|
||||
public static void main( String[] args ) throws Exception
|
||||
{
|
||||
setDefault( new Downloader() );
|
||||
java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
|
||||
}
|
||||
}
|
||||
END
|
||||
# For Cygwin/MinGW, switch paths to Windows format before running javac and java
|
||||
verbose " - Compiling Downloader.java ..."
|
||||
"$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
|
||||
verbose " - Running Downloader.java ..."
|
||||
"$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
|
||||
fi
|
||||
|
||||
# If specified, validate the SHA-256 sum of the Maven distribution zip file
|
||||
if [ -n "${distributionSha256Sum-}" ]; then
|
||||
distributionSha256Result=false
|
||||
if [ "$MVN_CMD" = mvnd.sh ]; then
|
||||
echo "Checksum validation is not supported for maven-mvnd." >&2
|
||||
echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
|
||||
exit 1
|
||||
elif command -v sha256sum >/dev/null; then
|
||||
if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then
|
||||
distributionSha256Result=true
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
javaExecutable="$(which javac)"
|
||||
if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then
|
||||
# readlink(1) is not available as standard on Solaris 10.
|
||||
readLink=$(which readlink)
|
||||
if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then
|
||||
if $darwin ; then
|
||||
javaHome="$(dirname "\"$javaExecutable\"")"
|
||||
javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac"
|
||||
else
|
||||
javaExecutable="$(readlink -f "\"$javaExecutable\"")"
|
||||
fi
|
||||
javaHome="$(dirname "\"$javaExecutable\"")"
|
||||
javaHome=$(expr "$javaHome" : '\(.*\)/bin')
|
||||
JAVA_HOME="$javaHome"
|
||||
export JAVA_HOME
|
||||
fi
|
||||
elif command -v shasum >/dev/null; then
|
||||
if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
|
||||
distributionSha256Result=true
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$JAVACMD" ] ; then
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
else
|
||||
echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
|
||||
echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ $distributionSha256Result = false ]; then
|
||||
echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
|
||||
echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
|
||||
exit 1
|
||||
JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)"
|
||||
fi
|
||||
fi
|
||||
|
||||
# unzip and move
|
||||
if command -v unzip >/dev/null; then
|
||||
unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
echo "Error: JAVA_HOME is not defined correctly." >&2
|
||||
echo " We cannot execute $JAVACMD" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$JAVA_HOME" ] ; then
|
||||
echo "Warning: JAVA_HOME environment variable is not set."
|
||||
fi
|
||||
|
||||
# traverses directory structure from process work directory to filesystem root
|
||||
# first directory with .mvn subdirectory is considered project base directory
|
||||
find_maven_basedir() {
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
echo "Path not specified to find_maven_basedir"
|
||||
return 1
|
||||
fi
|
||||
|
||||
basedir="$1"
|
||||
wdir="$1"
|
||||
while [ "$wdir" != '/' ] ; do
|
||||
if [ -d "$wdir"/.mvn ] ; then
|
||||
basedir=$wdir
|
||||
break
|
||||
fi
|
||||
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
|
||||
if [ -d "${wdir}" ]; then
|
||||
wdir=$(cd "$wdir/.." || exit 1; pwd)
|
||||
fi
|
||||
# end of workaround
|
||||
done
|
||||
printf '%s' "$(cd "$basedir" || exit 1; pwd)"
|
||||
}
|
||||
|
||||
# concatenates all lines of a file
|
||||
concat_lines() {
|
||||
if [ -f "$1" ]; then
|
||||
# Remove \r in case we run on Windows within Git Bash
|
||||
# and check out the repository with auto CRLF management
|
||||
# enabled. Otherwise, we may read lines that are delimited with
|
||||
# \r\n and produce $'-Xarg\r' rather than -Xarg due to word
|
||||
# splitting rules.
|
||||
tr -s '\r\n' ' ' < "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
log() {
|
||||
if [ "$MVNW_VERBOSE" = true ]; then
|
||||
printf '%s\n' "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
BASE_DIR=$(find_maven_basedir "$(dirname "$0")")
|
||||
if [ -z "$BASE_DIR" ]; then
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR
|
||||
log "$MAVEN_PROJECTBASEDIR"
|
||||
|
||||
##########################################################################################
|
||||
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
|
||||
# This allows using the maven wrapper in projects that prohibit checking in binary data.
|
||||
##########################################################################################
|
||||
wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar"
|
||||
if [ -r "$wrapperJarPath" ]; then
|
||||
log "Found $wrapperJarPath"
|
||||
else
|
||||
tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
|
||||
fi
|
||||
printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url"
|
||||
mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
|
||||
log "Couldn't find $wrapperJarPath, downloading it ..."
|
||||
|
||||
clean || :
|
||||
exec_maven "$@"
|
||||
if [ -n "$MVNW_REPOURL" ]; then
|
||||
wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
|
||||
else
|
||||
wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
|
||||
fi
|
||||
while IFS="=" read -r key value; do
|
||||
# Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' )
|
||||
safeValue=$(echo "$value" | tr -d '\r')
|
||||
case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;;
|
||||
esac
|
||||
done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
|
||||
log "Downloading from: $wrapperUrl"
|
||||
|
||||
if $cygwin; then
|
||||
wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
|
||||
fi
|
||||
|
||||
if command -v wget > /dev/null; then
|
||||
log "Found wget ... using wget"
|
||||
[ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet"
|
||||
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
|
||||
wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
|
||||
else
|
||||
wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
|
||||
fi
|
||||
elif command -v curl > /dev/null; then
|
||||
log "Found curl ... using curl"
|
||||
[ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent"
|
||||
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
|
||||
curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
|
||||
else
|
||||
curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
|
||||
fi
|
||||
else
|
||||
log "Falling back to using Java to download"
|
||||
javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java"
|
||||
javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class"
|
||||
# For Cygwin, switch paths to Windows format before running javac
|
||||
if $cygwin; then
|
||||
javaSource=$(cygpath --path --windows "$javaSource")
|
||||
javaClass=$(cygpath --path --windows "$javaClass")
|
||||
fi
|
||||
if [ -e "$javaSource" ]; then
|
||||
if [ ! -e "$javaClass" ]; then
|
||||
log " - Compiling MavenWrapperDownloader.java ..."
|
||||
("$JAVA_HOME/bin/javac" "$javaSource")
|
||||
fi
|
||||
if [ -e "$javaClass" ]; then
|
||||
log " - Running MavenWrapperDownloader.java ..."
|
||||
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
##########################################################################################
|
||||
# End of extension
|
||||
##########################################################################################
|
||||
|
||||
# If specified, validate the SHA-256 sum of the Maven wrapper jar file
|
||||
wrapperSha256Sum=""
|
||||
while IFS="=" read -r key value; do
|
||||
case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;;
|
||||
esac
|
||||
done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
|
||||
if [ -n "$wrapperSha256Sum" ]; then
|
||||
wrapperSha256Result=false
|
||||
if command -v sha256sum > /dev/null; then
|
||||
if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then
|
||||
wrapperSha256Result=true
|
||||
fi
|
||||
elif command -v shasum > /dev/null; then
|
||||
if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then
|
||||
wrapperSha256Result=true
|
||||
fi
|
||||
else
|
||||
echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available."
|
||||
echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties."
|
||||
exit 1
|
||||
fi
|
||||
if [ $wrapperSha256Result = false ]; then
|
||||
echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2
|
||||
echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2
|
||||
echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin; then
|
||||
[ -n "$JAVA_HOME" ] &&
|
||||
JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
|
||||
[ -n "$CLASSPATH" ] &&
|
||||
CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
|
||||
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
|
||||
MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
|
||||
fi
|
||||
|
||||
# Provide a "standardized" way to retrieve the CLI args that will
|
||||
# work with both Windows and non-Windows executions.
|
||||
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*"
|
||||
export MAVEN_CMD_LINE_ARGS
|
||||
|
||||
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
||||
|
||||
# shellcheck disable=SC2086 # safe args
|
||||
exec "$JAVACMD" \
|
||||
$MAVEN_OPTS \
|
||||
$MAVEN_DEBUG_OPTS \
|
||||
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
|
||||
"-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
|
||||
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
|
||||
@@ -1,4 +1,3 @@
|
||||
<# : batch portion
|
||||
@REM ----------------------------------------------------------------------------
|
||||
@REM Licensed to the Apache Software Foundation (ASF) under one
|
||||
@REM or more contributor license agreements. See the NOTICE file
|
||||
@@ -19,131 +18,188 @@
|
||||
@REM ----------------------------------------------------------------------------
|
||||
|
||||
@REM ----------------------------------------------------------------------------
|
||||
@REM Apache Maven Wrapper startup batch script, version 3.3.2
|
||||
@REM Apache Maven Wrapper startup batch script, version 3.2.0
|
||||
@REM
|
||||
@REM Required ENV vars:
|
||||
@REM JAVA_HOME - location of a JDK home dir
|
||||
@REM
|
||||
@REM Optional ENV vars
|
||||
@REM MVNW_REPOURL - repo url base for downloading maven distribution
|
||||
@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
|
||||
@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
|
||||
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
|
||||
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
|
||||
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
|
||||
@REM e.g. to debug Maven itself, use
|
||||
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
|
||||
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
|
||||
@REM ----------------------------------------------------------------------------
|
||||
|
||||
@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
|
||||
@SET __MVNW_CMD__=
|
||||
@SET __MVNW_ERROR__=
|
||||
@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
|
||||
@SET PSModulePath=
|
||||
@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
|
||||
IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
|
||||
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
|
||||
@echo off
|
||||
@REM set title of command window
|
||||
title %0
|
||||
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
|
||||
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
|
||||
|
||||
@REM set %HOME% to equivalent of $HOME
|
||||
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
|
||||
|
||||
@REM Execute a user defined script before this one
|
||||
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
|
||||
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
|
||||
if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
|
||||
if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
|
||||
:skipRcPre
|
||||
|
||||
@setlocal
|
||||
|
||||
set ERROR_CODE=0
|
||||
|
||||
@REM To isolate internal variables from possible post scripts, we use another setlocal
|
||||
@setlocal
|
||||
|
||||
@REM ==== START VALIDATION ====
|
||||
if not "%JAVA_HOME%" == "" goto OkJHome
|
||||
|
||||
echo.
|
||||
echo Error: JAVA_HOME not found in your environment. >&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the >&2
|
||||
echo location of your Java installation. >&2
|
||||
echo.
|
||||
goto error
|
||||
|
||||
:OkJHome
|
||||
if exist "%JAVA_HOME%\bin\java.exe" goto init
|
||||
|
||||
echo.
|
||||
echo Error: JAVA_HOME is set to an invalid directory. >&2
|
||||
echo JAVA_HOME = "%JAVA_HOME%" >&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the >&2
|
||||
echo location of your Java installation. >&2
|
||||
echo.
|
||||
goto error
|
||||
|
||||
@REM ==== END VALIDATION ====
|
||||
|
||||
:init
|
||||
|
||||
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
|
||||
@REM Fallback to current working directory if not found.
|
||||
|
||||
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
|
||||
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
|
||||
|
||||
set EXEC_DIR=%CD%
|
||||
set WDIR=%EXEC_DIR%
|
||||
:findBaseDir
|
||||
IF EXIST "%WDIR%"\.mvn goto baseDirFound
|
||||
cd ..
|
||||
IF "%WDIR%"=="%CD%" goto baseDirNotFound
|
||||
set WDIR=%CD%
|
||||
goto findBaseDir
|
||||
|
||||
:baseDirFound
|
||||
set MAVEN_PROJECTBASEDIR=%WDIR%
|
||||
cd "%EXEC_DIR%"
|
||||
goto endDetectBaseDir
|
||||
|
||||
:baseDirNotFound
|
||||
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
|
||||
cd "%EXEC_DIR%"
|
||||
|
||||
:endDetectBaseDir
|
||||
|
||||
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
|
||||
|
||||
@setlocal EnableExtensions EnableDelayedExpansion
|
||||
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
|
||||
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
|
||||
|
||||
:endReadAdditionalConfig
|
||||
|
||||
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
|
||||
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
|
||||
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
|
||||
|
||||
set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
|
||||
|
||||
FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
|
||||
IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B
|
||||
)
|
||||
@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
|
||||
@SET __MVNW_PSMODULEP_SAVE=
|
||||
@SET __MVNW_ARG0_NAME__=
|
||||
@SET MVNW_USERNAME=
|
||||
@SET MVNW_PASSWORD=
|
||||
@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*)
|
||||
@echo Cannot start maven from wrapper >&2 && exit /b 1
|
||||
@GOTO :EOF
|
||||
: end batch / begin powershell #>
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
if ($env:MVNW_VERBOSE -eq "true") {
|
||||
$VerbosePreference = "Continue"
|
||||
}
|
||||
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
|
||||
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
|
||||
if exist %WRAPPER_JAR% (
|
||||
if "%MVNW_VERBOSE%" == "true" (
|
||||
echo Found %WRAPPER_JAR%
|
||||
)
|
||||
) else (
|
||||
if not "%MVNW_REPOURL%" == "" (
|
||||
SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
|
||||
)
|
||||
if "%MVNW_VERBOSE%" == "true" (
|
||||
echo Couldn't find %WRAPPER_JAR%, downloading it ...
|
||||
echo Downloading from: %WRAPPER_URL%
|
||||
)
|
||||
|
||||
# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
|
||||
$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
|
||||
if (!$distributionUrl) {
|
||||
Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
|
||||
}
|
||||
powershell -Command "&{"^
|
||||
"$webclient = new-object System.Net.WebClient;"^
|
||||
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
|
||||
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
|
||||
"}"^
|
||||
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^
|
||||
"}"
|
||||
if "%MVNW_VERBOSE%" == "true" (
|
||||
echo Finished downloading %WRAPPER_JAR%
|
||||
)
|
||||
)
|
||||
@REM End of extension
|
||||
|
||||
switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
|
||||
"maven-mvnd-*" {
|
||||
$USE_MVND = $true
|
||||
$distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
|
||||
$MVN_CMD = "mvnd.cmd"
|
||||
break
|
||||
}
|
||||
default {
|
||||
$USE_MVND = $false
|
||||
$MVN_CMD = $script -replace '^mvnw','mvn'
|
||||
break
|
||||
}
|
||||
}
|
||||
@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file
|
||||
SET WRAPPER_SHA_256_SUM=""
|
||||
FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
|
||||
IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B
|
||||
)
|
||||
IF NOT %WRAPPER_SHA_256_SUM%=="" (
|
||||
powershell -Command "&{"^
|
||||
"$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^
|
||||
"If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^
|
||||
" Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^
|
||||
" Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^
|
||||
" Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^
|
||||
" exit 1;"^
|
||||
"}"^
|
||||
"}"
|
||||
if ERRORLEVEL 1 goto error
|
||||
)
|
||||
|
||||
# apply MVNW_REPOURL and calculate MAVEN_HOME
|
||||
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
|
||||
if ($env:MVNW_REPOURL) {
|
||||
$MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" }
|
||||
$distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')"
|
||||
}
|
||||
$distributionUrlName = $distributionUrl -replace '^.*/',''
|
||||
$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
|
||||
$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain"
|
||||
if ($env:MAVEN_USER_HOME) {
|
||||
$MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain"
|
||||
}
|
||||
$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
|
||||
$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
|
||||
@REM Provide a "standardized" way to retrieve the CLI args that will
|
||||
@REM work with both Windows and non-Windows executions.
|
||||
set MAVEN_CMD_LINE_ARGS=%*
|
||||
|
||||
if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
|
||||
Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
|
||||
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
|
||||
exit $?
|
||||
}
|
||||
%MAVEN_JAVA_EXE% ^
|
||||
%JVM_CONFIG_MAVEN_PROPS% ^
|
||||
%MAVEN_OPTS% ^
|
||||
%MAVEN_DEBUG_OPTS% ^
|
||||
-classpath %WRAPPER_JAR% ^
|
||||
"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
|
||||
%WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
|
||||
if ERRORLEVEL 1 goto error
|
||||
goto end
|
||||
|
||||
if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
|
||||
Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
|
||||
}
|
||||
:error
|
||||
set ERROR_CODE=1
|
||||
|
||||
# prepare tmp dir
|
||||
$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
|
||||
$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
|
||||
$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
|
||||
trap {
|
||||
if ($TMP_DOWNLOAD_DIR.Exists) {
|
||||
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
|
||||
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
|
||||
}
|
||||
}
|
||||
:end
|
||||
@endlocal & set ERROR_CODE=%ERROR_CODE%
|
||||
|
||||
New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
|
||||
if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
|
||||
@REM check for post script, once with legacy .bat ending and once with .cmd ending
|
||||
if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
|
||||
if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
|
||||
:skipRcPost
|
||||
|
||||
# Download and Install Apache Maven
|
||||
Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
|
||||
Write-Verbose "Downloading from: $distributionUrl"
|
||||
Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
|
||||
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
|
||||
if "%MAVEN_BATCH_PAUSE%"=="on" pause
|
||||
|
||||
$webclient = New-Object System.Net.WebClient
|
||||
if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
|
||||
$webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
|
||||
}
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
|
||||
if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
|
||||
|
||||
# If specified, validate the SHA-256 sum of the Maven distribution zip file
|
||||
$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
|
||||
if ($distributionSha256Sum) {
|
||||
if ($USE_MVND) {
|
||||
Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
|
||||
}
|
||||
Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
|
||||
if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
|
||||
Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
|
||||
}
|
||||
}
|
||||
|
||||
# unzip and move
|
||||
Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
|
||||
Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null
|
||||
try {
|
||||
Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
|
||||
} catch {
|
||||
if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
|
||||
Write-Error "fail to move MAVEN_HOME"
|
||||
}
|
||||
} finally {
|
||||
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
|
||||
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
|
||||
}
|
||||
|
||||
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
|
||||
cmd /C exit /B %ERROR_CODE%
|
||||
@@ -1,8 +1,9 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>net.sacredlabyrinth.phaed.simpleclans</groupId>
|
||||
<artifactId>SimpleClans</artifactId>
|
||||
<version>2.19.3-SNAPSHOT</version>
|
||||
<version>2.19.1-SNAPSHOT</version>
|
||||
<name>SimpleClans</name>
|
||||
<url>https://www.spigotmc.org/resources/simpleclans.71242/</url>
|
||||
|
||||
@@ -16,7 +17,8 @@
|
||||
<filtering>true</filtering>
|
||||
<directory>${basedir}/src/main/resources</directory>
|
||||
<includes>
|
||||
<include>**/*.yml</include>
|
||||
<include>plugin.yml</include>
|
||||
<include>config.yml</include>
|
||||
<include>*.properties</include>
|
||||
</includes>
|
||||
</resource>
|
||||
@@ -28,9 +30,9 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.13.0</version>
|
||||
<version>3.11.0</version>
|
||||
<configuration>
|
||||
<release>8</release>
|
||||
<release>16</release>
|
||||
<showDeprecation>true</showDeprecation>
|
||||
<showWarnings>true</showWarnings>
|
||||
<compilerArgs>
|
||||
@@ -43,21 +45,21 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.4.2</version>
|
||||
<version>3.3.0</version>
|
||||
</plugin>
|
||||
|
||||
<!-- Release plugin -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-release-plugin</artifactId>
|
||||
<version>3.1.1</version>
|
||||
<version>3.0.1</version>
|
||||
</plugin>
|
||||
|
||||
<!-- Shade plugin -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.6.0</version>
|
||||
<version>3.5.0</version>
|
||||
<configuration>
|
||||
<relocations>
|
||||
<relocation>
|
||||
@@ -112,7 +114,7 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<version>3.7.1</version>
|
||||
<version>3.6.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-installed</id>
|
||||
@@ -137,9 +139,9 @@
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>io.github.git-commit-id</groupId>
|
||||
<artifactId>git-commit-id-maven-plugin</artifactId>
|
||||
<version>9.0.1</version>
|
||||
<groupId>pl.project13.maven</groupId>
|
||||
<artifactId>git-commit-id-plugin</artifactId>
|
||||
<version>4.9.10</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
@@ -156,7 +158,7 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<version>3.10.1</version>
|
||||
<version>3.5.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
@@ -166,14 +168,14 @@
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<release>8</release>
|
||||
<release>16</release>
|
||||
<doclint>all,-missing</doclint>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>3.3.1</version>
|
||||
<version>3.1.2</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
@@ -201,19 +203,19 @@
|
||||
<dependency>
|
||||
<groupId>org.bstats</groupId>
|
||||
<artifactId>bstats-bukkit</artifactId>
|
||||
<version>3.0.2</version>
|
||||
<version>2.2.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>me.clip</groupId>
|
||||
<artifactId>placeholderapi</artifactId>
|
||||
<version>2.11.3</version>
|
||||
<version>2.10.9</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains</groupId>
|
||||
<artifactId>annotations</artifactId>
|
||||
<version>24.0.1</version>
|
||||
<version>22.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.papermc</groupId>
|
||||
@@ -229,49 +231,43 @@
|
||||
<dependency>
|
||||
<groupId>com.github.cryptomorin</groupId>
|
||||
<artifactId>XSeries</artifactId>
|
||||
<version>11.2.0.1</version>
|
||||
<version>8.3.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sk89q</groupId>
|
||||
<artifactId>worldguard</artifactId>
|
||||
<version>6.1.1-SNAPSHOT</version>
|
||||
<groupId>com.sk89q.worldguard</groupId>
|
||||
<artifactId>worldguard-bukkit</artifactId>
|
||||
<version>7.0.4</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.TechFortress</groupId>
|
||||
<artifactId>GriefPrevention</artifactId>
|
||||
<version>17.0.0</version>
|
||||
<version>16.18.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.discordsrv</groupId>
|
||||
<artifactId>discordsrv</artifactId>
|
||||
<version>1.28.0</version>
|
||||
<version>1.24.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>biz.princeps</groupId>
|
||||
<artifactId>landlord-latest</artifactId>
|
||||
<version>4.363</version>
|
||||
<version>4.351</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
<version>2.10.1</version>
|
||||
<version>2.9.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Test frameworks -->
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-api</artifactId>
|
||||
<version>5.11.3</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-core</artifactId>
|
||||
<version>5.14.2</version>
|
||||
<version>5.9.3</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
@@ -292,7 +288,7 @@
|
||||
</repository>
|
||||
<repository>
|
||||
<id>papermc</id>
|
||||
<url>https://repo.papermc.io/repository/maven-public/</url>
|
||||
<url>https://papermc.io/repo/repository/maven-public/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>aikar</id>
|
||||
|
||||
@@ -10,8 +10,6 @@ import net.sacredlabyrinth.phaed.simpleclans.loggers.BankLogger;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.loggers.BankOperator;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.CurrencyFormat;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.DateFormat;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
@@ -115,13 +113,13 @@ public class Clan implements Serializable, Comparable<Clan> {
|
||||
@Deprecated
|
||||
public void deposit(double amount, Player player) {
|
||||
if (SimpleClans.getInstance().getPermissionsManager().playerHasMoney(player, amount)) {
|
||||
if (SimpleClans.getInstance().getPermissionsManager().chargePlayer(player, amount)) {
|
||||
player.sendMessage(AQUA + lang("player.clan.deposit", player, CurrencyFormat.format(amount)));
|
||||
addBb(player.getName(), lang("bb.clan.deposit", CurrencyFormat.format(amount)));
|
||||
if (SimpleClans.getInstance().getPermissionsManager().grantPlayer(player, amount)) {
|
||||
player.sendMessage(AQUA + lang("player.clan.deposit", player, amount));
|
||||
addBb(player.getName(), lang("bb.clan.deposit", amount));
|
||||
setBalance(getBalance() + amount);
|
||||
SimpleClans.getInstance().getStorageManager().updateClan(this);
|
||||
} else {
|
||||
player.sendMessage(AQUA + lang("not.sufficient.money", player, CurrencyFormat.format(amount)));
|
||||
player.sendMessage(AQUA + lang("not.sufficient.money", player, amount));
|
||||
}
|
||||
} else {
|
||||
player.sendMessage(AQUA + lang("not.sufficient.money", player, amount));
|
||||
@@ -153,8 +151,8 @@ public class Clan implements Serializable, Comparable<Clan> {
|
||||
public void withdraw(double amount, Player player) {
|
||||
if (getBalance() >= amount) {
|
||||
if (SimpleClans.getInstance().getPermissionsManager().grantPlayer(player, amount)) {
|
||||
player.sendMessage(AQUA + lang("player.clan.withdraw", player, CurrencyFormat.format(amount)));
|
||||
addBb(player.getName(), lang("bb.clan.withdraw", CurrencyFormat.format(amount)));
|
||||
player.sendMessage(AQUA + lang("player.clan.withdraw", player, amount));
|
||||
addBb(player.getName(), lang("bb.clan.withdraw", amount));
|
||||
setBalance(getBalance() - amount);
|
||||
}
|
||||
} else {
|
||||
@@ -248,16 +246,6 @@ public class Clan implements Serializable, Comparable<Clan> {
|
||||
return balance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the clan's balance formatted
|
||||
*
|
||||
* @return the balance formatted
|
||||
*/
|
||||
@Placeholder("balance_formatted")
|
||||
public String getBalanceFormatted() {
|
||||
return CurrencyFormat.format(balance);
|
||||
}
|
||||
|
||||
/**
|
||||
* (used internally)
|
||||
*
|
||||
@@ -465,7 +453,7 @@ public class Clan implements Serializable, Comparable<Clan> {
|
||||
*/
|
||||
@Placeholder("founded")
|
||||
public String getFoundedString() {
|
||||
return DateFormat.formatDateTime(founded);
|
||||
return new java.text.SimpleDateFormat("MMM dd, ''yy h:mm a").format(new Date(this.founded));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,7 +3,6 @@ package net.sacredlabyrinth.phaed.simpleclans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.hooks.papi.Placeholder;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.ProtectionManager.Action;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.DateFormat;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.VanishUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@@ -488,7 +487,8 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
|
||||
if (joinDate == 0) {
|
||||
return "";
|
||||
}
|
||||
return DateFormat.formatDateTime(joinDate);
|
||||
|
||||
return new java.text.SimpleDateFormat("MMM dd, ''yy h:mm a").format(new Date(joinDate));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -512,7 +512,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
|
||||
if (!VanishUtils.isVanished(sender, this)) {
|
||||
return lang("online", sender);
|
||||
}
|
||||
return DateFormat.formatDateTime(lastSeen);
|
||||
return new java.text.SimpleDateFormat("MMM dd, ''yy h:mm a").format(new Date(lastSeen));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -777,7 +777,6 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
|
||||
SimpleClans.getInstance().getStorageManager().updateClanPlayer(this);
|
||||
}
|
||||
|
||||
@Placeholder("is_invite_enabled")
|
||||
public boolean isInviteEnabled() {
|
||||
return flags.getBoolean("invite", true);
|
||||
}
|
||||
|
||||
@@ -176,7 +176,6 @@ public class SimpleClans extends JavaPlugin {
|
||||
metrics.addCustomChart(new SimplePie("threads", () -> sm.is(PERFORMANCE_USE_THREADS) ? on : off));
|
||||
metrics.addCustomChart(new SimplePie("bungeecord", () -> sm.is(PERFORMANCE_USE_BUNGEECORD) ? on : off));
|
||||
metrics.addCustomChart(new SimplePie("discord_chat", () -> sm.is(DISCORDCHAT_ENABLE) ? on : off));
|
||||
metrics.addCustomChart(new SimplePie("default_rank", () -> sm.getString(CLAN_DEFAULT_RANK).isEmpty() ? off : on));
|
||||
}
|
||||
|
||||
private void startTasks() {
|
||||
|
||||
+15
-25
@@ -38,18 +38,17 @@ import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.Con
|
||||
public class SCCommandManager extends PaperCommandManager {
|
||||
private final SimpleClans plugin;
|
||||
private static final List<String> SUBCOMMANDS;
|
||||
private static final List<String> COMPLETIONS;
|
||||
|
||||
public SCCommandManager(@NotNull SimpleClans plugin) {
|
||||
super(plugin);
|
||||
this.plugin = plugin;
|
||||
configure();
|
||||
}
|
||||
|
||||
|
||||
private void configure() {
|
||||
enableUnstableAPI("help");
|
||||
registerDependencies();
|
||||
addReplacements();
|
||||
addCommandReplacements();
|
||||
registerContexts();
|
||||
registerCommands();
|
||||
registerConditions();
|
||||
@@ -108,11 +107,11 @@ public class SCCommandManager extends PaperCommandManager {
|
||||
AbstractCondition obj = c.getConstructor(SimpleClans.class).newInstance(plugin);
|
||||
if (obj instanceof AbstractParameterCondition) {
|
||||
@SuppressWarnings("rawtypes")
|
||||
AbstractParameterCondition condition = ((AbstractParameterCondition<?>) obj);
|
||||
AbstractParameterCondition condition = (AbstractParameterCondition) obj;
|
||||
getCommandConditions().addCondition(condition.getType(), condition.getId(), condition);
|
||||
}
|
||||
if (obj instanceof AbstractCommandCondition) {
|
||||
AbstractCommandCondition condition = ((AbstractCommandCondition) obj);
|
||||
AbstractCommandCondition condition = (AbstractCommandCondition) obj;
|
||||
getCommandConditions().addCondition(condition.getId(), condition);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
@@ -163,7 +162,7 @@ public class SCCommandManager extends PaperCommandManager {
|
||||
}
|
||||
}
|
||||
|
||||
private void addReplacements() {
|
||||
private void addCommandReplacements() {
|
||||
SettingsManager sm = plugin.getSettingsManager();
|
||||
getCommandReplacements().addReplacements(
|
||||
"basic_conditions", "not_blacklisted|not_banned",
|
||||
@@ -175,10 +174,17 @@ public class SCCommandManager extends PaperCommandManager {
|
||||
"clan_chat", sm.getString(COMMANDS_CLAN_CHAT)
|
||||
);
|
||||
|
||||
SUBCOMMANDS.forEach(s -> processReplacement(s, "", ".command", true));
|
||||
COMPLETIONS.forEach(s -> processReplacement(s, "compl:", ".completion", false));
|
||||
SUBCOMMANDS.forEach(s -> {
|
||||
String command = optionalLang(s + ".command", (ClanPlayer) null);
|
||||
if (command == null) {
|
||||
command = s;
|
||||
}
|
||||
command = command.replace(" ", "");
|
||||
String replacement = command.equals(s) ? s : command + "|" + s;
|
||||
getCommandReplacements().addReplacement(s, replacement);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BukkitLocales getLocales() {
|
||||
if (this.locales == null) {
|
||||
@@ -209,20 +215,6 @@ public class SCCommandManager extends PaperCommandManager {
|
||||
return this.locales;
|
||||
}
|
||||
|
||||
private void processReplacement(String key, String prefix, String suffix, boolean hasFallback) {
|
||||
String replacement = optionalLang(key + suffix, (ClanPlayer) null);
|
||||
if (replacement == null) {
|
||||
replacement = key;
|
||||
}
|
||||
|
||||
replacement = replacement.replace(" ", "");
|
||||
if (hasFallback) {
|
||||
replacement = replacement + "|" + key;
|
||||
}
|
||||
|
||||
getCommandReplacements().addReplacement(prefix + key, replacement);
|
||||
}
|
||||
|
||||
static {
|
||||
SUBCOMMANDS = Arrays.asList("setbanner", "resetkdr", "place", "rank", "home", "war", "regroup",
|
||||
"mostkilled", "kills", "globalff", "reload", "unban", "ban", "verify", "disband", "resign", "ff",
|
||||
@@ -233,7 +225,5 @@ public class SCCommandManager extends PaperCommandManager {
|
||||
"lookup", "roster", "profile", "list", "create", "description", "start", "end", "admin", "help", "mod",
|
||||
"setdefault", "removedefault", "land", "break", "interact", "place_block", "damage", "interact_entity",
|
||||
"container", "permanent", "take", "give", "join", "leave", "mute", "confirm", "balance", "discord", "rename", "locale");
|
||||
|
||||
COMPLETIONS = Arrays.asList("tag", "name");
|
||||
}
|
||||
}
|
||||
+11
-12
@@ -10,7 +10,6 @@ import net.sacredlabyrinth.phaed.simpleclans.events.BankWithdrawEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.loggers.BankLogger;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.loggers.BankOperator;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.CurrencyFormat;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@@ -32,7 +31,7 @@ public class BankCommand extends BaseCommand {
|
||||
@Conditions("rank:name=BANK_BALANCE")
|
||||
@Description("{@@command.description.bank.status}")
|
||||
public void bankStatus(Player player, Clan clan) {
|
||||
player.sendMessage(AQUA + lang("clan.balance", player, clan.getBalanceFormatted()));
|
||||
player.sendMessage(AQUA + lang("clan.balance", player, clan.getBalance()));
|
||||
}
|
||||
|
||||
@Subcommand("%withdraw %all")
|
||||
@@ -72,15 +71,15 @@ public class BankCommand extends BaseCommand {
|
||||
*/
|
||||
BankOperator operator = new BankOperator(player, permissions.playerGetMoney(player));
|
||||
switch (clan.withdraw(operator, COMMAND, amount)) {
|
||||
case SUCCESS:
|
||||
case SUCCESS -> {
|
||||
if (permissions.grantPlayer(player, amount)) {
|
||||
player.sendMessage(AQUA + lang("player.clan.withdraw", player, CurrencyFormat.format(amount)));
|
||||
clan.addBb(player.getName(), lang("bb.clan.withdraw", CurrencyFormat.format(amount), player.getName()));
|
||||
player.sendMessage(AQUA + lang("player.clan.withdraw", player, amount));
|
||||
clan.addBb(player.getName(), lang("bb.clan.withdraw", amount, player.getName()));
|
||||
} else {
|
||||
clan.setBalance(operator, REVERT, BankLogger.Operation.WITHDRAW, clan.getBalance() + amount);
|
||||
}
|
||||
case NOT_ENOUGH_BALANCE:
|
||||
player.sendMessage(lang("clan.bank.not.enough.money", player));
|
||||
}
|
||||
case NOT_ENOUGH_BALANCE -> player.sendMessage(lang("clan.bank.not.enough.money", player));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,19 +117,19 @@ public class BankCommand extends BaseCommand {
|
||||
return;
|
||||
}
|
||||
/*
|
||||
* ——————————————————————————————————
|
||||
*/
|
||||
* ——————————————————————————————————
|
||||
*/
|
||||
|
||||
if (!permissions.playerHasMoney(player, amount)) {
|
||||
player.sendMessage(AQUA + lang("not.sufficient.money", player, CurrencyFormat.format(amount)));
|
||||
player.sendMessage(AQUA + lang("not.sufficient.money", player, amount));
|
||||
return;
|
||||
}
|
||||
BankOperator operator = new BankOperator(player, permissions.playerGetMoney(player));
|
||||
EconomyResponse response = clan.deposit(operator, COMMAND, amount);
|
||||
if (response == EconomyResponse.SUCCESS) {
|
||||
if (permissions.chargePlayer(player, amount)) {
|
||||
player.sendMessage(AQUA + lang("player.clan.deposit", player, CurrencyFormat.format(amount)));
|
||||
clan.addBb(player.getName(), lang("bb.clan.deposit", CurrencyFormat.format(amount), player.getName()));
|
||||
player.sendMessage(AQUA + lang("player.clan.deposit", player, amount));
|
||||
clan.addBb(player.getName(), lang("bb.clan.deposit", amount, player.getName()));
|
||||
} else {
|
||||
//Reverts the deposit if something went wrong with Vault
|
||||
clan.setBalance(operator, REVERT, BankLogger.Operation.DEPOSIT, clan.getBalance() - amount);
|
||||
|
||||
@@ -10,7 +10,6 @@ import net.sacredlabyrinth.phaed.simpleclans.conversation.SCConversation;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.events.TagChangeEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.CurrencyFormat;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
@@ -189,12 +188,12 @@ public class ClanCommands extends BaseCommand {
|
||||
double maxFee = settings.getDouble(ECONOMY_MAX_MEMBER_FEE);
|
||||
if (fee > maxFee) {
|
||||
ChatBlock.sendMessage(player, RED
|
||||
+ lang("max.fee.allowed.is.0", player, CurrencyFormat.format(maxFee)));
|
||||
+ lang("max.fee.allowed.is.0", player, maxFee));
|
||||
return;
|
||||
}
|
||||
if (cm.purchaseMemberFeeSet(player)) {
|
||||
clan.setMemberFee(fee);
|
||||
clan.addBb(player.getName(), lang("bb.fee.set", CurrencyFormat.format(fee)));
|
||||
clan.addBb(player.getName(), lang("bb.fee.set", fee));
|
||||
ChatBlock.sendMessage(player, AQUA + lang("fee.set", player));
|
||||
storage.updateClan(clan);
|
||||
}
|
||||
|
||||
+5
-22
@@ -9,8 +9,6 @@ import net.sacredlabyrinth.phaed.simpleclans.conversation.SCConversation;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.hooks.discord.DiscordHook;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.hooks.discord.exceptions.DiscordHookException;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.CurrencyFormat;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@@ -91,8 +89,7 @@ public class LeaderCommands extends BaseCommand {
|
||||
return;
|
||||
}
|
||||
if (settings.is(CLAN_CONFIRMATION_FOR_PROMOTE) && clan.getLeaders().size() > 1) {
|
||||
requestManager.requestAllLeaders(cp, ClanRequest.PROMOTE, otherPl.getName(), "asking.for.the.promotion",
|
||||
player.getName(), otherPl.getName());
|
||||
requestManager.requestAllLeaders(cp, ClanRequest.PROMOTE, otherPl.getName(), "asking.for.the.promotion", otherPl.getName());
|
||||
ChatBlock.sendMessage(player, AQUA + lang("promotion.vote.has.been.requested.from.all.leaders",
|
||||
player));
|
||||
return;
|
||||
@@ -107,8 +104,7 @@ public class LeaderCommands extends BaseCommand {
|
||||
@Description("{@@command.description.disband}")
|
||||
public void disband(Player player, ClanPlayer cp, Clan clan) {
|
||||
if (clan.getLeaders().size() != 1) {
|
||||
requestManager.requestAllLeaders(cp, ClanRequest.DISBAND, clan.getTag(), "asking.to.disband",
|
||||
player.getName());
|
||||
requestManager.requestAllLeaders(cp, ClanRequest.DISBAND, clan.getTag(), "asking.to.disband");
|
||||
ChatBlock.sendMessage(player, AQUA +
|
||||
lang("clan.disband.vote.has.been.requested.from.all.leaders", player));
|
||||
return;
|
||||
@@ -194,27 +190,14 @@ public class LeaderCommands extends BaseCommand {
|
||||
@CommandPermission("simpleclans.leader.rename")
|
||||
@CommandCompletion("@nothing")
|
||||
@Description("{@@command.description.rename}")
|
||||
public void rename(Player player, ClanPlayer cp, Clan clan, @Name("name") String clanName) {
|
||||
public void rename(ClanPlayer cp, Clan clan, @Name("name") String clanName) {
|
||||
if (clanName.contains("&")) {
|
||||
ChatBlock.sendMessageKey(cp, "your.clan.name.cannot.contain.color.codes");
|
||||
return;
|
||||
}
|
||||
boolean bypass = plugin.getPermissionsManager().has(player, "simpleclans.mod.bypass");
|
||||
if (!bypass) {
|
||||
if (ChatUtils.stripColors(clanName).length() > plugin.getSettingsManager().getInt(CLAN_MAX_LENGTH)) {
|
||||
ChatBlock.sendMessage(player, RED + lang("your.clan.name.cannot.be.longer.than.characters",
|
||||
player, plugin.getSettingsManager().getInt(CLAN_MAX_LENGTH)));
|
||||
return;
|
||||
}
|
||||
if (ChatUtils.stripColors(clanName).length() <= plugin.getSettingsManager().getInt(CLAN_MIN_LENGTH)) {
|
||||
ChatBlock.sendMessage(player, RED + lang("your.clan.name.must.be.longer.than.characters",
|
||||
player, plugin.getSettingsManager().getInt(CLAN_MIN_LENGTH)));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (clan.getLeaders().size() != 1) {
|
||||
requestManager.requestAllLeaders(cp, ClanRequest.RENAME, clanName, "asking.to.rename", cp.getName(), clanName);
|
||||
requestManager.requestAllLeaders(cp, ClanRequest.RENAME, "asking.to.rename", clanName);
|
||||
ChatBlock.sendMessageKey(cp, "rename.vote.has.been.requested.from.all.leaders");
|
||||
return;
|
||||
}
|
||||
@@ -239,7 +222,7 @@ public class LeaderCommands extends BaseCommand {
|
||||
double amount = settings.getDouble(ECONOMY_DISCORD_CREATION_PRICE);
|
||||
if (settings.is(ECONOMY_PURCHASE_DISCORD_CREATE)) {
|
||||
if (!permissions.playerHasMoney(player, amount)) {
|
||||
player.sendMessage(AQUA + lang("not.sufficient.money", player, CurrencyFormat.format(amount)));
|
||||
player.sendMessage(AQUA + lang("not.sufficient.money", player, amount));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -6,7 +6,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class LocaleCompletion extends AbstractStaticCompletion {
|
||||
@@ -16,7 +15,8 @@ public class LocaleCompletion extends AbstractStaticCompletion {
|
||||
public LocaleCompletion(@NotNull SimpleClans plugin) {
|
||||
super(plugin);
|
||||
availableLocales = LanguageResource.getAvailableLocales().stream().
|
||||
map(locale -> locale.toLanguageTag().replace("-", "_")).collect(Collectors.toList());
|
||||
map(locale -> locale.toLanguageTag().replace("-", "_")).
|
||||
toList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -56,24 +56,16 @@ public class ClanStats extends Sendable {
|
||||
}
|
||||
|
||||
private void addRows(List<ClanPlayer> clanPlayers) {
|
||||
for (ClanPlayer cp : clanPlayers) {
|
||||
String color;
|
||||
if (cp.isLeader()) {
|
||||
color = sm.getColored(PAGE_LEADER_COLOR);
|
||||
} else if (cp.isTrusted()) {
|
||||
color = sm.getColored(PAGE_TRUSTED_COLOR);
|
||||
} else {
|
||||
color = sm.getColored(PAGE_UNTRUSTED_COLOR);
|
||||
}
|
||||
for (ClanPlayer cpm : clanPlayers) {
|
||||
String name = (cpm.isLeader() ? sm.getColored(PAGE_LEADER_COLOR) : (cpm.isTrusted() ? sm.getColored(PAGE_TRUSTED_COLOR) :
|
||||
sm.getColored(PAGE_UNTRUSTED_COLOR)) + cpm.getName());
|
||||
String rival = NumberFormat.getInstance().format(cpm.getRivalKills());
|
||||
String neutral = NumberFormat.getInstance().format(cpm.getNeutralKills());
|
||||
String civilian = NumberFormat.getInstance().format(cpm.getCivilianKills());
|
||||
String deaths = NumberFormat.getInstance().format(cpm.getDeaths());
|
||||
String kdr = KDRFormat.format(cpm.getKDR());
|
||||
|
||||
NumberFormat formatter = NumberFormat.getInstance(cp.getLocale());
|
||||
String rival = formatter.format(cp.getRivalKills());
|
||||
String neutral = formatter.format(cp.getNeutralKills());
|
||||
String civilian = formatter.format(cp.getCivilianKills());
|
||||
String deaths = formatter.format(cp.getDeaths());
|
||||
String kdr = KDRFormat.format(cp.getKDR());
|
||||
|
||||
chatBlock.addRow(color + cp.getName(), YELLOW + kdr, WHITE + rival, GRAY + neutral, DARK_GRAY + civilian,
|
||||
chatBlock.addRow(" " + name, YELLOW + kdr, WHITE + rival, GRAY + neutral, DARK_GRAY + civilian,
|
||||
DARK_RED + deaths);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-9
@@ -66,21 +66,15 @@ public class GeneralCommands extends BaseCommand {
|
||||
@CommandPermission("simpleclans.anyone.locale")
|
||||
@Description("{@@command.description.locale}")
|
||||
@CommandCompletion("@locales")
|
||||
public void locale(ClanPlayer cp, @Values("@locales") @Name("locale") @Single String locale) {
|
||||
if (!settings.is(LANGUAGE_SELECTOR)) {
|
||||
ChatBlock.sendMessageKey(cp, "locale.is.prohibited");
|
||||
return;
|
||||
}
|
||||
|
||||
public void locale(ClanPlayer cp, @Values("@locales") @Name("locale") String locale) {
|
||||
cp.setLocale(Helper.forLanguageTag(locale.replace("_", "-")));
|
||||
plugin.getStorageManager().updateClanPlayer(cp);
|
||||
|
||||
ChatBlock.sendMessageKey(cp, "locale.has.been.changed");
|
||||
ChatBlock.sendMessage(cp, lang("locale.has.been.changed"));
|
||||
}
|
||||
|
||||
@Subcommand("%create")
|
||||
@CommandPermission("simpleclans.leader.create")
|
||||
@CommandCompletion("%compl:tag %compl:name")
|
||||
@Description("{@@command.description.create}")
|
||||
public void create(Player player, @Optional @Name("tag") String tag, @Optional @Name("name") String name) {
|
||||
ClanPlayer cp = cm.getAnyClanPlayer(player.getUniqueId());
|
||||
@@ -286,7 +280,7 @@ public class GeneralCommands extends BaseCommand {
|
||||
Clan clan = clans.get(i);
|
||||
String name = " " + (clan.isVerified() ? settings.getColored(PAGE_CLAN_NAME_COLOR) : GRAY) + clan.getName();
|
||||
String line = MessageFormat.format(lineFormat, i + 1, leftBracket, clan.getColorTag(),
|
||||
rightBracket, name, clan.getBalanceFormatted());
|
||||
rightBracket, name, clan.getBalance());
|
||||
sender.sendMessage(line);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@ import net.sacredlabyrinth.phaed.simpleclans.events.ClanBalanceUpdateEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.loggers.BankLogger;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.loggers.BankOperator;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.CurrencyFormat;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@@ -32,7 +31,7 @@ public class BankCommand extends BaseCommand {
|
||||
@Description("{@@command.description.bank.admin.status}")
|
||||
public void status(CommandSender sender, @Name("clan") ClanInput clanInput) {
|
||||
Clan clan = clanInput.getClan();
|
||||
ChatBlock.sendMessage(sender, AQUA + lang("clan.admin.balance", sender, clan.getName(), clan.getBalanceFormatted()));
|
||||
ChatBlock.sendMessage(sender, AQUA + lang("clan.admin.balance", sender, clan.getName(), clan.getBalance()));
|
||||
}
|
||||
|
||||
@Subcommand("%take")
|
||||
@@ -47,8 +46,8 @@ public class BankCommand extends BaseCommand {
|
||||
EconomyResponse economyResponse = clan.withdraw(operator, ClanBalanceUpdateEvent.Cause.COMMAND, amount);
|
||||
switch (economyResponse) {
|
||||
case SUCCESS:
|
||||
ChatBlock.sendMessage(sender, AQUA + lang("clan.admin.take", sender, CurrencyFormat.format(amount), clan.getName()));
|
||||
clan.addBb(sender.getName(), lang("bb.clan.take", sender, CurrencyFormat.format(amount), sender.getName()));
|
||||
ChatBlock.sendMessage(sender, AQUA + lang("clan.admin.take", sender, amount, clan.getName()));
|
||||
clan.addBb(sender.getName(), lang("bb.clan.take", sender, amount, sender.getName()));
|
||||
break;
|
||||
case NOT_ENOUGH_BALANCE:
|
||||
sender.sendMessage(RED + lang("clan.admin.bank.not.enough.money", sender, clan.getName()));
|
||||
@@ -67,8 +66,8 @@ public class BankCommand extends BaseCommand {
|
||||
|
||||
EconomyResponse economyResponse = clan.deposit(operator, ClanBalanceUpdateEvent.Cause.COMMAND, amount);
|
||||
if (economyResponse == EconomyResponse.SUCCESS) {
|
||||
ChatBlock.sendMessage(sender, AQUA + lang("clan.admin.give", sender, CurrencyFormat.format(amount), clan.getName()));
|
||||
clan.addBb(sender.getName(), lang("bb.clan.give", sender, CurrencyFormat.format(amount), sender.getName()));
|
||||
ChatBlock.sendMessage(sender, AQUA + lang("clan.admin.give", sender, amount, clan.getName()));
|
||||
clan.addBb(sender.getName(), lang("bb.clan.give", sender, amount, sender.getName()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,8 +82,8 @@ public class BankCommand extends BaseCommand {
|
||||
|
||||
EconomyResponse response = clan.setBalance(operator, ClanBalanceUpdateEvent.Cause.COMMAND, BankLogger.Operation.SET, amount);
|
||||
if (response == EconomyResponse.SUCCESS) {
|
||||
ChatBlock.sendMessage(sender, AQUA + lang("clan.admin.set", sender, clan.getName(), CurrencyFormat.format(amount)));
|
||||
clan.addBb(sender.getName(), lang("bb.clan.set", sender, CurrencyFormat.format(amount), sender.getName()));
|
||||
ChatBlock.sendMessage(sender, AQUA + lang("clan.admin.set", sender, clan.getName(), amount));
|
||||
clan.addBb(sender.getName(), lang("bb.clan.set", sender, amount, sender.getName()));
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-4
@@ -7,7 +7,6 @@ import net.sacredlabyrinth.phaed.simpleclans.commands.ClanInput;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.commands.ClanPlayerInput;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.events.PlayerHomeSetEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.events.PlayerResetKdrEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.events.ReloadEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.events.TagChangeEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.language.LanguageResource;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager;
|
||||
@@ -16,6 +15,7 @@ import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.StorageManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.InventoryController;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.TagValidator;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
@@ -123,8 +123,6 @@ public class StaffCommands extends BaseCommand {
|
||||
for (Clan clan : cm.getClans()) {
|
||||
permissions.updateClanPermissions(clan);
|
||||
}
|
||||
Bukkit.getPluginManager().callEvent(new ReloadEvent(sender));
|
||||
|
||||
ChatBlock.sendMessage(sender, AQUA + lang("configuration.reloaded", sender));
|
||||
}
|
||||
|
||||
@@ -381,7 +379,7 @@ public class StaffCommands extends BaseCommand {
|
||||
@CommandPermission("simpleclans.mod.locale")
|
||||
@Description("{@@command.description.mod.locale}")
|
||||
@CommandCompletion("@locales")
|
||||
public void locale(CommandSender sender, @Name("player") ClanPlayerInput input, @Values("@locales") @Name("locale") @Single String locale) {
|
||||
public void locale(CommandSender sender, @Name("player") ClanPlayerInput input, @Values("@locales") @Name("locale") String locale) {
|
||||
ClanPlayer cp = input.getClanPlayer();
|
||||
cp.setLocale(Helper.forLanguageTag(locale.replace("_", "-")));
|
||||
plugin.getStorageManager().updateClanPlayer(cp);
|
||||
|
||||
+6
-12
@@ -4,7 +4,6 @@ import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.Clan;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.events.PreCreateClanEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
@@ -17,7 +16,6 @@ import org.jetbrains.annotations.Nullable;
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.conversation.CreateClanTagPrompt.TAG_KEY;
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.*;
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.CLAN_DEFAULT_RANK;
|
||||
import static org.bukkit.ChatColor.AQUA;
|
||||
import static org.bukkit.ChatColor.RED;
|
||||
|
||||
@@ -70,18 +68,14 @@ public class CreateClanNamePrompt extends StringPrompt {
|
||||
Clan clan = plugin.getClanManager().getClan(tag);
|
||||
clan.addBb(player.getName(), lang("clan.created", name));
|
||||
plugin.getStorageManager().updateClan(clan);
|
||||
if (!plugin.getSettingsManager().getString(CLAN_DEFAULT_RANK).isEmpty()) {
|
||||
clan.setDefaultRank(plugin.getSettingsManager().getString(CLAN_DEFAULT_RANK));
|
||||
|
||||
if (plugin.getSettingsManager().is(REQUIRE_VERIFICATION)) {
|
||||
boolean verified = !plugin.getSettingsManager().is(REQUIRE_VERIFICATION)
|
||||
|| plugin.getPermissionsManager().has(player, "simpleclans.mod.verify");
|
||||
|
||||
if (plugin.getSettingsManager().is(REQUIRE_VERIFICATION)) {
|
||||
boolean verified = !plugin.getSettingsManager().is(REQUIRE_VERIFICATION)
|
||||
|| plugin.getPermissionsManager().has(player, "simpleclans.mod.verify");
|
||||
|
||||
if (!verified) {
|
||||
ChatBlock.sendMessage(player, AQUA +
|
||||
lang("get.your.clan.verified.to.access.advanced.features", player));
|
||||
}
|
||||
if (!verified) {
|
||||
ChatBlock.sendMessage(player, AQUA +
|
||||
lang("get.your.clan.verified.to.access.advanced.features", player));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-32
@@ -1,32 +0,0 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.events;
|
||||
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCFrame;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class PostComponentsCreationEvent extends Event {
|
||||
|
||||
private static final HandlerList HANDLER_LIST = new HandlerList();
|
||||
|
||||
private final @NotNull SCFrame frame;
|
||||
|
||||
public PostComponentsCreationEvent(@NotNull SCFrame frame) {
|
||||
this.frame = frame;
|
||||
}
|
||||
|
||||
public SCFrame getFrame() {
|
||||
return frame;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
|
||||
public static @NotNull HandlerList getHandlerList() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.events;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ReloadEvent extends Event {
|
||||
|
||||
private static final HandlerList HANDLER_LIST = new HandlerList();
|
||||
|
||||
private final CommandSender sender;
|
||||
|
||||
public ReloadEvent(CommandSender sender) {
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
public static @NotNull HandlerList getHandlerList() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull HandlerList getHandlers() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
|
||||
public CommandSender getSender() {
|
||||
return sender;
|
||||
}
|
||||
}
|
||||
+28
-32
@@ -75,8 +75,10 @@ public class DiscordHook implements Listener {
|
||||
private final ChatManager chatManager;
|
||||
private final ClanManager clanManager;
|
||||
private final AccountLinkManager accountManager = DiscordSRV.getPlugin().getAccountLinkManager();
|
||||
private final Guild guild = DiscordSRV.getPlugin().getMainGuild();
|
||||
private final List<String> textCategories;
|
||||
private final List<String> clanTags;
|
||||
private final Role leaderRole;
|
||||
private final List<String> whitelist;
|
||||
|
||||
public DiscordHook(SimpleClans plugin) {
|
||||
@@ -91,6 +93,8 @@ public class DiscordHook implements Listener {
|
||||
|
||||
clanTags = clanManager.getClans().stream().map(Clan::getTag).collect(Collectors.toList());
|
||||
|
||||
leaderRole = getLeaderRole();
|
||||
|
||||
setupDiscord();
|
||||
}
|
||||
|
||||
@@ -223,7 +227,7 @@ public class DiscordHook implements Listener {
|
||||
@Subscribe
|
||||
public void onPlayerLinking(AccountLinkedEvent event) {
|
||||
ClanPlayer clanPlayer = clanManager.getClanPlayer(event.getPlayer());
|
||||
Member member = getGuild().getMember(event.getUser());
|
||||
Member member = guild.getMember(event.getUser());
|
||||
if (clanPlayer == null || member == null) {
|
||||
return;
|
||||
}
|
||||
@@ -244,7 +248,7 @@ public class DiscordHook implements Listener {
|
||||
@Subscribe
|
||||
public void onPlayerUnlinking(AccountUnlinkedEvent event) {
|
||||
ClanPlayer clanPlayer = clanManager.getClanPlayer(event.getPlayer());
|
||||
Member member = getGuild().getMember(event.getDiscordUser());
|
||||
Member member = guild.getMember(event.getDiscordUser());
|
||||
if (clanPlayer == null || clanPlayer.getClan() == null || member == null) {
|
||||
return;
|
||||
}
|
||||
@@ -254,23 +258,17 @@ public class DiscordHook implements Listener {
|
||||
}
|
||||
|
||||
protected void setupDiscord() {
|
||||
Map<String, TextChannel> discordTagChannels = getChannels().stream().
|
||||
Map<String, TextChannel> discordTagChannels = getCachedChannels().stream().
|
||||
collect(Collectors.toMap(TextChannel::getName, textChannel -> textChannel));
|
||||
SimpleClans.debug("DiscordTagChannels before clearing: " + String.join(",", discordTagChannels.keySet()));
|
||||
|
||||
clearChannels(discordTagChannels);
|
||||
SimpleClans.debug("DiscordTagChannels after clearing: " + String.join(",", discordTagChannels.keySet()));
|
||||
|
||||
resetPermissions(discordTagChannels);
|
||||
|
||||
SimpleClans.debug("ClanTags before creating: " + String.join(",", clanTags));
|
||||
createChannels(discordTagChannels);
|
||||
SimpleClans.debug("ClanTags after creating: " + String.join(",", clanTags));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Guild getGuild() {
|
||||
return DiscordSRV.getPlugin().getMainGuild();
|
||||
return guild;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -278,10 +276,10 @@ public class DiscordHook implements Listener {
|
||||
*/
|
||||
@NotNull
|
||||
public Role getLeaderRole() {
|
||||
Role role = getGuild().getRoleById(settingsManager.getString(DISCORDCHAT_LEADER_ID));
|
||||
Role role = guild.getRoleById(settingsManager.getString(DISCORDCHAT_LEADER_ID));
|
||||
|
||||
if (role == null || !role.getName().equals(settingsManager.getString(DISCORDCHAT_LEADER_ROLE))) {
|
||||
role = getGuild().createRole().
|
||||
role = guild.createRole().
|
||||
setName(settingsManager.getString(DISCORDCHAT_LEADER_ROLE)).
|
||||
setColor(getLeaderColor()).
|
||||
setMentionable(true).
|
||||
@@ -320,19 +318,19 @@ public class DiscordHook implements Listener {
|
||||
*/
|
||||
@Nullable
|
||||
public Category createCategory() {
|
||||
if (getGuild().getChannels().size() >= MAX_CHANNELS_PER_GUILD) {
|
||||
if (guild.getChannels().size() >= MAX_CHANNELS_PER_GUILD) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String categoryName = settingsManager.getString(DISCORDCHAT_TEXT_CATEGORY_FORMAT);
|
||||
Category category = null;
|
||||
try {
|
||||
category = getGuild().createCategory(categoryName).
|
||||
category = guild.createCategory(categoryName).
|
||||
addRolePermissionOverride(
|
||||
getGuild().getPublicRole().getIdLong(),
|
||||
guild.getPublicRole().getIdLong(),
|
||||
Collections.emptyList(),
|
||||
Collections.singletonList(VIEW_CHANNEL)).
|
||||
addMemberPermissionOverride(getGuild().getSelfMember().getIdLong(),
|
||||
addMemberPermissionOverride(guild.getSelfMember().getIdLong(),
|
||||
Arrays.asList(VIEW_CHANNEL, MANAGE_CHANNEL),
|
||||
Collections.emptyList()).
|
||||
submit().get();
|
||||
@@ -380,14 +378,12 @@ public class DiscordHook implements Listener {
|
||||
|
||||
try {
|
||||
availableCategory.createTextChannel(clanTag).complete();
|
||||
SimpleClans.debug(String.format("[%s] Creating a discord text channel for %s clan", Thread.currentThread().getId(), clanTag));
|
||||
} catch (ErrorResponseException ex) {
|
||||
Response response = ex.getResponse();
|
||||
plugin.getLogger().warning(String.format("Could not create a channel for clan %s, error %d - %s",
|
||||
clanTag, response.code, response.message));
|
||||
return;
|
||||
}
|
||||
|
||||
for (Map.Entry<ClanPlayer, Member> entry : discordClanPlayers.entrySet()) {
|
||||
// The map is formed from clan#getMembers (so the clan exists)
|
||||
//noinspection ConstantConditions
|
||||
@@ -415,7 +411,7 @@ public class DiscordHook implements Listener {
|
||||
* @see #channelExists(String)
|
||||
*/
|
||||
public boolean categoryExists(String categoryId) {
|
||||
return getGuild().getCategoryById(categoryId) != null;
|
||||
return guild.getCategoryById(categoryId) != null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -451,7 +447,7 @@ public class DiscordHook implements Listener {
|
||||
|
||||
if (channelExists(channelName)) {
|
||||
for (Category category : getCachedCategories()) {
|
||||
if (!category.getTextChannels().isEmpty()) {
|
||||
if (category.getTextChannels().size() > 0) {
|
||||
for (TextChannel textChannel : category.getTextChannels()) {
|
||||
if (textChannel.getName().equals(channelName)) {
|
||||
textChannel.delete().complete();
|
||||
@@ -460,7 +456,7 @@ public class DiscordHook implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
if (category.getTextChannels().isEmpty()) {
|
||||
if (category.getTextChannels().size() == 0) {
|
||||
textCategories.remove(category.getId());
|
||||
settingsManager.set(DISCORDCHAT_TEXT_CATEGORY_IDS, textCategories);
|
||||
settingsManager.save();
|
||||
@@ -481,7 +477,7 @@ public class DiscordHook implements Listener {
|
||||
public List<Category> getCachedCategories() {
|
||||
return textCategories.stream().
|
||||
filter(this::categoryExists).
|
||||
map(getGuild()::getCategoryById).
|
||||
map(guild::getCategoryById).
|
||||
collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@@ -491,7 +487,7 @@ public class DiscordHook implements Listener {
|
||||
* @return categories from guild
|
||||
*/
|
||||
public List<Category> getCategories() {
|
||||
return getGuild().getCategoriesByName(settingsManager.getString(DISCORDCHAT_TEXT_CATEGORY_FORMAT), false);
|
||||
return guild.getCategoriesByName(settingsManager.getString(DISCORDCHAT_TEXT_CATEGORY_FORMAT), false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -596,7 +592,7 @@ public class DiscordHook implements Listener {
|
||||
}
|
||||
|
||||
Map<ClanPlayer, Member> discordClanPlayers = getDiscordPlayers(clan);
|
||||
if (discordClanPlayers.isEmpty()) {
|
||||
if (discordClanPlayers.size() == 0) {
|
||||
throw new InvalidChannelException(String.format("Clan %s doesn't have any linked players", clanTag),
|
||||
"your.clan.doesnt.have.any.linked.player");
|
||||
}
|
||||
@@ -630,12 +626,14 @@ public class DiscordHook implements Listener {
|
||||
}
|
||||
|
||||
private void updateLeaderRole(@NotNull Member member, @NotNull ClanPlayer clanPlayer, DiscordAction action) {
|
||||
if (action == ADD && clanPlayer.isLeader()) {
|
||||
getGuild().addRoleToMember(member, getLeaderRole()).queue();
|
||||
SimpleClans.debug(String.format("Added leader role to %s (%s) discord member", member.getNickname(), member.getId()));
|
||||
if (!clanPlayer.isLeader()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (action == ADD) {
|
||||
guild.addRoleToMember(member, leaderRole).queue();
|
||||
} else {
|
||||
getGuild().removeRoleFromMember(member, getLeaderRole()).queue();
|
||||
SimpleClans.debug(String.format("Revoked leader role from %s (%s) discord member", member.getNickname(), member.getId()));
|
||||
guild.removeRoleFromMember(member, leaderRole).queue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -647,16 +645,14 @@ public class DiscordHook implements Listener {
|
||||
if (action == ADD) {
|
||||
channel.upsertPermissionOverride(member).
|
||||
setPermissions(Collections.singletonList(VIEW_CHANNEL), Collections.emptyList()).queue();
|
||||
SimpleClans.debug(String.format("Added view permission to %s (%s) discord member", member.getNickname(), member.getId()));
|
||||
} else {
|
||||
channel.getManager().removePermissionOverride(member).queue();
|
||||
SimpleClans.debug(String.format("Revoked view permission from %s (%s) discord member", member.getNickname(), member.getId()));
|
||||
}
|
||||
}
|
||||
|
||||
private void updateViewPermission(@NotNull Member member, @NotNull Clan clan, DiscordAction action) {
|
||||
String tag = clan.getTag();
|
||||
Optional<TextChannel> channel = getChannel(tag);
|
||||
Optional<TextChannel> channel = getCachedChannel(tag).map(Optional::of).orElse(getChannel(tag));
|
||||
if (channel.isPresent()) {
|
||||
TextChannel textChannel = channel.get();
|
||||
updateViewPermission(member, textChannel, action);
|
||||
|
||||
+2
-5
@@ -118,12 +118,9 @@ public class SimpleClansExpansion extends PlaceholderExpansion implements Relati
|
||||
public String onRequest(@Nullable OfflinePlayer player, @NotNull String params) {
|
||||
ClanPlayer cp = null;
|
||||
if (player != null) {
|
||||
cp = clanManager.getAnyClanPlayer(player.getUniqueId());
|
||||
cp = clanManager.getCreateClanPlayer(player.getUniqueId());
|
||||
}
|
||||
if (cp == null) {
|
||||
return "";
|
||||
}
|
||||
Clan clan = cp.getClan();
|
||||
Clan clan = cp != null ? cp.getClan() : null;
|
||||
Matcher matcher = TOP_CLANS_PATTERN.matcher(params);
|
||||
if (matcher.find()) {
|
||||
int position = Integer.parseInt(matcher.group("position"));
|
||||
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.hooks.protection.providers;
|
||||
|
||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||
import com.sk89q.worldedit.math.BlockVector2;
|
||||
import com.sk89q.worldguard.WorldGuard;
|
||||
import com.sk89q.worldguard.protection.ApplicableRegionSet;
|
||||
import com.sk89q.worldguard.protection.managers.RegionManager;
|
||||
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
|
||||
import com.sk89q.worldguard.protection.regions.RegionContainer;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.Coordinate;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.Land;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.ProtectionProvider;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@SuppressWarnings({"unused"})
|
||||
public class WorldGuardProvider implements ProtectionProvider {
|
||||
|
||||
private RegionContainer regionContainer;
|
||||
|
||||
@Override
|
||||
public void setup() {
|
||||
regionContainer = WorldGuard.getInstance().getPlatform().getRegionContainer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Set<Land> getLandsAt(@NotNull Location location) {
|
||||
RegionManager regionManager = getRegionManager(location.getWorld());
|
||||
if (regionManager == null) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
ApplicableRegionSet regions = regionManager.getApplicableRegions(BukkitAdapter.asBlockVector(location));
|
||||
Set<Land> lands = new HashSet<>();
|
||||
for (ProtectedRegion region : regions) {
|
||||
lands.add(getLand(region));
|
||||
}
|
||||
return lands;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private Land getLand(ProtectedRegion region) {
|
||||
//noinspection DuplicatedCode
|
||||
List<Coordinate> coordinates = new ArrayList<>();
|
||||
for (BlockVector2 point : region.getPoints()) {
|
||||
coordinates.add(new Coordinate(point.getX(), point.getZ()));
|
||||
}
|
||||
return new Land(getIdPrefix() + region.getId(), region.getOwners().getUniqueIds(), coordinates);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Set<Land> getLandsOf(@NotNull OfflinePlayer player, @NotNull World world) {
|
||||
HashSet<Land> lands = new HashSet<>();
|
||||
RegionManager regionManager = getRegionManager(world);
|
||||
if (regionManager != null) {
|
||||
for (ProtectedRegion region : regionManager.getRegions().values()) {
|
||||
if (region.getOwners().contains(player.getUniqueId())) {
|
||||
lands.add(getLand(region));
|
||||
}
|
||||
}
|
||||
}
|
||||
return lands;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getIdPrefix() {
|
||||
return "wg";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteLand(@NotNull String id, @NotNull World world) {
|
||||
id = id.replaceFirst(getIdPrefix(), "");
|
||||
RegionManager regionManager = getRegionManager(world);
|
||||
if (regionManager != null) {
|
||||
regionManager.removeRegion(id);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable Class<? extends Event> getCreateLandEvent() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable Player getPlayer(Event event) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private RegionManager getRegionManager(@Nullable World world) {
|
||||
if (world == null) {
|
||||
return null;
|
||||
}
|
||||
return regionContainer.get(BukkitAdapter.adapt(world));
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable String getRequiredPluginName() {
|
||||
return "WorldGuard";
|
||||
}
|
||||
}
|
||||
@@ -18,30 +18,22 @@ public final class Events {
|
||||
@Nullable
|
||||
@Contract("null -> null")
|
||||
public static Player getAttacker(@Nullable EntityDamageEvent parentEvent) {
|
||||
if (parentEvent instanceof EntityDamageByEntityEvent) {
|
||||
EntityDamageByEntityEvent sub = (EntityDamageByEntityEvent) parentEvent;
|
||||
if (parentEvent instanceof EntityDamageByEntityEvent sub) {
|
||||
Entity damager = sub.getDamager();
|
||||
|
||||
if (damager instanceof Player) {
|
||||
return (Player) damager;
|
||||
if (damager instanceof Player attacker) {
|
||||
return attacker;
|
||||
}
|
||||
|
||||
if (damager instanceof Projectile) {
|
||||
Projectile projectile = (Projectile) damager;
|
||||
if (projectile.getShooter() instanceof Player) {
|
||||
return (Player) projectile.getShooter();
|
||||
}
|
||||
if (damager instanceof Projectile projectile && projectile.getShooter() instanceof Player attacker) {
|
||||
return attacker;
|
||||
}
|
||||
|
||||
if (damager instanceof TNTPrimed) {
|
||||
Entity source = ((TNTPrimed) damager).getSource();
|
||||
if (source instanceof Player) {
|
||||
return (Player) source;
|
||||
}
|
||||
|
||||
if (damager instanceof TNTPrimed tnt && tnt.getSource() instanceof Player attacker) {
|
||||
return attacker;
|
||||
}
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -167,7 +167,7 @@ public class PlayerDeath extends SCListener {
|
||||
ClanPlayer killer = kill.getKiller();
|
||||
ClanPlayer victim = kill.getVictim();
|
||||
killer.addKill(type);
|
||||
plugin.getStorageManager().insertKill(killer, victim, type.getShortname(), kill.getTime());
|
||||
plugin.getStorageManager().insertKill(killer, victim, type.getShortname());
|
||||
}
|
||||
|
||||
private double calculateReward(@NotNull ClanPlayer attacker, @NotNull ClanPlayer victim) {
|
||||
|
||||
@@ -83,12 +83,15 @@ public class SCPlayerListener extends SCListener {
|
||||
if (isBlacklistedWorld(player)) {
|
||||
return;
|
||||
}
|
||||
ClanPlayer cp = plugin.getClanManager().getCreateClanPlayer(player.getUniqueId());
|
||||
ClanPlayer cp = plugin.getClanManager().getAnyClanPlayer(player.getUniqueId());
|
||||
|
||||
updatePlayerName(player);
|
||||
plugin.getClanManager().updateLastSeen(player);
|
||||
plugin.getClanManager().updateDisplayName(player);
|
||||
|
||||
if (cp == null) {
|
||||
return;
|
||||
}
|
||||
plugin.getPermissionsManager().addPlayerPermissions(cp);
|
||||
|
||||
if (settingsManager.is(BB_SHOW_ON_LOGIN) && cp.isBbEnabled() && cp.getClan() != null) {
|
||||
|
||||
@@ -130,11 +130,10 @@ public final class ChatManager {
|
||||
.replace("%nick-color%",
|
||||
(sender.isLeader() ? leaderColor : sender.isTrusted() ? trustedColor : memberColor))
|
||||
.replace("%player%", sender.getName())
|
||||
.replace("%rank%", rankFormat);
|
||||
parsedFormat = parseWithPapi(message.getSender(), parsedFormat)
|
||||
.replace("%rank%", rankFormat)
|
||||
.replace("%message%", message.getContent());
|
||||
|
||||
return parsedFormat;
|
||||
return parseWithPapi(message.getSender(), parsedFormat);
|
||||
}
|
||||
|
||||
public boolean isDiscordHookEnabled() {
|
||||
|
||||
@@ -8,7 +8,6 @@ import net.sacredlabyrinth.phaed.simpleclans.events.CreateClanEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.events.EconomyTransactionEvent.Cause;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.loggers.BankOperator;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.CurrencyFormat;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.VanishUtils;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -79,7 +78,7 @@ public final class ClanManager {
|
||||
continue;
|
||||
}
|
||||
|
||||
// cleaning
|
||||
//cleaning
|
||||
final int delay = plugin.getSettingsManager().getInt(KDR_DELAY_BETWEEN_KILLS);
|
||||
long timePassed = oldKill.getTime().until(LocalDateTime.now(), ChronoUnit.MINUTES);
|
||||
if (timePassed >= delay) {
|
||||
@@ -150,7 +149,7 @@ public final class ClanManager {
|
||||
importClan(clan);
|
||||
plugin.getStorageManager().updateClanPlayer(cp);
|
||||
|
||||
plugin.getRequestManager().deny(cp); // denies any previous invitation
|
||||
plugin.getRequestManager().deny(cp); //denies any previous invitation
|
||||
SimpleClans.getInstance().getPermissionsManager().updateClanPermissions(clan);
|
||||
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new CreateClanEvent(clan));
|
||||
}
|
||||
@@ -330,20 +329,20 @@ public final class ClanManager {
|
||||
return clanPlayers.get(uuid);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Nullable
|
||||
public ClanPlayer getAnyClanPlayer(String playerName) {
|
||||
for (ClanPlayer cp : getAllClanPlayers()) {
|
||||
if (cp.getName().equalsIgnoreCase(playerName)) {
|
||||
if (cp.getName().equals(playerName)) {
|
||||
return cp;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return getAnyClanPlayer(Bukkit.getOfflinePlayer(playerName).getUniqueId());
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the ClanPlayer object for the player, creates one if not found
|
||||
*/
|
||||
@Deprecated
|
||||
public @Nullable ClanPlayer getCreateClanPlayerUUID(String playerName) {
|
||||
UUID playerUniqueId = UUIDMigration.getForcedPlayerUUID(playerName);
|
||||
if (playerUniqueId != null) {
|
||||
@@ -418,10 +417,8 @@ public final class ClanManager {
|
||||
|
||||
if (plugin.getSettingsManager().is(DISPLAY_CHAT_TAGS)) {
|
||||
String prefix = plugin.getPermissionsManager().getPrefix(player);
|
||||
// String suffix = plugin.getPermissionsManager().getSuffix(player);
|
||||
String lastColor = plugin.getSettingsManager().is(COLOR_CODE_FROM_PREFIX_FOR_NAME)
|
||||
? ChatUtils.getLastColorCode(prefix)
|
||||
: ChatColor.WHITE + "";
|
||||
//String suffix = plugin.getPermissionsManager().getSuffix(player);
|
||||
String lastColor = plugin.getSettingsManager().is(COLOR_CODE_FROM_PREFIX_FOR_NAME) ? ChatUtils.getLastColorCode(prefix) : ChatColor.WHITE + "";
|
||||
String fullName = player.getName();
|
||||
|
||||
ClanPlayer cp = plugin.getClanManager().getAnyClanPlayer(player.getUniqueId());
|
||||
@@ -602,7 +599,7 @@ public final class ClanManager {
|
||||
}
|
||||
}
|
||||
|
||||
if (out.isEmpty()) {
|
||||
if (out.length() == 0) {
|
||||
out = lang("none", player);
|
||||
}
|
||||
|
||||
@@ -673,7 +670,7 @@ public final class ClanManager {
|
||||
out += ChatColor.WHITE + lang("weapon.A", player) + headColor + count;
|
||||
}
|
||||
|
||||
if (out.isEmpty()) {
|
||||
if (out.length() == 0) {
|
||||
out = lang("none", player);
|
||||
}
|
||||
|
||||
@@ -935,9 +932,9 @@ public final class ClanManager {
|
||||
if (plugin.getPermissionsManager().hasEconomy()) {
|
||||
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
|
||||
plugin.getPermissionsManager().chargePlayer(player, price, Cause.MEMBER_FEE_SET);
|
||||
player.sendMessage(RED + MessageFormat.format(lang("account.has.been.debited", player), CurrencyFormat.format(price)));
|
||||
player.sendMessage(RED + MessageFormat.format(lang("account.has.been.debited", player), price));
|
||||
} else {
|
||||
player.sendMessage(RED + lang("not.sufficient.money", player, CurrencyFormat.format(price)));
|
||||
player.sendMessage(RED + lang("not.sufficient.money", player, price));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -958,9 +955,9 @@ public final class ClanManager {
|
||||
if (plugin.getPermissionsManager().hasEconomy()) {
|
||||
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
|
||||
plugin.getPermissionsManager().chargePlayer(player, price, Cause.CLAN_CREATION);
|
||||
player.sendMessage(RED + MessageFormat.format(lang("account.has.been.debited", player), CurrencyFormat.format(price)));
|
||||
player.sendMessage(RED + MessageFormat.format(lang("account.has.been.debited", player), price));
|
||||
} else {
|
||||
player.sendMessage(RED + lang("not.sufficient.money", player, CurrencyFormat.format(price)));
|
||||
player.sendMessage(RED + lang("not.sufficient.money", player, price));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -981,9 +978,9 @@ public final class ClanManager {
|
||||
if (plugin.getPermissionsManager().hasEconomy()) {
|
||||
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
|
||||
plugin.getPermissionsManager().chargePlayer(player, price, Cause.CLAN_INVITATION);
|
||||
player.sendMessage(RED + MessageFormat.format(lang("account.has.been.debited", player), CurrencyFormat.format(price)));
|
||||
player.sendMessage(RED + MessageFormat.format(lang("account.has.been.debited", player), price));
|
||||
} else {
|
||||
player.sendMessage(RED + lang("not.sufficient.money", player, CurrencyFormat.format(price)));
|
||||
player.sendMessage(RED + lang("not.sufficient.money", player, price));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1004,9 +1001,9 @@ public final class ClanManager {
|
||||
if (plugin.getPermissionsManager().hasEconomy()) {
|
||||
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
|
||||
plugin.getPermissionsManager().chargePlayer(player, price, Cause.CLAN_HOME_TELEPORT);
|
||||
player.sendMessage(RED + MessageFormat.format(lang("account.has.been.debited", player), CurrencyFormat.format(price)));
|
||||
player.sendMessage(RED + MessageFormat.format(lang("account.has.been.debited", player), price));
|
||||
} else {
|
||||
player.sendMessage(RED + lang("not.sufficient.money", player, CurrencyFormat.format(price)));
|
||||
player.sendMessage(RED + lang("not.sufficient.money", player, price));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1027,9 +1024,9 @@ public final class ClanManager {
|
||||
if (plugin.getPermissionsManager().hasEconomy()) {
|
||||
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
|
||||
plugin.getPermissionsManager().chargePlayer(player, price, Cause.CLAN_HOME_TELEPORT_SET);
|
||||
player.sendMessage(RED + MessageFormat.format(lang("account.has.been.debited", player), CurrencyFormat.format(price)));
|
||||
player.sendMessage(RED + MessageFormat.format(lang("account.has.been.debited", player), price));
|
||||
} else {
|
||||
player.sendMessage(RED + lang("not.sufficient.money", player, CurrencyFormat.format(price)));
|
||||
player.sendMessage(RED + lang("not.sufficient.money", player, price));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1050,9 +1047,9 @@ public final class ClanManager {
|
||||
if (plugin.getPermissionsManager().hasEconomy()) {
|
||||
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
|
||||
plugin.getPermissionsManager().chargePlayer(player, price, Cause.RESET_KDR);
|
||||
player.spigot().sendMessage(new TextComponent(RED + MessageFormat.format(lang("account.has.been.debited", player), CurrencyFormat.format(price))));
|
||||
player.spigot().sendMessage(new TextComponent(RED + MessageFormat.format(lang("account.has.been.debited", player), price)));
|
||||
} else {
|
||||
player.spigot().sendMessage(new TextComponent(RED + MessageFormat.format(lang("not.sufficient.money", player), CurrencyFormat.format(price))));
|
||||
player.spigot().sendMessage(new TextComponent(RED + MessageFormat.format(lang("not.sufficient.money", player), price)));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1082,22 +1079,22 @@ public final class ClanManager {
|
||||
if (plugin.getSettingsManager().is(ECONOMY_ISSUER_PAYS_REGROUP) && plugin.getPermissionsManager().hasEconomy()) {
|
||||
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
|
||||
plugin.getPermissionsManager().chargePlayer(player, price, Cause.CLAN_REGROUP);
|
||||
player.sendMessage(RED + MessageFormat.format(lang("account.has.been.debited", player), CurrencyFormat.format(price)));
|
||||
player.sendMessage(RED + MessageFormat.format(lang("account.has.been.debited", player), price));
|
||||
} else {
|
||||
player.sendMessage(RED + lang("not.sufficient.money", player, CurrencyFormat.format(price)));
|
||||
player.sendMessage(RED + lang("not.sufficient.money", player, price));
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
double money = plugin.getPermissionsManager().playerGetMoney(player);
|
||||
switch (clan.withdraw(new BankOperator(player, money), ClanBalanceUpdateEvent.Cause.COMMAND, price)) {
|
||||
case SUCCESS:
|
||||
case SUCCESS -> {
|
||||
if (plugin.getPermissionsManager().grantPlayer(player, price)) {
|
||||
player.sendMessage(AQUA + lang("player.clan.withdraw", player, CurrencyFormat.format(price)));
|
||||
clan.addBb(player.getName(), lang("bb.clan.withdraw", CurrencyFormat.format(price)));
|
||||
player.sendMessage(AQUA + lang("player.clan.withdraw", player, price));
|
||||
clan.addBb(player.getName(), lang("bb.clan.withdraw", price));
|
||||
return true;
|
||||
}
|
||||
case NOT_ENOUGH_BALANCE:
|
||||
player.sendMessage(lang("clan.bank.not.enough.money", player));
|
||||
}
|
||||
case NOT_ENOUGH_BALANCE -> player.sendMessage(lang("clan.bank.not.enough.money", player));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1117,9 +1114,9 @@ public final class ClanManager {
|
||||
if (plugin.getPermissionsManager().hasEconomy()) {
|
||||
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
|
||||
plugin.getPermissionsManager().chargePlayer(player, price, Cause.CLAN_VERIFICATION);
|
||||
player.sendMessage(RED + MessageFormat.format(lang("account.has.been.debited", player), CurrencyFormat.format(price)));
|
||||
player.sendMessage(RED + MessageFormat.format(lang("account.has.been.debited", player), price));
|
||||
} else {
|
||||
player.sendMessage(RED + lang("not.sufficient.money", player, CurrencyFormat.format(price)));
|
||||
player.sendMessage(RED + lang("not.sufficient.money", player, price));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
+15
-22
@@ -167,16 +167,13 @@ public final class PermissionsManager {
|
||||
return permissions.get(clan.getTag());
|
||||
}
|
||||
|
||||
public String format(double value) {
|
||||
return Objects.requireNonNull(economy, "Can't find economy provider").format(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Charge a player some money
|
||||
*
|
||||
* @deprecated use {@link PermissionsManager#chargePlayer(OfflinePlayer, double)} instead
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since = "2.19.0", forRemoval = true)
|
||||
public boolean playerChargeMoney(OfflinePlayer player, double money) {
|
||||
return chargePlayer(player, money);
|
||||
}
|
||||
@@ -238,7 +235,7 @@ public final class PermissionsManager {
|
||||
*
|
||||
* @deprecated use {@link PermissionsManager#grantPlayer(OfflinePlayer, double)} instead
|
||||
*/
|
||||
@Deprecated
|
||||
@Deprecated(since = "2.19.0", forRemoval = true)
|
||||
public boolean playerGrantMoney(OfflinePlayer player, double money) {
|
||||
return grantPlayer(player, money);
|
||||
}
|
||||
@@ -270,10 +267,8 @@ public final class PermissionsManager {
|
||||
*/
|
||||
public boolean grantPlayer(@NotNull OfflinePlayer player, double money, @Nullable Cause cause) {
|
||||
EconomyResponse response = Objects.requireNonNull(economy, "Can't find economy provider").depositPlayer(player, money);
|
||||
if (!response.transactionSuccess()) {
|
||||
if (!response.transactionSuccess() || cause == null) {
|
||||
return false;
|
||||
} else if (cause == null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
EconomyTransactionEvent event = new EconomyTransactionEvent(player, response.amount, cause, EconomyTransactionEvent.TransactionType.DEPOSIT);
|
||||
@@ -361,7 +356,13 @@ public final class PermissionsManager {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean hasLevel = hasLevel(clanPlayer, level);
|
||||
boolean hasLevel = false;
|
||||
if (level != null) {
|
||||
hasLevel = switch (level) {
|
||||
case LEADER -> clanPlayer.isLeader();
|
||||
case TRUSTED -> clanPlayer.isTrusted();
|
||||
};
|
||||
}
|
||||
|
||||
boolean hasRankPermission = false;
|
||||
String rankName = clanPlayer.getRankId();
|
||||
@@ -410,7 +411,11 @@ public final class PermissionsManager {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean hasLevel = hasLevel(clanPlayer, permission.getPermissionLevel());
|
||||
boolean hasLevel = switch (permission.getPermissionLevel()) {
|
||||
case LEADER -> clanPlayer.isLeader();
|
||||
case TRUSTED -> clanPlayer.isTrusted();
|
||||
};
|
||||
|
||||
boolean hasRankPermission = false;
|
||||
String rankName = clanPlayer.getRankId();
|
||||
Clan clan = clanPlayer.getClan();
|
||||
@@ -431,18 +436,6 @@ public final class PermissionsManager {
|
||||
return hasLevel || hasRankPermission;
|
||||
}
|
||||
|
||||
private boolean hasLevel(@NotNull ClanPlayer cp, @Nullable PermissionLevel level) {
|
||||
if (level != null) {
|
||||
switch (level) {
|
||||
case LEADER:
|
||||
return cp.isLeader();
|
||||
case TRUSTED:
|
||||
return cp.isTrusted();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gives the player permissions linked to a clan
|
||||
*/
|
||||
|
||||
@@ -5,6 +5,7 @@ import net.sacredlabyrinth.phaed.simpleclans.events.RequestEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.events.RequestFinishedEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.events.WarEndEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
@@ -15,7 +16,8 @@ import java.text.MessageFormat;
|
||||
import java.util.*;
|
||||
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.*;
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.CLAN_MAX_MEMBERS;
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.REQUEST_FREQUENCY;
|
||||
import static org.bukkit.ChatColor.RED;
|
||||
|
||||
/**
|
||||
@@ -44,7 +46,7 @@ public final class RequestManager {
|
||||
}
|
||||
String msg = MessageFormat.format(lang("asking.for.the.demotion"), requester.getName(), demotedName);
|
||||
|
||||
ClanPlayer demotedTp = plugin.getClanManager().getAnyClanPlayer(demotedName);
|
||||
ClanPlayer demotedTp = plugin.getClanManager().getClanPlayer(UUIDMigration.getForcedPlayerUUID(demotedName));
|
||||
|
||||
List<ClanPlayer> acceptors = Helper.stripOffLinePlayers(clan.getLeaders());
|
||||
acceptors.remove(demotedTp);
|
||||
@@ -90,15 +92,15 @@ public final class RequestManager {
|
||||
}
|
||||
|
||||
Clan clan = requester.getClan();
|
||||
if (clan == null || requests.containsKey(clan.getTag())) {
|
||||
if (clan == null || requests.containsKey(target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
String msg = lang(key, args);
|
||||
String msg = MessageFormat.format(lang(key), args);
|
||||
List<ClanPlayer> acceptors = Helper.stripOffLinePlayers(clan.getLeaders());
|
||||
|
||||
Request req = new Request(request, acceptors, requester, target, clan, msg);
|
||||
requests.put(clan.getTag(), req);
|
||||
requests.put(req.getTarget(), req);
|
||||
req.vote(requester.getName(), VoteResult.ACCEPT);
|
||||
|
||||
ask(req);
|
||||
@@ -223,7 +225,7 @@ public final class RequestManager {
|
||||
|
||||
if (vote.equals(VoteResult.ACCEPT)) {
|
||||
ClanPlayer cp = plugin.getClanManager().getCreateClanPlayer(invited.getUniqueId());
|
||||
int maxMembers = !clan.isVerified() ? plugin.getSettingsManager().getInt(CLAN_UNVERIFIED_MAX_MEMBERS) : plugin.getSettingsManager().getInt(CLAN_MAX_MEMBERS);
|
||||
int maxMembers = plugin.getSettingsManager().getInt(CLAN_MAX_MEMBERS);
|
||||
|
||||
if (maxMembers > 0 && maxMembers > clan.getSize()) {
|
||||
ChatBlock.sendMessageKey(invited, "accepted.invitation", clan.getName());
|
||||
@@ -239,7 +241,6 @@ public final class RequestManager {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void processResults(Request req) {
|
||||
Clan requestClan = req.getClan();
|
||||
ClanPlayer requester = req.getRequester();
|
||||
@@ -249,9 +250,8 @@ public final class RequestManager {
|
||||
@Nullable
|
||||
Clan targetClan = plugin.getClanManager().getClan(target);
|
||||
|
||||
ClanPlayer targetCp = plugin.getClanManager().getAnyClanPlayer(target);
|
||||
@Nullable
|
||||
UUID targetUuid = targetCp != null ? targetCp.getUniqueId() : null;
|
||||
UUID targetPlayer = UUIDMigration.getForcedPlayerUUID(target);
|
||||
|
||||
List<String> accepts = req.getAccepts();
|
||||
List<String> denies = req.getDenies();
|
||||
@@ -271,16 +271,16 @@ public final class RequestManager {
|
||||
break;
|
||||
case DEMOTE:
|
||||
case PROMOTE:
|
||||
if (!req.votingFinished() || targetUuid == null) {
|
||||
if (!req.votingFinished() || targetPlayer == null) {
|
||||
return;
|
||||
}
|
||||
target = requestClan.getTag();
|
||||
|
||||
if (req.getType() == ClanRequest.DEMOTE) {
|
||||
processDemote(req, requestClan, targetUuid, denies);
|
||||
processDemote(req, requestClan, targetPlayer, denies);
|
||||
}
|
||||
if (req.getType() == ClanRequest.PROMOTE) {
|
||||
processPromote(req, requestClan, targetUuid, denies);
|
||||
processPromote(req, requestClan, targetPlayer, denies);
|
||||
}
|
||||
break;
|
||||
case DISBAND:
|
||||
|
||||
@@ -3,22 +3,15 @@ package net.sacredlabyrinth.phaed.simpleclans.managers;
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.Rank;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCFrame;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.InvalidConfigurationException;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.*;
|
||||
import java.util.logging.Level;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.*;
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.utils.RankingNumberResolver.RankingType;
|
||||
@@ -35,7 +28,6 @@ public final class SettingsManager {
|
||||
|
||||
private final FileConfiguration config;
|
||||
private final File configFile;
|
||||
private final Map<Class<? extends SCFrame>, FileConfiguration> frameConfigs = new ConcurrentHashMap<>();
|
||||
|
||||
public SettingsManager(SimpleClans plugin) {
|
||||
this.plugin = plugin;
|
||||
@@ -97,11 +89,10 @@ public final class SettingsManager {
|
||||
if (configFile.exists()) {
|
||||
try {
|
||||
config.load(configFile);
|
||||
} catch (IOException | InvalidConfigurationException ex) {
|
||||
SimpleClans.getInstance().getLogger().log(Level.SEVERE, ex.getMessage(), ex);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
frameConfigs.clear();
|
||||
|
||||
save();
|
||||
}
|
||||
@@ -109,8 +100,8 @@ public final class SettingsManager {
|
||||
public void save() {
|
||||
try {
|
||||
config.save(configFile);
|
||||
} catch (IOException ex) {
|
||||
SimpleClans.getInstance().getLogger().log(Level.SEVERE, ex.getMessage(), ex);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,7 +115,7 @@ public final class SettingsManager {
|
||||
" that matches their clan tag.");
|
||||
}
|
||||
|
||||
if (discordSrv == null && is(DISCORDCHAT_ENABLE)) {
|
||||
if (discordSrv == null && is (DISCORDCHAT_ENABLE)) {
|
||||
plugin.getLogger().warning("DiscordChat can't be initialized, please, install DiscordSRV.");
|
||||
}
|
||||
}
|
||||
@@ -140,30 +131,6 @@ public final class SettingsManager {
|
||||
return new Locale(language);
|
||||
}
|
||||
|
||||
public FileConfiguration getConfig(Class<? extends SCFrame> clazz) {
|
||||
return frameConfigs.computeIfAbsent(clazz, this::readConfig);
|
||||
}
|
||||
|
||||
private FileConfiguration readConfig(Class<? extends SCFrame> clazz) {
|
||||
String configPath = clazz.getName().replace("net.sacredlabyrinth.phaed.simpleclans.ui.", "")
|
||||
.replace(".", File.separator) + ".yml";
|
||||
File externalFile = new File(plugin.getDataFolder(), configPath);
|
||||
InputStream resource = plugin.getResource(configPath);
|
||||
YamlConfiguration config = YamlConfiguration.loadConfiguration(externalFile);
|
||||
if (resource != null) {
|
||||
YamlConfiguration defaults = YamlConfiguration.loadConfiguration(new InputStreamReader(resource));
|
||||
config.setDefaults(defaults);
|
||||
if (!externalFile.exists()) {
|
||||
try {
|
||||
defaults.save(externalFile);
|
||||
} catch (IOException e) {
|
||||
plugin.getLogger().log(Level.SEVERE, String.format("Error saving defaults to %s", configPath), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
return config;
|
||||
}
|
||||
|
||||
public List<Material> getItemList() {
|
||||
List<Material> itemsList = new ArrayList<>();
|
||||
for (String material : getStringList(ITEM_LIST)) {
|
||||
@@ -181,7 +148,7 @@ public final class SettingsManager {
|
||||
* Check whether a word is disallowed
|
||||
*
|
||||
* @param word the world
|
||||
* @return whether its disallowed word
|
||||
* @return whether its a disallowed word
|
||||
*/
|
||||
public boolean isDisallowedWord(String word) {
|
||||
for (String disallowedTag : getStringList(DISALLOWED_TAGS)) {
|
||||
@@ -201,8 +168,13 @@ public final class SettingsManager {
|
||||
* @return whether the string contains the color code
|
||||
*/
|
||||
public boolean hasDisallowedColor(String str) {
|
||||
String loweredString = str.toLowerCase();
|
||||
return getStringList(DISALLOWED_TAG_COLORS).stream().map(String::toLowerCase).anyMatch(color -> loweredString.contains("&" + color));
|
||||
for (String disallowedTag : getStringList(DISALLOWED_TAG_COLORS)) {
|
||||
if (str.contains("&" + disallowedTag)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -343,8 +315,6 @@ public final class SettingsManager {
|
||||
USERNAME_REGEX("settings.username-regex", "^\\**[a-zA-Z0-9_$]{1,16}$"),
|
||||
TAG_REGEX("settings.tag-regex", ""),
|
||||
ACCEPT_OTHER_ALPHABETS_LETTERS("settings.accept-other-alphabets-letters-on-tag", false),
|
||||
DATE_TIME_PATTERN("settings.date-time-pattern", "HH:mm - dd/MM/yyyy"),
|
||||
BUNGEE_SERVERS("settings.bungee-servers"),
|
||||
/*
|
||||
================
|
||||
> Tag Settings
|
||||
@@ -475,7 +445,6 @@ public final class SettingsManager {
|
||||
CLAN_MAX_DESCRIPTION_LENGTH("clan.max-description-length", 120),
|
||||
CLAN_MIN_DESCRIPTION_LENGTH("clan.min-description-length", 10),
|
||||
CLAN_MAX_MEMBERS("clan.max-members", 25),
|
||||
CLAN_UNVERIFIED_MAX_MEMBERS("clan.unverified-max-members", 10),
|
||||
CLAN_MAX_ALLIANCES("clan.max-alliances", -1),
|
||||
CLAN_CONFIRMATION_FOR_PROMOTE("clan.confirmation-for-promote", false),
|
||||
CLAN_TRUST_MEMBERS_BY_DEFAULT("clan.trust-members-by-default", false),
|
||||
@@ -483,7 +452,6 @@ public final class SettingsManager {
|
||||
CLAN_PERCENTAGE_ONLINE_TO_DEMOTE("clan.percentage-online-to-demote", 100.0),
|
||||
CLAN_FF_ON_BY_DEFAULT("clan.ff-on-by-default", false),
|
||||
CLAN_MIN_TO_VERIFY("clan.min-to-verify", 1),
|
||||
CLAN_DEFAULT_RANK("clan.default-rank", "recruit"),
|
||||
/*
|
||||
================
|
||||
> Tasks Settings
|
||||
@@ -608,7 +576,6 @@ public final class SettingsManager {
|
||||
MYSQL_ENABLE("mysql.enable", false),
|
||||
MYSQL_PASSWORD("mysql.password", ""),
|
||||
MYSQL_DATABASE("mysql.database", ""),
|
||||
MYSQL_TABLE_PREFIX("mysql.table_prefix", "sc_"),
|
||||
/*
|
||||
================
|
||||
> Permissions Settings
|
||||
|
||||
+105
-149
@@ -1,5 +1,6 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.managers;
|
||||
|
||||
import com.google.common.base.Charsets;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.events.ClanBalanceUpdateEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.loggers.BankLogger;
|
||||
@@ -10,6 +11,7 @@ import net.sacredlabyrinth.phaed.simpleclans.storage.SQLiteCore;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.YAMLSerializer;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDFetcher;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -18,17 +20,13 @@ import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.text.MessageFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.logging.Level;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.*;
|
||||
@@ -61,7 +59,7 @@ public final class StorageManager {
|
||||
* @return the ChatBlock
|
||||
*/
|
||||
public ChatBlock getChatBlock(Player player) {
|
||||
return chatBlocks.get(player.getName());
|
||||
return chatBlocks.get(player.getUniqueId().toString());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -69,7 +67,13 @@ public final class StorageManager {
|
||||
*
|
||||
*/
|
||||
public void addChatBlock(CommandSender player, ChatBlock cb) {
|
||||
chatBlocks.put(player.getName(), cb);
|
||||
UUID uuid = UUIDMigration.getForcedPlayerUUID(player.getName());
|
||||
|
||||
if (uuid == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
chatBlocks.put(uuid.toString(), cb);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -83,10 +87,10 @@ public final class StorageManager {
|
||||
if (core.checkConnection()) {
|
||||
plugin.getLogger().info(lang("mysql.connection.successful"));
|
||||
|
||||
if (!core.existsTable(getPrefixedTable("clans"))) {
|
||||
plugin.getLogger().info("Creating table: " + getPrefixedTable("clans"));
|
||||
if (!core.existsTable("sc_clans")) {
|
||||
plugin.getLogger().info("Creating table: sc_clans");
|
||||
|
||||
String query = "CREATE TABLE IF NOT EXISTS `" + getPrefixedTable("clans") + "` ("
|
||||
String query = "CREATE TABLE IF NOT EXISTS `sc_clans` ("
|
||||
+ " `id` bigint(20) NOT NULL auto_increment,"
|
||||
+ " `verified` tinyint(1) default '0',"
|
||||
+ " `tag` varchar(25) NOT NULL,"
|
||||
@@ -111,10 +115,10 @@ public final class StorageManager {
|
||||
core.execute(query);
|
||||
}
|
||||
|
||||
if (!core.existsTable(getPrefixedTable("players"))) {
|
||||
plugin.getLogger().info("Creating table: " + getPrefixedTable("players"));
|
||||
if (!core.existsTable("sc_players")) {
|
||||
plugin.getLogger().info("Creating table: sc_players");
|
||||
|
||||
String query = "CREATE TABLE IF NOT EXISTS `" + getPrefixedTable("players") + "` ("
|
||||
String query = "CREATE TABLE IF NOT EXISTS `sc_players` ("
|
||||
+ " `id` bigint(20) NOT NULL auto_increment,"
|
||||
+ " `name` varchar(16) NOT NULL,"
|
||||
+ " `leader` tinyint(1) default '0',"
|
||||
@@ -137,17 +141,16 @@ public final class StorageManager {
|
||||
core.execute(query);
|
||||
}
|
||||
|
||||
if (!core.existsTable(getPrefixedTable("kills"))) {
|
||||
plugin.getLogger().info("Creating table: " + getPrefixedTable("kills"));
|
||||
if (!core.existsTable("sc_kills")) {
|
||||
plugin.getLogger().info("Creating table: sc_kills");
|
||||
|
||||
String query = "CREATE TABLE IF NOT EXISTS `" + getPrefixedTable("kills") + "` ("
|
||||
String query = "CREATE TABLE IF NOT EXISTS `sc_kills` ("
|
||||
+ " `kill_id` bigint(20) NOT NULL auto_increment,"
|
||||
+ " `attacker` varchar(16) NOT NULL,"
|
||||
+ " `attacker_tag` varchar(16) NOT NULL,"
|
||||
+ " `victim` varchar(16) NOT NULL,"
|
||||
+ " `victim_tag` varchar(16) NOT NULL,"
|
||||
+ " `kill_type` varchar(1) NOT NULL,"
|
||||
+ " `created_at` datetime NULL,"
|
||||
+ " PRIMARY KEY (`kill_id`));";
|
||||
core.execute(query);
|
||||
}
|
||||
@@ -161,10 +164,10 @@ public final class StorageManager {
|
||||
|
||||
plugin.getLogger().info(lang("sqlite.connection.successful"));
|
||||
|
||||
if (!core.existsTable(getPrefixedTable("clans"))) {
|
||||
plugin.getLogger().info("Creating table: " + getPrefixedTable("clans"));
|
||||
if (!core.existsTable("sc_clans")) {
|
||||
plugin.getLogger().info("Creating table: sc_clans");
|
||||
|
||||
String query = "CREATE TABLE IF NOT EXISTS `" + getPrefixedTable("clans") + "` ("
|
||||
String query = "CREATE TABLE IF NOT EXISTS `sc_clans` ("
|
||||
+ " `id` bigint(20),"
|
||||
+ " `verified` tinyint(1) default '0',"
|
||||
+ " `tag` varchar(25) NOT NULL,"
|
||||
@@ -189,10 +192,10 @@ public final class StorageManager {
|
||||
core.execute(query);
|
||||
}
|
||||
|
||||
if (!core.existsTable(getPrefixedTable("players"))) {
|
||||
plugin.getLogger().info("Creating table: " + getPrefixedTable("players"));
|
||||
if (!core.existsTable("sc_players")) {
|
||||
plugin.getLogger().info("Creating table: sc_players");
|
||||
|
||||
String query = "CREATE TABLE IF NOT EXISTS `" + getPrefixedTable("players") + "` ("
|
||||
String query = "CREATE TABLE IF NOT EXISTS `sc_players` ("
|
||||
+ " `id` bigint(20),"
|
||||
+ " `name` varchar(16) NOT NULL,"
|
||||
+ " `leader` tinyint(1) default '0',"
|
||||
@@ -215,17 +218,16 @@ public final class StorageManager {
|
||||
core.execute(query);
|
||||
}
|
||||
|
||||
if (!core.existsTable(getPrefixedTable("kills"))) {
|
||||
plugin.getLogger().info("Creating table: " + getPrefixedTable("kills"));
|
||||
if (!core.existsTable("sc_kills")) {
|
||||
plugin.getLogger().info("Creating table: sc_kills");
|
||||
|
||||
String query = "CREATE TABLE IF NOT EXISTS `" + getPrefixedTable("kills") + "` ("
|
||||
String query = "CREATE TABLE IF NOT EXISTS `sc_kills` ("
|
||||
+ " `kill_id` bigint(20),"
|
||||
+ " `attacker` varchar(16) NOT NULL,"
|
||||
+ " `attacker_tag` varchar(16) NOT NULL,"
|
||||
+ " `victim` varchar(16) NOT NULL,"
|
||||
+ " `victim_tag` varchar(16) NOT NULL,"
|
||||
+ " `kill_type` varchar(1) NOT NULL,"
|
||||
+ " `created_at` datetime NULL,"
|
||||
+ " PRIMARY KEY (`kill_id`));";
|
||||
core.execute(query);
|
||||
}
|
||||
@@ -325,9 +327,6 @@ public final class StorageManager {
|
||||
|
||||
for (Clan clan : purge) {
|
||||
plugin.getLogger().info(lang("purging.clan", clan.getName()));
|
||||
for (ClanPlayer member : clan.getMembers()) {
|
||||
clan.removePlayerFromClan(member.getUniqueId());
|
||||
}
|
||||
deleteClan(clan);
|
||||
clans.remove(clan);
|
||||
}
|
||||
@@ -364,7 +363,7 @@ public final class StorageManager {
|
||||
public List<Clan> retrieveClans() {
|
||||
List<Clan> out = new ArrayList<>();
|
||||
|
||||
String query = "SELECT * FROM `" + getPrefixedTable("clans") + "`;";
|
||||
String query = "SELECT * FROM `sc_clans`;";
|
||||
ResultSet res = core.select(query);
|
||||
|
||||
if (res != null) {
|
||||
@@ -438,7 +437,7 @@ public final class StorageManager {
|
||||
public @Nullable Clan retrieveOneClan(String tagClan) {
|
||||
Clan out = null;
|
||||
|
||||
String query = "SELECT * FROM `" + getPrefixedTable("clans") + "` WHERE `tag` = '" + tagClan + "';";
|
||||
String query = "SELECT * FROM `sc_clans` WHERE `tag` = '" + tagClan + "';";
|
||||
ResultSet res = core.select(query);
|
||||
|
||||
if (res != null) {
|
||||
@@ -512,7 +511,7 @@ public final class StorageManager {
|
||||
public List<ClanPlayer> retrieveClanPlayers() {
|
||||
List<ClanPlayer> out = new ArrayList<>();
|
||||
|
||||
String query = "SELECT * FROM `" + getPrefixedTable("players") + "`;";
|
||||
String query = "SELECT * FROM `sc_players`;";
|
||||
ResultSet res = core.select(query);
|
||||
|
||||
if (res != null) {
|
||||
@@ -539,7 +538,7 @@ public final class StorageManager {
|
||||
|
||||
if (last_seen == 0) {
|
||||
last_seen = (new Date()).getTime();
|
||||
}
|
||||
}
|
||||
|
||||
ClanPlayer cp = new ClanPlayer();
|
||||
if (uuid != null) {
|
||||
@@ -590,7 +589,7 @@ public final class StorageManager {
|
||||
public @Nullable ClanPlayer retrieveOneClanPlayer(UUID playerUniqueId) {
|
||||
ClanPlayer out = null;
|
||||
|
||||
String query = "SELECT * FROM `" + getPrefixedTable("players") + "` WHERE `uuid` = '" + playerUniqueId.toString() + "';";
|
||||
String query = "SELECT * FROM `sc_players` WHERE `uuid` = '" + playerUniqueId.toString() + "';";
|
||||
ResultSet res = core.select(query);
|
||||
|
||||
if (res != null) {
|
||||
@@ -687,7 +686,7 @@ public final class StorageManager {
|
||||
public void insertClan(Clan clan) {
|
||||
plugin.getProxyManager().sendUpdate(clan);
|
||||
|
||||
String query = "INSERT INTO `" + getPrefixedTable("clans") + "` (`banner`, `ranks`, `description`, `fee_enabled`, `fee_value`, `verified`, `tag`," +
|
||||
String query = "INSERT INTO `sc_clans` (`banner`, `ranks`, `description`, `fee_enabled`, `fee_value`, `verified`, `tag`," +
|
||||
" `color_tag`, `name`, `friendly_fire`, `founded`, `last_used`, `packed_allies`, `packed_rivals`, " +
|
||||
"`packed_bb`, `cape_url`, `flags`, `balance`) ";
|
||||
String values = "VALUES ( '"
|
||||
@@ -746,7 +745,7 @@ public final class StorageManager {
|
||||
* @param cp to update
|
||||
*/
|
||||
public void updatePlayerName(final @NotNull ClanPlayer cp) {
|
||||
String query = "UPDATE `" + getPrefixedTable("players") + "` SET `name` = '" + cp.getName() + "' WHERE uuid = '" + cp.getUniqueId() + "';";
|
||||
String query = "UPDATE `sc_players` SET `name` = '" + cp.getName() + "' WHERE uuid = '" + cp.getUniqueId() + "';";
|
||||
core.executeUpdate(query);
|
||||
}
|
||||
|
||||
@@ -783,7 +782,7 @@ public final class StorageManager {
|
||||
}
|
||||
|
||||
private PreparedStatement prepareUpdateClanStatement(Connection connection) throws SQLException {
|
||||
String sql = "UPDATE `" + getPrefixedTable("clans") + "` SET ranks = ?, banner = ?, description = ?, fee_enabled = ?, fee_value = ?, " +
|
||||
String sql = "UPDATE `sc_clans` SET ranks = ?, banner = ?, description = ?, fee_enabled = ?, fee_value = ?, " +
|
||||
"verified = ?, tag = ?, color_tag = ?, `name` = ?, friendly_fire = ?, founded = ?, last_used = ?, " +
|
||||
"packed_allies = ?, packed_rivals = ?, packed_bb = ?, balance = ?, flags = ? WHERE tag = ?;";
|
||||
return connection.prepareStatement(sql);
|
||||
@@ -815,7 +814,7 @@ public final class StorageManager {
|
||||
*/
|
||||
public void deleteClan(Clan clan) {
|
||||
plugin.getProxyManager().sendDelete(clan);
|
||||
String query = "DELETE FROM `" + getPrefixedTable("clans") + "` WHERE tag = '" + clan.getTag() + "';";
|
||||
String query = "DELETE FROM `sc_clans` WHERE tag = '" + clan.getTag() + "';";
|
||||
core.executeUpdate(query);
|
||||
}
|
||||
|
||||
@@ -826,7 +825,7 @@ public final class StorageManager {
|
||||
public void insertClanPlayer(ClanPlayer cp) {
|
||||
plugin.getProxyManager().sendUpdate(cp);
|
||||
|
||||
String query = "INSERT INTO `" + getPrefixedTable("players") + "` (`uuid`, `name`, `leader`, `tag`, `friendly_fire`, `neutral_kills`, " +
|
||||
String query = "INSERT INTO `sc_players` (`uuid`, `name`, `leader`, `tag`, `friendly_fire`, `neutral_kills`, " +
|
||||
"`rival_kills`, `civilian_kills`, `deaths`, `last_seen`, `join_date`, `packed_past_clans`, `flags`) ";
|
||||
String values = "VALUES ('" + cp.getUniqueId().toString() + "', '" + cp.getName() + "',"
|
||||
+ (cp.isLeader() ? 1 : 0) + ",'" + Helper.escapeQuotes(cp.getTag()) + "',"
|
||||
@@ -871,7 +870,7 @@ public final class StorageManager {
|
||||
}
|
||||
|
||||
private PreparedStatement prepareUpdateClanPlayerStatement(Connection connection) throws SQLException {
|
||||
String sql = "UPDATE `" + getPrefixedTable("players") + "` SET locale = ?, resign_times = ?, leader = ?, tag = ?, friendly_fire = ?," +
|
||||
String sql = "UPDATE `sc_players` SET locale = ?, resign_times = ?, leader = ?, tag = ?, friendly_fire = ?," +
|
||||
" neutral_kills = ?, ally_kills = ?, rival_kills = ?, civilian_kills = ?, deaths = ?, last_seen = ?," +
|
||||
" packed_past_clans = ?, trusted = ?, flags = ?, `name` = ? WHERE `uuid` = ?;";
|
||||
return connection.prepareStatement(sql);
|
||||
@@ -906,7 +905,7 @@ public final class StorageManager {
|
||||
updateClan(clan, false);
|
||||
}
|
||||
plugin.getProxyManager().sendDelete(cp);
|
||||
String query = "DELETE FROM `" + getPrefixedTable("players") + "` WHERE uuid = '" + cp.getUniqueId() + "';";
|
||||
String query = "DELETE FROM `sc_players` WHERE uuid = '" + cp.getUniqueId() + "';";
|
||||
core.executeUpdate(query);
|
||||
deleteKills(cp.getUniqueId());
|
||||
}
|
||||
@@ -917,7 +916,7 @@ public final class StorageManager {
|
||||
*/
|
||||
@Deprecated
|
||||
public void insertKill(Player attacker, String attackerTag, Player victim, String victimTag, String type) {
|
||||
String query = "INSERT INTO `" + getPrefixedTable("kills") + "` ( `attacker_uuid`, `attacker`, `attacker_tag`, `victim_uuid`, `victim`, `victim_tag`, `kill_type`) ";
|
||||
String query = "INSERT INTO `sc_kills` ( `attacker_uuid`, `attacker`, `attacker_tag`, `victim_uuid`, `victim`, `victim_tag`, `kill_type`) ";
|
||||
String values = "VALUES ( '" + attacker.getUniqueId() + "','" + attacker.getName() + "','" + attackerTag + "','" + victim.getUniqueId() + "','" + victim.getName() + "','" + victimTag + "','" + type + "');";
|
||||
core.executeUpdate(query + values);
|
||||
}
|
||||
@@ -929,11 +928,11 @@ public final class StorageManager {
|
||||
* @param victim the victim
|
||||
* @param type the kill type
|
||||
*/
|
||||
public void insertKill(@NotNull ClanPlayer attacker, @NotNull ClanPlayer victim, @NotNull String type, @NotNull LocalDateTime time) {
|
||||
public void insertKill(@NotNull ClanPlayer attacker, @NotNull ClanPlayer victim, @NotNull String type) {
|
||||
String query = "INSERT INTO `sc_kills` ( `attacker_uuid`, `attacker`, `attacker_tag`, `victim_uuid`, " +
|
||||
"`victim`, `victim_tag`, `kill_type`, `created_at`) ";
|
||||
"`victim`, `victim_tag`, `kill_type`) ";
|
||||
String values = "VALUES ( '" + attacker.getUniqueId() + "','" + attacker.getName() + "','" + attacker.getTag()
|
||||
+ "','" + victim.getUniqueId() + "','" + victim.getName() + "','" + victim.getTag() + "','" + type + "','" + time + "');";
|
||||
+ "','" + victim.getUniqueId() + "','" + victim.getName() + "','" + victim.getTag() + "','" + type + "');";
|
||||
core.executeUpdate(query + values);
|
||||
}
|
||||
|
||||
@@ -943,7 +942,7 @@ public final class StorageManager {
|
||||
*/
|
||||
@Deprecated
|
||||
public void deleteKills(String playerName) {
|
||||
String query = "DELETE FROM `" + getPrefixedTable("kills") + "` WHERE `attacker` = '" + playerName + "'";
|
||||
String query = "DELETE FROM `sc_kills` WHERE `attacker` = '" + playerName + "'";
|
||||
core.executeUpdate(query);
|
||||
}
|
||||
|
||||
@@ -952,7 +951,7 @@ public final class StorageManager {
|
||||
*
|
||||
*/
|
||||
public void deleteKills(UUID playerUniqueId) {
|
||||
String query = "DELETE FROM `" + getPrefixedTable("kills") + "` WHERE `attacker_uuid` = '" + playerUniqueId + "'";
|
||||
String query = "DELETE FROM `sc_kills` WHERE `attacker_uuid` = '" + playerUniqueId + "'";
|
||||
core.executeUpdate(query);
|
||||
}
|
||||
|
||||
@@ -967,7 +966,7 @@ public final class StorageManager {
|
||||
public Map<String, Integer> getKillsPerPlayer(String playerName) {
|
||||
HashMap<String, Integer> out = new HashMap<>();
|
||||
|
||||
String query = "SELECT victim, count(victim) AS kills FROM `" + getPrefixedTable("kills") + "` WHERE attacker = '" + playerName + "' GROUP BY victim ORDER BY count(victim) DESC;";
|
||||
String query = "SELECT victim, count(victim) AS kills FROM `sc_kills` WHERE attacker = '" + playerName + "' GROUP BY victim ORDER BY count(victim) DESC;";
|
||||
ResultSet res = core.select(query);
|
||||
|
||||
if (res != null) {
|
||||
@@ -1000,7 +999,7 @@ public final class StorageManager {
|
||||
public Map<String, Integer> getMostKilled() {
|
||||
HashMap<String, Integer> out = new HashMap<>();
|
||||
|
||||
String query = "SELECT attacker, victim, count(victim) AS kills FROM `" + getPrefixedTable("kills") + "` GROUP BY attacker, victim ORDER BY 3 DESC;";
|
||||
String query = "SELECT attacker, victim, count(victim) AS kills FROM `sc_kills` GROUP BY attacker, victim ORDER BY 3 DESC;";
|
||||
ResultSet res = core.select(query);
|
||||
|
||||
if (res != null) {
|
||||
@@ -1078,104 +1077,98 @@ public final class StorageManager {
|
||||
/*
|
||||
* From 2.2.6.3 to 2.3
|
||||
*/
|
||||
if (!core.existsColumn(getPrefixedTable("clans"), "balance")) {
|
||||
query = "ALTER TABLE `" + getPrefixedTable("clans") + "` ADD COLUMN `balance` double(64,2);";
|
||||
if (!core.existsColumn("sc_clans", "balance")) {
|
||||
query = "ALTER TABLE sc_clans ADD COLUMN `balance` double(64,2);";
|
||||
core.execute(query);
|
||||
}
|
||||
|
||||
/*
|
||||
* From 2.7.16 to 2.7.17
|
||||
*/
|
||||
if (!core.existsColumn(getPrefixedTable("clans"), "fee_enabled")) {
|
||||
query = "ALTER TABLE `" + getPrefixedTable("clans") + "` ADD COLUMN `fee_enabled` tinyint(1) default '0';";
|
||||
if (!core.existsColumn("sc_clans", "fee_enabled")) {
|
||||
query = "ALTER TABLE sc_clans ADD COLUMN `fee_enabled` tinyint(1) default '0';";
|
||||
core.execute(query);
|
||||
}
|
||||
if (!core.existsColumn(getPrefixedTable("clans"), "fee_value")) {
|
||||
query = "ALTER TABLE `" + getPrefixedTable("clans") + "` ADD COLUMN `fee_value` double(64,2);";
|
||||
if (!core.existsColumn("sc_clans", "fee_value")) {
|
||||
query = "ALTER TABLE sc_clans ADD COLUMN `fee_value` double(64,2);";
|
||||
core.execute(query);
|
||||
}
|
||||
|
||||
/*
|
||||
* From 2.7.21 to 2.7.22
|
||||
*/
|
||||
if (!core.existsColumn(getPrefixedTable("clans"), "description")) {
|
||||
query = "ALTER TABLE `" + getPrefixedTable("clans") + "` ADD COLUMN `description` varchar(255);";
|
||||
if (!core.existsColumn("sc_clans", "description")) {
|
||||
query = "ALTER TABLE sc_clans ADD COLUMN `description` varchar(255);";
|
||||
core.execute(query);
|
||||
}
|
||||
|
||||
/*
|
||||
* From 2.7.22 to 2.7.23
|
||||
*/
|
||||
if (!core.existsColumn(getPrefixedTable("players"), "resign_times")) {
|
||||
query = "ALTER TABLE `" + getPrefixedTable("players") + "` ADD COLUMN `resign_times` text;";
|
||||
if (!core.existsColumn("sc_players", "resign_times")) {
|
||||
query = "ALTER TABLE sc_players ADD COLUMN `resign_times` text;";
|
||||
core.execute(query);
|
||||
}
|
||||
|
||||
/*
|
||||
* From 2.8.2 to 2.9
|
||||
*/
|
||||
if (!core.existsColumn(getPrefixedTable("clans"), "ranks")) {
|
||||
query = "ALTER TABLE `" + getPrefixedTable("clans") + "` ADD COLUMN `ranks` text;";
|
||||
if (!core.existsColumn("sc_clans", "ranks")) {
|
||||
query = "ALTER TABLE sc_clans ADD COLUMN `ranks` text;";
|
||||
core.execute(query);
|
||||
}
|
||||
|
||||
// From 2.12.1 to 2.13.0
|
||||
if (!core.existsColumn(getPrefixedTable("players"), "locale")) {
|
||||
query = "ALTER TABLE `" + getPrefixedTable("players") + "` ADD COLUMN `locale` varchar(10);";
|
||||
if (!core.existsColumn("sc_players", "locale")) {
|
||||
query = "ALTER TABLE sc_players ADD COLUMN `locale` varchar(10);";
|
||||
core.execute(query);
|
||||
}
|
||||
if (!core.existsColumn(getPrefixedTable("clans"), "banner")) {
|
||||
core.execute("ALTER TABLE `" + getPrefixedTable("clans") + "` ADD COLUMN `banner` text;");
|
||||
if (!core.existsColumn("sc_clans", "banner")) {
|
||||
core.execute("ALTER TABLE sc_clans ADD COLUMN `banner` text;");
|
||||
}
|
||||
|
||||
// From 2.15.1 to 2.15.2
|
||||
if (!core.existsColumn(getPrefixedTable("players"), "ally_kills")) {
|
||||
core.execute("ALTER TABLE `" + getPrefixedTable("players") + "` ADD COLUMN `ally_kills` int(11) DEFAULT NULL;");
|
||||
if (!core.existsColumn("sc_players", "ally_kills")) {
|
||||
core.execute("ALTER TABLE sc_players ADD COLUMN `ally_kills` int(11) DEFAULT NULL;");
|
||||
}
|
||||
|
||||
if (plugin.getSettingsManager().is(MYSQL_ENABLE)) {
|
||||
core.execute("ALTER TABLE `" + getPrefixedTable("clans") + "` MODIFY color_tag VARCHAR(255);");
|
||||
core.execute("ALTER TABLE sc_clans MODIFY color_tag VARCHAR(255);");
|
||||
}
|
||||
|
||||
/*
|
||||
* Bukkit 1.7.5+ UUID Migration
|
||||
*/
|
||||
if (!core.existsColumn(getPrefixedTable("kills"), "attacker_uuid")) {
|
||||
query = "ALTER TABLE `" + getPrefixedTable("kills") + "` ADD attacker_uuid VARCHAR( 255 ) DEFAULT NULL;";
|
||||
if (!core.existsColumn("sc_kills", "attacker_uuid")) {
|
||||
query = "ALTER TABLE sc_kills ADD attacker_uuid VARCHAR( 255 ) DEFAULT NULL;";
|
||||
core.execute(query);
|
||||
}
|
||||
if (!core.existsColumn(getPrefixedTable("kills"), "victim_uuid")) {
|
||||
query = "ALTER TABLE `" + getPrefixedTable("kills") + "` ADD victim_uuid VARCHAR( 255 ) DEFAULT NULL;";
|
||||
if (!core.existsColumn("sc_kills", "victim_uuid")) {
|
||||
query = "ALTER TABLE sc_kills ADD victim_uuid VARCHAR( 255 ) DEFAULT NULL;";
|
||||
core.execute(query);
|
||||
}
|
||||
boolean useMysql = plugin.getSettingsManager().is(MYSQL_ENABLE);
|
||||
if (!core.existsColumn(getPrefixedTable("players"), "uuid")) {
|
||||
query = "ALTER TABLE `" + getPrefixedTable("players") + "` ADD uuid VARCHAR( 255 ) DEFAULT NULL;";
|
||||
if (!core.existsColumn("sc_players", "uuid")) {
|
||||
query = "ALTER TABLE sc_players ADD uuid VARCHAR( 255 ) DEFAULT NULL;";
|
||||
core.execute(query);
|
||||
|
||||
if (useMysql) {
|
||||
query = "ALTER TABLE `" + getPrefixedTable("players") + "` ADD UNIQUE `uq_player_uuid` (`uuid`);";
|
||||
query = "ALTER TABLE `sc_players` ADD UNIQUE `uq_player_uuid` (`uuid`);";
|
||||
core.execute(query);
|
||||
}
|
||||
|
||||
updatePlayersToUUID();
|
||||
|
||||
if (useMysql) {
|
||||
query = "ALTER TABLE `" + getPrefixedTable("players") + "` DROP INDEX uq_sc_players_1;";
|
||||
query = "ALTER TABLE sc_players DROP INDEX uq_sc_players_1;";
|
||||
} else {
|
||||
query = "DROP INDEX IF EXISTS uq_sc_players_1;";
|
||||
}
|
||||
core.execute(query);
|
||||
}
|
||||
|
||||
if (core.existsColumn(getPrefixedTable("players"), "uuid") && !useMysql) {
|
||||
query = "CREATE UNIQUE INDEX IF NOT EXISTS `uq_player_uuid` ON `" + getPrefixedTable("players") + "` (`uuid`);";
|
||||
core.execute(query);
|
||||
}
|
||||
|
||||
// From 2.19.3 to 2.20.0
|
||||
if (!core.existsColumn(getPrefixedTable("kills"), "created_at")) {
|
||||
query = "ALTER TABLE sc_kills ADD `created_at` datetime NULL;";
|
||||
if (core.existsColumn("sc_players", "uuid") && !useMysql) {
|
||||
query = "CREATE UNIQUE INDEX IF NOT EXISTS `uq_player_uuid` ON `sc_players` (`uuid`);";
|
||||
core.execute(query);
|
||||
}
|
||||
}
|
||||
@@ -1184,86 +1177,49 @@ public final class StorageManager {
|
||||
* Updates the database to the latest version
|
||||
*
|
||||
*/
|
||||
|
||||
private void updatePlayersToUUID() {
|
||||
logMigrationStart();
|
||||
|
||||
plugin.getLogger().log(Level.WARNING, "Starting Migration to UUID Players !");
|
||||
plugin.getLogger().log(Level.WARNING, "==================== ATTENTION DONT STOP BUKKIT ! ==================== ");
|
||||
plugin.getLogger().log(Level.WARNING, "==================== ATTENTION DONT STOP BUKKIT ! ==================== ");
|
||||
plugin.getLogger().log(Level.WARNING, "==================== ATTENTION DONT STOP BUKKIT ! ==================== ");
|
||||
SimpleClans.getInstance().setUUID(false);
|
||||
List<ClanPlayer> cps = retrieveClanPlayers();
|
||||
Map<String, UUID> uuidMap = fetchUUIDs(cps);
|
||||
|
||||
int totalPlayers = cps.size();
|
||||
for (int i = 0; i < totalPlayers; i++) {
|
||||
ClanPlayer cp = cps.get(i);
|
||||
int i = 1;
|
||||
for (ClanPlayer cp : cps) {
|
||||
try {
|
||||
UUID uuid = uuidMap.get(cp.getName());
|
||||
if (uuid != null) {
|
||||
updatePlayerInDatabase(cp.getName(), uuid);
|
||||
logSuccess(i + 1, totalPlayers, cp.getName(), uuid);
|
||||
UUID uuidPlayer;
|
||||
if (SimpleClans.getInstance().getServer().getOnlineMode()) {
|
||||
uuidPlayer = UUIDFetcher.getUUIDOfThrottled(cp.getName());
|
||||
} else {
|
||||
uuidPlayer = UUID.nameUUIDFromBytes(("OfflinePlayer:" + cp.getName()).getBytes(Charsets.UTF_8));
|
||||
}
|
||||
String query = "UPDATE `sc_players` SET uuid = '" + uuidPlayer.toString() + "' WHERE name = '" + cp.getName() + "';";
|
||||
core.executeUpdate(query);
|
||||
|
||||
String query2 = "UPDATE `sc_kills` SET attacker_uuid = '" + uuidPlayer + "' WHERE attacker = '" + cp.getName() + "';";
|
||||
core.executeUpdate(query2);
|
||||
|
||||
String query3 = "UPDATE `sc_kills` SET victim_uuid = '" + uuidPlayer + "' WHERE victim = '" + cp.getName() + "';";
|
||||
core.executeUpdate(query3);
|
||||
plugin.getLogger().info("[" + i + " / " + cps.size() + "] Success: " + cp.getName() + "; UUID: " + uuidPlayer.toString());
|
||||
} catch (Exception ex) {
|
||||
logFailure(i + 1, totalPlayers, cp.getName(), ex);
|
||||
plugin.getLogger().log(Level.WARNING, "[" + i + " / " + cps.size() + "] Failed [ERRO]: " + cp.getName() + "; UUID: ???");
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
logMigrationEnd(totalPlayers);
|
||||
}
|
||||
|
||||
private void updatePlayerInDatabase(String playerName, UUID uuid) {
|
||||
String[] tables = {"players", "kills", "kills"};
|
||||
String[] columns = {"uuid", "attacker_uuid", "victim_uuid"};
|
||||
String[] conditions = {"name", "attacker", "victim"};
|
||||
|
||||
for (int i = 0; i < tables.length; i++) {
|
||||
String query = String.format("UPDATE `%s` SET %s = '%s' WHERE %s = '%s';",
|
||||
getPrefixedTable(tables[i]), columns[i], uuid.toString(), conditions[i], playerName);
|
||||
core.executeUpdate(query);
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, UUID> fetchUUIDs(List<ClanPlayer> clanPlayers) {
|
||||
Map<String, UUID> uuidMap = new HashMap<>();
|
||||
|
||||
try {
|
||||
if (SimpleClans.getInstance().getServer().getOnlineMode()) {
|
||||
uuidMap = UUIDFetcher.fetchUUIDsForClanPlayers(clanPlayers);
|
||||
} else {
|
||||
uuidMap = clanPlayers.stream().collect(Collectors.toMap(ClanPlayer::getName, player ->
|
||||
UUID.nameUUIDFromBytes(("OfflinePlayer:" + player.getName()).getBytes(StandardCharsets.UTF_8))));
|
||||
}
|
||||
} catch (InterruptedException | ExecutionException ex) {
|
||||
plugin.getLogger().log(Level.SEVERE, "Error fetching UUIDs in bulk: " + ex.getMessage(), ex);
|
||||
}
|
||||
|
||||
return uuidMap;
|
||||
}
|
||||
|
||||
private void logSuccess(int current, int total, String playerName, UUID uuid) {
|
||||
plugin.getLogger().info(String.format("[%d / %d] Success: %s; UUID: %s", current, total, playerName, uuid));
|
||||
}
|
||||
|
||||
private void logFailure(int current, int total, String playerName, Exception ex) {
|
||||
plugin.getLogger().log(Level.WARNING, String.format("[%d / %d] Failed [ERROR]: %s; UUID: ???", current, total, playerName), ex);
|
||||
}
|
||||
|
||||
private void logMigrationStart() {
|
||||
plugin.getLogger().log(Level.WARNING, "Starting Migration to UUID Players!");
|
||||
plugin.getLogger().log(Level.WARNING, "==================== ATTENTION DON'T STOP BUKKIT! ====================");
|
||||
plugin.getLogger().log(Level.WARNING, "==================== ATTENTION DON'T STOP BUKKIT! ====================");
|
||||
plugin.getLogger().log(Level.WARNING, "==================== ATTENTION DON'T STOP BUKKIT! ====================");
|
||||
}
|
||||
|
||||
private void logMigrationEnd(int totalPlayers) {
|
||||
plugin.getLogger().log(Level.WARNING, "==================== END OF MIGRATION ====================");
|
||||
plugin.getLogger().log(Level.WARNING, "==================== END OF MIGRATION ====================");
|
||||
plugin.getLogger().log(Level.WARNING, "==================== END OF MIGRATION ====================");
|
||||
|
||||
if (totalPlayers > 0) {
|
||||
plugin.getLogger().info(MessageFormat.format(lang("clan.players"), totalPlayers));
|
||||
|
||||
if (!cps.isEmpty()) {
|
||||
plugin.getLogger().info(MessageFormat.format(lang("clan.players"), cps.size()));
|
||||
}
|
||||
SimpleClans.getInstance().setUUID(true);
|
||||
}
|
||||
|
||||
private String getPrefixedTable(String name) {
|
||||
return plugin.getSettingsManager().getString(MYSQL_TABLE_PREFIX) + name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves modified Clans and ClanPlayers to the database
|
||||
|
||||
@@ -33,8 +33,6 @@ public final class BungeeManager implements ProxyManager, PluginMessageListener
|
||||
private static final String DELETE_CLAN_CHANNEL = "DeleteClan";
|
||||
private static final String DELETE_CLANPLAYER_CHANNEL = "DeleteClanPlayer";
|
||||
private static final String CHAT_CHANNEL = "Chat";
|
||||
private static final String BROADCAST = "Broadcast";
|
||||
private static final String MESSAGE = "Message";
|
||||
|
||||
private final SimpleClans plugin;
|
||||
private final Gson gson;
|
||||
@@ -69,14 +67,6 @@ public final class BungeeManager implements ProxyManager, PluginMessageListener
|
||||
try {
|
||||
Class<?> clazz = Class.forName("net.sacredlabyrinth.phaed.simpleclans.proxy.listeners." + subChannel);
|
||||
MessageListener listener = (MessageListener) clazz.getConstructor(BungeeManager.class).newInstance(this);
|
||||
String serverName = null;
|
||||
if (!listener.isBungeeSubchannel()) {
|
||||
serverName = input.readUTF();
|
||||
}
|
||||
if (serverName != null && !isServerAllowed(serverName)) {
|
||||
SimpleClans.debug(String.format("Server not allowed: %s", serverName));
|
||||
return;
|
||||
}
|
||||
listener.accept(input);
|
||||
SimpleClans.debug("Message processed");
|
||||
} catch (ClassNotFoundException e) {
|
||||
@@ -87,15 +77,6 @@ public final class BungeeManager implements ProxyManager, PluginMessageListener
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isServerAllowed(@NotNull String serverName) {
|
||||
List<String> servers = plugin.getSettingsManager().getStringList(ConfigField.BUNGEE_SERVERS);
|
||||
if (servers.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return servers.contains(serverName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOnline(String playerName) {
|
||||
if (Bukkit.getOnlinePlayers().stream().anyMatch(player -> player.getName().equals(playerName))) {
|
||||
@@ -123,45 +104,23 @@ public final class BungeeManager implements ProxyManager, PluginMessageListener
|
||||
forwardPluginMessage(CHAT_CHANNEL, gson.toJson(message), false);
|
||||
}
|
||||
|
||||
@SuppressWarnings("UnstableApiUsage")
|
||||
@Override
|
||||
public void sendMessage(@NotNull String target, @NotNull String message) {
|
||||
if (message.isEmpty()) {
|
||||
return;
|
||||
if (isChannelRegistered()) {
|
||||
ByteArrayDataOutput output = ByteStreams.newDataOutput();
|
||||
output.writeUTF("Message");
|
||||
output.writeUTF(target);
|
||||
output.writeUTF(message);
|
||||
|
||||
sendOnBungeeChannel(output);
|
||||
} else {
|
||||
if ("ALL".equals(target)) {
|
||||
Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(message));
|
||||
} else {
|
||||
Optional.ofNullable(Bukkit.getPlayer(target)).ifPresent(p -> p.sendMessage(message));
|
||||
}
|
||||
}
|
||||
|
||||
if ("ALL".equals(target)) {
|
||||
Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(message));
|
||||
sendBroadcast(message);
|
||||
return;
|
||||
}
|
||||
|
||||
Player player = Bukkit.getPlayerExact(target);
|
||||
if (player != null) {
|
||||
player.sendMessage(message);
|
||||
return;
|
||||
}
|
||||
|
||||
sendPrivateMessage(target, message);
|
||||
}
|
||||
|
||||
private void sendBroadcast(@NotNull String message) {
|
||||
forwardPluginMessage(BROADCAST, message, false);
|
||||
}
|
||||
|
||||
@SuppressWarnings("UnstableApiUsage")
|
||||
private void sendPrivateMessage(@NotNull String playerName, @NotNull String message) {
|
||||
if (!isChannelRegistered()) {
|
||||
return;
|
||||
}
|
||||
ByteArrayDataOutput output = ByteStreams.newDataOutput();
|
||||
output.writeUTF("Forward");
|
||||
output.writeUTF("ONLINE");
|
||||
output.writeUTF(MESSAGE);
|
||||
output.writeUTF(serverName);
|
||||
output.writeUTF(playerName);
|
||||
output.writeUTF(message);
|
||||
|
||||
sendOnBungeeChannel(output);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -237,7 +196,6 @@ public final class BungeeManager implements ProxyManager, PluginMessageListener
|
||||
output.writeUTF("Forward");
|
||||
output.writeUTF(target);
|
||||
output.writeUTF(subChannel);
|
||||
output.writeUTF(serverName);
|
||||
output.writeUTF(message);
|
||||
|
||||
sendOnBungeeChannel(output);
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.proxy.listeners;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.proxy.BungeeManager;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
public class Broadcast extends MessageListener {
|
||||
|
||||
public Broadcast(BungeeManager bungee) {
|
||||
super(bungee);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(ByteArrayDataInput data) {
|
||||
String message = data.readUTF();
|
||||
Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(message));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBungeeSubchannel() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -18,9 +18,4 @@ public class Chat extends MessageListener {
|
||||
}
|
||||
bungee.getPlugin().getChatManager().processChat(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBungeeSubchannel() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -26,9 +26,4 @@ public class DeleteClan extends MessageListener {
|
||||
}
|
||||
debug(String.format("Deleted clan %s", tag));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBungeeSubchannel() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
-5
@@ -19,9 +19,4 @@ public class DeleteClanPlayer extends MessageListener {
|
||||
getClanManager().deleteClanPlayerFromMemory(uuid);
|
||||
debug(String.format("Deleted cp %s", uuid));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBungeeSubchannel() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -14,9 +14,4 @@ public class GetServer extends MessageListener {
|
||||
String name = data.readUTF();
|
||||
bungee.setServerName(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBungeeSubchannel() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.proxy.listeners;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.proxy.BungeeManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Message extends MessageListener {
|
||||
|
||||
public Message(BungeeManager bungee) {
|
||||
super(bungee);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(ByteArrayDataInput data) {
|
||||
String target = data.readUTF();
|
||||
String message = data.readUTF();
|
||||
|
||||
Player player = Bukkit.getPlayerExact(target);
|
||||
if (player != null) {
|
||||
player.sendMessage(message);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBungeeSubchannel() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
-2
@@ -15,8 +15,6 @@ public abstract class MessageListener {
|
||||
|
||||
public abstract void accept(ByteArrayDataInput data);
|
||||
|
||||
public abstract boolean isBungeeSubchannel();
|
||||
|
||||
protected ClanManager getClanManager() {
|
||||
return bungee.getPlugin().getClanManager();
|
||||
}
|
||||
|
||||
@@ -20,9 +20,4 @@ public class PlayerList extends MessageListener {
|
||||
bungee.setOnlinePlayers(players);
|
||||
SimpleClans.debug("Updated player list");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBungeeSubchannel() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -10,11 +10,6 @@ public class UpdateClan extends Update<Clan> {
|
||||
super(bungee);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBungeeSubchannel() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class<Clan> getType() {
|
||||
return Clan.class;
|
||||
|
||||
-5
@@ -10,11 +10,6 @@ public class UpdateClanPlayer extends Update<ClanPlayer> {
|
||||
super(bungee);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBungeeSubchannel() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class<ClanPlayer> getType() {
|
||||
return ClanPlayer.class;
|
||||
|
||||
@@ -4,7 +4,6 @@ import net.sacredlabyrinth.phaed.simpleclans.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.loggers.BankOperator;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.CurrencyFormat;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
@@ -55,7 +54,7 @@ public class CollectFeeTask extends BukkitRunnable {
|
||||
OfflinePlayer player = Bukkit.getOfflinePlayer(cp.getUniqueId());
|
||||
boolean success = pm.chargePlayer(player, memberFee);
|
||||
if (success) {
|
||||
ChatBlock.sendMessage(cp, AQUA + lang("fee.collected", cp, CurrencyFormat.format(memberFee)));
|
||||
ChatBlock.sendMessage(cp, AQUA + lang("fee.collected", cp, memberFee));
|
||||
|
||||
clan.deposit(new BankOperator(cp, pm.playerGetMoney(player)), Cause.MEMBER_FEE, memberFee);
|
||||
plugin.getStorageManager().updateClan(clan);
|
||||
|
||||
@@ -6,7 +6,6 @@ import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.events.ClanBalanceUpdateEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.loggers.BankOperator;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.CurrencyFormat;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
@@ -60,7 +59,7 @@ public class CollectUpkeepTask extends BukkitRunnable {
|
||||
clan.disband(null, true, false);
|
||||
}
|
||||
if (response == EconomyResponse.SUCCESS) {
|
||||
clan.addBb(MessageFormat.format(lang("upkeep.collected"), CurrencyFormat.format(upkeep)), false);
|
||||
clan.addBb(MessageFormat.format(lang("upkeep.collected"), upkeep), false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ package net.sacredlabyrinth.phaed.simpleclans.ui;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.events.FrameOpenEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.events.PostComponentsCreationEvent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.WordWrapper;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -36,19 +35,19 @@ public class InventoryDrawer {
|
||||
return;
|
||||
}
|
||||
|
||||
FrameOpenEvent event = new FrameOpenEvent(frame.getViewer(), frame);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
OPENING.put(uuid, frame);
|
||||
OPENING.put(uuid, frame);
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
Inventory inventory = prepareInventory(frame);
|
||||
Inventory inventory = prepareInventory(frame);
|
||||
|
||||
if (!frame.equals(OPENING.get(uuid))) {
|
||||
return;
|
||||
}
|
||||
Bukkit.getScheduler().runTask(plugin, () -> {
|
||||
FrameOpenEvent event = new FrameOpenEvent(frame.getViewer(), frame);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
frame.getViewer().openInventory(inventory);
|
||||
InventoryController.register(frame);
|
||||
OPENING.remove(uuid);
|
||||
@@ -83,7 +82,6 @@ public class InventoryDrawer {
|
||||
frame.clear();
|
||||
try {
|
||||
frame.createComponents();
|
||||
Bukkit.getPluginManager().callEvent(new PostComponentsCreationEvent(frame));
|
||||
} catch (NoSuchFieldError ex) {
|
||||
runHelpCommand(frame.getViewer());
|
||||
return;
|
||||
@@ -95,7 +93,7 @@ public class InventoryDrawer {
|
||||
return;
|
||||
}
|
||||
for (SCComponent c : frame.getComponents()) {
|
||||
if (c.getSlot() >= frame.getSize() || !c.isEnabled()) {
|
||||
if (c.getSlot() >= frame.getSize()) {
|
||||
continue;
|
||||
}
|
||||
checkLorePermission(frame, c);
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.ui;
|
||||
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.Paginator;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.annotation.OverridingMethodsMustInvokeSuper;
|
||||
|
||||
public abstract class PageableFrame<T> extends SCFrame {
|
||||
|
||||
public PageableFrame(@Nullable SCFrame parent, @NotNull Player viewer) {
|
||||
super(parent, viewer);
|
||||
}
|
||||
|
||||
@Override
|
||||
@OverridingMethodsMustInvokeSuper
|
||||
public void createComponents() {
|
||||
super.createComponents();
|
||||
SCComponent nextPage = new SCComponentImpl.Builder(getConfig(), "next_page")
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.next.page.title").build();
|
||||
setOneTimeListener(nextPage, this::nextPage, getPaginator().hasNextPage());
|
||||
add(nextPage);
|
||||
|
||||
SCComponent previousPage = new SCComponentImpl.Builder(getConfig(), "previous_page")
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.previous.page.title").build();
|
||||
setOneTimeListener(previousPage, this::previousPage, getPaginator().hasPreviousPage());
|
||||
add(previousPage);
|
||||
}
|
||||
|
||||
public abstract Paginator<T> getPaginator();
|
||||
|
||||
public int getPageSize() {
|
||||
return getConfig().getIntegerList("components.list.slots").size();
|
||||
}
|
||||
|
||||
private void nextPage() {
|
||||
if (getPaginator().nextPage()) {
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
private void previousPage() {
|
||||
if (getPaginator().previousPage()) {
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
private void setOneTimeListener(final SCComponent component, final Runnable runnable, boolean pageCheck) {
|
||||
if (!pageCheck) {
|
||||
return;
|
||||
}
|
||||
component.setListener(ClickType.LEFT, () -> {
|
||||
component.setListener(ClickType.LEFT, null);
|
||||
runnable.run();
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -19,7 +19,6 @@ import java.util.Set;
|
||||
*/
|
||||
public abstract class SCComponent {
|
||||
|
||||
private boolean enabled = true;
|
||||
private final HashMap<ClickType, Runnable> listeners = new HashMap<>();
|
||||
private final HashMap<ClickType, Object> permissions = new HashMap<>();
|
||||
private final Set<ClickType> verified = new HashSet<>();
|
||||
@@ -31,14 +30,6 @@ public abstract class SCComponent {
|
||||
|
||||
public abstract int getSlot();
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ItemMeta getItemMeta() {
|
||||
return getItem().getItemMeta();
|
||||
|
||||
@@ -1,25 +1,15 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.ui;
|
||||
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.frames.Components;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class SCComponentImpl extends SCComponent {
|
||||
|
||||
@@ -55,7 +45,6 @@ public class SCComponentImpl extends SCComponent {
|
||||
itemMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
|
||||
item.setItemMeta(itemMeta);
|
||||
}
|
||||
checkSlot(slot);
|
||||
this.slot = slot;
|
||||
}
|
||||
|
||||
@@ -69,66 +58,34 @@ public class SCComponentImpl extends SCComponent {
|
||||
return slot;
|
||||
}
|
||||
|
||||
private static void checkMaterial(String material) {
|
||||
if (material == null || material.isEmpty()) {
|
||||
throw new IllegalStateException("material cannot be null or empty");
|
||||
}
|
||||
}
|
||||
|
||||
private static void checkSlot(int slot) {
|
||||
if (slot < 0) {
|
||||
throw new IllegalStateException("slot must be >= 0 and < 54");
|
||||
}
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
private boolean enabled;
|
||||
private final ItemStack item;
|
||||
private String displayName;
|
||||
private int slot;
|
||||
private final SCComponentImpl component = new SCComponentImpl();
|
||||
private @Nullable List<String> lore;
|
||||
private Player viewer;
|
||||
|
||||
public Builder(@NotNull XMaterial material) {
|
||||
this(material.parseItem());
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public Builder(@NotNull Material material) {
|
||||
this(new ItemStack(material));
|
||||
component.item = new ItemStack(material);
|
||||
}
|
||||
|
||||
public Builder(@Nullable ItemStack item) {
|
||||
if (item == null) {
|
||||
item = new ItemStack(Material.STONE);
|
||||
}
|
||||
this.item = item;
|
||||
}
|
||||
|
||||
public Builder(FileConfiguration config, String id) {
|
||||
String materialName = config.getString("components." + id + ".material");
|
||||
checkMaterial(materialName);
|
||||
item = Objects.requireNonNull(XMaterial.matchXMaterial(materialName).orElse(XMaterial.STONE).parseItem());
|
||||
slot = config.getInt("components." + id + ".slot");
|
||||
checkSlot(slot);
|
||||
enabled = config.getBoolean("components." + id + ".enabled");
|
||||
}
|
||||
|
||||
public Builder withViewer(@NotNull Player player) {
|
||||
this.viewer = player;
|
||||
return this;
|
||||
component.item = item;
|
||||
}
|
||||
|
||||
public Builder withDisplayName(@Nullable String displayName) {
|
||||
this.displayName = displayName;
|
||||
ItemMeta itemMeta = component.getItemMeta();
|
||||
if (itemMeta != null) {
|
||||
itemMeta.setDisplayName(displayName);
|
||||
component.setItemMeta(itemMeta);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder withDisplayNameKey(@NotNull String key, Object... args) {
|
||||
if (viewer == null) throw new IllegalStateException("viewer is null");
|
||||
return withDisplayName(lang(key, viewer, args));
|
||||
}
|
||||
|
||||
public Builder withLore(@Nullable List<String> lore) {
|
||||
this.lore = lore;
|
||||
return this;
|
||||
@@ -142,154 +99,18 @@ public class SCComponentImpl extends SCComponent {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder withLoreKey(@NotNull String key, Object... args) {
|
||||
if (viewer == null) throw new IllegalStateException("viewer is null");
|
||||
return withLoreLine(lang(key, viewer, args));
|
||||
}
|
||||
|
||||
public Builder withSlot(int slot) {
|
||||
checkSlot(slot);
|
||||
this.slot = slot;
|
||||
component.slot = slot;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SCComponent build() {
|
||||
SCComponentImpl component = new SCComponentImpl();
|
||||
component.item = item;
|
||||
component.setEnabled(enabled);
|
||||
ItemMeta itemMeta = item.getItemMeta();
|
||||
ItemMeta itemMeta = component.getItemMeta();
|
||||
if (itemMeta != null) {
|
||||
itemMeta.setLore(lore);
|
||||
itemMeta.setDisplayName(displayName);
|
||||
component.setItemMeta(itemMeta);
|
||||
}
|
||||
component.slot = slot;
|
||||
return component;
|
||||
}
|
||||
}
|
||||
|
||||
public static class ListBuilder<T> {
|
||||
private final boolean enabled;
|
||||
private final XMaterial material;
|
||||
private Function<T, ItemStack> item;
|
||||
private Function<T, OfflinePlayer> owningPlayer;
|
||||
private final List<Integer> slots;
|
||||
private final List<T> elements;
|
||||
private Player viewer;
|
||||
private Function<T, String> displayName = (t) -> null;
|
||||
private final List<Function<T, String>> lore = new ArrayList<>();
|
||||
private final Map<ClickType, Function<T, Runnable>> listeners = new HashMap<>();
|
||||
private final Map<ClickType, String> bukkitPermissions = new HashMap<>();
|
||||
private final Map<ClickType, RankPermission> rankPermissions = new HashMap<>();
|
||||
private final Set<ClickType> confirmationRequired = new HashSet<>();
|
||||
private String lorePermission;
|
||||
|
||||
public ListBuilder(@NotNull FileConfiguration config, @NotNull String id, @NotNull List<T> elements) {
|
||||
String materialName = config.getString("components." + id + ".material");
|
||||
checkMaterial(materialName);
|
||||
material = XMaterial.matchXMaterial(materialName).orElse(XMaterial.STONE);
|
||||
item = (t) -> Objects.requireNonNull(material.parseItem());
|
||||
slots = config.getIntegerList("components." + id + ".slots").stream().filter(i -> i >= 0 && i < 54)
|
||||
.collect(Collectors.toList());
|
||||
this.elements = elements;
|
||||
enabled = config.getBoolean("components." + id + ".enabled");
|
||||
}
|
||||
|
||||
public ListBuilder(@NotNull FileConfiguration config, @NotNull String id) {
|
||||
this(config, id, new ArrayList<>());
|
||||
slots.forEach(e -> elements.add(null));
|
||||
}
|
||||
|
||||
public ListBuilder<T> withItem(@NotNull Function<T, ItemStack> item) {
|
||||
this.item = (t) -> {
|
||||
ItemStack result = item.apply(t);
|
||||
return result == null ? material.parseItem() : result;
|
||||
};
|
||||
return this;
|
||||
}
|
||||
|
||||
public ListBuilder<T> withViewer(@NotNull Player player) {
|
||||
viewer = player;
|
||||
return this;
|
||||
}
|
||||
|
||||
@SafeVarargs
|
||||
public final ListBuilder<T> withDisplayNameKey(@NotNull String key, Function<T, Object>... args) {
|
||||
displayName = (t) -> processLang(key, t, args);
|
||||
return this;
|
||||
}
|
||||
|
||||
@SafeVarargs
|
||||
public final ListBuilder<T> withLoreKey(@NotNull String key, Function<T, Object>... args) {
|
||||
lore.add((t) -> processLang(key, t, args));
|
||||
return this;
|
||||
}
|
||||
|
||||
public final ListBuilder<T> withLoreLine(Function<T, String> line) {
|
||||
lore.add(line);
|
||||
return this;
|
||||
}
|
||||
|
||||
public final ListBuilder<T> withOwningPlayer(Function<T, OfflinePlayer> owningPlayer) {
|
||||
this.owningPlayer = owningPlayer;
|
||||
return this;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private String processLang(@NotNull String key, T t, Function<T, Object>[] args) {
|
||||
Object[] processedArgs = Arrays.stream(args).map(func -> func.apply(t)).toArray();
|
||||
if (viewer == null) throw new IllegalStateException("viewer is null");
|
||||
return lang(key, viewer, processedArgs);
|
||||
}
|
||||
|
||||
public ListBuilder<T> withLorePermission(@Nullable String permission) {
|
||||
lorePermission = permission;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ListBuilder<T> withListener(@NotNull ClickType click, @Nullable Function<T, Runnable> runnable, @Nullable String permission) {
|
||||
bukkitPermissions.put(click, permission);
|
||||
listeners.put(click, runnable);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ListBuilder<T> withListener(@NotNull ClickType click, @Nullable Function<T, Runnable> runnable, @Nullable RankPermission permission) {
|
||||
rankPermissions.put(click, permission);
|
||||
listeners.put(click, runnable);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ListBuilder<T> withConfirmationRequired(@NotNull ClickType click) {
|
||||
confirmationRequired.add(click);
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<SCComponent> build() {
|
||||
List<SCComponent> components = new ArrayList<>();
|
||||
for (int i = 0; i < elements.size() && i < slots.size(); i++) {
|
||||
T t = elements.get(i);
|
||||
SCComponentImpl component = new SCComponentImpl();
|
||||
component.setEnabled(enabled);
|
||||
component.item = item.apply(t);
|
||||
component.slot = slots.get(i);
|
||||
ItemMeta itemMeta = component.getItemMeta();
|
||||
if (itemMeta != null) {
|
||||
itemMeta.setDisplayName(displayName.apply(t));
|
||||
List<String> processedLore = lore.stream().map(f -> f.apply(t)).collect(Collectors.toList());
|
||||
itemMeta.setLore(processedLore);
|
||||
if (itemMeta instanceof SkullMeta && owningPlayer != null) {
|
||||
Components.setOwningPlayer(((SkullMeta) itemMeta), owningPlayer.apply(t));
|
||||
}
|
||||
component.setItemMeta(itemMeta);
|
||||
}
|
||||
component.setLorePermission(lorePermission);
|
||||
listeners.forEach((click, fn) -> component.setListener(click, fn.apply(t)));
|
||||
bukkitPermissions.forEach(component::setPermission);
|
||||
rankPermissions.forEach(component::setPermission);
|
||||
confirmationRequired.forEach(component::setConfirmationRequired);
|
||||
components.add(component);
|
||||
}
|
||||
return components;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,12 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.ui;
|
||||
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import javax.annotation.OverridingMethodsMustInvokeSuper;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author RoinujNosde
|
||||
@@ -24,7 +17,7 @@ public abstract class SCFrame {
|
||||
private final SCFrame parent;
|
||||
private final Player viewer;
|
||||
private final Set<SCComponent> components = ConcurrentHashMap.newKeySet();
|
||||
|
||||
|
||||
public SCFrame(@Nullable SCFrame parent, @NotNull Player viewer) {
|
||||
this.parent = parent;
|
||||
this.viewer = viewer;
|
||||
@@ -43,27 +36,9 @@ public abstract class SCFrame {
|
||||
return parent;
|
||||
}
|
||||
|
||||
public int getSize() {
|
||||
return getConfig().getInt("rows", 6) * 9;
|
||||
}
|
||||
public abstract int getSize();
|
||||
|
||||
@OverridingMethodsMustInvokeSuper
|
||||
public void createComponents() {
|
||||
SCComponent back = new SCComponentImpl.Builder(getConfig(), "back")
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.back.title").build();
|
||||
back.setListener(ClickType.LEFT, () -> InventoryDrawer.open(getParent()));
|
||||
add(back);
|
||||
|
||||
ConfigurationSection decorSection = getConfig().getConfigurationSection("components.decorations");
|
||||
if (decorSection != null) {
|
||||
for (String key : decorSection.getKeys(false)) {
|
||||
addAll(new SCComponentImpl.ListBuilder<>(getConfig(), "decorations." + key)
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey(" ").build());
|
||||
}
|
||||
}
|
||||
}
|
||||
public abstract void createComponents();
|
||||
|
||||
@Nullable
|
||||
public SCComponent getComponent(int slot) {
|
||||
@@ -76,34 +51,18 @@ public abstract class SCFrame {
|
||||
}
|
||||
|
||||
public void add(@NotNull SCComponent c) {
|
||||
SCComponent old = getComponent(c.getSlot());
|
||||
if (old != null) {
|
||||
components.remove(old);
|
||||
}
|
||||
components.add(c);
|
||||
}
|
||||
|
||||
public void addAll(@NotNull Collection<SCComponent> collection) {
|
||||
collection.forEach(this::add);
|
||||
}
|
||||
|
||||
|
||||
public void clear() {
|
||||
components.clear();
|
||||
}
|
||||
|
||||
public void update() {
|
||||
InventoryDrawer.open(this);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Set<SCComponent> getComponents() {
|
||||
return components;
|
||||
}
|
||||
|
||||
protected FileConfiguration getConfig() {
|
||||
return SimpleClans.getInstance().getSettingsManager().getConfig(getClass());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (other instanceof SCFrame) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.ui.frames;
|
||||
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.Clan;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
@@ -9,46 +10,77 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
|
||||
|
||||
public class AddAllyFrame extends PageableFrame<Clan> {
|
||||
private final Paginator<Clan> paginator;
|
||||
public class AddAllyFrame extends SCFrame {
|
||||
private final List<Clan> notAllies;
|
||||
private final Paginator paginator;
|
||||
|
||||
public AddAllyFrame(SCFrame parent, Player viewer, Clan subject) {
|
||||
super(parent, viewer);
|
||||
SimpleClans plugin = SimpleClans.getInstance();
|
||||
List<Clan> notAllies = plugin.getClanManager().getClans().stream()
|
||||
.filter(c -> !c.equals(subject) && !c.isRival(subject.getTag()) && !c.isAlly(subject.getTag()))
|
||||
.collect(Collectors.toList());
|
||||
paginator = new Paginator<>(getPageSize(), notAllies);
|
||||
}
|
||||
public AddAllyFrame(SCFrame parent, Player viewer, Clan subject) {
|
||||
super(parent, viewer);
|
||||
SimpleClans plugin = SimpleClans.getInstance();
|
||||
notAllies = plugin.getClanManager().getClans().stream()
|
||||
.filter(c -> !c.equals(subject) && !c.isRival(subject.getTag()) && !c.isAlly(subject.getTag()))
|
||||
.collect(Collectors.toList());
|
||||
paginator = new Paginator(getSize() - 9, notAllies);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createComponents() {
|
||||
super.createComponents();
|
||||
List<SCComponent> list = new SCComponentImpl.ListBuilder<>(getConfig(), "list", paginator.getCurrentElements())
|
||||
.withViewer(getViewer())
|
||||
.withLoreKey("gui.add.ally.clan.lore")
|
||||
.withListener(ClickType.LEFT, this::addAlly, RankPermission.ALLY_ADD)
|
||||
.build();
|
||||
addAll(list);
|
||||
}
|
||||
@Override
|
||||
public void createComponents() {
|
||||
for (int slot = 0; slot < 9; slot++) {
|
||||
if (slot == 2 || slot == 6 || slot == 7)
|
||||
continue;
|
||||
add(Components.getPanelComponent(slot));
|
||||
}
|
||||
add(Components.getBackComponent(getParent(), 2, getViewer()));
|
||||
|
||||
private Runnable addAlly(Clan clan) {
|
||||
return () -> InventoryController.runSubcommand(getViewer(), "ally add", false, clan.getTag());
|
||||
}
|
||||
add(Components.getPreviousPageComponent(6, this::previousPage, paginator, getViewer()));
|
||||
add(Components.getNextPageComponent(7, this::nextPage, paginator, getViewer()));
|
||||
|
||||
@Override
|
||||
public Paginator<Clan> getPaginator() {
|
||||
return paginator;
|
||||
}
|
||||
int slot = 9;
|
||||
for (int i = paginator.getMinIndex(); paginator.isValidIndex(i); i++) {
|
||||
|
||||
@Override
|
||||
public @NotNull String getTitle() {
|
||||
return lang("gui.add.ally.title", getViewer());
|
||||
}
|
||||
Clan notRival = notAllies.get(i);
|
||||
SCComponent c = new SCComponentImpl(
|
||||
lang("gui.clanlist.clan.title", getViewer(), notRival.getColorTag(), notRival.getName()),
|
||||
Collections.singletonList(lang("gui.add.ally.clan.lore", getViewer())), XMaterial.CYAN_BANNER,
|
||||
slot);
|
||||
|
||||
c.setListener(ClickType.LEFT, () -> InventoryController.runSubcommand(getViewer(),
|
||||
"ally add", false, notRival.getTag()));
|
||||
c.setPermission(ClickType.LEFT, RankPermission.ALLY_ADD);
|
||||
add(c);
|
||||
slot++;
|
||||
}
|
||||
}
|
||||
|
||||
private void previousPage() {
|
||||
if (paginator.previousPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void nextPage() {
|
||||
if (paginator.nextPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateFrame() {
|
||||
InventoryDrawer.open(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getTitle() {
|
||||
return lang("gui.add.ally.title",getViewer());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return 6 * 9;
|
||||
}
|
||||
}
|
||||
+51
-30
@@ -1,27 +1,23 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.ui.frames;
|
||||
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.Helper;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.Rank;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.InventoryController;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.PageableFrame;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCComponent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCComponentImpl.ListBuilder;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCFrame;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.Paginator;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
|
||||
|
||||
public class AddPermissionFrame extends PageableFrame<String> {
|
||||
private final List<String> availablePermissions;
|
||||
private final Paginator<String> paginator;
|
||||
public class AddPermissionFrame extends SCFrame {
|
||||
private final String[] availablePermissions;
|
||||
private final Paginator paginator;
|
||||
private final Rank rank;
|
||||
|
||||
public AddPermissionFrame(SCFrame parent, Player viewer, Rank rank) {
|
||||
@@ -29,38 +25,63 @@ public class AddPermissionFrame extends PageableFrame<String> {
|
||||
this.rank = rank;
|
||||
Set<String> rankPerms = rank.getPermissions();
|
||||
availablePermissions = Arrays.stream(Helper.fromPermissionArray()).filter(p -> !rankPerms.contains(p))
|
||||
.collect(Collectors.toList());
|
||||
paginator = new Paginator<>(getPageSize(), availablePermissions);
|
||||
.toArray(String[]::new);
|
||||
paginator = new Paginator(getSize() - 9, availablePermissions.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createComponents() {
|
||||
super.createComponents();
|
||||
List<SCComponent> list = new ListBuilder<>(getConfig(), "list", paginator.getCurrentElements())
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.add.permission.permission.title", p -> p)
|
||||
.withLoreKey("gui.add.permission.permission.lore")
|
||||
.withListener(ClickType.LEFT, this::addPermission, "simpleclans.leader.rank.permissions.add")
|
||||
.build();
|
||||
addAll(list);
|
||||
for (int slot = 0; slot < 9; slot++) {
|
||||
if (slot == 2 || slot == 6 || slot == 7)
|
||||
continue;
|
||||
add(Components.getPanelComponent(slot));
|
||||
}
|
||||
add(Components.getBackComponent(getParent(), 2, getViewer()));
|
||||
|
||||
add(Components.getPreviousPageComponent(6, this::previousPage, paginator, getViewer()));
|
||||
add(Components.getNextPageComponent(7, this::nextPage, paginator, getViewer()));
|
||||
|
||||
int slot = 9;
|
||||
for (int i = paginator.getMinIndex(); paginator.isValidIndex(i); i++) {
|
||||
|
||||
String permission = availablePermissions[i];
|
||||
|
||||
SCComponent c = new SCComponentImpl(
|
||||
lang("gui.add.permission.permission.title",getViewer(), permission),
|
||||
Collections.singletonList(lang("gui.add.permission.permission.lore",getViewer())),
|
||||
XMaterial.PAPER, slot);
|
||||
c.setListener(ClickType.LEFT, () -> InventoryController.runSubcommand(getViewer(),
|
||||
"rank permissions add", true, rank.getName(), permission));
|
||||
c.setPermission(ClickType.LEFT, "simpleclans.leader.rank.permissions.add");
|
||||
add(c);
|
||||
slot++;
|
||||
}
|
||||
}
|
||||
|
||||
private Runnable addPermission(String permission) {
|
||||
return () -> {
|
||||
availablePermissions.remove(permission);
|
||||
InventoryController.runSubcommand(getViewer(), "rank permissions add", true,
|
||||
rank.getName(), permission);
|
||||
};
|
||||
private void previousPage() {
|
||||
if (paginator.previousPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Paginator<String> getPaginator() {
|
||||
return paginator;
|
||||
private void nextPage() {
|
||||
if (paginator.nextPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateFrame() {
|
||||
InventoryDrawer.open(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getTitle() {
|
||||
return lang("gui.add.permission.title", getViewer());
|
||||
return lang("gui.add.permission.title",getViewer());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return 3 * 9;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.ui.frames;
|
||||
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.Clan;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
@@ -9,45 +10,79 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
|
||||
|
||||
public class AddRivalFrame extends PageableFrame<Clan> {
|
||||
public class AddRivalFrame extends SCFrame {
|
||||
|
||||
private final Paginator<Clan> paginator;
|
||||
private final List<Clan> notRivals;
|
||||
private final Paginator paginator;
|
||||
|
||||
public AddRivalFrame(SCFrame parent, Player viewer, Clan subject) {
|
||||
super(parent, viewer);
|
||||
SimpleClans plugin = SimpleClans.getInstance();
|
||||
List<Clan> notRivals = plugin.getClanManager().getClans().stream().filter(c -> !c.equals(subject) && !c.isRival(subject.getTag()) && !c.isAlly(subject.getTag())).collect(Collectors.toList());
|
||||
paginator = new Paginator<>(getPageSize(), notRivals);
|
||||
}
|
||||
public AddRivalFrame(SCFrame parent, Player viewer, Clan subject) {
|
||||
super(parent, viewer);
|
||||
SimpleClans plugin = SimpleClans.getInstance();
|
||||
notRivals = plugin.getClanManager().getClans().stream()
|
||||
.filter(c -> !c.equals(subject) && !c.isRival(subject.getTag()) && !c.isAlly(subject.getTag()))
|
||||
.collect(Collectors.toList());
|
||||
paginator = new Paginator(getSize() - 9, notRivals.size());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createComponents() {
|
||||
super.createComponents();
|
||||
List<SCComponent> list = new SCComponentImpl.ListBuilder<>(getConfig(), "list", paginator.getCurrentElements())
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.clanlist.clan.title", Clan::getColorTag, Clan::getName)
|
||||
.withLoreKey("gui.add.rival.clan.lore")
|
||||
.withListener(ClickType.LEFT, this::addRival, RankPermission.RIVAL_ADD)
|
||||
.withConfirmationRequired(ClickType.LEFT).build();
|
||||
addAll(list);
|
||||
}
|
||||
@Override
|
||||
public void createComponents() {
|
||||
for (int slot = 0; slot < 9; slot++) {
|
||||
if (slot == 2 || slot == 6 || slot == 7)
|
||||
continue;
|
||||
add(Components.getPanelComponent(slot));
|
||||
}
|
||||
add(Components.getBackComponent(getParent(), 2, getViewer()));
|
||||
|
||||
private Runnable addRival(Clan clan) {
|
||||
return () -> InventoryController.runSubcommand(getViewer(), "rival add", false, clan.getTag());
|
||||
}
|
||||
add(Components.getPreviousPageComponent(6, this::previousPage, paginator, getViewer()));
|
||||
add(Components.getNextPageComponent(7, this::nextPage, paginator, getViewer()));
|
||||
|
||||
@Override
|
||||
public Paginator<Clan> getPaginator() {
|
||||
return paginator;
|
||||
}
|
||||
int slot = 9;
|
||||
for (int i = paginator.getMinIndex(); paginator.isValidIndex(i); i++) {
|
||||
|
||||
@Override
|
||||
public @NotNull String getTitle() {
|
||||
return lang("gui.add.rival.title", getViewer());
|
||||
}
|
||||
Clan notRival = notRivals.get(i);
|
||||
SCComponent c = new SCComponentImpl(
|
||||
lang("gui.clanlist.clan.title",getViewer(), notRival.getColorTag(), notRival.getName()),
|
||||
Collections.singletonList(lang("gui.add.rival.clan.lore", getViewer())), XMaterial.RED_BANNER,
|
||||
slot);
|
||||
|
||||
c.setListener(ClickType.LEFT, () -> InventoryController.runSubcommand(getViewer(),
|
||||
"rival add", false, notRival.getTag()));
|
||||
c.setConfirmationRequired(ClickType.LEFT);
|
||||
c.setPermission(ClickType.LEFT, RankPermission.RIVAL_ADD);
|
||||
add(c);
|
||||
slot++;
|
||||
}
|
||||
}
|
||||
|
||||
private void previousPage() {
|
||||
if (paginator.previousPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void nextPage() {
|
||||
if (paginator.nextPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateFrame() {
|
||||
InventoryDrawer.open(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getTitle() {
|
||||
return lang("gui.add.rival.title",getViewer());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return 6 * 9;
|
||||
}
|
||||
}
|
||||
@@ -1,64 +1,94 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.ui.frames;
|
||||
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.Clan;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.Paginator;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
|
||||
|
||||
public class AlliesFrame extends PageableFrame<Clan> {
|
||||
private final Paginator<Clan> paginator;
|
||||
private final Clan subject;
|
||||
public class AlliesFrame extends SCFrame {
|
||||
private final SimpleClans plugin = SimpleClans.getInstance();
|
||||
private final Paginator paginator;
|
||||
private final List<String> allies;
|
||||
private final Clan subject;
|
||||
|
||||
public AlliesFrame(Player viewer, SCFrame parent, Clan subject) {
|
||||
super(parent, viewer);
|
||||
this.subject = subject;
|
||||
ClanManager manager = SimpleClans.getInstance().getClanManager();
|
||||
List<Clan> allies = subject.getAllies().stream().map(manager::getClan).filter(Objects::nonNull).collect(Collectors.toList());
|
||||
paginator = new Paginator<>(getPageSize(), allies);
|
||||
}
|
||||
public AlliesFrame(Player viewer, SCFrame parent, Clan subject) {
|
||||
super(parent, viewer);
|
||||
this.subject = subject;
|
||||
allies = subject.getAllies();
|
||||
paginator = new Paginator(getSize() - 9, allies.size());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createComponents() {
|
||||
super.createComponents();
|
||||
@Override
|
||||
public void createComponents() {
|
||||
for (int slot = 0; slot < 9; slot++) {
|
||||
if (slot == 2 || slot == 4 || slot == 6 || slot == 7)
|
||||
continue;
|
||||
add(Components.getPanelComponent(slot));
|
||||
}
|
||||
|
||||
SCComponent add = new SCComponentImpl.Builder(getConfig(), "add")
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.allies.add.title")
|
||||
.build();
|
||||
add.setVerifiedOnly(ClickType.LEFT);
|
||||
add.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new AddAllyFrame(this, getViewer(), subject)));
|
||||
add.setPermission(ClickType.LEFT, RankPermission.ALLY_ADD);
|
||||
add(add);
|
||||
add(Components.getBackComponent(getParent(), 2, getViewer()));
|
||||
|
||||
List<SCComponent> list = new SCComponentImpl.ListBuilder<>(getConfig(), "list", paginator.getCurrentElements())
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.clanlist.clan.title", Clan::getColorTag, Clan::getName)
|
||||
.withLoreKey("gui.allies.clan.lore")
|
||||
.withListener(ClickType.RIGHT, (clan) -> () -> InventoryController.runSubcommand(getViewer(),
|
||||
"ally remove", false, clan.getTag()), RankPermission.ALLY_REMOVE)
|
||||
.build();
|
||||
addAll(list);
|
||||
}
|
||||
SCComponent add = new SCComponentImpl(lang("gui.allies.add.title",getViewer()), null,
|
||||
XMaterial.CYAN_WOOL, 4);
|
||||
add.setVerifiedOnly(ClickType.LEFT);
|
||||
add.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new AddAllyFrame(this, getViewer(), subject)));
|
||||
add.setPermission(ClickType.LEFT, RankPermission.ALLY_ADD);
|
||||
add(add);
|
||||
|
||||
@Override
|
||||
public Paginator<Clan> getPaginator() {
|
||||
return paginator;
|
||||
}
|
||||
add(Components.getPreviousPageComponent(6, this::previousPage, paginator, getViewer()));
|
||||
add(Components.getNextPageComponent(7, this::nextPage, paginator, getViewer()));
|
||||
|
||||
@Override
|
||||
public @NotNull String getTitle() {
|
||||
return lang("gui.allies.title", getViewer());
|
||||
}
|
||||
int slot = 9;
|
||||
for (int i = paginator.getMinIndex(); paginator.isValidIndex(i); i++) {
|
||||
|
||||
Clan clan = plugin.getClanManager().getClan(allies.get(i));
|
||||
if (clan == null)
|
||||
continue;
|
||||
SCComponent c = new SCComponentImpl(
|
||||
lang("gui.clanlist.clan.title",getViewer(), clan.getColorTag(), clan.getName()),
|
||||
Collections.singletonList(lang("gui.allies.clan.lore",getViewer())), XMaterial.CYAN_BANNER, slot);
|
||||
c.setListener(ClickType.RIGHT, () -> InventoryController.runSubcommand(getViewer(),
|
||||
"ally remove", false, clan.getTag()));
|
||||
c.setPermission(ClickType.RIGHT, RankPermission.ALLY_REMOVE);
|
||||
add(c);
|
||||
slot++;
|
||||
}
|
||||
}
|
||||
|
||||
private void previousPage() {
|
||||
if (paginator.previousPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void nextPage() {
|
||||
if (paginator.nextPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateFrame() {
|
||||
InventoryDrawer.open(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getTitle() {
|
||||
return lang("gui.allies.title",getViewer());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return 6 * 9;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,7 +9,6 @@ import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.CurrencyFormat;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.VanishUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
@@ -143,7 +142,6 @@ public class ClanDetailsFrame extends SCFrame {
|
||||
50);
|
||||
disband.setListener(ClickType.DROP, () -> InventoryController.runSubcommand(getViewer(), "disband", false));
|
||||
disband.setPermission(ClickType.DROP, "simpleclans.leader.disband");
|
||||
disband.setConfirmationRequired(ClickType.LEFT);
|
||||
add(disband);
|
||||
}
|
||||
|
||||
@@ -166,7 +164,7 @@ public class ClanDetailsFrame extends SCFrame {
|
||||
List<String> lore = verified ? null : new ArrayList<>();
|
||||
if (!verified) {
|
||||
if (purchaseVerification) {
|
||||
lore.add(lang("gui.clandetails.verify.price.lore", getViewer(), CurrencyFormat.format(settings.getDouble(ECONOMY_VERIFICATION_PRICE))));
|
||||
lore.add(lang("gui.clandetails.verify.price.lore", getViewer(), settings.getDouble(ECONOMY_VERIFICATION_PRICE)));
|
||||
}
|
||||
lore.add(lang("gui.clandetails.not.verified.lore", getViewer()));
|
||||
}
|
||||
@@ -182,7 +180,7 @@ public class ClanDetailsFrame extends SCFrame {
|
||||
String withdrawStatus = clan.isAllowWithdraw() ? lang("allowed",getViewer()) : lang("blocked",getViewer());
|
||||
String depositStatus = clan.isAllowDeposit() ? lang("allowed", getViewer()) : lang("blocked", getViewer());
|
||||
SCComponent bank = new SCComponentImpl(lang("gui.clandetails.bank.title", getViewer()),
|
||||
Arrays.asList(lang("gui.clandetails.bank.balance.lore", getViewer(), clan.getBalanceFormatted()),
|
||||
Arrays.asList(lang("gui.clandetails.bank.balance.lore", getViewer(), clan.getBalance()),
|
||||
lang("gui.clandetails.bank.withdraw.status.lore", getViewer(), withdrawStatus),
|
||||
lang("gui.clandetails.bank.deposit.status.lore", getViewer(), depositStatus),
|
||||
lang("gui.clandetails.bank.withdraw.toggle.lore", getViewer()),
|
||||
@@ -247,7 +245,7 @@ public class ClanDetailsFrame extends SCFrame {
|
||||
}
|
||||
|
||||
List<String> lore = new ArrayList<>();
|
||||
if (price != 0) lore.add(lang("gui.clandetails.regroup.lore.price", getViewer(), CurrencyFormat.format(price)));
|
||||
if (price != 0) lore.add(lang("gui.clandetails.regroup.lore.price", getViewer(), price));
|
||||
lore.add(lang("gui.clandetails.regroup.lore.home", getViewer()));
|
||||
lore.add(lang("gui.clandetails.regroup.lore.me", getViewer()));
|
||||
|
||||
@@ -269,9 +267,9 @@ public class ClanDetailsFrame extends SCFrame {
|
||||
double setPrice = settings.is(ECONOMY_PURCHASE_HOME_TELEPORT_SET) ? settings.getDouble(ECONOMY_HOME_TELEPORT_SET_PRICE) : 0;
|
||||
|
||||
List<String> lore = new ArrayList<>();
|
||||
if (homePrice != 0) lore.add(lang("gui.clandetails.home.lore.teleport.price", getViewer(), CurrencyFormat.format(homePrice)));
|
||||
if (homePrice != 0) lore.add(lang("gui.clandetails.home.lore.teleport.price", getViewer(), homePrice));
|
||||
lore.add(lang("gui.clandetails.home.lore.teleport", getViewer()));
|
||||
if (setPrice != 0) lore.add(lang("gui.clandetails.home.lore.set.price", getViewer(), CurrencyFormat.format(setPrice)));
|
||||
if (setPrice != 0) lore.add(lang("gui.clandetails.home.lore.set.price", getViewer(), setPrice));
|
||||
lore.add(lang("gui.clandetails.home.lore.set", getViewer()));
|
||||
lore.add(lang("gui.clandetails.home.lore.clear", getViewer()));
|
||||
|
||||
|
||||
@@ -1,28 +1,31 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.ui.frames;
|
||||
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.Clan;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.PageableFrame;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.InventoryDrawer;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCComponent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCComponentImpl.ListBuilder;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCComponentImpl;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCFrame;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.KDRFormat;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.Paginator;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.RankingNumberResolver;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.SHOW_UNVERIFIED_ON_LIST;
|
||||
|
||||
public class ClanListFrame extends PageableFrame<Clan> {
|
||||
public class ClanListFrame extends SCFrame {
|
||||
private final List<Clan> clans;
|
||||
private final Paginator<Clan> paginator;
|
||||
private final Paginator paginator;
|
||||
private final RankingNumberResolver<Clan, BigDecimal> rankingResolver;
|
||||
|
||||
public ClanListFrame(SCFrame parent, Player viewer) {
|
||||
@@ -31,8 +34,8 @@ public class ClanListFrame extends PageableFrame<Clan> {
|
||||
SettingsManager sm = plugin.getSettingsManager();
|
||||
clans = plugin.getClanManager().getClans().stream()
|
||||
.filter(clan -> clan.isVerified() || sm.is(SHOW_UNVERIFIED_ON_LIST)).collect(Collectors.toList());
|
||||
paginator = new Paginator(getSize() - 9, clans);
|
||||
plugin.getClanManager().sortClansByKDR(clans);
|
||||
paginator = new Paginator<>(getPageSize(), clans);
|
||||
|
||||
rankingResolver = new RankingNumberResolver<>(clans, c -> KDRFormat.toBigDecimal(c.getTotalKDR()), false,
|
||||
sm.getRankingType());
|
||||
@@ -40,26 +43,57 @@ public class ClanListFrame extends PageableFrame<Clan> {
|
||||
|
||||
@Override
|
||||
public void createComponents() {
|
||||
super.createComponents();
|
||||
List<SCComponent> list = new ListBuilder<>(getConfig(), "list", paginator.getCurrentElements())
|
||||
.withItem(Clan::getBanner)
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.clanlist.clan.title", Clan::getColorTag, Clan::getName)
|
||||
.withLoreKey("gui.clanlist.clan.lore.position", rankingResolver::getRankingNumber)
|
||||
.withLoreKey("gui.clanlist.clan.lore.kdr", clan -> KDRFormat.format(clan.getTotalKDR()))
|
||||
.withLoreKey("gui.clanlist.clan.lore.members", clan -> clan.getMembers().size())
|
||||
.withLorePermission("simpleclans.anyone.list").build();
|
||||
addAll(list);
|
||||
for (int slot = 0; slot < 9; slot++) {
|
||||
if (slot == 2 || slot == 6 || slot == 7)
|
||||
continue;
|
||||
add(Components.getPanelComponent(slot));
|
||||
}
|
||||
add(Components.getBackComponent(getParent(), 2, getViewer()));
|
||||
|
||||
add(Components.getPreviousPageComponent(6, this::previousPage, paginator, getViewer()));
|
||||
add(Components.getNextPageComponent(7, this::nextPage, paginator, getViewer()));
|
||||
|
||||
int slot = 9;
|
||||
for (int i = paginator.getMinIndex(); paginator.isValidIndex(i); i++) {
|
||||
Clan clan = clans.get(i);
|
||||
ItemStack banner = clan.getBanner() != null ? clan.getBanner() : XMaterial.BLACK_BANNER.parseItem();
|
||||
SCComponent c = new SCComponentImpl(
|
||||
lang("gui.clanlist.clan.title", getViewer(), clan.getColorTag(), clan.getName()),
|
||||
Arrays.asList(lang("gui.clanlist.clan.lore.position", getViewer(),
|
||||
rankingResolver.getRankingNumber(clan)),
|
||||
lang("gui.clanlist.clan.lore.kdr", getViewer(), KDRFormat.format(clan.getTotalKDR())),
|
||||
lang("gui.clanlist.clan.lore.members", getViewer(), clan.getMembers().size())),
|
||||
banner, slot);
|
||||
c.setLorePermission("simpleclans.anyone.list");
|
||||
add(c);
|
||||
slot++;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Paginator<Clan> getPaginator() {
|
||||
return paginator;
|
||||
private void previousPage() {
|
||||
if (paginator.previousPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void nextPage() {
|
||||
if (paginator.nextPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateFrame() {
|
||||
InventoryDrawer.open(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getTitle() {
|
||||
return lang("gui.clanlist.title", getViewer(), clans.size());
|
||||
return lang("gui.clanlist.title",getViewer(), clans.size());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return 6 * 9;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,13 +6,15 @@ import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.Helper;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.KDRFormat;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.Paginator;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.VanishUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -119,7 +121,7 @@ public class Components {
|
||||
double price = pl.getSettingsManager().is(ECONOMY_PURCHASE_CLAN_CREATE) ? pl.getSettingsManager().getDouble(ECONOMY_CREATION_PRICE) : 0;
|
||||
lore = new ArrayList<>();
|
||||
if (price != 0) {
|
||||
lore.add(lang("gui.clandetails.free.agent.create.clan.price.lore", frame.getViewer(), CurrencyFormat.format(price)));
|
||||
lore.add(lang("gui.clandetails.free.agent.create.clan.price.lore", frame.getViewer(), price));
|
||||
}
|
||||
lore.add(lang("gui.clandetails.free.agent.create.clan.lore", frame.getViewer()));
|
||||
}
|
||||
@@ -148,7 +150,6 @@ public class Components {
|
||||
return c;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static SCComponent getBackComponent(@Nullable SCFrame parent, int slot, Player viewer) {
|
||||
SCComponent back = new SCComponentImpl(lang("gui.back.title", viewer), null,
|
||||
XMaterial.ARROW, slot);
|
||||
@@ -156,13 +157,11 @@ public class Components {
|
||||
return back;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static SCComponent getPanelComponent(int slot) {
|
||||
return new SCComponentImpl(" ", null, XMaterial.GRAY_STAINED_GLASS_PANE, slot);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static @NotNull SCComponent getPreviousPageComponent(int slot, @Nullable Runnable listener, @NotNull Paginator<?> paginator, @NotNull Player viewer) {
|
||||
public static @NotNull SCComponent getPreviousPageComponent(int slot, @Nullable Runnable listener, @NotNull Paginator paginator, @NotNull Player viewer) {
|
||||
if (!paginator.hasPreviousPage()) {
|
||||
return getPanelComponent(slot);
|
||||
}
|
||||
@@ -172,8 +171,7 @@ public class Components {
|
||||
return c;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static @NotNull SCComponent getNextPageComponent(int slot, @Nullable Runnable listener, @NotNull Paginator<?> paginator, @NotNull Player viewer) {
|
||||
public static @NotNull SCComponent getNextPageComponent(int slot, @Nullable Runnable listener, @NotNull Paginator paginator, @NotNull Player viewer) {
|
||||
if (!paginator.hasNextPage()) {
|
||||
return getPanelComponent(slot);
|
||||
}
|
||||
@@ -192,23 +190,18 @@ public class Components {
|
||||
});
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public static void setOwningPlayer(@NotNull ItemStack item, @NotNull OfflinePlayer player) {
|
||||
if (player.getName() == null) {
|
||||
SkullMeta itemMeta = (SkullMeta) item.getItemMeta();
|
||||
if (itemMeta == null) {
|
||||
return;
|
||||
}
|
||||
ItemMeta itemMeta = item.getItemMeta();
|
||||
if (itemMeta instanceof SkullMeta) {
|
||||
setOwningPlayer((SkullMeta) itemMeta, player);
|
||||
item.setItemMeta(itemMeta);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public static void setOwningPlayer(@NotNull SkullMeta skullMeta, @NotNull OfflinePlayer player) {
|
||||
try {
|
||||
skullMeta.setOwningPlayer(player);
|
||||
itemMeta.setOwningPlayer(player);
|
||||
} catch (NoSuchMethodError e) {
|
||||
skullMeta.setOwner(player.getName());
|
||||
itemMeta.setOwner(player.getName());
|
||||
}
|
||||
|
||||
item.setItemMeta(itemMeta);
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,13 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.ui.frames;
|
||||
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.Clan;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.InventoryDrawer;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCComponent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCComponentImpl;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCFrame;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.Paginator;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.VanishUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -13,63 +17,83 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
|
||||
|
||||
public class CoordsFrame extends PageableFrame<ClanPlayer> {
|
||||
public class CoordsFrame extends SCFrame {
|
||||
|
||||
private final List<ClanPlayer> allMembers;
|
||||
private final Paginator<ClanPlayer> paginator;
|
||||
private final List<ClanPlayer> allMembers;
|
||||
private final Paginator paginator;
|
||||
|
||||
public CoordsFrame(Player viewer, SCFrame parent, Clan subject) {
|
||||
super(parent, viewer);
|
||||
allMembers = VanishUtils.getNonVanished(getViewer(), subject);
|
||||
allMembers.sort((cp1, cp2) -> Boolean.compare(cp1.isLeader(), cp2.isLeader()));
|
||||
public CoordsFrame(Player viewer, SCFrame parent, Clan subject) {
|
||||
super(parent, viewer);
|
||||
allMembers = VanishUtils.getNonVanished(getViewer(), subject);
|
||||
allMembers.sort((cp1, cp2) -> Boolean.compare(cp1.isLeader(), cp2.isLeader()));
|
||||
|
||||
paginator = new Paginator<>(getPageSize(), allMembers);
|
||||
}
|
||||
paginator = new Paginator(getSize() - 9, allMembers);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createComponents() {
|
||||
super.createComponents();
|
||||
@Override
|
||||
public void createComponents() {
|
||||
for (int slot = 0; slot < 9; slot++) {
|
||||
if (slot == 2 || slot == 6 || slot == 7)
|
||||
continue;
|
||||
add(Components.getPanelComponent(slot));
|
||||
}
|
||||
|
||||
List<SCComponent> list = new SCComponentImpl.ListBuilder<>(getConfig(), "list", paginator.getCurrentElements())
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.playerdetails.player.title", ClanPlayer::getName)
|
||||
.withLoreKey("gui.coords.player.lore.distance", cp -> {
|
||||
Location cpLoc = Objects.requireNonNull(cp.toPlayer()).getLocation();
|
||||
return (int) Math.ceil(cpLoc.toVector().distance(getViewer().getLocation().toVector()));
|
||||
}).withLoreKey("gui.coords.player.lore.coords", this::getBlocks)
|
||||
.withLoreKey("gui.coords.player.lore.world", cp ->
|
||||
Objects.requireNonNull(cp.toPlayer()).getWorld().getName())
|
||||
.withOwningPlayer(ClanPlayer::toPlayer)
|
||||
.withListener(ClickType.LEFT, cp -> () -> {
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(cp.getUniqueId());
|
||||
InventoryDrawer.open(new PlayerDetailsFrame(getViewer(), this, offlinePlayer));
|
||||
}, RankPermission.COORDS).build();
|
||||
addAll(list);
|
||||
}
|
||||
add(Components.getBackComponent(getParent(), 2, getViewer()));
|
||||
|
||||
private int[] getBlocks(ClanPlayer cp) {
|
||||
int[] blocks = new int[3];
|
||||
Location location = Objects.requireNonNull(cp.toPlayer()).getLocation();
|
||||
blocks[0] = location.getBlockX();
|
||||
blocks[1] = location.getBlockY();
|
||||
blocks[2] = location.getBlockZ();
|
||||
return blocks;
|
||||
}
|
||||
add(Components.getPreviousPageComponent(6, this::previousPage, paginator, getViewer()));
|
||||
add(Components.getNextPageComponent(7, this::nextPage, paginator, getViewer()));
|
||||
int slot = 9;
|
||||
for (int i = paginator.getMinIndex(); paginator.isValidIndex(i); i++) {
|
||||
ClanPlayer cp = allMembers.get(i);
|
||||
Location cpLoc = Objects.requireNonNull(cp.toPlayer()).getLocation();
|
||||
int distance = (int) Math.ceil(cpLoc.toVector().distance(getViewer().getLocation().toVector()));
|
||||
|
||||
@Override
|
||||
public Paginator<ClanPlayer> getPaginator() {
|
||||
return paginator;
|
||||
}
|
||||
SCComponent c = new SCComponentImpl(lang("gui.playerdetails.player.title",getViewer(), cp.getName()),
|
||||
Arrays.asList(lang("gui.coords.player.lore.distance",getViewer(), distance),
|
||||
lang("gui.coords.player.lore.coords",getViewer(), cpLoc.getBlockX(),
|
||||
cpLoc.getBlockY(), cpLoc.getBlockZ()),
|
||||
lang("gui.coords.player.lore.world",getViewer(), Objects.requireNonNull(cpLoc.getWorld()).getName())),
|
||||
XMaterial.PLAYER_HEAD, slot);
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(cp.getUniqueId());
|
||||
Components.setOwningPlayer(c.getItem(), offlinePlayer);
|
||||
c.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new PlayerDetailsFrame(getViewer(), this, offlinePlayer)));
|
||||
c.setLorePermission(RankPermission.COORDS);
|
||||
add(c);
|
||||
slot++;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public String getTitle() {
|
||||
return lang("gui.coords.title", getViewer());
|
||||
}
|
||||
private void previousPage() {
|
||||
if (paginator.previousPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void nextPage() {
|
||||
if (paginator.nextPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateFrame() {
|
||||
InventoryDrawer.open(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public String getTitle() {
|
||||
return lang("gui.coords.title",getViewer());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return 6 * 9;
|
||||
}
|
||||
}
|
||||
@@ -1,20 +1,18 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.ui.frames;
|
||||
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.InventoryController;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.PageableFrame;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCComponentImpl.ListBuilder;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCFrame;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.CurrencyFormat;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.Paginator;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -22,53 +20,87 @@ import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.ECONOMY_INVITE_PRICE;
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.ECONOMY_PURCHASE_CLAN_INVITE;
|
||||
|
||||
public class InviteFrame extends PageableFrame<Player> {
|
||||
public class InviteFrame extends SCFrame {
|
||||
|
||||
private final Paginator<Player> paginator;
|
||||
private final SimpleClans plugin;
|
||||
private final Paginator paginator;
|
||||
private final SimpleClans plugin;
|
||||
private final List<Player> players;
|
||||
|
||||
public InviteFrame(SCFrame parent, Player viewer) {
|
||||
super(parent, viewer);
|
||||
this.plugin = SimpleClans.getInstance();
|
||||
ClanManager cm = plugin.getClanManager();
|
||||
List<Player> players = plugin.getServer().getOnlinePlayers().stream().filter(p -> cm.getClanPlayer(p) == null)
|
||||
.collect(Collectors.toList());
|
||||
paginator = new Paginator<>(getPageSize(), players);
|
||||
}
|
||||
public InviteFrame(SCFrame parent, Player viewer) {
|
||||
super(parent, viewer);
|
||||
this.plugin = SimpleClans.getInstance();
|
||||
ClanManager cm = plugin.getClanManager();
|
||||
players = plugin.getServer().getOnlinePlayers().stream().filter(p -> cm.getClanPlayer(p) == null)
|
||||
.collect(Collectors.toList());
|
||||
paginator = new Paginator(getSize() - 9, players.size());
|
||||
|
||||
@Override
|
||||
public void createComponents() {
|
||||
super.createComponents();
|
||||
SettingsManager settings = plugin.getSettingsManager();
|
||||
double price = settings.is(ECONOMY_PURCHASE_CLAN_INVITE) ? settings.getDouble(ECONOMY_INVITE_PRICE) : 0;
|
||||
}
|
||||
|
||||
ListBuilder<Player> builder = new ListBuilder<>(getConfig(), "list", paginator.getCurrentElements())
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.invite.player.title", Player::getName)
|
||||
.withOwningPlayer(p -> Bukkit.getOfflinePlayer(p.getUniqueId()))
|
||||
.withListener(ClickType.LEFT, this::invite, RankPermission.INVITE);
|
||||
@Override
|
||||
public void createComponents() {
|
||||
addHeader();
|
||||
|
||||
if (price != 0) {
|
||||
String formattedPrice = CurrencyFormat.format(price);
|
||||
builder.withLoreKey("gui.invite.player.price.lore", p -> formattedPrice);
|
||||
}
|
||||
builder.withLoreKey("gui.invite.player.lore")
|
||||
;
|
||||
int slot = 9;
|
||||
for (int i = paginator.getMinIndex(); paginator.isValidIndex(i); i++) {
|
||||
|
||||
}
|
||||
Player player = players.get(i);
|
||||
SCComponent c = createPlayerComponent(player, slot);
|
||||
add(c);
|
||||
slot++;
|
||||
}
|
||||
}
|
||||
|
||||
private Runnable invite(Player player) {
|
||||
return () -> InventoryController.runSubcommand(getViewer(), "invite", false, player.getName());
|
||||
}
|
||||
@NotNull
|
||||
private SCComponent createPlayerComponent(@NotNull Player player, int slot) {
|
||||
double price = plugin.getSettingsManager().is(ECONOMY_PURCHASE_CLAN_INVITE) ? plugin.getSettingsManager().getDouble(ECONOMY_INVITE_PRICE) : 0;
|
||||
List<String> lore = new ArrayList<>();
|
||||
if (price != 0) lore.add(lang("gui.invite.player.price.lore", getViewer(), price));
|
||||
lore.add(lang("gui.invite.player.lore", getViewer()));
|
||||
|
||||
@Override
|
||||
public Paginator<Player> getPaginator() {
|
||||
return paginator;
|
||||
}
|
||||
SCComponent c = new SCComponentImpl(
|
||||
lang("gui.invite.player.title", getViewer(), player.getName()), lore, XMaterial.PLAYER_HEAD, slot);
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(player.getUniqueId());
|
||||
Components.setOwningPlayer(c.getItem(), offlinePlayer);
|
||||
c.setListener(ClickType.LEFT, () -> InventoryController.runSubcommand(getViewer(), "invite", false, player.getName()));
|
||||
c.setPermission(ClickType.LEFT, RankPermission.INVITE);
|
||||
return c;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getTitle() {
|
||||
return lang("gui.invite.title", getViewer());
|
||||
}
|
||||
public void addHeader() {
|
||||
for (int slot = 0; slot < 9; slot++) {
|
||||
if (slot == 2 || slot == 6 || slot == 7)
|
||||
continue;
|
||||
add(Components.getPanelComponent(slot));
|
||||
}
|
||||
add(Components.getBackComponent(getParent(), 2, getViewer()));
|
||||
|
||||
add(Components.getPreviousPageComponent(6, this::previousPage, paginator, getViewer()));
|
||||
add(Components.getNextPageComponent(7, this::nextPage, paginator, getViewer()));
|
||||
}
|
||||
|
||||
private void previousPage() {
|
||||
if (paginator.previousPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void nextPage() {
|
||||
if (paginator.nextPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateFrame() {
|
||||
InventoryDrawer.open(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getTitle() {
|
||||
return lang("gui.invite.title",getViewer());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return 3 * 9;
|
||||
}
|
||||
}
|
||||
+66
-32
@@ -1,32 +1,38 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.ui.frames;
|
||||
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.language.LanguageResource;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.InventoryDrawer;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCComponent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCComponentImpl;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCFrame;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.Paginator;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
|
||||
|
||||
public class LanguageSelectorFrame extends PageableFrame<Locale> {
|
||||
public class LanguageSelectorFrame extends SCFrame {
|
||||
|
||||
private final ClanPlayer clanPlayer;
|
||||
private final SimpleClans plugin;
|
||||
private final Paginator<Locale> paginator;
|
||||
private final Paginator paginator;
|
||||
private final List<Locale> languages;
|
||||
|
||||
public LanguageSelectorFrame(@Nullable SCFrame parent, @NotNull Player viewer) {
|
||||
super(parent, viewer);
|
||||
plugin = SimpleClans.getInstance();
|
||||
clanPlayer = plugin.getClanManager().getCreateClanPlayer(viewer.getUniqueId());
|
||||
List<Locale> languages = LanguageResource.getAvailableLocales();
|
||||
paginator = new Paginator<>(getPageSize(), languages);
|
||||
languages = LanguageResource.getAvailableLocales();
|
||||
paginator = new Paginator(getSize() - 9, languages);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -39,37 +45,43 @@ public class LanguageSelectorFrame extends PageableFrame<Locale> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createComponents() {
|
||||
super.createComponents();
|
||||
List<SCComponent> list = new SCComponentImpl.ListBuilder<>(getConfig(), "list", paginator.getCurrentElements())
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.languageselector.language.title",
|
||||
loc -> loc.toLanguageTag().replace("-", "_"))
|
||||
.withLoreKey("gui.languageselector.language.lore.left.click")
|
||||
.withLoreKey("gui.languageselector.language.lore.translation.status", LanguageResource::getTranslationStatus)
|
||||
.withLoreLine(loc -> !loc.equals(Locale.ENGLISH)
|
||||
? lang("gui.languageselector.language.lore.right.click", getViewer()) : "")
|
||||
.withListener(ClickType.LEFT, this::setLocale, (String) null)
|
||||
.withListener(ClickType.RIGHT, this::translate, (String) null).build();
|
||||
addAll(list);
|
||||
|
||||
public int getSize() {
|
||||
return 3 * 9;
|
||||
}
|
||||
|
||||
private Runnable setLocale(Locale locale) {
|
||||
return () -> {
|
||||
@Override
|
||||
public void createComponents() {
|
||||
addHeader();
|
||||
int slot = 9;
|
||||
for (int i = paginator.getMinIndex(); paginator.isValidIndex(i); i++) {
|
||||
Locale locale = languages.get(i);
|
||||
addLanguage(slot, locale);
|
||||
slot++;
|
||||
}
|
||||
}
|
||||
|
||||
private void addLanguage(int slot, Locale locale) {
|
||||
SCComponent c = new SCComponentImpl.Builder(XMaterial.PAPER)
|
||||
.withDisplayName(lang("gui.languageselector.language.title", getViewer(), locale.toLanguageTag().replace("-", "_")))
|
||||
.withSlot(slot).withLore(
|
||||
Arrays.asList(lang("gui.languageselector.language.lore.left.click", getViewer()),
|
||||
lang("gui.languageselector.language.lore.translation.status", getViewer(),
|
||||
LanguageResource.getTranslationStatus(locale)),
|
||||
!locale.equals(Locale.ENGLISH) ?
|
||||
lang("gui.languageselector.language.lore.right.click", getViewer()) : ""))
|
||||
.build();
|
||||
c.setListener(ClickType.LEFT, () -> {
|
||||
clanPlayer.setLocale(locale);
|
||||
plugin.getStorageManager().updateClanPlayer(clanPlayer);
|
||||
InventoryDrawer.open(this);
|
||||
};
|
||||
}
|
||||
|
||||
private Runnable translate(Locale locale) {
|
||||
return () -> {
|
||||
if (!locale.equals(Locale.ENGLISH)) {
|
||||
});
|
||||
if (!locale.equals(Locale.ENGLISH)) {
|
||||
c.setListener(ClickType.RIGHT, () -> {
|
||||
getViewer().sendMessage(lang("click.to.help.translating", getViewer(), getCrowdinLink(locale)));
|
||||
getViewer().closeInventory();
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
add(c);
|
||||
}
|
||||
|
||||
private String getCrowdinLink(@NotNull Locale locale) {
|
||||
@@ -85,9 +97,31 @@ public class LanguageSelectorFrame extends PageableFrame<Locale> {
|
||||
return base + locale.toLanguageTag();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Paginator<Locale> getPaginator() {
|
||||
return paginator;
|
||||
public void addHeader() {
|
||||
for (int slot = 0; slot < 9; slot++) {
|
||||
if (slot == 2 || slot == 6 || slot == 7)
|
||||
continue;
|
||||
add(Components.getPanelComponent(slot));
|
||||
}
|
||||
add(Components.getBackComponent(getParent(), 2, getViewer()));
|
||||
|
||||
add(Components.getPreviousPageComponent(6, this::previousPage, paginator, getViewer()));
|
||||
add(Components.getNextPageComponent(7, this::nextPage, paginator, getViewer()));
|
||||
}
|
||||
|
||||
private void previousPage() {
|
||||
if (paginator.previousPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void nextPage() {
|
||||
if (paginator.nextPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateFrame() {
|
||||
InventoryDrawer.open(this);
|
||||
}
|
||||
}
|
||||
+55
-25
@@ -1,28 +1,30 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.ui.frames;
|
||||
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.InventoryDrawer;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.PageableFrame;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCComponent;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCComponentImpl.ListBuilder;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCComponentImpl;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.SCFrame;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.KDRFormat;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.Paginator;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.RankingNumberResolver;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
|
||||
|
||||
public class LeaderboardFrame extends PageableFrame<ClanPlayer> {
|
||||
public class LeaderboardFrame extends SCFrame {
|
||||
|
||||
private final Paginator<ClanPlayer> paginator;
|
||||
private final Paginator paginator;
|
||||
private final List<ClanPlayer> clanPlayers;
|
||||
private final RankingNumberResolver<ClanPlayer, BigDecimal> rankingResolver;
|
||||
|
||||
@@ -34,35 +36,58 @@ public class LeaderboardFrame extends PageableFrame<ClanPlayer> {
|
||||
|
||||
rankingResolver = new RankingNumberResolver<>(clanPlayers, c -> KDRFormat.toBigDecimal(c.getKDR()), false,
|
||||
plugin.getSettingsManager().getRankingType());
|
||||
paginator = new Paginator<>(getPageSize(), this.clanPlayers);
|
||||
paginator = new Paginator(getSize() - 9, this.clanPlayers);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createComponents() {
|
||||
super.createComponents();
|
||||
List<SCComponent> list = new ListBuilder<>(getConfig(), "list", paginator.getCurrentElements())
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.leaderboard.player.title", rankingResolver::getRankingNumber, ClanPlayer::getName)
|
||||
.withListener(ClickType.LEFT, this::openDetails, (String) null)
|
||||
.withLorePermission("simpleclans.anyone.leaderboard")
|
||||
.withLoreLine(cp ->
|
||||
cp.getClan() == null ? lang("gui.playerdetails.player.lore.noclan", getViewer())
|
||||
: lang("gui.playerdetails.player.lore.clan", getViewer()
|
||||
))
|
||||
.withLoreKey("gui.playerdetails.player.lore.kdr", cp -> KDRFormat.format(cp.getKDR()))
|
||||
.withLoreKey("gui.playerdetails.player.lore.last.seen", cp -> cp.getLastSeenString(getViewer()))
|
||||
.withOwningPlayer(cp -> Bukkit.getOfflinePlayer(cp.getUniqueId())).build();
|
||||
addAll(list);
|
||||
for (int slot = 0; slot < 9; slot++) {
|
||||
if (slot == 2 || slot == 6 || slot == 7)
|
||||
continue;
|
||||
add(Components.getPanelComponent(slot));
|
||||
}
|
||||
add(Components.getBackComponent(getParent(), 2, getViewer()));
|
||||
|
||||
add(Components.getPreviousPageComponent(6, this::previousPage, paginator, getViewer()));
|
||||
add(Components.getNextPageComponent(7, this::nextPage, paginator, getViewer()));
|
||||
|
||||
int slot = 9;
|
||||
for (int i = paginator.getMinIndex(); paginator.isValidIndex(i); i++) {
|
||||
ClanPlayer cp = clanPlayers.get(i);
|
||||
SCComponent c = new SCComponentImpl(
|
||||
lang("gui.leaderboard.player.title", getViewer(),
|
||||
rankingResolver.getRankingNumber(cp), cp.getName()),
|
||||
Arrays.asList(
|
||||
cp.getClan() == null ? lang("gui.playerdetails.player.lore.noclan", getViewer())
|
||||
: lang("gui.playerdetails.player.lore.clan", getViewer(),
|
||||
cp.getClan().getColorTag(), cp.getClan().getName()),
|
||||
lang("gui.playerdetails.player.lore.kdr", getViewer(), KDRFormat.format(cp.getKDR())),
|
||||
lang("gui.playerdetails.player.lore.last.seen", getViewer(), cp.getLastSeenString(getViewer()))),
|
||||
XMaterial.PLAYER_HEAD, slot);
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(cp.getUniqueId());
|
||||
Components.setOwningPlayer(c.getItem(), offlinePlayer);
|
||||
c.setListener(ClickType.LEFT,
|
||||
() -> InventoryDrawer.open(new PlayerDetailsFrame(getViewer(), this, offlinePlayer)));
|
||||
c.setLorePermission("simpleclans.anyone.leaderboard");
|
||||
add(c);
|
||||
slot++;
|
||||
}
|
||||
}
|
||||
|
||||
private Runnable openDetails(ClanPlayer cp) {
|
||||
return () -> InventoryDrawer.open(new PlayerDetailsFrame(getViewer(), this,
|
||||
Bukkit.getOfflinePlayer(cp.getUniqueId())));
|
||||
private void previousPage() {
|
||||
if (paginator.previousPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Paginator<ClanPlayer> getPaginator() {
|
||||
return paginator;
|
||||
private void nextPage() {
|
||||
if (paginator.nextPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateFrame() {
|
||||
InventoryDrawer.open(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -70,4 +95,9 @@ public class LeaderboardFrame extends PageableFrame<ClanPlayer> {
|
||||
return lang("gui.leaderboard.title", getViewer(), clanPlayers.size());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return 6 * 9;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,7 +4,6 @@ import com.cryptomorin.xseries.XMaterial;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.frames.staff.StaffFrame;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.CurrencyFormat;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -94,9 +93,8 @@ public class MainFrame extends SCFrame {
|
||||
|
||||
List<String> resetKdrLore;
|
||||
if (plugin.getSettingsManager().is(ECONOMY_PURCHASE_RESET_KDR)) {
|
||||
double price = plugin.getSettingsManager().getDouble(ECONOMY_RESET_KDR_PRICE);
|
||||
resetKdrLore = Arrays.asList(
|
||||
lang("gui.main.reset.kdr.lore.price", getViewer(), CurrencyFormat.format(price)),
|
||||
lang("gui.main.reset.kdr.lore.price", getViewer(), plugin.getSettingsManager().getString(ECONOMY_RESET_KDR_PRICE)),
|
||||
lang("gui.main.reset.kdr.lore", getViewer()));
|
||||
} else {
|
||||
resetKdrLore = Collections.singletonList(lang("gui.main.reset.kdr.lore", getViewer()));
|
||||
|
||||
+66
-40
@@ -1,5 +1,6 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.ui.frames;
|
||||
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.Rank;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.utils.Paginator;
|
||||
@@ -7,55 +8,80 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Collections;
|
||||
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
|
||||
|
||||
public class PermissionsFrame extends PageableFrame<String> {
|
||||
private final Rank rank;
|
||||
private final Paginator<String> paginator;
|
||||
public class PermissionsFrame extends SCFrame {
|
||||
private final Rank rank;
|
||||
private final Paginator paginator;
|
||||
private final String[] permissions;
|
||||
|
||||
public PermissionsFrame(SCFrame parent, Player viewer, Rank rank) {
|
||||
super(parent, viewer);
|
||||
this.rank = rank;
|
||||
paginator = new Paginator<>(getPageSize(), new ArrayList<>(rank.getPermissions()));
|
||||
}
|
||||
public PermissionsFrame(SCFrame parent, Player viewer, Rank rank) {
|
||||
super(parent, viewer);
|
||||
this.rank = rank;
|
||||
permissions = rank.getPermissions().toArray(new String[0]);
|
||||
paginator = new Paginator(getSize() - 9, permissions.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createComponents() {
|
||||
super.createComponents();
|
||||
@Override
|
||||
public void createComponents() {
|
||||
for (int slot = 0; slot < 9; slot++) {
|
||||
if (slot == 2 || slot == 4 || slot == 6 || slot == 7)
|
||||
continue;
|
||||
add(Components.getPanelComponent(slot));
|
||||
}
|
||||
|
||||
SCComponent add = new SCComponentImpl.Builder(getConfig(), "add")
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.permissions.add.title")
|
||||
.build();
|
||||
add.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new AddPermissionFrame(this, getViewer(), rank)));
|
||||
add.setPermission(ClickType.LEFT, "simpleclans.leader.rank.permissions.add");
|
||||
add(add);
|
||||
add(Components.getBackComponent(getParent(), 2, getViewer()));
|
||||
|
||||
List<SCComponent> list = new SCComponentImpl.ListBuilder<>(getConfig(), "list", paginator.getCurrentElements())
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.permissions.permission.title", p -> p)
|
||||
.withLoreKey("gui.permissions.permission.lore")
|
||||
.withListener(ClickType.RIGHT, this::removePermission, "simpleclans.leader.rank.permissions.remove")
|
||||
.build();
|
||||
addAll(list);
|
||||
}
|
||||
SCComponent add = new SCComponentImpl(lang("gui.permissions.add.title",getViewer()), null, XMaterial.WHITE_WOOL,
|
||||
4);
|
||||
add.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new AddPermissionFrame(this, getViewer(), rank)));
|
||||
add.setPermission(ClickType.LEFT, "simpleclans.leader.rank.permissions.add");
|
||||
add(add);
|
||||
|
||||
private Runnable removePermission(String permission) {
|
||||
return () -> InventoryController.runSubcommand(getViewer(),
|
||||
"rank permissions remove", true, rank.getName(), permission);
|
||||
}
|
||||
add(Components.getPreviousPageComponent(6, this::previousPage, paginator, getViewer()));
|
||||
add(Components.getNextPageComponent(7, this::nextPage, paginator, getViewer()));
|
||||
|
||||
@Override
|
||||
public Paginator<String> getPaginator() {
|
||||
return paginator;
|
||||
}
|
||||
int slot = 9;
|
||||
for (int i = paginator.getMinIndex(); paginator.isValidIndex(i); i++) {
|
||||
|
||||
@Override
|
||||
public @NotNull String getTitle() {
|
||||
return lang("gui.permissions.title", getViewer(), rank.getName());
|
||||
}
|
||||
String permission = permissions[i];
|
||||
|
||||
SCComponent c = new SCComponentImpl(lang("gui.permissions.permission.title",getViewer(), permission),
|
||||
Collections.singletonList(lang("gui.permissions.permission.lore",getViewer())), XMaterial.PAPER, slot);
|
||||
c.setListener(ClickType.RIGHT, () -> InventoryController.runSubcommand(getViewer(),
|
||||
"rank permissions remove", true, rank.getName(), permission));
|
||||
c.setPermission(ClickType.RIGHT, "simpleclans.leader.rank.permissions.remove");
|
||||
add(c);
|
||||
slot++;
|
||||
}
|
||||
}
|
||||
|
||||
private void previousPage() {
|
||||
if (paginator.previousPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void nextPage() {
|
||||
if (paginator.nextPage()) {
|
||||
updateFrame();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateFrame() {
|
||||
InventoryDrawer.open(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getTitle() {
|
||||
return lang("gui.permissions.title",getViewer(), rank.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return 3 * 9;
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -112,7 +112,7 @@ public class ClanDetailsFrame extends SCFrame {
|
||||
}
|
||||
|
||||
private void addBank() {
|
||||
List<String> lore = Collections.singletonList(lang("gui.clandetails.bank.balance.lore", getViewer(), clan.getBalanceFormatted()));
|
||||
List<String> lore = Collections.singletonList(lang("gui.clandetails.bank.balance.lore", getViewer(), clan.getBalance()));
|
||||
|
||||
SCComponent bank = new SCComponentImpl(lang("gui.clandetails.bank.title", getViewer()), lore, XMaterial.GOLD_INGOT, 40);
|
||||
add(bank);
|
||||
|
||||
+35
-19
@@ -1,8 +1,10 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.ui.frames.staff;
|
||||
|
||||
import com.cryptomorin.xseries.XMaterial;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.*;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ui.frames.Components;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -23,9 +25,20 @@ public class StaffFrame extends SCFrame {
|
||||
return lang("gui.staff.title", getViewer());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return 3 * 9;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createComponents() {
|
||||
super.createComponents();
|
||||
for (int slot = 0; slot < 9; slot++) {
|
||||
if (slot == 4)
|
||||
continue;
|
||||
add(Components.getPanelComponent(slot));
|
||||
}
|
||||
|
||||
add(Components.getBackComponent(getParent(), 4, getViewer()));
|
||||
addClans();
|
||||
addPlayers();
|
||||
addGlobalFf();
|
||||
@@ -33,11 +46,10 @@ public class StaffFrame extends SCFrame {
|
||||
}
|
||||
|
||||
private void addClans() {
|
||||
SCComponent clanList = new SCComponentImpl.Builder(getConfig(), "clans")
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.main.clan.list.title")
|
||||
.withLoreKey("gui.staff.clan.list.lore.left.click")
|
||||
.withLoreKey("gui.staff.clan.list.lore.right.click").build();
|
||||
SCComponent clanList = new SCComponentImpl.Builder(XMaterial.PURPLE_BANNER)
|
||||
.withDisplayName(lang("gui.main.clan.list.title", getViewer())).withSlot(9)
|
||||
.withLoreLine(lang("gui.staff.clan.list.lore.left.click", getViewer()))
|
||||
.withLoreLine(lang("gui.staff.clan.list.lore.right.click", getViewer())).build();
|
||||
clanList.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new ClanListFrame(this, getViewer(),
|
||||
Type.ALL, null)));
|
||||
clanList.setListener(ClickType.RIGHT, () -> InventoryDrawer.open(new ClanListFrame(this, getViewer(),
|
||||
@@ -46,19 +58,19 @@ public class StaffFrame extends SCFrame {
|
||||
}
|
||||
|
||||
private void addPlayers() {
|
||||
SCComponent players = new SCComponentImpl.Builder(getConfig(), "players")
|
||||
.withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.staff.player.list.title")
|
||||
.withLoreKey("gui.staff.player.list.lore.left.click")
|
||||
.withLoreKey("gui.staff.player.list.lore.right.click").build();
|
||||
SCComponent players = new SCComponentImpl.Builder(XMaterial.WHITE_BANNER)
|
||||
.withDisplayName(lang("gui.staff.player.list.title", getViewer())).withSlot(10)
|
||||
.withLoreLine(lang("gui.staff.player.list.lore.left.click", getViewer()))
|
||||
.withLoreLine(lang("gui.staff.player.list.lore.right.click", getViewer())).build();
|
||||
players.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new PlayerListFrame(getViewer(), this, false)));
|
||||
players.setListener(ClickType.RIGHT, () -> InventoryDrawer.open(new PlayerListFrame(getViewer(), this, true)));
|
||||
add(players);
|
||||
}
|
||||
|
||||
private void addReload() {
|
||||
SCComponent reload = new SCComponentImpl.Builder(getConfig(), "reload").withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.staff.reload.title").withLoreKey("gui.staff.reload.lore").build();
|
||||
SCComponent reload = new SCComponentImpl.Builder(XMaterial.SPAWNER)
|
||||
.withDisplayName(lang("gui.staff.reload.title", getViewer())).withSlot(17)
|
||||
.withLoreLine(lang("gui.staff.reload.lore", getViewer())).build();
|
||||
reload.setPermission(ClickType.LEFT, "simpleclans.admin.reload");
|
||||
reload.setConfirmationRequired(ClickType.LEFT);
|
||||
reload.setListener(ClickType.LEFT, () ->
|
||||
@@ -70,14 +82,18 @@ public class StaffFrame extends SCFrame {
|
||||
SettingsManager sm = SimpleClans.getInstance().getSettingsManager();
|
||||
boolean globalffAllowed = sm.is(GLOBAL_FRIENDLY_FIRE);
|
||||
String status = globalffAllowed ? lang("allowed", getViewer()) : lang("auto", getViewer());
|
||||
|
||||
SCComponent globalFf = new SCComponentImpl.Builder(getConfig(), "global_ff").withViewer(getViewer())
|
||||
.withDisplayNameKey("gui.staff.global.ff.title")
|
||||
.withLoreKey("gui.staff.global.ff.lore.status", status)
|
||||
.withLoreKey("gui.staff.global.ff.lore.toggle").build();
|
||||
SCComponent globalFf = new SCComponentImpl.Builder(XMaterial.DIAMOND_SWORD).withSlot(12)
|
||||
.withDisplayName(lang("gui.staff.global.ff.title", getViewer()))
|
||||
.withLoreLine(lang("gui.staff.global.ff.lore.status", getViewer(), status))
|
||||
.withLoreLine(lang("gui.staff.global.ff.lore.toggle", getViewer())).build();
|
||||
globalFf.setPermission(ClickType.LEFT, "simpleclans.mod.globalff");
|
||||
globalFf.setListener(ClickType.LEFT, () -> {
|
||||
String arg = globalffAllowed ? "auto" : "allow";
|
||||
String arg;
|
||||
if (globalffAllowed) {
|
||||
arg = "auto";
|
||||
} else {
|
||||
arg = "allow";
|
||||
}
|
||||
InventoryController.runSubcommand(getViewer(), "mod globalff", true, arg);
|
||||
});
|
||||
add(globalFf);
|
||||
|
||||
@@ -150,17 +150,16 @@ public class ChatUtils {
|
||||
}
|
||||
|
||||
public static void applyLastColorToFollowingLines(@NotNull List<String> lines) {
|
||||
if (lines.get(0).isEmpty() || lines.get(0).charAt(0) != COLOR_CHAR) {
|
||||
if (lines.get(0).length() == 0 || lines.get(0).charAt(0) != COLOR_CHAR) {
|
||||
lines.set(0, ChatColor.WHITE + lines.get(0));
|
||||
}
|
||||
for (int i = 1; i < lines.size(); i++) {
|
||||
final String pLine = lines.get(i - 1);
|
||||
final String subLine = lines.get(i);
|
||||
|
||||
if (subLine.isEmpty() || subLine.charAt(0) != COLOR_CHAR) {
|
||||
if (subLine.length() == 0 || subLine.charAt(0) != COLOR_CHAR) {
|
||||
lines.set(i, getLastColors(pLine) + subLine);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.utils;
|
||||
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
|
||||
|
||||
import java.text.NumberFormat;
|
||||
|
||||
public class CurrencyFormat {
|
||||
|
||||
private static final SimpleClans plugin = SimpleClans.getInstance();
|
||||
private static final NumberFormat fallbackFormat = NumberFormat.getCurrencyInstance();
|
||||
|
||||
public static String format(double value) {
|
||||
PermissionsManager permissionsManager = plugin.getPermissionsManager();
|
||||
if (permissionsManager.hasEconomy()) {
|
||||
return permissionsManager.format(value);
|
||||
}
|
||||
return fallbackFormat.format(value);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.utils;
|
||||
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
import static net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager.ConfigField.DATE_TIME_PATTERN;
|
||||
|
||||
public class DateFormat {
|
||||
|
||||
private static final SimpleClans plugin = SimpleClans.getInstance();
|
||||
private static SimpleDateFormat format;
|
||||
|
||||
static {
|
||||
String pattern = plugin.getSettingsManager().getString(DATE_TIME_PATTERN);
|
||||
try {
|
||||
format = new SimpleDateFormat(pattern);
|
||||
} catch (IllegalArgumentException ex) {
|
||||
plugin.getLogger().warning(String.format("%s is not a valid pattern!", (pattern)));
|
||||
format = new SimpleDateFormat("HH:mm - dd/MM/yyyy");
|
||||
}
|
||||
}
|
||||
|
||||
public static String formatDateTime(long date) {
|
||||
return format.format(new Date(date));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,21 +2,19 @@ package net.sacredlabyrinth.phaed.simpleclans.utils;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author RoinujNosde
|
||||
*
|
||||
*/
|
||||
public class Paginator<T> {
|
||||
public class Paginator {
|
||||
|
||||
private int currentPage;
|
||||
private final int sizePerPage;
|
||||
private int totalElements;
|
||||
private List<T> collection;
|
||||
private Collection<?> collection;
|
||||
|
||||
public Paginator(int sizePerPage, int totalElements) {
|
||||
if (sizePerPage < 1) {
|
||||
@@ -29,17 +27,12 @@ public class Paginator<T> {
|
||||
this.totalElements = totalElements;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public Paginator(int sizePerPage, @NotNull Collection<T> collection) {
|
||||
this(sizePerPage, new ArrayList<>(collection));
|
||||
}
|
||||
|
||||
public Paginator(int sizePerPage, @NotNull List<T> list) {
|
||||
public Paginator(int sizePerPage, @NotNull Collection<?> collection) {
|
||||
if (sizePerPage < 1) {
|
||||
throw new IllegalArgumentException("sizePerPage cannot be less than 1");
|
||||
}
|
||||
this.sizePerPage = sizePerPage;
|
||||
this.collection = list;
|
||||
this.collection = collection;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,21 +81,7 @@ public class Paginator<T> {
|
||||
public int getCurrentPage() {
|
||||
return currentPage;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return the elements in the current page
|
||||
*
|
||||
* @throws IllegalStateException if the underlining collection is null
|
||||
*/
|
||||
public @NotNull List<T> getCurrentElements() throws IllegalStateException {
|
||||
if (collection == null) {
|
||||
throw new IllegalStateException("the collection is null");
|
||||
}
|
||||
int maxIndex = Math.min(getMaxIndex(), collection.size());
|
||||
return collection.subList(getMinIndex(), maxIndex);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Increases the page number if there are elements to display
|
||||
*
|
||||
@@ -111,11 +90,11 @@ public class Paginator<T> {
|
||||
* </p>
|
||||
*/
|
||||
public boolean nextPage() {
|
||||
boolean hasNext = hasNextPage();
|
||||
if (hasNext) {
|
||||
currentPage++;
|
||||
if (!hasNextPage()) {
|
||||
return false;
|
||||
}
|
||||
return hasNext;
|
||||
currentPage++;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -133,11 +112,11 @@ public class Paginator<T> {
|
||||
* </p>
|
||||
*/
|
||||
public boolean previousPage() {
|
||||
boolean hasPrevious = hasPreviousPage();
|
||||
if (hasPrevious) {
|
||||
if (hasPreviousPage()) {
|
||||
currentPage--;
|
||||
return true;
|
||||
}
|
||||
return hasPrevious;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -47,7 +47,7 @@ public class UpdateChecker {
|
||||
connection.addRequestProperty("User-Agent", userAgent);
|
||||
InputStreamReader reader = new InputStreamReader(connection.getInputStream());
|
||||
|
||||
JsonElement parse = JsonParser.parseReader(reader);
|
||||
JsonElement parse = new JsonParser().parse(reader);
|
||||
if (parse.isJsonObject()) {
|
||||
String latestVersion = parse.getAsJsonObject().get("name").getAsString();
|
||||
|
||||
|
||||
@@ -1,167 +1,114 @@
|
||||
package net.sacredlabyrinth.phaed.simpleclans.uuid;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
|
||||
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||
import static java.util.Collections.singletonList;
|
||||
|
||||
/**
|
||||
* @author evilmidget38 (previous author)
|
||||
* @see <a href="http://forums.bukkit.org/threads/250926/">Bukkit Thread</a>
|
||||
* @see <a href="http://web.archive.org/web/20140909143249/https://gist.github.com/evilmidget38/26d70114b834f71fb3b4">Github Gist</a>
|
||||
* @author evilmidget38
|
||||
*
|
||||
* <a href="http://forums.bukkit.org/threads/250926/">...</a>
|
||||
*
|
||||
* <a href="https://gist.github.com/evilmidget38/26d70114b834f71fb3b4">...</a>
|
||||
*/
|
||||
public final class UUIDFetcher {
|
||||
private static final String PROFILE_URL = "https://api.minetools.eu/uuid/";
|
||||
private static final String FALLBACK_PROFILE_URL = "https://api.mojang.com/users/profiles/minecraft/";
|
||||
private static final int BATCH_SIZE = 100;
|
||||
private static final Gson gson = new Gson();
|
||||
public class UUIDFetcher implements Callable<Map<String, UUID>> {
|
||||
|
||||
private UUIDFetcher() {
|
||||
// Private constructor to prevent instantiation
|
||||
private static final double PROFILES_PER_REQUEST = 100;
|
||||
private static final String PROFILE_URL = "https://api.mojang.com/profiles/minecraft";
|
||||
private final Gson gson = new Gson();
|
||||
private final List<String> names;
|
||||
private final boolean rateLimiting;
|
||||
|
||||
public UUIDFetcher(List<String> names, boolean rateLimiting) {
|
||||
this.names = ImmutableList.copyOf(names);
|
||||
this.rateLimiting = rateLimiting;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches UUIDs for a list of ClanPlayer objects.
|
||||
* This method extracts the names from the ClanPlayer objects and fetches their corresponding UUIDs.
|
||||
*
|
||||
* @param clanPlayers A list of ClanPlayer objects for which to fetch UUIDs
|
||||
* @return A Map where the keys are player names and the values are their corresponding UUIDs
|
||||
* @throws InterruptedException If the operation is interrupted while waiting
|
||||
* @throws ExecutionException If the computation threw an exception
|
||||
*/
|
||||
public static Map<String, UUID> fetchUUIDsForClanPlayers(List<ClanPlayer> clanPlayers) throws InterruptedException, ExecutionException {
|
||||
List<String> names = clanPlayers.stream().map(ClanPlayer::getName).collect(Collectors.toList());
|
||||
return fetchUUIDsConcurrently(names);
|
||||
public UUIDFetcher(List<String> names) {
|
||||
this(names, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches the UUID for a single player name.
|
||||
* This method is a convenience wrapper around the batch UUID fetching process.
|
||||
*
|
||||
* @param name The name of the player whose UUID is to be fetched
|
||||
* @return The UUID of the specified player, or null if not found
|
||||
* @throws InterruptedException If the operation is interrupted while waiting
|
||||
* @throws ExecutionException If the computation threw an exception
|
||||
*/
|
||||
public static @Nullable UUID getUUIDOf(@NotNull String name) throws InterruptedException, ExecutionException {
|
||||
return fetchUUIDsConcurrently(singletonList(name)).get(name);
|
||||
private static void writeBody(HttpURLConnection connection, String body) throws IOException {
|
||||
OutputStream stream = connection.getOutputStream();
|
||||
stream.write(body.getBytes(UTF_8));
|
||||
stream.flush();
|
||||
stream.close();
|
||||
}
|
||||
|
||||
// Fetch UUIDs in batches with concurrency
|
||||
private static Map<String, UUID> fetchUUIDsConcurrently(List<String> names) throws InterruptedException, ExecutionException {
|
||||
Map<String, UUID> resultMap = new ConcurrentHashMap<>();
|
||||
ExecutorService executorService = Executors.newFixedThreadPool(10); // Thread pool for parallel execution
|
||||
List<Callable<Map<String, UUID>>> tasks = new ArrayList<>();
|
||||
|
||||
// Split the list of names into batches and create tasks
|
||||
for (int i = 0; i < names.size(); i += BATCH_SIZE) {
|
||||
List<String> batch = names.subList(i, Math.min(i + BATCH_SIZE, names.size()));
|
||||
tasks.add(createTask(batch));
|
||||
}
|
||||
|
||||
// Execute all tasks in parallel
|
||||
List<Future<Map<String, UUID>>> futures = executorService.invokeAll(tasks);
|
||||
|
||||
// Collect results from all batches
|
||||
for (Future<Map<String, UUID>> future : futures) {
|
||||
resultMap.putAll(future.get()); // Merge each batch result into the final result map
|
||||
}
|
||||
|
||||
// Shutdown the executor service
|
||||
executorService.shutdownNow();
|
||||
if (!executorService.awaitTermination(5, TimeUnit.SECONDS)) {
|
||||
SimpleClans.getInstance().getLogger().warning("Executor did not terminate in time.");
|
||||
}
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
// Create connection for each name
|
||||
private static HttpURLConnection createConnection(@NotNull URL url) throws IOException {
|
||||
private static HttpURLConnection createConnection() throws IOException {
|
||||
URL url = new URL(PROFILE_URL);
|
||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||
|
||||
connection.setRequestMethod("GET");
|
||||
connection.setRequestMethod("POST");
|
||||
connection.setRequestProperty("Content-Type", "application/json");
|
||||
connection.setUseCaches(false);
|
||||
connection.setDoInput(true);
|
||||
|
||||
connection.setDoOutput(true);
|
||||
return connection;
|
||||
}
|
||||
|
||||
// Get UUID by name
|
||||
private static @NotNull UUID getUUID(@NotNull String id) {
|
||||
private static UUID getUUID(String id) {
|
||||
return UUID.fromString(id.substring(0, 8) + "-" + id.substring(8, 12) + "-" + id.substring(12, 16) + "-" + id.substring(16, 20) + "-" + id.substring(20, 32));
|
||||
}
|
||||
|
||||
// Handle single batch of names
|
||||
private static Map<String, UUID> fetchUUIDsForBatch(List<String> batch) {
|
||||
Map<String, UUID> uuidMap = new HashMap<>();
|
||||
public static byte[] toBytes(UUID uuid) {
|
||||
ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[16]);
|
||||
byteBuffer.putLong(uuid.getMostSignificantBits());
|
||||
byteBuffer.putLong(uuid.getLeastSignificantBits());
|
||||
return byteBuffer.array();
|
||||
}
|
||||
|
||||
for (String name : batch) {
|
||||
uuidMap.computeIfAbsent(name, k -> {
|
||||
try {
|
||||
return tryFetchUUIDWithFallback(k);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
public static UUID fromBytes(byte[] array) {
|
||||
if (array.length != 16) {
|
||||
throw new IllegalArgumentException("Illegal byte array length: " + array.length);
|
||||
}
|
||||
ByteBuffer byteBuffer = ByteBuffer.wrap(array);
|
||||
long mostSignificant = byteBuffer.getLong();
|
||||
long leastSignificant = byteBuffer.getLong();
|
||||
return new UUID(mostSignificant, leastSignificant);
|
||||
}
|
||||
|
||||
public static UUID getUUIDOf(String name) throws IOException, InterruptedException {
|
||||
return new UUIDFetcher(Collections.singletonList(name)).call().get(name);
|
||||
}
|
||||
|
||||
public static UUID getUUIDOfThrottled(String name) throws IOException, InterruptedException {
|
||||
return new UUIDFetcher(Collections.singletonList(name), true).call().get(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, UUID> call() throws IOException, InterruptedException {
|
||||
Map<String, UUID> uuidMap = new HashMap<>();
|
||||
int requests = (int) Math.ceil(names.size() / PROFILES_PER_REQUEST);
|
||||
for (int i = 0; i < requests; i++) {
|
||||
HttpURLConnection connection = createConnection();
|
||||
List<String> namesToFetch = names.subList(i * 100, Math.min((i + 1) * 100, names.size()));
|
||||
String body = gson.toJson(namesToFetch);
|
||||
writeBody(connection, body);
|
||||
JsonArray array = gson.fromJson(new InputStreamReader(connection.getInputStream(), UTF_8), JsonArray.class);
|
||||
for (JsonElement profile : array) {
|
||||
JsonObject jsonProfile = profile.getAsJsonObject();
|
||||
String id = jsonProfile.get("id").getAsString();
|
||||
String name = jsonProfile.get("name").getAsString();
|
||||
UUID uuid = UUIDFetcher.getUUID(id);
|
||||
uuidMap.put(name, uuid);
|
||||
}
|
||||
if (rateLimiting && i != requests - 1) {
|
||||
Thread.sleep(10L);
|
||||
}
|
||||
}
|
||||
return uuidMap;
|
||||
}
|
||||
|
||||
private static @Nullable UUID tryFetchUUIDWithFallback(@NotNull String name) throws IOException {
|
||||
try {
|
||||
// Try the primary URL
|
||||
return fetchUUID(URI.create(PROFILE_URL + name).toURL());
|
||||
} catch (IOException e) {
|
||||
// If the primary URL fails, attempt the fallback URL
|
||||
SimpleClans.debug(String.format("Failed to fetch %s UUID by MineTools API. Trying to use Mojang API instead...", name));
|
||||
return fetchUUID(URI.create(FALLBACK_PROFILE_URL + name).toURL());
|
||||
}
|
||||
}
|
||||
|
||||
private static @Nullable UUID fetchUUID(@NotNull URL url) throws IOException {
|
||||
HttpURLConnection connection = createConnection(url);
|
||||
if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
|
||||
throw new IOException(String.format("Unexpected response code: %d. Response: %s",
|
||||
connection.getResponseCode(), connection.getResponseMessage()));
|
||||
}
|
||||
|
||||
JsonObject response = gson.fromJson(new InputStreamReader(connection.getInputStream(), UTF_8), JsonObject.class);
|
||||
|
||||
if (!response.has("id")) {
|
||||
return null;
|
||||
}
|
||||
|
||||
JsonElement id = response.get("id");
|
||||
JsonElement status = response.get("status");
|
||||
|
||||
if (id.isJsonNull() ||
|
||||
(response.has("status") && status.getAsString().equals("ERR"))) {
|
||||
throw new IOException(String.format("Invalid UUID: %s", id));
|
||||
}
|
||||
|
||||
return getUUID(id.getAsString());
|
||||
}
|
||||
|
||||
// Callable task for batch processing
|
||||
private static Callable<Map<String, UUID>> createTask(List<String> batch) {
|
||||
return () -> fetchUUIDsForBatch(batch);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,6 @@ public class UUIDMigration {
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static UUID getForcedPlayerUUID(String playerName) {
|
||||
Player player = Bukkit.getPlayerExact(playerName);
|
||||
|
||||
|
||||
@@ -56,13 +56,11 @@ settings:
|
||||
past-clans-limit: 10
|
||||
username-regex: '(\.|\*){0,1}[a-zA-Z0-9_$]{1,16}'
|
||||
tag-regex: ''
|
||||
date-time-pattern: 'HH:mm - dd/MM/yyyy'
|
||||
bungee-servers: []
|
||||
war-and-protection:
|
||||
war-enabled: false
|
||||
land-sharing: true
|
||||
protection-providers:
|
||||
- Landlord4Provider
|
||||
- WorldGuardProvider
|
||||
- WorldGuard6Provider
|
||||
- GriefPreventionProvider
|
||||
listeners:
|
||||
@@ -149,7 +147,6 @@ clan:
|
||||
max-description-length: 120
|
||||
min-description-length: 10
|
||||
max-members: 25
|
||||
unverified-max-members: 10
|
||||
confirmation-for-promote: false
|
||||
trust-members-by-default: false
|
||||
confirmation-for-demote: false
|
||||
@@ -169,7 +166,6 @@ clan:
|
||||
- treasurer:
|
||||
display-name: "&6Treasurer"
|
||||
permissions: [ bank.balance, bank.deposit, bank.withdraw ]
|
||||
default-rank: "recruit"
|
||||
|
||||
tasks:
|
||||
collect-upkeep:
|
||||
@@ -246,7 +242,6 @@ mysql:
|
||||
enable: false
|
||||
password: ''
|
||||
database: ''
|
||||
table_prefix: 'sc_'
|
||||
permissions:
|
||||
auto-group-groupname: false
|
||||
YourClanNameHere:
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
rows: 6
|
||||
components:
|
||||
list:
|
||||
enabled: true
|
||||
slots: [ 9, 10, 11, 12, 13, 14, 15, 16, 17,
|
||||
18, 19, 20, 21, 22, 23, 24, 25, 26,
|
||||
27, 28, 29, 30, 31, 32, 33, 34, 35,
|
||||
36, 37, 38, 39, 40, 41, 42, 43, 44,
|
||||
45, 46, 47, 48, 49, 50, 51, 52, 53 ]
|
||||
material: CYAN_BANNER
|
||||
next_page:
|
||||
enabled: true
|
||||
slot: 7
|
||||
material: STONE_BUTTON
|
||||
previous_page:
|
||||
enabled: true
|
||||
slot: 6
|
||||
material: STONE_BUTTON
|
||||
back:
|
||||
enabled: true
|
||||
slot: 2
|
||||
material: ARROW
|
||||
decorations:
|
||||
panels:
|
||||
enabled: true
|
||||
slots: [ 0, 1, 3, 4, 5, 8 ]
|
||||
material: GRAY_STAINED_GLASS_PANE
|
||||
@@ -1,24 +0,0 @@
|
||||
rows: 3
|
||||
components:
|
||||
list:
|
||||
enabled: true
|
||||
slots: [ 9, 10, 11, 12, 13, 14, 15, 16, 17,
|
||||
18, 19, 20, 21, 22, 23, 24, 25, 26 ]
|
||||
material: PAPER
|
||||
next_page:
|
||||
enabled: true
|
||||
slot: 7
|
||||
material: STONE_BUTTON
|
||||
previous_page:
|
||||
enabled: true
|
||||
slot: 6
|
||||
material: STONE_BUTTON
|
||||
back:
|
||||
enabled: true
|
||||
slot: 2
|
||||
material: ARROW
|
||||
decorations:
|
||||
panels:
|
||||
enabled: true
|
||||
slots: [ 0, 1, 3, 4, 5, 8 ]
|
||||
material: GRAY_STAINED_GLASS_PANE
|
||||
@@ -1,27 +0,0 @@
|
||||
rows: 6
|
||||
components:
|
||||
list:
|
||||
enabled: true
|
||||
slots: [ 9, 10, 11, 12, 13, 14, 15, 16, 17,
|
||||
18, 19, 20, 21, 22, 23, 24, 25, 26,
|
||||
27, 28, 29, 30, 31, 32, 33, 34, 35,
|
||||
36, 37, 38, 39, 40, 41, 42, 43, 44,
|
||||
45, 46, 47, 48, 49, 50, 51, 52, 53 ]
|
||||
material: RED_BANNER
|
||||
next_page:
|
||||
enabled: true
|
||||
slot: 7
|
||||
material: STONE_BUTTON
|
||||
previous_page:
|
||||
enabled: true
|
||||
slot: 6
|
||||
material: STONE_BUTTON
|
||||
back:
|
||||
enabled: true
|
||||
slot: 2
|
||||
material: ARROW
|
||||
decorations:
|
||||
panels:
|
||||
enabled: true
|
||||
slots: [ 0, 1, 3, 4, 5, 8 ]
|
||||
material: GRAY_STAINED_GLASS_PANE
|
||||
@@ -1,31 +0,0 @@
|
||||
rows: 6
|
||||
components:
|
||||
list:
|
||||
enabled: true
|
||||
slots: [ 9, 10, 11, 12, 13, 14, 15, 16, 17,
|
||||
18, 19, 20, 21, 22, 23, 24, 25, 26,
|
||||
27, 28, 29, 30, 31, 32, 33, 34, 35,
|
||||
36, 37, 38, 39, 40, 41, 42, 43, 44,
|
||||
45, 46, 47, 48, 49, 50, 51, 52, 53 ]
|
||||
material: CYAN_BANNER
|
||||
next_page:
|
||||
enabled: true
|
||||
slot: 7
|
||||
material: STONE_BUTTON
|
||||
previous_page:
|
||||
enabled: true
|
||||
slot: 6
|
||||
material: STONE_BUTTON
|
||||
back:
|
||||
enabled: true
|
||||
slot: 2
|
||||
material: ARROW
|
||||
add:
|
||||
enabled: true
|
||||
slot: 4
|
||||
material: CYAN_WOOL
|
||||
decorations:
|
||||
panels:
|
||||
enabled: true
|
||||
slots: [ 0, 1, 3, 5, 8 ]
|
||||
material: GRAY_STAINED_GLASS_PANE
|
||||
@@ -1,27 +0,0 @@
|
||||
rows: 6
|
||||
components:
|
||||
list:
|
||||
slots: [ 9, 10, 11, 12, 13, 14, 15, 16, 17,
|
||||
18, 19, 20, 21, 22, 23, 24, 25, 26,
|
||||
27, 28, 29, 30, 31, 32, 33, 34, 35,
|
||||
36, 37, 38, 39, 40, 41, 42, 43, 44,
|
||||
45, 46, 47, 48, 49, 50, 51, 52, 53 ]
|
||||
material: BLACK_BANNER
|
||||
enabled: true
|
||||
next_page:
|
||||
enabled: true
|
||||
slot: 7
|
||||
material: STONE_BUTTON
|
||||
previous_page:
|
||||
enabled: true
|
||||
slot: 6
|
||||
material: STONE_BUTTON
|
||||
back:
|
||||
enabled: true
|
||||
slot: 2
|
||||
material: ARROW
|
||||
decorations:
|
||||
panels:
|
||||
slots: [0, 1, 3, 4, 5, 8]
|
||||
enabled: true
|
||||
material: GRAY_STAINED_GLASS_PANE
|
||||
@@ -1,31 +0,0 @@
|
||||
rows: 6
|
||||
components:
|
||||
list:
|
||||
enabled: true
|
||||
slots: [ 9, 10, 11, 12, 13, 14, 15, 16, 17,
|
||||
18, 19, 20, 21, 22, 23, 24, 25, 26,
|
||||
27, 28, 29, 30, 31, 32, 33, 34, 35,
|
||||
36, 37, 38, 39, 40, 41, 42, 43, 44,
|
||||
45, 46, 47, 48, 49, 50, 51, 52, 53 ]
|
||||
material: PLAYER_HEAD
|
||||
next_page:
|
||||
enabled: true
|
||||
slot: 7
|
||||
material: STONE_BUTTON
|
||||
previous_page:
|
||||
enabled: true
|
||||
slot: 6
|
||||
material: STONE_BUTTON
|
||||
back:
|
||||
enabled: true
|
||||
slot: 2
|
||||
material: ARROW
|
||||
add:
|
||||
enabled: true
|
||||
slot: 4
|
||||
material: CYAN_WOOL
|
||||
decorations:
|
||||
panels:
|
||||
enabled: true
|
||||
slots: [ 0, 1, 3, 5, 8 ]
|
||||
material: GRAY_STAINED_GLASS_PANE
|
||||
@@ -1,28 +0,0 @@
|
||||
rows: 3
|
||||
components:
|
||||
list:
|
||||
enabled: true
|
||||
slots: [ 9, 10, 11, 12, 13, 14, 15, 16, 17,
|
||||
18, 19, 20, 21, 22, 23, 24, 25, 26 ]
|
||||
material: PLAYER_HEAD
|
||||
next_page:
|
||||
enabled: true
|
||||
slot: 7
|
||||
material: STONE_BUTTON
|
||||
previous_page:
|
||||
enabled: true
|
||||
slot: 6
|
||||
material: STONE_BUTTON
|
||||
back:
|
||||
enabled: true
|
||||
slot: 2
|
||||
material: ARROW
|
||||
add:
|
||||
enabled: true
|
||||
slot: 4
|
||||
material: CYAN_WOOL
|
||||
decorations:
|
||||
panels:
|
||||
enabled: true
|
||||
slots: [ 0, 1, 3, 5, 8 ]
|
||||
material: GRAY_STAINED_GLASS_PANE
|
||||
@@ -1,24 +0,0 @@
|
||||
rows: 3
|
||||
components:
|
||||
list:
|
||||
enabled: true
|
||||
slots: [ 9, 10, 11, 12, 13, 14, 15, 16, 17,
|
||||
18, 19, 20, 21, 22, 23, 24, 25, 26 ]
|
||||
material: PAPER
|
||||
next_page:
|
||||
enabled: true
|
||||
slot: 7
|
||||
material: STONE_BUTTON
|
||||
previous_page:
|
||||
enabled: true
|
||||
slot: 6
|
||||
material: STONE_BUTTON
|
||||
back:
|
||||
enabled: true
|
||||
slot: 2
|
||||
material: ARROW
|
||||
decorations:
|
||||
panels:
|
||||
enabled: true
|
||||
slots: [ 0, 1, 3, 4, 5, 8 ]
|
||||
material: GRAY_STAINED_GLASS_PANE
|
||||
@@ -1,27 +0,0 @@
|
||||
rows: 6
|
||||
components:
|
||||
list:
|
||||
enabled: true
|
||||
slots: [ 9, 10, 11, 12, 13, 14, 15, 16, 17,
|
||||
18, 19, 20, 21, 22, 23, 24, 25, 26,
|
||||
27, 28, 29, 30, 31, 32, 33, 34, 35,
|
||||
36, 37, 38, 39, 40, 41, 42, 43, 44,
|
||||
45, 46, 47, 48, 49, 50, 51, 52, 53 ]
|
||||
material: PLAYER_HEAD
|
||||
next_page:
|
||||
enabled: true
|
||||
slot: 7
|
||||
material: STONE_BUTTON
|
||||
previous_page:
|
||||
enabled: true
|
||||
slot: 6
|
||||
material: STONE_BUTTON
|
||||
back:
|
||||
enabled: true
|
||||
slot: 2
|
||||
material: ARROW
|
||||
decorations:
|
||||
panels:
|
||||
slots: [0, 1, 3, 4, 5, 8]
|
||||
enabled: true
|
||||
material: GRAY_STAINED_GLASS_PANE
|
||||
@@ -1,28 +0,0 @@
|
||||
rows: 3
|
||||
components:
|
||||
list:
|
||||
enabled: true
|
||||
slots: [ 9, 10, 11, 12, 13, 14, 15, 16, 17,
|
||||
18, 19, 20, 21, 22, 23, 24, 25, 26 ]
|
||||
material: PAPER
|
||||
next_page:
|
||||
enabled: true
|
||||
slot: 7
|
||||
material: STONE_BUTTON
|
||||
previous_page:
|
||||
enabled: true
|
||||
slot: 6
|
||||
material: STONE_BUTTON
|
||||
back:
|
||||
enabled: true
|
||||
slot: 2
|
||||
material: ARROW
|
||||
add:
|
||||
enabled: true
|
||||
slot: 4
|
||||
material: WHITE_WOOL
|
||||
decorations:
|
||||
panels:
|
||||
enabled: true
|
||||
slots: [ 0, 1, 3, 5, 8 ]
|
||||
material: GRAY_STAINED_GLASS_PANE
|
||||
@@ -1,27 +0,0 @@
|
||||
rows: 3
|
||||
components:
|
||||
decorations:
|
||||
panels:
|
||||
enabled: true
|
||||
slots: [ 0, 1, 2, 3, 5, 6, 7, 8 ]
|
||||
material: GRAY_STAINED_GLASS_PANE
|
||||
clans:
|
||||
enabled: true
|
||||
material: PURPLE_BANNER
|
||||
slot: 9
|
||||
players:
|
||||
enabled: true
|
||||
material: WHITE_BANNER
|
||||
slot: 10
|
||||
reload:
|
||||
enabled: true
|
||||
material: SPAWNER
|
||||
slot: 17
|
||||
global_ff:
|
||||
enabled: true
|
||||
material: DIAMOND_SWORD
|
||||
slot: 12
|
||||
back:
|
||||
enabled: true
|
||||
slot: 4
|
||||
material: ARROW
|
||||
@@ -94,8 +94,6 @@ help.command=help
|
||||
leave.command=leave
|
||||
join.command=join
|
||||
mute.command=mute
|
||||
tag.completion=[tag]
|
||||
name.completion=[name]
|
||||
acf-core.parameter.amount=amount
|
||||
acf-core.parameter.member=member
|
||||
acf-core.parameter.rank=rank
|
||||
@@ -418,7 +416,6 @@ inactive.0=Inactive: {0}
|
||||
clan.commands=clan commands
|
||||
you.can.only.modify.the.color.and.case.of.the.tag=You can only modify the color and case of the tag
|
||||
locale.has.been.changed=&cYour language has been changed
|
||||
locale.is.prohibited=&cLanguage selection on the server is prohibited.
|
||||
tag.changed.to.0=Tag changed to {0}
|
||||
0.tag.changed.to.1=&bSuccessfully changed {0}''s tag to {1}
|
||||
name.0=Name: {0}
|
||||
|
||||
@@ -42,7 +42,6 @@ unassign.command=إلغاء التعيين
|
||||
rival.command=منافس
|
||||
bb.command=الى اللقاء
|
||||
clear.command=امسح
|
||||
rename.command=أعادة التسمية
|
||||
toggle.command=تبديل
|
||||
tag.command=العلامة
|
||||
deposit.command=وديعة
|
||||
@@ -58,7 +57,7 @@ fee.command=الرسوم
|
||||
set.command=تعيين
|
||||
purge.command=الإزالة
|
||||
trust.command=موثوق به
|
||||
untrust.command=غير موثوق
|
||||
untrust.command=عدم الثقة
|
||||
admin.command=المسؤول
|
||||
mod.command=مشرف
|
||||
promote.command=ترقية
|
||||
@@ -78,28 +77,18 @@ regroup.command=إعادة تجميع
|
||||
me.command=لي
|
||||
tp.command=أنتقال
|
||||
place.command=مرتبة
|
||||
everyone.command=الجميع
|
||||
leave.command=المغادرة
|
||||
join.command=الانضمام
|
||||
mute.command=كتم
|
||||
acf-core.parameter.amount=القيمة
|
||||
acf-core.parameter.member=عضو
|
||||
acf-core.parameter.rank=الرتبة
|
||||
acf-core.parameter.leader=القائد
|
||||
acf-core.parameter.displayname=اسم العرض
|
||||
acf-core.parameter.permission=الصلاحيات
|
||||
acf-core.parameter.message=رسالة
|
||||
acf-core.parameter.tag=العلامة
|
||||
acf-core.parameter.name=الإسم
|
||||
acf-core.parameter.fee=الرسوم
|
||||
acf-core.parameter.description=الوصف
|
||||
acf-core.parameter.player=لاعب
|
||||
acf-core.parameter.clan=فريق
|
||||
acf-core.parameter.type=النوع
|
||||
alliances=إتحاد
|
||||
coords=الأحداثيات
|
||||
rivalries=المنافسات
|
||||
leader=القائد
|
||||
roster=القائمة
|
||||
stats=الحالة
|
||||
vitals=الحيوية
|
||||
|
||||
@@ -163,7 +163,6 @@ command.description.war.end=Заканчвае вайну
|
||||
command.description.resetkdr.everyone=Скідвае КДР усіх гульцоў
|
||||
command.description.resetkdr.player=Скідвае КДР гульца
|
||||
command.description.resetkdr=Скідвае ваш КДР
|
||||
command.description.alliances=Паказвае спіс усіх саюзных кланаў
|
||||
command.description.rank.permissions.add=Дае вызначанае права дадзенаму рангу
|
||||
command.description.rank.permissions.remove=Забірае вызначанае права ў дадзенага рангу
|
||||
home-set-menu=/{0} home set{1} - Усталяваць точку базы клана
|
||||
@@ -222,18 +221,6 @@ denied.demotion={0} адмовіў паніжэнне {1}. Рашэнне не
|
||||
membership.invitation={0} адмовіў запрашэнне ў клан
|
||||
joined.the.clan={0} далучыўся да клана
|
||||
signed.off.request.cancelled={0} выйшаў з сеткі. Запыт на {1} быў адмоўлены.
|
||||
clan.deletion={0} адмовіў выдаленне клана. Рашэнне не было прынята.
|
||||
has.been.disbanded=Клан {0} быў распушчаны
|
||||
denied.the.promotion={0} адмовіў павышэнне {1}. Рашэнне не было прынята.
|
||||
demoted.back.to.member={0} быў паніжаны назад да ўдзельніка
|
||||
peace.agreement.denied=Заключэнне міра з {0} было адмоўлена
|
||||
denied.to.make.peace={0} адмовіў у перамір'і з {1}
|
||||
broken.the.rivalry={0} прыпыніў варожасць з кланам {1}
|
||||
broken.the.rivalry.with={0} прыпыніў варожасць з кланам {1}
|
||||
the.alliance.was.denied=Саюз з {0} быў адмоўлены
|
||||
denied.an.alliance={0} адмовіў у саюзе з кланам {1}
|
||||
accepted.an.alliance={0} прыняў саюз з {1}
|
||||
created.an.alliance={0} заключыў саюз з {1}
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
player.not.a.member.of.any.clan=&cГулец не з'яўляецца ўдзельнікам ніякага клана
|
||||
not.a.member.of.any.clan=Вы не з'яўляецеся ўдзельнікам ніякага клана
|
||||
@@ -254,12 +241,12 @@ clan.wide.friendly.fire.blocked=Кланавы "агонь па сваім" за
|
||||
clan.wide.friendly.fire.is.allowed=Кланавы "агонь па сваім" дазволены
|
||||
you.are.the.only.member.online=Вы зараз адзіны ўдзельнік у сетцы
|
||||
your.clan.color.tag.cannot.be.longer.than.characters=&cКаляровы тэг вашага клана ня можа быць быць даўжэй за {0} сімвалы/аў
|
||||
clan.has.been.disbanded=Клан {0} быў распушчаны
|
||||
add=дадаць
|
||||
remove=прыбраць
|
||||
allow=дазволіць
|
||||
block=заблакаваць
|
||||
auto=аўта
|
||||
bb.days= дзён
|
||||
gui.allies.title=Саюзнікі
|
||||
gui.rivals.title=Супернікі
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
|
||||
@@ -303,6 +303,7 @@ has.joined={0} se připojil k {1}
|
||||
proposing.to.end.the.rivalry={0} navrhuje ukončit rivalitu s {1}
|
||||
proposing.an.alliance={0} navrhuje alianci s {1}
|
||||
inviting.you.to.join={0} Vás pozval(a), abyste se připojil(a) do {1}
|
||||
asking.for.the.deletion={0} žádá o odstranění klanu
|
||||
asking.for.the.promotion={0} žádá o povýšení {1}
|
||||
asking.for.the.demotion={0} žádá o degradaci {1}
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
@@ -329,6 +330,7 @@ you.have.already.voted=Již jsi hlasoval
|
||||
has.voted.to.deny={0} hlasoval pro zamítnutí
|
||||
view.next.page=Zadejte /{0} pro zobrazení další stránky.
|
||||
voted.to.accept={0} hlasoval pro přijetí
|
||||
bulletin.board.header={0}* {1}{2} nástěnka
|
||||
has.been.disbanded.rivalry.ended={0} byl rozpuštěn. Rivalie skončila.
|
||||
has.been.disbanded.alliance.ended={0} byl rozpuštěn. Aliance skončila.
|
||||
clan.disbanded=Klan byl rozpuštěn
|
||||
@@ -355,10 +357,16 @@ clan.wide.friendly.fire.blocked=V celém klanu byl zakázán friendly-fire
|
||||
clan.wide.friendly.fire.is.allowed=V celém klanu byl povolen friendly-fire
|
||||
you.are.the.only.member.online=Jste jediný člen online
|
||||
your.clan.color.tag.cannot.be.longer.than.characters=&cBarevný tag tvého klanu nemůže být delší než {0} znaků
|
||||
your.clan.tag.cannot.be.longer.than.characters=Barevný tag tvého klanu nemůže být delší než {0} znaků
|
||||
your.clan.tag.must.be.longer.than.characters=Tvůj klan musí být delší než {0} znaků
|
||||
your.tag.cannot.contain.the.following.colors=Tvůj tag nemůže obsahovat následující barvy\: {0}
|
||||
your.tag.cannot.contain.color.codes=Tvůj tag nemůže obsahovat barevné kódy
|
||||
you.cannot.set.colored.ranks=Nemůžeš nastavit barevné hodnosti
|
||||
your.clan.name.cannot.be.longer.than.characters=Název tvého klanu nemůže být delší než {0} znaků
|
||||
your.clan.name.must.be.longer.than.characters=Název tvého klanu musí být delší než {0} znaků
|
||||
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=Tag vašeho klanu může obsahovat jenom písmena, čísla a barevné kódy
|
||||
your.clan.name.cannot.contain.color.codes=Název vašeho klanu nemůže obsahovat barevné kódy
|
||||
that.tag.name.is.disallowed=Název značky je zakázán
|
||||
you.must.first.resign=Nejdříve musíte odstoupit od {0}
|
||||
clan.with.this.tag.already.exists=Klan s tímto názvem již existuje
|
||||
get.your.clan.verified.to.access.advanced.features=Pro přístup k pokročilým funkcím ověřte váš klan
|
||||
@@ -366,12 +374,6 @@ clan.created=Klan {0} vytvořen
|
||||
not.enough.leaders.online.to.vote.on.demotion=Není k dispozici dostatek vedoucích představitelů online aby mohli hlasovat o tomto snížení
|
||||
player.is.not.a.leader.of.your.clan=CHráč není členem žádného klanu
|
||||
clan.has.been.disbanded=Klan {0} byl rozpuštěn
|
||||
the.player.is.already.member.of.another.clan=§4Tento hrac uz je vudce jineho klanu.
|
||||
has.been.asked.to.join={0} byl nastaven na\: {1}
|
||||
you.cannot.kick.yourself=Nemůžete vyhodit sami sebe
|
||||
total.clans=Celkem klanů\:
|
||||
legend=Legendární\:
|
||||
kill.type.civilian=Způsob zabití\n\n
|
||||
clan.0=Klan\: {0}
|
||||
status.0=Status\: {0}
|
||||
rank.0=Hodnost\: {0}
|
||||
@@ -416,6 +418,7 @@ iron=železo
|
||||
the.clan.cannot.be.rivaled=Klan nemůže být soupeřem
|
||||
bboff=BB vypnuto
|
||||
bbon=BB zapnuto
|
||||
bb.days= dny
|
||||
gui.allies.title=Spojenci
|
||||
gui.rivals.title=Soupeř
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
description.command=beschreibung
|
||||
create.command=erstellen
|
||||
description.command=Deschreibung
|
||||
create.command=Erstellen
|
||||
delete.command=lösche
|
||||
rank.command=rang
|
||||
rank.command=Rang
|
||||
setdisplayname.command=setdisplayname
|
||||
setdefault.command=setdefault
|
||||
removedefault.command=removedefault
|
||||
permissions.command=berechtigung
|
||||
list.command=liste
|
||||
balance.command=guthaben
|
||||
permissions.command=Berechtigungen
|
||||
list.command=Liste
|
||||
balance.command=Guthaben
|
||||
list.order.asc=aufsteigend
|
||||
list.order.desc=absteigend
|
||||
list.type.name=Name
|
||||
list.type.kdr=kdr
|
||||
list.type.size=größe
|
||||
list.type.size=Größe
|
||||
list.type.founded=gegründet
|
||||
list.type.active=aktiv
|
||||
land.command=land
|
||||
break.command=abbauen
|
||||
land.command=Land
|
||||
break.command=Abbauen
|
||||
interact.command=interagieren
|
||||
place_block.command=place_block
|
||||
damage.command=schaden
|
||||
damage.command=Schaden
|
||||
interact_entity.command=interact_entity
|
||||
container.command=behälter
|
||||
container.command=Behälter
|
||||
confirm.command=bestätigen
|
||||
profile.command=profil
|
||||
roster.command=mitglieder
|
||||
profile.command=Profil
|
||||
roster.command=Mitglieder
|
||||
lookup.command=suchen
|
||||
leaderboard.command=rangliste
|
||||
alliances.command=allianzen
|
||||
@@ -33,7 +33,7 @@ vitals.command=vitale
|
||||
coords.command=koordinaten
|
||||
stats.command=stats
|
||||
ally.command=verbündeter
|
||||
add.command=hinzufügen
|
||||
add.command=anlegen
|
||||
remove.command=entfernen
|
||||
allow.command=zulassen
|
||||
block.command=blockieren
|
||||
@@ -43,12 +43,10 @@ assign.command=zuweisen
|
||||
unassign.command=aufheben
|
||||
rival.command=rivale
|
||||
bb.command=bb
|
||||
display.command=anzeigen
|
||||
clear.command=leeren
|
||||
modtag.command=modtag
|
||||
rename.command=umbenennen
|
||||
toggle.command=umschalten
|
||||
tag.command=markierung
|
||||
tag.command=markieren
|
||||
deposit.command=einzahlen
|
||||
all.command=alles
|
||||
withdraw.command=auszahlen
|
||||
@@ -62,7 +60,7 @@ fee.command=gebühr
|
||||
set.command=setzen
|
||||
purge.command=bereinigen
|
||||
trust.command=vertrauen
|
||||
untrust.command=vertrauen_entziehen
|
||||
untrust.command=vertrauen entziehen
|
||||
admin.command=admin
|
||||
mod.command=mod
|
||||
promote.command=befördern
|
||||
@@ -77,34 +75,34 @@ unban.command=unban
|
||||
reload.command=reload
|
||||
globalff.command=globalff
|
||||
kills.command=kills
|
||||
mostkilled.command=am_meisten_getötet
|
||||
mostkilled.command=am meisten getötet
|
||||
war.command=krieg
|
||||
start.command=start
|
||||
end.command=ende
|
||||
home.command=basis
|
||||
home.command=Basis
|
||||
regroup.command=regroup
|
||||
me.command=ich
|
||||
tp.command=tp
|
||||
setrank.command=setrank
|
||||
place.command=platzieren
|
||||
resetkdr.command=zurücksetzen_kdr
|
||||
resetkdr.command=zurücksetzen kdr
|
||||
everyone.command=jeder
|
||||
setbanner.command=setbanner
|
||||
help.command=hilfe
|
||||
leave.command=verlassen
|
||||
join.command=beitreten
|
||||
mute.command=stummschalten
|
||||
acf-core.parameter.amount=betrag
|
||||
acf-core.parameter.amount=Betrag\:
|
||||
acf-core.parameter.member=mitglieder
|
||||
acf-core.parameter.rank=rang
|
||||
acf-core.parameter.leader=anführer
|
||||
acf-core.parameter.displayname=angezeigter_name
|
||||
acf-core.parameter.rank=Rang
|
||||
acf-core.parameter.leader=anfuehrer
|
||||
acf-core.parameter.displayname=anzeigename
|
||||
acf-core.parameter.permission=berechtigung
|
||||
acf-core.parameter.message=nachricht
|
||||
acf-core.parameter.tag=markierung
|
||||
acf-core.parameter.tag=markieren
|
||||
acf-core.parameter.name=Name
|
||||
acf-core.parameter.fee=gebühr
|
||||
acf-core.parameter.description=beschreibung
|
||||
acf-core.parameter.description=Deschreibung
|
||||
acf-core.parameter.player=spieler
|
||||
acf-core.parameter.clan=clan
|
||||
acf-core.parameter.type=typ
|
||||
@@ -127,12 +125,12 @@ command.description.land.block.damage=Ermöglicht Clan-Mitgliedern, Schaden in I
|
||||
command.description.stats=Zeigt die Mitgliederstatistik deines Clans an
|
||||
command.description.rivalries=Zeigt alle Clan-Rivalitäten
|
||||
command.description.mostkilled=Am meisten getötete Spieler (Server-weit)
|
||||
command.description.kills=Anzahl deiner Tötungen oder eines anderen Spielers
|
||||
command.description.kills=Anzahl deiner Kills oder eines anderen Spielers
|
||||
command.description.lookup=Zeigt deine Informationen an
|
||||
command.description.lookup.other=Zeigt die Informationen eines anderen Spielers an
|
||||
command.description.leaderboard=Zeigt die Bestenliste
|
||||
command.description.roster.other=Listet die Mitglieder eines anderen Clans auf
|
||||
command.description.roster=Listet die Mitglieder deines Clans auf
|
||||
command.description.roster.other=Listet Mitglieder eines anderen Clans auf
|
||||
command.description.roster=Listet Mitglieder deines Clans auf
|
||||
command.description.profile.other=Zeigt das Profil eines anderen Clans
|
||||
command.description.profile=Zeigt das Profil deines Clans
|
||||
command.description.vitals=Zeigt die Vitalwerte deines Clans und deiner Verbündeten an
|
||||
@@ -157,12 +155,12 @@ command.description.unban=Entbannt einen Spieler von Clan-Befehlen
|
||||
command.description.regroup.me=Gruppiert deine Gildenmitglieder an deinen Standort
|
||||
command.description.regroup.home=Gruppiert deine Gildenmitglieder bei deiner Basis
|
||||
command.description.home.tp=Teleportiert dich zu deiner Clan Basis
|
||||
command.description.home.clear=Lösche die Basis deines Clans
|
||||
command.description.home.set=Lege die Basis deines Clans fest
|
||||
command.description.home.clear=Löscht die Basis deines Clans
|
||||
command.description.home.set=Legt die Basis deines Clans fest
|
||||
command.description.mod.home.set=Setzt die Basis eines Clans
|
||||
command.description.mod.home.tp=Teleportiert dich zur Clan Basis
|
||||
command.description.mod.home.tp=Teleportiert dich zu einer Clan Basis
|
||||
command.description.rival.remove=Entfernt einen Rivalen
|
||||
command.description.rival.add=Füge einen Rivalen hinzu
|
||||
command.description.rival.add=Fügt Rivalen hinzu
|
||||
command.description.ally.remove=Entfernt einen Verbündeten
|
||||
command.description.kick=Wirf ein Mitglied aus deinem Clan
|
||||
command.description.bb.display=Zeige das schwarze Brett deines Clans
|
||||
@@ -174,7 +172,7 @@ command.description.mod.bb.post=Schreibe eine Nachricht auf das schwarze Brett d
|
||||
command.description.place=Fügt einen Spieler dem Clan hinzu
|
||||
command.description.reload=Lädt das Plugin und die Konfiguration neu
|
||||
command.description.trust=Vertraue einem Clan-Mitglied
|
||||
command.description.untrust=Vertrauen eines Clan-Mitgliedes zurückziehen
|
||||
command.description.untrust=Vertrauen eines Clan-Mitglied zurückziehen
|
||||
command.description.resign=Verlasse deinen Clan
|
||||
command.description.help=Zeige die Hilfe an oder suche in ihr
|
||||
command.description.ally.add=Eine Allianz hinzufügen
|
||||
@@ -182,7 +180,7 @@ command.description.clan=Öffnet die GUI
|
||||
command.description.disband=Löse deinen Clan auf
|
||||
command.description.mod.disband=Löst einen Clan auf
|
||||
command.description.mod.kick=Verbanne ein Mitglied aus deinem Clan
|
||||
command.description.modtag.other=Ändert denn Tag eines Clans
|
||||
command.description.modtag.other=Ändert das Tag eines Clans
|
||||
command.description.modtag=Ändere deinen Clan-Tag
|
||||
command.description.purge=Löscht die Daten von Spieler
|
||||
command.description.setbanner=Setze den Banner deines Clans
|
||||
@@ -198,42 +196,38 @@ command.description.bank.withdraw.amount=Hebe einen bestimmten Betrag von deinem
|
||||
command.description.bank.admin.take=Nimmt einen Betrag an Geld von der Bank eines Clans
|
||||
command.description.bank.deposit.all=Überweise dein komplettes Geld auf das Konto deines Clans
|
||||
command.description.bank.deposit.amount=Überweise einen bestimmten Betrag auf das Konto deines Clans
|
||||
command.description.bank.admin.give=Gibt einen Betrag an Geld, an die Bank eines Clans
|
||||
command.description.bank.admin.set=Setzt einen Betrag an Geld, auf die Bank eines Clans
|
||||
command.description.war.start=Starte einen Krieg mit einem anderen Clan
|
||||
command.description.bank.admin.give=Gibt einen Betrag an Geld an die Bank eines Clans
|
||||
command.description.bank.admin.set=Setzt einen Betrag an Geld auf die Bank eines Clans
|
||||
command.description.war.start=Startet einen Krieg mit einem anderen Clan
|
||||
command.description.war.end=Beende einen Clankrieg
|
||||
command.description.resetkdr.everyone=Alle KDR zurücksetzen
|
||||
command.description.resetkdr.player=KDR eines Spielers zurücksetzen
|
||||
command.description.resetkdr=KDR zurücksetzen
|
||||
command.description.admin.demote=Degradiert jeden Anführer von jedem Clan
|
||||
command.description.demote=Degradiere einen Clanführer
|
||||
command.description.demote=Degradiere einen Calnführer
|
||||
command.description.admin.promote=Befördere jedes Mitglied von jedem Clan
|
||||
command.description.promote=Befördere ein Mitglied zum Anführer
|
||||
command.description.admin.permanent=Schalte den permanenten Status eines Verbündeten Clans um
|
||||
command.description.toggle.bb=Schaltet an, ob das Bulletinboard angezeigt werden soll, wenn du dich anmeldest
|
||||
command.description.toggle.invite=Schaltet um, ob Spieler dir eine Clan Einladung senden können
|
||||
command.description.toggle.invite=Schaltet um, ob Spieler dir eine Clan-einladungen senden können
|
||||
command.description.toggle.tag=Schaltet an, ob der Tag deines Clans neben deinem Namen angezeigt werden soll
|
||||
command.description.toggle.deposit=Schalte um, ob Einzahlungen auf deine Clan Bank erlaubt sind
|
||||
command.description.toggle.withdraw=Schaltet um, ob Auszahlungen für deine Clan Bank erlaubt sind
|
||||
command.description.toggle.fee=Schaltet um, ob die Clan Gebühr aktiviert ist
|
||||
command.description.toggle.deposit=Schalte um, ob Einzahlungen auf deinen Clan erlaubt sind
|
||||
command.description.toggle.withdraw=Schaltet um, ob Auszahlungen für deinen Clan erlaubt sind
|
||||
command.description.toggle.fee=Schaltet um, ob die Clan-Gebühr aktiviert ist
|
||||
command.description.alliances=Listet alle Gildenallianzen auf
|
||||
command.description.coords=Zeigt die Koordinaten der Mitglieder deines Clans an
|
||||
command.description.rank.assign=Einem Mitglied einen Rang zuweisen
|
||||
command.description.rank.unassign=Ein Mitglied von einem Rang entfernen
|
||||
command.description.rank.unassign=Ein Mitglied aus einem Rang entfernen
|
||||
command.description.rank.create=Erstellt einen Rang
|
||||
command.description.rank.delete=Lösche einen Rang
|
||||
command.description.rank.list=Liste die Ränge deines Clans auf
|
||||
command.description.rank.delete=Löscht einen Rang
|
||||
command.description.rank.list=Listet die Ränge deines Clans auf
|
||||
command.description.rank.setdisplayname=Legt den Anzeigenamen eines Rangs fest
|
||||
command.description.rank.setdefault=Legt den Standardrang fest
|
||||
command.description.rank.removedefault=Entfernt den Standardrang
|
||||
command.description.rank.permissions.available=Listet die verfügbaren Rangberechtigungen auf
|
||||
command.description.rank.permissions.available=Listet die verfügbaren Rangberechtigungen
|
||||
command.description.rank.permissions.rank=Listet die Berechtigungen eines Rangs auf
|
||||
command.description.rank.permissions.add=Fügt eine Berechtigung zu einem Rang hinzu
|
||||
command.description.rank.permissions.remove=Entfernt eine Berechtigung aus einem Rang
|
||||
command.description.rename=Benenne deinen Clan um
|
||||
command.description.mod.rename=Benenne einen Clan um
|
||||
command.description.locale=Stellt Deine Sprache ein
|
||||
command.description.mod.locale=Stellt die Sprache der Spieler ein
|
||||
home-menu=/{0} Home{1} - Teleportiert dich in die Clan Basis
|
||||
home-set-menu=/{0} Home set{1} - Setzt die Clan Basis
|
||||
home-clear-menu=/{0} Home clear{1} - Entfernt die Clan Basis
|
||||
@@ -252,15 +246,15 @@ rival=Rivale
|
||||
civilian=Zivilist
|
||||
neutral=Neutral
|
||||
ally=Verbündete(r)
|
||||
free.agent=Ohne Clan
|
||||
free.agent=Freier Agent
|
||||
days=tage
|
||||
rivals=Rivalen
|
||||
rivalries=rivalitäten
|
||||
online=Online
|
||||
player=Spieler
|
||||
seen=Gesehen
|
||||
leader=anführer
|
||||
roster=mitglieder
|
||||
leader=anfuehrer
|
||||
roster=Mitglieder
|
||||
trusted=Vertrauenswürdig
|
||||
untrusted=Nicht Vertrauenswürdig
|
||||
in.rank=im Rang
|
||||
@@ -275,7 +269,7 @@ vitals=vitale
|
||||
verified=Verifiziert
|
||||
unverified=Nicht verifiziert
|
||||
permanent=Permanent
|
||||
profile=profil
|
||||
profile=Profil
|
||||
civilian.abbreviation=Civ
|
||||
rank=Rang
|
||||
leaders=Anführer
|
||||
@@ -294,7 +288,6 @@ membership.invitation={0} hat die Einladung zur Mitgliedschaft abgelehnt
|
||||
joined.the.clan={0} ist dem Clan beigetreten
|
||||
signed.off.request.cancelled={0} hat sich abgemeldet. {1} Anfrage abgebrochen.
|
||||
clan.deletion={0} hat die Löschung des Clans abgelehnt. Konsens fehlgeschlagen.
|
||||
rename.refused={0} hat die Clan-Umbenennung abgelehnt. Einverständnis verweigert.
|
||||
has.been.disbanded=Clan {0} wurde aufgelöst
|
||||
denied.the.promotion={0} hat die Beförderung von {1}abgelehnt. Konsens fehlgeschlagen.
|
||||
demoted.back.to.member={0} wurde zum Mitglied degradiert
|
||||
@@ -310,17 +303,16 @@ has.joined={0} ist {1} beigetreten.
|
||||
proposing.to.end.the.rivalry={0} schlägt vor die Rivalität mit (Clan-name) zu beenden {1}
|
||||
proposing.an.alliance={0} schlägt vor ein Allianz mit {1} einzugehen
|
||||
inviting.you.to.join={0} lädt dich zum Beitritt ein {1}
|
||||
asking.for.the.deletion={0} fragt nach einer Löschung des Clans
|
||||
asking.for.the.promotion={0} fragt nach einer Beförderung für {1}
|
||||
asking.for.the.demotion={0} möchte, dass {1} degradiert wird
|
||||
asking.to.disband={0} fragt an, den Clan zu verlassen
|
||||
asking.to.rename={0} fragt an, den Clan umzubenennen zu {1}
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
request.message= \n &8[&8{0}&8] &b{1}\n %accept% &bor %deny%\n
|
||||
clickable.accept=&a&l[AKZEPTIEREN]
|
||||
clickable.deny=&c&l[ABLEHNEN]
|
||||
hover.click.to.accept=&aKlicken Sie hier, um zu akzeptieren
|
||||
hover.click.to.deny=&cKlicken Sie hier, um abzulehnen
|
||||
not.sufficient.money=Du hast nicht genügend Geld auf deinem Konto (du brauchst\: {0})
|
||||
not.sufficient.money=Du hast nicht genügend Geld auf deinem Konto $)
|
||||
account.has.been.debited=Ihr Konto wurde belastet {0}
|
||||
mysql.connection.successful=Verbindung hergestellt
|
||||
mysql.connection.failed=Verbindung fehlgeschlagen
|
||||
@@ -338,8 +330,7 @@ you.have.already.voted=Du hast bereits abgestimmt
|
||||
has.voted.to.deny={0} hat fürs verweigern gestimmt
|
||||
view.next.page=Gebe /{0} ein, um die nächste Seite anzuzeigen.
|
||||
voted.to.accept={0} hat fürs akzeptieren gestimmt
|
||||
bulletin.board.header=&8* &e{0} &fBekanntmachungsbrett
|
||||
bulletin.board.message={0}\: &f{1}
|
||||
bulletin.board.header={0}* {1}{2} schwarzes Brett
|
||||
has.been.disbanded.rivalry.ended={0} wurde aufgelöst. Rivalität beendet.
|
||||
has.been.disbanded.alliance.ended={0} wurde aufgelöst. Allianz beendet.
|
||||
clan.disbanded=Clan aufgelöst
|
||||
@@ -366,17 +357,16 @@ clan.wide.friendly.fire.blocked=Clanweiter Teambeschuss blockiert
|
||||
clan.wide.friendly.fire.is.allowed=Clanweiter Teambeschuss ist erlaubt
|
||||
you.are.the.only.member.online=Du bist das einzige Mitglied, dass online ist
|
||||
your.clan.color.tag.cannot.be.longer.than.characters=&cDer farbige Tag deines Clans darf nicht länger als {0} Zeichen sein
|
||||
your.clan.tag.cannot.be.longer.than.characters=&cDer Tag deines Clans kann nicht länger als {0} Buchstaben bzw. Zeichen lang sein
|
||||
your.clan.tag.must.be.longer.than.characters=&cDer Tag deines Clans muss länger als {0} Buchstaben bzw. Zeichen sein
|
||||
your.tag.cannot.contain.the.following.colors=&cDer Tag deines Clans kann die Farbe "{0}" nicht enthalten
|
||||
your.tag.doesnt.meet.the.requirements=&cDer Tag deines Clans erfüllt nicht die Anforderungen.
|
||||
your.tag.cannot.contain.color.codes=&cDer Tag deines Clans darf keine Farbcodes enthalten
|
||||
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=&cDer Tag deines Clans darf nur Buchstaben, Nummern und Farbcodes enthalten
|
||||
your.clan.tag.cannot.be.longer.than.characters=Dein Clan-Tag darf nicht länger als {0} Zeichen sein
|
||||
your.clan.tag.must.be.longer.than.characters=Dein Clan-Tag muss länger als {0} Zeichen sein
|
||||
your.tag.cannot.contain.the.following.colors=Der Tag darf die folgenden Farben nicht enthalten\: {0}
|
||||
your.tag.cannot.contain.color.codes=Dein Tag darf keine Farbcodes enthalten
|
||||
you.cannot.set.colored.ranks=Du kannst keine farbigen Ränge setzen
|
||||
your.clan.name.cannot.be.longer.than.characters=Dein Clan-Name darf nicht länger als {0} Zeichen sein
|
||||
your.clan.name.must.be.longer.than.characters=Der Name deines Clans muss länger als {0} Zeichen sein
|
||||
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=Der Clan-Tag darf nur Buchstaben, Zahlen und Farbcodes enthalten
|
||||
your.clan.name.cannot.contain.color.codes=Der Name deines Clans darf keine Farbcodes enthalten
|
||||
that.tag.name.is.disallowed=&cDieser Clan Tag ist verboten
|
||||
that.tag.name.is.disallowed=Dieser Tag-Name ist nicht erlaubt
|
||||
you.must.first.resign=Du musst zuerst aus {0} zurücktreten
|
||||
clan.with.this.tag.already.exists=Ein Clan mit diesem Tag ist bereits vorhanden
|
||||
get.your.clan.verified.to.access.advanced.features=Lass deinen Clan verifizieren, um auf erweiterte Funktionen zuzugreifen
|
||||
@@ -393,7 +383,7 @@ global.friendy.fire.is.now.managed.by.each.clan=Globales Friendy-fire wird nun v
|
||||
global.friendy.fire.is.already.being.managed.by.each.clan=Globales Friendy-fire wird bereits von jedem Clan verwaltet
|
||||
global.friendly.fire.is.set.to.allowed=Globales Friendy-fire ist erlaubt
|
||||
global.friendly.fire.is.already.being.allowed=Globales Friendy-fire ist bereits erlaubt
|
||||
the.player.doesn.t.not.have.the.permissions.to.join.clans=Der Spieler hat nicht die Berechtigungen, Clans beizutreten
|
||||
the.player.doesn.t.not.have.the.permissions.to.join.clans=Der Spieler hat nicht die Berechtigung, Clans beizutreten
|
||||
you.cannot.invite.yourself=Du kannst dich nicht einladen
|
||||
you.did.not.answer.in.time=Du hast nicht rechtzeitig geantwortet, abgebrochen...
|
||||
this.player.is.banned.from.using.clan.commands=Dieser Spieler ist von der Verwendung von Clan-Befehlen ausgeschlossen
|
||||
@@ -415,7 +405,6 @@ kdr.0=KDR\: {0}
|
||||
inactive.0=Inaktiv\: {0}
|
||||
clan.commands=clan Befehle
|
||||
you.can.only.modify.the.color.and.case.of.the.tag=Du kannst nur die Farbe und die Gros- / Kleinschreibung dieses Tags ändern
|
||||
locale.has.been.changed=&cDeine Sprache wurde geändert
|
||||
tag.changed.to.0=Tag geändert zu {0}
|
||||
0.tag.changed.to.1=&bErfolgreich den Tag von {0} zu {1} geändert
|
||||
name.0=Name\: {0}
|
||||
@@ -461,7 +450,7 @@ denied.war.end=Der Antrag von {0} um den Krieg zu beenden wurde von {1} abgelehn
|
||||
has.initiated.a.rivalry={0} hat eine Rivalität mit {1} initiiert
|
||||
start=start
|
||||
end=ende
|
||||
add=hinzufügen
|
||||
add=anlegen
|
||||
remove=entfernen
|
||||
allow=zulassen
|
||||
block=blockieren
|
||||
@@ -496,7 +485,7 @@ depositon=Einzahlung eingeschaltet
|
||||
depositoff=Einzahlung ausgeschaltet
|
||||
withdrawon=Auszahlung eingeschaltet
|
||||
withdrawoff=Auszahlung ausgeschaltet
|
||||
feeoff=Beitrag ausgeschaltet
|
||||
feeoff=Beitrag ausfeschaltet
|
||||
feeon=Beitrag eingeschaltet
|
||||
home.base.only.once=Basis kann nur einmal gesetzt werden
|
||||
now.at.homebase=Du bist jetzt in der Basis von {0}
|
||||
@@ -504,7 +493,6 @@ hombase.set=Clan Basis gesetzt\: {0}
|
||||
hombase.cleared=Clan Basis entfernt
|
||||
hombase.mod.set=Basis von {0} gesetzt\:
|
||||
hombase.not.set=Basis nicht gesetzt
|
||||
home.set.in.different.server=Home-base wurde auf einem anderen Server gesetzt
|
||||
rival.limit.reached=Du hast das Rivalitäten Limit erreicht. Du kannst nicht mit mehr Clans rivalieren.
|
||||
you.moved.teleport.cancelled=Du hast dich bewegt, Teleportation abgebrochen
|
||||
waiting.for.teleport.stand.still.for.0.seconds=Warte auf Teleportation, bleibe stehen für {0} Sekunden
|
||||
@@ -536,8 +524,6 @@ this.clan.has.reached.the.member.limit=&bDieser Clan hat das Mitgliederlimit err
|
||||
you.have.reseted.your.kdr=Du hast deine KDR zurückgesetzt
|
||||
you.have.reseted.0.kdr=Du hast die KDR von {0} zurückgesetzt
|
||||
you.have.reseted.kdr.of.all.players=Du hast die KDR von allen Spielern zurückgesetzt
|
||||
you.have.successfully.renamed.your.clan=&bDu hast deinen Clan erfolgreich zu {0} umbenannt
|
||||
you.have.successfully.renamed.the.clan=&bDu hast den Clan erfolgreich zu {0} umbenannt
|
||||
you.have.toggled.permanent.status=Sie haben den permanenten Status für {0} umgeschaltet
|
||||
permanent.status.enabled=Der permanente Status deines Clans wurde von {0} aktiviert
|
||||
permanent.status.disabled=Der permanente Status deines Clans wurde von {0} deaktiviert
|
||||
@@ -545,7 +531,6 @@ yes=Ja
|
||||
cancel=Abbrechen
|
||||
resign.confirmation=Bist du sicher dass du zurücktreten möchtest, {0}?
|
||||
disband.confirmation=Bist du sicher, dass du deinen Clan auflösen möchtest?
|
||||
resetkdr.confirmation=Willst du wirklich deine KDR zurücksetzen
|
||||
resign.success=Du bist erfolgreich aus deinem Clan ausgetreten
|
||||
you.cannot.demote.the.last.leader=Du kannst den letzten Anführer nicht degradieren
|
||||
you.cannot.move.the.last.leader=Du kannst den letzten Anführer nicht versetzen
|
||||
@@ -558,7 +543,7 @@ bb.minutes= Minuten
|
||||
bb.one.minute=1 Minute
|
||||
bb.hours= Stunden
|
||||
bb.one.hour=1 Stunde
|
||||
bb.days= \ tage
|
||||
bb.days= tage
|
||||
bb.one.day=1 Tag
|
||||
the.fee.is.0.and.its.current.value.is.1=Die Clangebühr ist {0} und hat einen aktuellen Betrag von {1} $
|
||||
fee.enabled=aktiviert
|
||||
@@ -596,11 +581,9 @@ deposit.not.allowed=Überweisung ist nicht erlaubt. Benutze /%clan %toggle %depo
|
||||
withdraw.not.allowed=Abbuchen ist nicht erlaubt. Benutze /%clan %toggle %withdraw um das Abbuchen zu erlauben
|
||||
resign.request.cancelled=Rücktrittsanfrage abgebrochen
|
||||
disband.request.cancelled=Rücktrittsanfrage abgebrochen
|
||||
resetkdr.request.cancelled=KDR-Zurücksetzungsanfrage abgebrochen
|
||||
clan.create.request.cancelled=Clanerstellung abgebrochen
|
||||
rank.create.request.cancelled=Rangerstellung abgebrochen
|
||||
promotion.vote.has.been.requested.from.all.leaders=Das Wählen der Beförderung wurde von allen Anführern angefordert
|
||||
rename.vote.has.been.requested.from.all.leaders=&bAbstimmung über Umbenennung wurde von allen Clan-Leadern angefragt
|
||||
allowed=erlaubt
|
||||
blocked=blockiert
|
||||
chat.joined=beigetreten
|
||||
@@ -721,7 +704,7 @@ gui.clandetails.roster.lore=&7Linksklick, um die Mitglieder deines Clans zu sehe
|
||||
gui.staffclandetails.roster.lore=&7Linksklick, um die Mitglieder des Clans zu sehen
|
||||
gui.clandetails.coords.title=&fKoordinaten
|
||||
gui.clandetails.coords.lore=&7Linksklick, um die Koordinaten der Mitglieder deines Clans zu sehen
|
||||
gui.clandetails.home.title=&fBasis
|
||||
gui.clandetails.home.title=&fHaus
|
||||
gui.clandetails.home.lore.teleport.price=&7Teleport-Preis\: &b{0}
|
||||
gui.clandetails.home.lore.teleport=&7Linksklick um zu deiner Clan Basis zu kommen
|
||||
gui.staffclandetails.home.lore.teleport=&7Linksklick um dich zur Basis deines Clans zu teleportieren
|
||||
|
||||
@@ -2,17 +2,17 @@ description.command=description
|
||||
create.command=create
|
||||
delete.command=eliminar
|
||||
rank.command=rank
|
||||
setdisplayname.command=setdisplayname
|
||||
setdefault.command=setdefault
|
||||
removedefault.command=removedefault
|
||||
permissions.command=permissions
|
||||
setdisplayname.command=establecer nombre de visualización
|
||||
setdefault.command=establecer predeterminado
|
||||
removedefault.command=eliminar predeterminado
|
||||
permissions.command=permisos
|
||||
list.command=list
|
||||
balance.command=balance
|
||||
balance.command=Saldo
|
||||
list.order.asc=asc
|
||||
list.order.desc=desc
|
||||
list.type.name=name
|
||||
list.type.name=nombre
|
||||
list.type.kdr=kdr
|
||||
list.type.size=size
|
||||
list.type.size=tamaño
|
||||
list.type.founded=fundado
|
||||
list.type.active=activo
|
||||
land.command=terreno
|
||||
@@ -43,10 +43,8 @@ assign.command=asignar
|
||||
unassign.command=desasignar
|
||||
rival.command=rival
|
||||
bb.command=bb
|
||||
display.command=mostrar
|
||||
clear.command=limpiar
|
||||
modtag.command=modtag
|
||||
rename.command=renombrar
|
||||
toggle.command=toggle
|
||||
tag.command=etiqueta
|
||||
deposit.command=deposito
|
||||
@@ -99,10 +97,10 @@ acf-core.parameter.member=miembro
|
||||
acf-core.parameter.rank=rank
|
||||
acf-core.parameter.leader=lider
|
||||
acf-core.parameter.displayname=nombre para mostrar
|
||||
acf-core.parameter.permission=permissions
|
||||
acf-core.parameter.permission=permisos
|
||||
acf-core.parameter.message=mensaje
|
||||
acf-core.parameter.tag=etiqueta
|
||||
acf-core.parameter.name=name
|
||||
acf-core.parameter.name=nombre
|
||||
acf-core.parameter.fee=fee
|
||||
acf-core.parameter.description=description
|
||||
acf-core.parameter.player=jugador
|
||||
@@ -230,10 +228,6 @@ command.description.rank.permissions.available=&7Muestra los permisos de rango d
|
||||
command.description.rank.permissions.rank=&7Muestra los permisos de un rango.
|
||||
command.description.rank.permissions.add=&7Agrega un permiso a un rango.
|
||||
command.description.rank.permissions.remove=&7Elimina un permiso de un rango.
|
||||
command.description.rename=Renombrar tu clan
|
||||
command.description.mod.rename=Renombrar a un clan
|
||||
command.description.locale=Elige el idioma
|
||||
command.description.mod.locale=Elige el idioma del jugador
|
||||
home-menu=/{0} home{1} - Telertransportate a la casa del clan
|
||||
home-set-menu=/{0} home set{1} - Fija la casa del clan
|
||||
home-clear-menu=/{0} home clear{1} - Remueve la casa del clan
|
||||
@@ -294,7 +288,6 @@ membership.invitation={0} ha denegado la invitacion a miembro
|
||||
joined.the.clan={0} se ha unido al clan
|
||||
signed.off.request.cancelled={0} ha terminado. {1} pedido cancelado.
|
||||
clan.deletion={0} denego la eliminacion del clan. Consenso fallido.
|
||||
rename.refused={0} a rechazado el cambio de nombre. Error.
|
||||
has.been.disbanded=El clan {0} ha sido disuelto
|
||||
denied.the.promotion={0} denego promover a {1}. Consenso fallido.
|
||||
demoted.back.to.member={0} ha sido degradado a miembro
|
||||
@@ -310,10 +303,9 @@ has.joined={0} se ha unido a {1}
|
||||
proposing.to.end.the.rivalry={0} propone terminar la rivalidad con {1}
|
||||
proposing.an.alliance={0} propone una alianza con {1}
|
||||
inviting.you.to.join={0} te esta invitando unirte a {1}
|
||||
asking.for.the.deletion={0} esta solicitando la eliminacion del clan
|
||||
asking.for.the.promotion={0} esta solicitando promover a {1}
|
||||
asking.for.the.demotion={0} esta solicitando degradar a {1}
|
||||
asking.to.disband={0} esta preguntando sobre eliminar el clan
|
||||
asking.to.rename={0} esta preguntando para renombrar el clan a {1}
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
request.message= \n [{0}] &c{1}&7\n &a%accept% &7o &c%deny%\n
|
||||
clickable.accept=&a[ACEPTAR]
|
||||
@@ -338,8 +330,7 @@ you.have.already.voted=Ya has votado
|
||||
has.voted.to.deny={0} ha votado denegar
|
||||
view.next.page=Escribe /{0} para ver la pagina siguiente.
|
||||
voted.to.accept={0} ha votado aceptar
|
||||
bulletin.board.header=&8* &e{0} &fbulletin board
|
||||
bulletin.board.message={0}\: &f{1}
|
||||
bulletin.board.header={0}* {1}{2} tablon de anuncios
|
||||
has.been.disbanded.rivalry.ended={0} ha sido disuelto. La rivalidad ha finalizado.
|
||||
has.been.disbanded.alliance.ended={0} ha sido disuelto. La alianza ha finalizado.
|
||||
clan.disbanded=Clan Disuelto
|
||||
@@ -366,17 +357,16 @@ clan.wide.friendly.fire.blocked=Fuego amigo para todo el clan bloqueado
|
||||
clan.wide.friendly.fire.is.allowed=Fuego amigo para todo el clan permitido
|
||||
you.are.the.only.member.online=Eres el unico miembro conectados
|
||||
your.clan.color.tag.cannot.be.longer.than.characters=&8(&cClan&8)&7 La etiqueta de color de tu clan no puede ser más larga que &c{0}&7 caracteres.
|
||||
your.clan.tag.cannot.be.longer.than.characters=&El tag de tu clan no puede ser mas largo que {0} caracteres
|
||||
your.clan.tag.must.be.longer.than.characters=&cEl tag de tu clan debe ser mas largo que {0} caracteres
|
||||
your.tag.cannot.contain.the.following.colors=&cTu tag no puede contener los siguientes formatos de colores\: {0}
|
||||
your.tag.doesnt.meet.the.requirements=&cTu tag no cumple con los requisitos.
|
||||
your.tag.cannot.contain.color.codes=&cTu tag no puede contener formato de colores
|
||||
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=&cEl tag de tu clan solo puede contener letras, numeros y formato de colores
|
||||
your.clan.tag.cannot.be.longer.than.characters=El tag de tu clan no puede ser mas largo que {0} caracteres
|
||||
your.clan.tag.must.be.longer.than.characters=El tag de tu clan debe ser mas largo que {0} caracteres
|
||||
your.tag.cannot.contain.the.following.colors=Tu tag no puede contener los siguientes formatos de colores\: {0}
|
||||
your.tag.cannot.contain.color.codes=Tu tag no puede contener formato de colores
|
||||
you.cannot.set.colored.ranks=No puedes poner rangos con color
|
||||
your.clan.name.cannot.be.longer.than.characters=El nombre de tu clan no puede ser mas largo que {0} caracteres
|
||||
your.clan.name.must.be.longer.than.characters=El nombre de tu clan debe ser mas largo que {0} caracteres
|
||||
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=El tag de tu clan solo puede contener letras, numeros y formato de colores
|
||||
your.clan.name.cannot.contain.color.codes=El nombre de tu clan no puede contener formato de colores
|
||||
that.tag.name.is.disallowed=&cEse nombre de tag no está permitido
|
||||
that.tag.name.is.disallowed=Ese nombre de tag no esta permitido
|
||||
you.must.first.resign=Primero debes abandonar {0}
|
||||
clan.with.this.tag.already.exists=Un clan con ese tag ya existe
|
||||
get.your.clan.verified.to.access.advanced.features=Verifica tu clan para acceder a funcionalidades avanzadas
|
||||
@@ -393,7 +383,7 @@ global.friendy.fire.is.now.managed.by.each.clan=Fuego amigo global es ahora mane
|
||||
global.friendy.fire.is.already.being.managed.by.each.clan=Fuego amigo global ya es manejado por cada clan
|
||||
global.friendly.fire.is.set.to.allowed=Fuego amigo global fue habilitado
|
||||
global.friendly.fire.is.already.being.allowed=Fuego amigo global ya esta habilitado
|
||||
the.player.doesn.t.not.have.the.permissions.to.join.clans=El jugador no tiene permisos para unirse a clanes
|
||||
the.player.doesn.t.not.have.the.permissions.to.join.clans=El jugador no tiene permiso de unirse a clanes
|
||||
you.cannot.invite.yourself=No puedes invitarte a vos mismo
|
||||
you.did.not.answer.in.time=No respondiste a tiempo, cancelando...
|
||||
this.player.is.banned.from.using.clan.commands=Este jugador fue baneado de usar comandos de clanes
|
||||
@@ -415,7 +405,6 @@ kdr.0=KDR\: {0}
|
||||
inactive.0=Inactivo\: {0}
|
||||
clan.commands=comandos de clan
|
||||
you.can.only.modify.the.color.and.case.of.the.tag=Solo se puede modificar el color de la etiqueta
|
||||
locale.has.been.changed=&cEl idioma ha sido cambiado
|
||||
tag.changed.to.0=Tag cambiado a {0}
|
||||
0.tag.changed.to.1=Cambiado exitosamente la etiqueta &c{0}&7 a &c{1}&7.
|
||||
name.0=Nombre\: {0}
|
||||
@@ -536,8 +525,6 @@ this.clan.has.reached.the.member.limit=? ¡Este equipo ya alcanzó el límite de
|
||||
you.have.reseted.your.kdr=Has reseteado tu KDR
|
||||
you.have.reseted.0.kdr=Has reseteado el KDR de {0}
|
||||
you.have.reseted.kdr.of.all.players=Has reseteado el KDR de todos los jugadores
|
||||
you.have.successfully.renamed.your.clan=&bTu clan renombrado correctamente a {0}
|
||||
you.have.successfully.renamed.the.clan=&bEl Clan renombrado correctamente a {0}
|
||||
you.have.toggled.permanent.status=&8(&cClan&8)&7 Has cambiado el estado permanente de &c{0}&7.
|
||||
permanent.status.enabled=&8(&cClan&8)&c {0}&7 ha habilitado el estado permanente de tu clan.
|
||||
permanent.status.disabled=&8(&cClan&8)&c {0}&7 ha inhabilitado el estado permanente de tu clan.
|
||||
@@ -545,7 +532,6 @@ yes=Sí
|
||||
cancel=Cancelar
|
||||
resign.confirmation=Estas seguro que quieres abandonar el clan? {0}
|
||||
disband.confirmation=¿Estás seguro de que quieres disolver tu clan? {0}
|
||||
resetkdr.confirmation=Estas seguro que deseas eliminar tu KDR? {0}
|
||||
resign.success=Has abandonado el clan exitosamente
|
||||
you.cannot.demote.the.last.leader=No puedes degradar al ultimo lider
|
||||
you.cannot.move.the.last.leader=&8(&cClan&8)&7 No puedes mover al último líder.
|
||||
@@ -558,7 +544,7 @@ bb.minutes= \ minutos
|
||||
bb.one.minute=1 minuto
|
||||
bb.hours= \ horas
|
||||
bb.one.hour=1 hora
|
||||
bb.days= \ días
|
||||
bb.days= dias
|
||||
bb.one.day=1 dia
|
||||
the.fee.is.0.and.its.current.value.is.1=La cuota es {0} y su valor actual es {1} $
|
||||
fee.enabled=enabled
|
||||
@@ -596,11 +582,9 @@ deposit.not.allowed=Depositos desactivados, usa /%clan %toggle %deposit para act
|
||||
withdraw.not.allowed=Retiros desactivados, usa /%clan %toggle %withdraw para activarlo
|
||||
resign.request.cancelled=Solicitud para abandonar el clan cancelada.
|
||||
disband.request.cancelled=Solicitud de disolución cancelada
|
||||
resetkdr.request.cancelled=Se ha cancelado la petición\: KDR
|
||||
clan.create.request.cancelled=Solicitud de creación de clan cancelada
|
||||
rank.create.request.cancelled=Solicitud de creación de rango cancelada
|
||||
promotion.vote.has.been.requested.from.all.leaders=Votacion para promover ha sido solicitada a todos los lideres
|
||||
rename.vote.has.been.requested.from.all.leaders=&bSe ha organizado una votacion para renombrar el clan por los lideres
|
||||
allowed=permitido
|
||||
blocked=bloqueado
|
||||
chat.joined=unido
|
||||
|
||||
@@ -43,10 +43,8 @@ assign.command=määrää
|
||||
unassign.command=posta määräys
|
||||
rival.command=kilpailija
|
||||
bb.command=bb
|
||||
display.command=näytä
|
||||
clear.command=tyhjennä
|
||||
modtag.command=modtag
|
||||
rename.command=nimeä uudelleen
|
||||
toggle.command=päälle/pois
|
||||
tag.command=tunniste
|
||||
deposit.command=talleta
|
||||
@@ -80,165 +78,11 @@ kills.command=tapot
|
||||
mostkilled.command=eniten tapetut
|
||||
war.command=sota
|
||||
start.command=aloita
|
||||
end.command=lopeta
|
||||
home.command=koti
|
||||
regroup.command=uudelleen ryhmittyä
|
||||
me.command=minä
|
||||
tp.command=teleportti
|
||||
setrank.command=aseta arvo
|
||||
place.command=sijoita
|
||||
resetkdr.command=nollata kdr
|
||||
everyone.command=kaikki
|
||||
setbanner.command=aseta sotalippu
|
||||
help.command=apu
|
||||
leave.command=poistua
|
||||
join.command=liittyä
|
||||
mute.command=mykistys
|
||||
acf-core.parameter.amount=määrä
|
||||
acf-core.parameter.member=jäsen
|
||||
acf-core.parameter.rank=/rankki
|
||||
acf-core.parameter.leader=johtaja
|
||||
acf-core.parameter.displayname=käyttäjänimi
|
||||
acf-core.parameter.permission=oikeus
|
||||
acf-core.parameter.message=viesti
|
||||
acf-core.parameter.tag=tunniste
|
||||
acf-core.parameter.name=nimi
|
||||
acf-core.parameter.fee=maksu
|
||||
acf-core.parameter.description=/kuvaus
|
||||
acf-core.parameter.player=pelaaja
|
||||
acf-core.parameter.clan=klaani
|
||||
acf-core.parameter.type=tyyppi
|
||||
acf-core.parameter.order=järjestys
|
||||
acf-core.parameter.help=sivu tai avainsanat
|
||||
command.description.land.allow.all=Sallii kaikki toiminnot maassasi
|
||||
command.description.land.allow.interact_entity=Sallii klaanin jäsenten vuorovaikuttaa kohteiden kanssa
|
||||
command.description.land.allow.interact=Sallii klaanin jäsenten vuorovaikuttaa sinun maallasi
|
||||
command.description.land.allow.container=Sallii klaanin jäsenten avata säiliöitä maassasi
|
||||
command.description.land.allow.place=Sallii klaanin jäsenten aseittaa palikoita maassasi
|
||||
command.description.land.allow.break=Sallii klaanin jäsenten rikkoa palikoita maassasi
|
||||
command.description.land.allow.damage=Sallii klaanin jäsenten aiheuttaa vahinkoja maassasi
|
||||
command.description.land.block.all=Estää kaikki toiminnot maassasi
|
||||
command.description.land.block.interact_entity=Estää klaanin jäsenten vuorovaikutuksen kohteiden kanssa maassasi
|
||||
command.description.land.block.interact=Estää jäsenten vuorovaikutuksen maassasi
|
||||
command.description.land.block.container=Estää klaanin jäsenten mahdollisuuden avata säiliöitä
|
||||
command.description.land.block.place=Estää klaanin jäseniä asettamasta palikoita maahasi
|
||||
command.description.land.block.break=Estää klaanin jäseniä rikkomasta palikoita maassasi
|
||||
command.description.land.block.damage=Estää klaanin jäseniä aiheuttamasta vahinkoja maahasi
|
||||
command.description.stats=Näyttää klaanin jäseniesi tilastot
|
||||
command.description.rivalries=Näyttää kaikki klaanin viholliset
|
||||
command.description.mostkilled=Näyttää serverivälisesti isoimmat tappoluvut
|
||||
command.description.kills=Näyttää sinun tai muun pelaajan tappomäärän
|
||||
command.description.lookup=Katsoo sinun tietosi
|
||||
command.description.lookup.other=Näyttää toisen pelaajan tiedon
|
||||
command.description.leaderboard=Näyttää tulostaulukon
|
||||
command.description.roster.other=Näyttää toisen klaanin jäsenet
|
||||
command.description.roster=Luettelee klaanisi jäsenet
|
||||
command.description.profile.other=Näyttää toisen klaanin profiilin
|
||||
command.description.profile=Näyttää sinun klaanisi profiilin
|
||||
command.description.vitals=Näyttää klaanisi ja liittolaisten vitaalit
|
||||
command.description.list=Luettelee kaikki klaanit
|
||||
command.description.list.balance=Näyttää rikkaimmat klaanit
|
||||
command.description.chat=Puhuu klaani palstalla
|
||||
command.description.ally=Puhuu liittolaisten palstalla
|
||||
command.description.deny=Hylkää pyynnön
|
||||
command.description.accept=Hyväksyy pyynnön
|
||||
command.description.more=Näyttää lisätietoa
|
||||
command.description.create=Luo klaanin
|
||||
command.description.discord.create=Luo discord-kanavan klaanillesi
|
||||
command.description.ff.allow=Asettaa henkilökohtaisen oman tulen sallituksi
|
||||
command.description.ff.auto=Asettaa oman tulen automaattiseksi
|
||||
command.description.globalff.allow=Asettaa maailmanlaajuisen oman tulen sallituksi
|
||||
command.description.globalff.auto=Asettaa maailmanlaajuisen oman tulen automaattiseksi
|
||||
command.description.clanff.allow=Asettaa klaanisi oman tulen sallituksi
|
||||
command.description.clanff.block=Asettaa klaanisi oman tulen estetyksi
|
||||
command.description.description=Asettaa klaanillesi kuvauksen
|
||||
command.description.ban=Estää pelaajan käyttämästä klaani komentoja
|
||||
command.description.unban=Poistaa pelaajan eston klaanin komentojen käytöstä
|
||||
command.description.regroup.me=Uudelleen ryhmittää klaanisi jäsenet sinun sijaintiisi
|
||||
command.description.regroup.home=Uudelleen ryhmittää klaanisi jäsenet klaanisi kodille
|
||||
command.description.home.tp=Teleportoi sinut klaanisi kotiin
|
||||
command.description.home.clear=Nollaa klaanisi kotisijainnin
|
||||
command.description.home.set=Asettaa klaanisi kodin
|
||||
command.description.mod.home.set=Asettaa klaanin kodin
|
||||
command.description.mod.home.tp=Teleportoi klaanin kotiin
|
||||
command.description.rival.remove=Poistaa vihollisen
|
||||
command.description.rival.add=Lisää vihollisen
|
||||
command.description.ally.remove=Poistaa liittolaisen
|
||||
command.description.kick=Potkii jäsenen pois klaanistasi
|
||||
command.description.bb.display=Näyttää klaanisi ilmoitustaulun
|
||||
command.description.bb.clear=Tyhjentää klaanisi ilmoitustaulun
|
||||
command.description.bb.post=Lähettää viestin klaanisi ilmoitustaululle
|
||||
command.description.mod.bb.display=Näyttää klaanin ilmoitustaulun
|
||||
command.description.mod.bb.clear=Tyhjentää klaanin ilmoitustaulun
|
||||
command.description.mod.bb.post=Lähettää viestin klaanin ilmoitustaululle
|
||||
command.description.place=Asettaa pelaajan klaaniin
|
||||
command.description.reload=Lataa laajennuksen uudelleen ja asetustiedoston
|
||||
command.description.trust=Luottaa jäseneen
|
||||
command.description.untrust=Menettää luoton jäseneen
|
||||
command.description.resign=Erota klaanistasi
|
||||
command.description.help=Näyttää tämän avun tai haut avussa
|
||||
command.description.ally.add=Lisää liittolaisen
|
||||
command.description.clan=Avaa GUI\: n
|
||||
command.description.disband=Lakkauttaa klaanisi
|
||||
command.description.mod.disband=Lakkauttaa klaani
|
||||
command.description.mod.kick=Potkia jäsen klaanista
|
||||
command.description.modtag.other=Muokkaa klaanin tunnistetta
|
||||
command.description.modtag=Muokkaa sinun klaanisi tunnistetta
|
||||
command.description.purge=Nollaa tietyn pelaajan tiedot
|
||||
command.description.setbanner=Asettaa klaanisi lipun
|
||||
command.description.verify=Vahvistaa klaanisi
|
||||
command.description.mod.verify=Vahvistaa klaanin
|
||||
command.description.invite=Kutsuu pelaajan liittymään klaaniisi
|
||||
command.description.fee.check=Tarkistaa klaanisi maksun ja tarkistaa onko maksut päällä
|
||||
command.description.fee.set=Asettaa klaanisi maksun
|
||||
command.description.bank.status=Tarkistaa klaanisi pankin saldon
|
||||
command.description.bank.admin.status=Tarkistaa klaanin pankin saldon
|
||||
command.description.bank.withdraw.all=Nostaa kaikki rahat klaanisi saldosta
|
||||
command.description.bank.withdraw.amount=Nostaa tietyn määrän klaanisi saldosta
|
||||
command.description.bank.admin.take=Ottaa tietyn summan klaanin pankista
|
||||
command.description.bank.deposit.all=Tallettaa kaikki rahasi klaanisi pankkiin
|
||||
command.description.bank.deposit.amount=Tallettaa tietyn summan klaanisi pankkiin
|
||||
command.description.bank.admin.give=Antaa tietyn määrän rahaa klaanin pankkiin
|
||||
command.description.bank.admin.set=Asettaa klaanin pankin saldon
|
||||
command.description.war.start=Aloittaa sodan
|
||||
command.description.war.end=Lopettaa sodan
|
||||
command.description.resetkdr.everyone=Nollaa jokaisen KDR\: n
|
||||
command.description.resetkdr.player=Nollaa tietyn pelaajan KDR\: n
|
||||
command.description.resetkdr=Nollaa sinun KDR\: äsi
|
||||
command.description.admin.demote=Alentaa kenet tahansa johtajan mistä klaanista vain
|
||||
command.description.demote=Alentaa johtajan
|
||||
command.description.admin.promote=Ylentää kenet tahansa jäsenen mistä klaanista vain
|
||||
command.description.promote=Ylentää jäsenen johtajaksi
|
||||
command.description.admin.permanent=Asettaa minkä tahansa klaanin pysyvän tilan
|
||||
command.description.toggle.bb=Vaihtaa pitäisikö ilmoitustaulun näkyä kirjautuessa sisään
|
||||
command.description.toggle.invite=Kytkee, voiko pelaajat lähettää sinulle klaaniin liittymis kutsuja
|
||||
command.description.toggle.tag=Vaihtaa, pitäisikö klaanin tagin näkyä oman nimesi vieressä
|
||||
command.description.toggle.deposit=Vaihtaa onko talletukset sallittuja klaanissa
|
||||
command.description.toggle.withdraw=Kytkee onko rahan nostaminen sallittua klaanissa
|
||||
command.description.toggle.fee=Kytkee onko klaanin maksu päällä
|
||||
command.description.alliances=Luettelee kaikki klaanni liitot
|
||||
command.description.coords=Näyttää klaanisi jäsenten koordinaatit
|
||||
command.description.rank.assign=Määrittää arvon jäsenelle
|
||||
command.description.rank.unassign=Poistaa jäsenen arvon
|
||||
command.description.rank.create=Luo arvon
|
||||
command.description.rank.delete=Poistaa arvo
|
||||
command.description.rank.list=Luettele kaikki klaanisi arvot
|
||||
command.description.rank.setdisplayname=Asettaa arvon näkyvillä olevan nimen
|
||||
command.description.rank.setdefault=Asettaa oletus arvon
|
||||
command.description.rank.removedefault=Poistaa oletus arvon
|
||||
command.description.rank.permissions.available=Luettelee kaikki käytettävissä olevat arvo oikeudet
|
||||
command.description.rank.permissions.rank=Luettelee arvon oikeudet
|
||||
command.description.rank.permissions.add=Lisää arvoon oikeuden
|
||||
command.description.rank.permissions.remove=Poistaa oikeuden arvolta
|
||||
command.description.rename=Nimeää klaanisi uudelleen
|
||||
command.description.mod.rename=Nimeää klaanin uudelleen
|
||||
command.description.locale=Valitsee näyttökielesi
|
||||
command.description.mod.locale=Valitsee pelaajan näyttökielen
|
||||
home-menu=/{0} home{1} - Teleporttaa klaanin koti-tukikohtaan
|
||||
home-set-menu=/{0} home set{1} - asettaa klaanin tukikohdan
|
||||
home-clear-menu=/{0} home clear{1} - tyhjentää klaanin tukikohdan sijainnin
|
||||
clan=Klaani
|
||||
allies=Liitot
|
||||
alliances=liittoutumat
|
||||
coords=koordinaatit
|
||||
name=Nimi
|
||||
@@ -247,639 +91,23 @@ coords.upper=Koordinaatit
|
||||
world=Maailma
|
||||
kdr=KDR
|
||||
members=Jäsenet
|
||||
clans.lower=klaanit
|
||||
rival=Vihollinen
|
||||
civilian=Siivili
|
||||
neutral=Neutraali
|
||||
ally=Liittolainen
|
||||
free.agent=Vapaa agentti
|
||||
days=päivät
|
||||
rivals=Viholliset
|
||||
rivalries=kilpailijat
|
||||
online=Kirjautuneena
|
||||
player=Pelaaja
|
||||
seen=Nähty
|
||||
leader=johtaja
|
||||
roster=lista
|
||||
trusted=luotettu
|
||||
untrusted=epäluotettu
|
||||
in.rank=arvollinen
|
||||
deaths=Kuolemat
|
||||
weights=Tapon paino
|
||||
stats=tilastot
|
||||
health=Elämät
|
||||
armor=Haarniska
|
||||
weapons=Aseet
|
||||
food=Ruoka
|
||||
vitals=vitals
|
||||
verified=Vahvistettu
|
||||
unverified=Vahvistamaton
|
||||
permanent=Pysyvä
|
||||
profile=profiili
|
||||
civilian.abbreviation=Siviili
|
||||
rank=Arvo
|
||||
leaders=Johtajat
|
||||
none=tyhjä
|
||||
today=Tänään
|
||||
kills=Tapot
|
||||
mostkilled=Eniten tappoja
|
||||
killcount=Tapettujen määrä
|
||||
attacker=Hyökkääjä
|
||||
victim=Uhri
|
||||
kill.death.ratio=Tappo/Kuolema kaava
|
||||
nokillsfound=Ei tappoja
|
||||
promoted.to.leader={0} on ylennetty johtajaksi
|
||||
denied.demotion={0} hyläsi {1}\: n alennuksen. Yksimielisyys epäonnistui.
|
||||
membership.invitation={0} hyläsi jäsenyyskutsun
|
||||
joined.the.clan={0} liittyi klaaniin
|
||||
signed.off.request.cancelled={0} kirjautui pois. {1} pyyntö peruttu.
|
||||
clan.deletion={0} hyläsi klaanin poistamisen. Yksimielisyys epäonnistui.
|
||||
rename.refused={0} hylkäsi klaanin uudelleen nimeämisen. Sopimus epäonnistui.
|
||||
has.been.disbanded=Klaani {0} on lakkautettu
|
||||
denied.the.promotion={0} hyläsi {1}\: n ylennyksen. Yksimielisyys epäonnistui.
|
||||
demoted.back.to.member={0} on alennettu takaisin jäseneksi
|
||||
peace.agreement.denied=Rauhansopimus {0} kanssa hylättiin
|
||||
denied.to.make.peace={0} kieltäytyi rauhanteon {1}\: n kanssa
|
||||
broken.the.rivalry={0} rikkoi kilpailun {1}\: n kanssa
|
||||
broken.the.rivalry.with={0} rikkoi kilpailun {1}\: n kanssa
|
||||
the.alliance.was.denied=Liittoutuminen {0} hylättiin
|
||||
denied.an.alliance={0} kieltäytyi liittoutumasta {1}\: n kanssa
|
||||
accepted.an.alliance={0} hyväksyi liittoutumisen {1}\: n kanssa
|
||||
created.an.alliance={0} on liittoutunut {1}\: n kanssa
|
||||
has.joined={0} on liittynyt {1}
|
||||
proposing.to.end.the.rivalry={0} ehdottaa kilpailun lopettamista {1} kanssa
|
||||
proposing.an.alliance={0} ehdottaa liittoutumista {1}\: n kanssa
|
||||
inviting.you.to.join={0} kutsui sinut liittymään {1}
|
||||
asking.for.the.promotion={0} pyytää {1}\: n ylentämistä
|
||||
asking.for.the.demotion={0} pyytää {1}\: n alennusta
|
||||
asking.to.disband={0} pyytää purkamaan klaanin
|
||||
asking.to.rename={0} haluaa vaihtaa klaanin nimeksi {1}
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
request.message= \n&8[&8{0}&8] &b{1}\n %hyväksy% &bor %kieltäydy%\n
|
||||
clickable.accept=&a&l[HYVÄKSY]
|
||||
clickable.deny=&c&l[KIELTÄYDY]
|
||||
hover.click.to.accept=&aHyväksy painamalla
|
||||
hover.click.to.deny=&cKieltäydy painamalla
|
||||
not.sufficient.money=Sinulla ei ole riittävästi rahaa tililläsi (tarvitset\: {0} $)
|
||||
account.has.been.debited=Tililtäsi on veloitettu {0}
|
||||
mysql.connection.successful=Yhteys MySQL\: ään muodostettu
|
||||
mysql.connection.failed=Yhteys MySQL\: ään epäonnistui
|
||||
sqlite.connection.successful=Yhteys SQLiteen muodostettu
|
||||
sqlite.connection.failed= Yhteys SQLiteen epäonnistui
|
||||
purging.player.data=nollataan pelaajan tiedot\: {0}
|
||||
purging.clan=Poistetaan klaani\: {0}
|
||||
clan.players=Klaanin pelaajien määrä\: {0}
|
||||
clans=Klaanien määrä\: {0}
|
||||
banned=Sinut on estetty käyttämästä klaanien komentoja
|
||||
nothing.more.to.see=Ei ole enempää nähtävää
|
||||
nothing.to.vote=&cEi mitään mitä hyväksyä tai mistä kieltäytyä
|
||||
no.leader.permissions=Sinulla ei ole johtajan oikeuksia
|
||||
you.have.already.voted=Olet jo äänestänyt
|
||||
has.voted.to.deny={0} äänesti kieltämisen puoleen
|
||||
view.next.page=Kirjoita /{0} nähdäksesi seuraavan sivun.
|
||||
voted.to.accept={0} äänesti hyväksymisen puolesta
|
||||
bulletin.board.header=&8* &e{0} ilmoitustaulu
|
||||
bulletin.board.message={0}\: &f{1}
|
||||
has.been.disbanded.rivalry.ended={0} lakkautettiin. Kilpailu on päättynyt
|
||||
has.been.disbanded.alliance.ended={0} lakkautettiin. Liitto on päättynyt.
|
||||
clan.disbanded=Klaani lakkautettu
|
||||
1.color.day=1 {0}päivä
|
||||
many.color.days={0}{1} päivää
|
||||
insufficient.permissions=Oikeudet eivät riitä
|
||||
clan.is.not.verified=Klaania ei ole vahvistettu
|
||||
player.not.a.member.of.any.clan=&cPelaaja ei ole minkään klaanin jäsen
|
||||
not.a.member.of.any.clan=Et ole klaanissa
|
||||
minimum.to.make.alliance=Klaanillasi täytyy olla vähintään {0} pelaajaa, jotta voit tehdä liittoutumia
|
||||
cannot.be.same.clan=&cSinun tulee lisätä toinen klaani kuin sinun\!
|
||||
other.clan.not.verified=&cToista klaania ei ole vahvistettu\!
|
||||
your.clans.are.not.allies=Klaanisi eivät ole liittolaisia
|
||||
has.broken.the.alliance={0} rikkoi liiton {1} kanssa
|
||||
at.least.one.leader.accept.the.alliance=Vähintään yhden johtajan pitää olla paikalla jotta liiton voi hyväksyä
|
||||
leaders.have.been.asked.for.an.alliance={0}\: n johtajilta on pyydetty liittoutumista
|
||||
your.clans.are.already.allies=Klaanisi ovat jo liittolaisia
|
||||
your.clan.cannot.create.rivals=Sinun klaani ei voi tehdä vihollisia
|
||||
min.players.rivalries=Klaanillasi täytyy olla vähintään {0} pelaajaa, jotta voit tehdä vihollisia
|
||||
this.player.is.already.banned=Tällä pelaajalla on jo porttikielto
|
||||
player.added.to.banned.list=Pelaaja lisätty porttikielto listalle
|
||||
you.banned=Sinut on estetty käyttämästä klaanikomentoja
|
||||
clan.wide.friendly.fire.blocked=Klaanin laajuinen oma tuli estetty
|
||||
clan.wide.friendly.fire.is.allowed=Klaanin laajuinen oma tuli on sallittu
|
||||
you.are.the.only.member.online=Olet ainoa jäsen paikalla
|
||||
your.clan.color.tag.cannot.be.longer.than.characters=&cKlaanisi värillinen tunniste ei voi olla pidempi kuin {0} kirjainta
|
||||
your.clan.tag.cannot.be.longer.than.characters=&Sinun klaanisi tunniste ei voi olla pidempi kuin {0} merkkiä
|
||||
your.clan.tag.must.be.longer.than.characters=&Sinun klaanisi tunnisteessa pitää olla enemmän kuin {0} kirjainta
|
||||
your.tag.cannot.contain.the.following.colors=&cTunnisteesi ei voi sisältää seuraavia värejä\: {0}
|
||||
your.tag.doesnt.meet.the.requirements=&cTunnisteesi ei täytä vaatimuksia.
|
||||
your.tag.cannot.contain.color.codes=& Sinun tunnisteessa ei saa olla värikoodeja
|
||||
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=&cSinun klaanisi tunnisteessa saa ainoastaan sisältää kirjaimia, numeroita ja värikoodeja
|
||||
you.cannot.set.colored.ranks=Et voi asettaa värillisiä arvoja
|
||||
your.clan.name.cannot.be.longer.than.characters=Sinun klaanisi nimi ei voi olla pidempi kuin {0} merkkiä
|
||||
your.clan.name.must.be.longer.than.characters=Sinun klaanisi nimi pitää olla pidempi kuin {0} kirjainta
|
||||
your.clan.name.cannot.contain.color.codes=Sinun klaanisi nimessä ei saa olla värikoodeja
|
||||
that.tag.name.is.disallowed=&cTuo tunniste ei ole sallittu
|
||||
you.must.first.resign=Sinun täytyy ensin erota klaanista {0}
|
||||
clan.with.this.tag.already.exists=Klaani tällä tunnisteella on jo olemassa
|
||||
get.your.clan.verified.to.access.advanced.features=Vahvista klaanisi päästäksesi käsiksi edistyneisiin ominaisuuksiin
|
||||
clan.created=Klaani {0} luotu
|
||||
not.enough.leaders.online.to.vote.on.demotion=Ei ole tarpeeksi johtajia paikalla äänestääkseen alennuksesta
|
||||
demotion.vote.has.been.requested.from.all.leaders=Johtajilta on pyydetty alennus äänestystä
|
||||
player.is.not.a.leader.of.your.clan=Pelaaja ei ole klaanisi yksi johtajista
|
||||
player.is.not.a.leader=Pelaaja ei ole johtaja
|
||||
clan.has.been.disbanded=Klaani {0} on lakkautettu
|
||||
clan.disband.vote.has.been.requested.from.all.leaders=Klaanin lakkauttamis äänestys on pyydetty kaikilta johtajilta
|
||||
friendy.fire.is.now.managed.by.your.clan=Omaa tulea hallitsee nyt sinun Klaanisi
|
||||
personal.friendly.fire.is.set.to.allowed=Henkilökohtainen oma tuli sallittu
|
||||
global.friendy.fire.is.now.managed.by.each.clan=Kansainvälistä oma tulta hallitsee nyt jokainen klaani
|
||||
global.friendy.fire.is.already.being.managed.by.each.clan=Jokainen klaani hallinnoi jo kansainvälistä omaa tulta
|
||||
global.friendly.fire.is.set.to.allowed=Kansainvälinen omatuli asetettu sallituksi
|
||||
global.friendly.fire.is.already.being.allowed=Kansainvälinen omatuli jo sallittu
|
||||
the.player.doesn.t.not.have.the.permissions.to.join.clans=Pelaajalla ei riitä oikeukset liittyä klaaneihin
|
||||
you.cannot.invite.yourself=Et voi kutsua itseäsi
|
||||
you.did.not.answer.in.time=Et vastannut tarpeeksi nopeasti, peruutetaan...
|
||||
this.player.is.banned.from.using.clan.commands=Tämä pelaaja on estetty klaani komentojen käytöstä
|
||||
the.player.is.already.member.of.another.clan=Pelaaja on jo toisen klaanin jäsen
|
||||
has.been.asked.to.join={0} on pyydetty liittymään {1}
|
||||
you.cannot.kick.yourself=Et voi potkia itseäsi ulos
|
||||
the.player.is.not.a.member.of.your.clan=Pelaaja ei ole klaanisi jäsen
|
||||
you.cannot.kick.another.leader=Et voi potkaista toista johtajaa
|
||||
has.been.kicked.by={1} potkaisi jäsenen {0} ulos klaanista
|
||||
no.clans.have.been.created=Yhtäkään klaania ei ole luotu
|
||||
total.clans=Klaanien määrä\:
|
||||
legend=Selite\:
|
||||
kill.type.civilian=Tapon tyyppi\: {0}Siviili
|
||||
no.player.data.found=Pelaajatietoja ei löytynyt
|
||||
clan.0=Klaani\: {0}
|
||||
status.0=Tila\: {0}
|
||||
rank.0=Arvo\: {0}
|
||||
kdr.0=KDR\: {0}
|
||||
inactive.0=Inaktiivinen\: {0}
|
||||
clan.commands=klaanin komennot
|
||||
you.can.only.modify.the.color.and.case.of.the.tag=Voit ainoastaan muokata tunnisteen väriä ja muotoa
|
||||
locale.has.been.changed=&cKielesi on vaihdettu
|
||||
tag.changed.to.0=Tunniste on nyt {0}
|
||||
0.tag.changed.to.1=&bOnnistuneesti vaihdettu {0}\: n tunniste {1}
|
||||
name.0=Nimi\: {0}
|
||||
description.0=Kuvaus\: {0}
|
||||
leaders.0=Johtajat\: {0}
|
||||
allies.0=Liittolaiset\: {0}
|
||||
rivals.0=Viholliset\: {0}
|
||||
other.player.must.be.online=&cPelaajan täytyy olla paikalla\!
|
||||
the.player.does.not.have.the.permissions.to.lead.a.clan=Pelaajalla ei riitä oikeukset johtaa klaania
|
||||
you.cannot.promote.yourself=Et voi ylentää itseäsi
|
||||
the.player.is.already.a.leader=Pelaaja on jo johtaja
|
||||
configuration.reloaded=Asetukset ladattu uudelleen
|
||||
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=Viimeinen johtaja ei voi erota. Sinun täytyy nimittää toinen johtaja tai lakkauttaa klaani
|
||||
0.has.resigned={0} erosi klaanista
|
||||
you.cannot.trust.yourself=Et voi luottaa itseesi
|
||||
leaders.are.already.trusted=Johtajat ovat jo luotettuja
|
||||
this.player.is.already.trusted=Tämä pelaaja on jo luotettu
|
||||
has.been.given.trusted.status.by={1} antoi luotetun tilan {0}\: lle
|
||||
this.player.is.not.banned=Tällä pelaajalla ei ole porttikieltoa
|
||||
player.removed.from.the.banned.list=Pelaajan porttikielto poistettu
|
||||
you.have.been.unbanned.from.clan.commands=Sinun estosi klaani komentojen käytöstä on poistettu
|
||||
you.cannot.untrust.yourself=Et voi menettää luottoa itseesi
|
||||
leaders.cannot.be.untrusted=Johtajien luottoa ei voi menettää
|
||||
this.player.is.already.untrusted=Tämä pelaaja on jo epäluotettava
|
||||
has.been.given.untrusted.status.by={1} poisti {0} luotetun tilan
|
||||
the.clan.does.not.exist=Klaani ei ole olemassa
|
||||
the.clan.is.already.verified=Klaani on jo vahvistettu
|
||||
the.clan.has.been.verified=Klaani on vahvistettu
|
||||
clan.0.has.been.verified=Klaani {0} on vahvistettu\!
|
||||
total.clan.players.0=Klaanin pelaajamäärä\: {0}
|
||||
proposing.war={0} ehdottaa sodan aloittamista {1} kanssa
|
||||
you.can.only.start.war.with.rivals=Voit ainoastaan aloittaa sodan vihollisten kanssa
|
||||
leaders.have.been.asked.to.accept.the.war.request={0} johtajia on pyydetty hyväksymään sota pyyntö
|
||||
leaders.asked.to.end.rivalry={0} johtajilta on pyydetty sodan lopettamista
|
||||
proposing.to.end.the.war={0} ehdottaa sodan lopettamista {1} kanssa
|
||||
clans.already.at.war=Klaanisi ovat jo sodassa
|
||||
clans.not.at.war=Klaanisi eivät ole sodassa
|
||||
you.are.at.war={0} sotivat {1} kanssa
|
||||
denied.war.req={0} kieltäytyi {1} sota pyynnöstä
|
||||
you.are.no.longer.at.war={0} ei enää sodi {1} kanssa
|
||||
end.war.denied={0} kielsi sodan lopettamis pyynnön
|
||||
denied.war.end={0} kielsi {1} pyynnön lopettamaan sodan
|
||||
has.initiated.a.rivalry={0} on aloittanut kilpailun {1} kanssa
|
||||
start=aloita
|
||||
end=lopeta
|
||||
add=lisää
|
||||
remove=poista
|
||||
allow=salli
|
||||
block=block
|
||||
auto=automaattinen
|
||||
war=sota
|
||||
0.s.sword.1.2.b.bow.3.4.a.arrow={0}M\=miekka{1}, {2}J\=jousipyssy{3}, {4}N\=Nuolet
|
||||
weapon.S=M
|
||||
weapon.B=J
|
||||
weapon.A=N
|
||||
materials=Materiaalit
|
||||
armor.h=K
|
||||
armor.c=Haarniska
|
||||
armor.l=J
|
||||
armor.B=J
|
||||
diamond=timantti
|
||||
gold=kulta
|
||||
wood=puu
|
||||
server.announce=Palvelimen Ilmoitus
|
||||
clan.announce=Klaani Ilmoitus
|
||||
leader.announce=Johtajan Ilmoitus
|
||||
hunger=Nälkä
|
||||
stone=kivi
|
||||
iron=rauta
|
||||
the.clan.cannot.be.rivaled=Klaanin kanssa ei voi kilpailla
|
||||
bboff=BB poistettu käytöstä
|
||||
bbon=BB vaihdettu päälle
|
||||
inviteon=Kutsut laitettu päälle
|
||||
inviteoff=Kutsut poistettu käytöstä
|
||||
tagoff=Tunniste poistettu käytöstä
|
||||
tagon=Tunniste kytketty päälle
|
||||
depositon=Talletus vaihdettu päälle
|
||||
depositoff=Talletus poistettukäytöstä
|
||||
withdrawon=Nosto kytketty päälle
|
||||
withdrawoff=Nosto kytketty pois
|
||||
feeoff=Maksu poistettu käytöstä
|
||||
feeon=Maksu kytketty päälle
|
||||
home.base.only.once=Tukikohdan voi asettaa vain kerran
|
||||
now.at.homebase=Olet nyt {0}\: n tukikohdassa
|
||||
hombase.set=Klaanin tukikohda asetettu\: {0}
|
||||
hombase.cleared=Klaanin tukikohta tyhjennetty
|
||||
hombase.mod.set={0}\: n tukikohta asetettu\:
|
||||
hombase.not.set=Tukikohtaa ei ole asetettu
|
||||
home.set.in.different.server=Tukikohta asetettiin eri palvelimella
|
||||
rival.limit.reached=Olet saavuttanut vihollisrajan. Et voi asettaa enempää klaaneja vihollisiksi.
|
||||
you.moved.teleport.cancelled=Liikuit, teleportointi peruttu
|
||||
waiting.for.teleport.stand.still.for.0.seconds=Odotetaan teleporttia, seiso vielä {0} sekuntia
|
||||
on=päällä
|
||||
off=pois
|
||||
player.rank.changed=Arvo on asetettu
|
||||
your.clans.are.already.rivals=Klaanisi ovat jo vihollisia
|
||||
player.got.money=Sait {0} {1} tappamisesta KDR\: äsi takia\: {2}
|
||||
cleared.bb=Klaanin ilmoitustaulu tyhjennetty
|
||||
clan.balance=Klaanin saldo\: {0}
|
||||
clan.admin.balance={0} saldo on\: {1} $
|
||||
bb.fee.player.kicked={0} potkittiin klaanista, koska ei maksanut maksua
|
||||
bb.fee.set=Maksu on {0} $
|
||||
bb.clan.deposit={1} talletti {0} $
|
||||
player.clan.deposit=Talletit {0}
|
||||
bb.clan.withdraw={1} nosti {0} $
|
||||
bb.clan.take={1} nosti {0} $
|
||||
bb.clan.give={1} antoi {0} $
|
||||
bb.clan.set={1} asetti saldon {0} $
|
||||
player.clan.withdraw=Nostit {0}
|
||||
clan.admin.take=Sinä otit {0} $ {1} pankista
|
||||
clan.admin.give=Sinä annoit {0} $ {1} pankkiin
|
||||
clan.admin.set=Sinä asetit {0} saldon {1}
|
||||
clan.admin.bank.not.enough.money={0} pankissa ei ole tarpeeksi rahaa\!
|
||||
clan.bank.not.enough.money=Klaanisi pankissa ei ole tarpeeksi rahaa
|
||||
your.clans.are.not.rivals=Klaanisi ei ole vihollisia
|
||||
the.clan.members.reached.limit=Sinun klaani on saavuttanut jäsenrajan
|
||||
this.clan.has.reached.the.member.limit=&bTämä klaani on saavuttanut jäsenrajan
|
||||
you.have.reseted.your.kdr=Olet nollannut KDR\: äsi
|
||||
you.have.reseted.0.kdr=Olet nollannut {0}\: n KDR\: än
|
||||
you.have.reseted.kdr.of.all.players=Sinä nollasit jokasen pelaajan KDR\: än
|
||||
you.have.successfully.renamed.your.clan=&bOlet onnistuneesti vaihtanut klaanisi nimeksi {0}
|
||||
you.have.successfully.renamed.the.clan=&bOlet onnistuneesti vaihtanut klaanin nimeksi {0}
|
||||
you.have.toggled.permanent.status=Asetit pysyvän tilan {0}\: lle
|
||||
permanent.status.enabled={0} kytki klaanisi pysyvään tilaan
|
||||
permanent.status.disabled={0} poisti klaanisi pysyvän tilan
|
||||
yes=Kyllä
|
||||
cancel=Peruuta
|
||||
resign.confirmation=Haluatko varmasti erota? {0}
|
||||
disband.confirmation=Oletko varma, että haluat lakkauttaa klaanisi? {0}
|
||||
resetkdr.confirmation=Oletko varma että haluat resetoida KDR\:si? {0}
|
||||
resign.success=Olet onnistuneesti eronnut klaanistasi
|
||||
you.cannot.demote.the.last.leader=Et voi alentaa viimestä johtajaa
|
||||
you.cannot.move.the.last.leader=Et voi siirtää viimestä johtajaa
|
||||
player.successfully.demoted=Pelaaja alennettu onnistuneesti
|
||||
player.successfully.promoted=Pelaaja ylennetty onnistuneesti
|
||||
bb.ago= \ aika sitten
|
||||
bb.moments=\ hetket
|
||||
bb.seconds= \ sekuntit
|
||||
bb.minutes= \ minuutit
|
||||
bb.one.minute=1 minuutti
|
||||
bb.hours= \ tuntia
|
||||
bb.one.hour=1 tunti
|
||||
bb.days= \ päivää
|
||||
bb.one.day=1 päivä
|
||||
the.fee.is.0.and.its.current.value.is.1=Maksu on nyt {0} ja sen tämän hetkinen arvo on {1} $
|
||||
fee.enabled=käytössä
|
||||
fee.disabled=pois käytöstä
|
||||
fee.set=Maksu asetettu onnistuneesti
|
||||
max.fee.allowed.is.0=Suurin sallittu maksu on {0}
|
||||
fee.collected=Klaanin maksuihin nostettiin {0} $
|
||||
player.purged=Pelaajantiedot poistettu onnistuneesti
|
||||
upkeep.collected={0} $ nostettiin ylläpitoa varten
|
||||
balance.is.not.enough.for.upkeep=Klaanin saldo ei riitä maksamaan ylläpitoa ({0} $), talleta summa välttyäksesi lakkautettamiselta
|
||||
your.clan.description.must.be.longer.than=Sinun klaanisi kuvaus pitää olla pidempi kuin {0} kirjainta
|
||||
your.clan.description.cannot.be.longer.than=Sinun klaanisi kuvaus ei saa olla pidempi kuin {0} kirjainta
|
||||
description.changed=Klaanisi kuvaus onnistuneesti muutettu
|
||||
no.description=Ei kuvausta
|
||||
the.player.must.wait.0.before.joining.your.clan.again=Tämän pelaajan on odotettava {0} minuuttia, ennen kuin hän liittyy klaaniin uudellee
|
||||
disabled.command=Komento poistettu käytöstä
|
||||
rank.displayname.updated=Arvon näyttönimi päivitetty\!
|
||||
rank.setdefault=Klaanin oletus arvo on nyt {0}
|
||||
rank.removedefault=Klaanin oletus arvo poistettu
|
||||
rank.0.permissions=Arvon {0} oikeudet\:
|
||||
available.rank.permissions=Käytettävissä olevat oikeudet arvoihin\:
|
||||
rank.already.exists=Arvo on jo olemassa
|
||||
rank.0.does.not.exist=Arvo {0} ei ole olemassa
|
||||
rank.created=Arvo luotu
|
||||
permission.0.added.to.rank.1=Oikeus {0} lisätty arvolle {1}
|
||||
permission.0.removed.from.rank.1=Oikeus {0} poistettu arvosta {1}
|
||||
rank.0.deleted=Arvo {0} poistettu
|
||||
clans.ranks=Klaanin arvot\:
|
||||
ranks.list.item={0}\# {1} ({2})
|
||||
no.ranks=Arvoja ei luotu
|
||||
rank.no.permissions=Tällä arvolla ei ole oikeuksia
|
||||
player.unassigned.from.rank=Pelaajalta poistettu arvo
|
||||
you.must.be.0.or.have.the.permission.1.to.use.this=7 Sinun pitää olla {0} tai johtajasi pitää antaa sinun arvollesi oikeus {1} käyttää tuota
|
||||
deposit.not.allowed=Talletus ei ole sallittua, käytä /%clan %toggle %deposit salliaksesi sen
|
||||
withdraw.not.allowed=Nostaminen ei ole sallittua, käytä /%clan %toggle% %withdraw salliaksesi sen
|
||||
resign.request.cancelled=Eroamispyyntö peruttu
|
||||
disband.request.cancelled=Lakkauttamis pyyntö peruttu
|
||||
resetkdr.request.cancelled=KDR resetointi pyyntö peruttu
|
||||
clan.create.request.cancelled=Klaanin luontipyyntö peruttu
|
||||
rank.create.request.cancelled=Arvon luontipyyntö peruttu
|
||||
promotion.vote.has.been.requested.from.all.leaders=Johtajilta on pyydetty ylennysalennusta
|
||||
rename.vote.has.been.requested.from.all.leaders=&bJohtajilta on pyydetty uudelleennimeämis äänestystä
|
||||
allowed=sallittu
|
||||
blocked=estetty
|
||||
chat.joined=liittyi
|
||||
chat.not.joined=ei liittynyt
|
||||
chat.didnt.join=&bEt liittynyt tälle kanavalle
|
||||
gui.loading=&7Ladataan...
|
||||
gui.back.title=&fTakaisin
|
||||
gui.previous.page.title=&Edellinen Sivu
|
||||
gui.next.page.title=&fSeuraava Sivu
|
||||
gui.lore.no.permission=&7Sinulla ei riitä oikeudet nähdä tätä\!
|
||||
gui.main.title={0} - klaanin valikko
|
||||
gui.main.languageselector.title=Valitse kielesi
|
||||
gui.main.languageselector.lore.left.click=&7Klikkaa hiiren vasenta painiketta valitaksesi kielesi
|
||||
gui.main.languageselector.lore.right.click=&7Klikkaa hiiren oikealla painikkeella auttaaksesi kääntämisessä
|
||||
gui.main.other.commands.title=&fMuut komennot
|
||||
gui.main.other.commands.lore=&7Klikkaa vasemmalla nähdäksesi kaikki klaanikomennot
|
||||
gui.main.clan.list.title=Klaani lista
|
||||
gui.main.clan.list.lore=&7Klikkaa vasemmalla nähdäksesi klaaniluettelon
|
||||
gui.main.reset.kdr.title=Nollaa KDR
|
||||
gui.main.reset.kdr.lore.price=Hinta\: {0}
|
||||
gui.main.reset.kdr.lore=&7Klikkaa vasemmalla nollataksesi KDR
|
||||
gui.main.leaderboard.title=&fTulostaulukko
|
||||
gui.main.leaderboard.lore=&7Klikkaa vasemmalla nähdäksesi tulostaulukon
|
||||
gui.main.staff.title=&fHenkilökunta
|
||||
gui.main.staff.lore=&7Napsauta vasemmalla avataksesi henkilökunnan valikon
|
||||
gui.staff.title=Henkilökunta
|
||||
gui.staff.clan.list.lore.left.click=&7Klikkaa vasemmalla nähdäksesi kaikki klaanit
|
||||
gui.staff.clan.list.lore.right.click=&7Klikkaa hiiren kakkospainikkeella nähdäksesi kaikki vahvistamattomat klaanit
|
||||
gui.player.list.title=Pelaaja luettelo
|
||||
gui.staff.player.list.title=&Pelaaja luettelo
|
||||
gui.staff.player.list.lore.left.click=&7Klikkaa vasemmalla nähdäksesi kaikki pelaajat
|
||||
gui.staff.player.list.lore.right.click=&7Klikkaa oikealla painikkeella nähdäksesi kaikki paikalla olevat pelaajat
|
||||
gui.staff.global.ff.title=&fMaailmanlaajuinen Oma tuli
|
||||
gui.staff.global.ff.lore.status=&7Tila\: &b{0}
|
||||
gui.staff.global.ff.lore.toggle=&7Klikkaa hiiren vasemmalla painikkeella vaihtaaksesi oma tulen tilan
|
||||
gui.staff.reload.title=&fLataa uudelleen
|
||||
gui.staff.reload.lore=&7Klikkaa hiiren vasenta ladataksesi laajennuksen uudelleen
|
||||
gui.staff.clanlist.unverified.title=Vahvistamattomat klaanit - yhteensä\: {0}
|
||||
gui.staff.clanlist.toplace.title=Valitse {0}\: n uusi klaani
|
||||
gui.warning.title=Varoitus
|
||||
gui.warning.no.permission.title=&fEi käyttöoikeuksia
|
||||
gui.warning.no.permission.plugin.lore=&7Sinulla ei riitä oikeudet tehdä noin\!
|
||||
gui.warning.no.permission.leader.lore=&7Oletko sinä yksi klaanin johtajista?
|
||||
gui.warning.no.permission.rank.lore=&7 Sinun pitää olla {0} tai johtajasi pitää antaa sinun arvollesi oikeus {1} käyttää tuota\!
|
||||
gui.warning.not.verified.title=&fEi vahvistettu
|
||||
gui.warning.not.verified.lore=&7Klaanisi pitää olla vahvistettu\!
|
||||
gui.allies.title=Liitot
|
||||
gui.allies.clan.lore=&7Napsauta hiiren kakkospainikkeella poistaaksesi tämän liittolaisen
|
||||
gui.allies.add.title=&fLisää liittolainen
|
||||
gui.add.ally.title=Lisää liittolainen
|
||||
gui.add.ally.clan.lore=&7Klikkaa hiiren vasemmalla liittoutuaksesi tämän klaanin kanssa
|
||||
gui.rivals.title=Viholliset
|
||||
gui.rivals.clan.lore=&7Klikkaa hiiren oikeata painiketta poistaaksesi tämän vihollisen
|
||||
gui.rivals.add.title=&fLisää vihollinen
|
||||
gui.add.rival.title=Lisää vihollinen
|
||||
gui.add.rival.clan.lore=&7Klikkaa vasemmalla kilpaileaksesi tämän klaanin kanssa
|
||||
gui.clanlist.title=Klaanit - Yhteensä\: {0}
|
||||
gui.clanlist.clan.title=&fKlaani\: [{0}&f] {1}
|
||||
gui.clanlist.clan.lore.position=&b\#{0}
|
||||
gui.clanlist.clan.lore.kdr=&7KDR\: &B{0}
|
||||
gui.clanlist.clan.lore.members=&7Jäsenet\: &b{0}
|
||||
gui.coords.title=Koordinaatit
|
||||
gui.coords.player.lore.distance=&7Etäisyys\: &b{0}
|
||||
gui.coords.player.lore.coords=&7Koordinaatit\: &b{0} {1} {2}
|
||||
gui.coords.player.lore.world=&7Maailma\: &b{0}
|
||||
gui.invite.title=Kutsu pelaaja
|
||||
gui.invite.player.title=&f{0}
|
||||
gui.invite.player.price.lore=Hinta\: {0}
|
||||
gui.invite.player.lore=&7Kutsu hiiren vasemmalla painikkeella
|
||||
gui.roster.title={0}'s joukkue
|
||||
gui.roster.invite.title=&fKutsu
|
||||
gui.roster.invite.lore=&7Kutsu pelaaja liittymään klaaniisi
|
||||
gui.leaderboard.title=Tulostaulukko - Pelaajat\: {0}
|
||||
gui.leaderboard.player.title=&f\#{0} {1}
|
||||
gui.ranks.title=Arvot
|
||||
gui.ranks.title.set.rank=Aseta arvo - Nykyinen\: {0}
|
||||
gui.ranks.create.title=&fLuo arvo
|
||||
gui.ranks.create.lore=&7Klikkaa hiiren vasemmalla painikkeella luodaksesi arvon
|
||||
gui.ranks.rank.title=&Arvo\: {0}
|
||||
gui.ranks.rank.displayname.lore=&7Näyttönimi\: &b{0}
|
||||
gui.ranks.rank.remove.lore=&7Klikkaa hiiren oikeata painiketta poistaaksesi tämän arvon
|
||||
gui.ranks.rank.edit.permissions.lore=&7Klikkaa vasemmalla painikkeella muokataksesi arvon oikeuksia
|
||||
gui.ranks.rank.assign.lore=&7Klikkaa hiiren vasemmalla painikkeella määrittääksesi tämän arvon {0}\: lle
|
||||
gui.permissions.title={0}\: n oikeudet
|
||||
gui.permissions.add.title=&fLisää käyttöoikeus
|
||||
gui.permissions.permission.title=&f{0}
|
||||
gui.permissions.permission.lore=&7Napsauta hiiren kakkospainikkeella poistaaksesi tämän oikeuden arvolta
|
||||
gui.add.permission.title=Add a permission
|
||||
gui.add.permission.permission.title=&f{0}
|
||||
gui.add.permission.permission.lore=&7Klikkaa hiiren vasemmalla lisätäksesi tämän oikeuden arvolle
|
||||
gui.clandetails.title=[{0}\# {1}
|
||||
gui.clandetails.free.agent.title=&Vapaa agentti
|
||||
gui.clandetails.free.agent.create.clan.price.lore=Hinta\: {0}
|
||||
gui.clandetails.free.agent.create.clan.lore=&7Klikkaa hiiren vasemmalla luodaksesi klaanin
|
||||
gui.clandetails.clan.title=&f[{0}&f] {1}
|
||||
gui.clandetails.clan.lore.description=&Kuvaus\: {0}
|
||||
gui.clandetails.clan.lore.status=&7Tila\: &b{0}
|
||||
gui.clandetails.clan.lore.leaders=&Johtajat\: {0}
|
||||
gui.clandetails.clan.lore.online.members=&7Paikalla olevat jäsenet\: &b{0}/{1}
|
||||
gui.clandetails.clan.lore.kdr=&7KDR\: &B{0}
|
||||
gui.clandetails.clan.lore.kill.totals=&7Tappoja yhteensä\: &b[Vastustajat\:{0}, Neutraali\: {1}\: Siviili {2}]
|
||||
gui.clandetails.clan.lore.deaths=&7Kuolemat\: &b{0}
|
||||
gui.clandetails.clan.lore.fee=&7Maksu\: &b{0}, {1}$
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
gui.clandetails.clan.lore.allies.separator=&b,
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
gui.clandetails.clan.lore.rivals.separator=&b,
|
||||
gui.clandetails.clan.lore.allies=&Liittolaiset\: {0}
|
||||
gui.clandetails.clan.lore.rivals=&Viholliset\: {0}
|
||||
gui.clandetails.clan.lore.founded=&7Perustettu\: &b{0}
|
||||
gui.clandetails.clan.lore.inactive=&7Inaktiivinen\: &b{0}/{1} päivää
|
||||
gui.clandetails.allies.title=&fLiittolaiset
|
||||
gui.clandetails.allies.lore=&7Klikkaa vasemmalla hiirenpainikkeella nähdäksesi liittolaisesi tai lisätä uusia
|
||||
gui.clandetails.rivals.title=&fViholliset
|
||||
gui.clandetails.rivals.lore=&7Klikkaa vasemmalla hiirenpainikkeella nähdäksesi vihollisesi tai lisätä uusia
|
||||
gui.clandetails.roster.title=&fNimilista
|
||||
gui.clandetails.roster.lore=&7Klikkaa hiiren vasemmalla nähdäksesi klaanisi jäsenet tai kutsuaksesi lisää
|
||||
gui.staffclandetails.roster.lore=&7Klikkaa hiiren vasemmalla nähdäksesi klaanin jäsenet
|
||||
gui.clandetails.coords.title=&fKoordinaatit
|
||||
gui.clandetails.coords.lore=&7Klikkaa vasemmalla nähdäksesi klaanisi jäsenien koordinaatit
|
||||
gui.clandetails.home.title=&fKoti
|
||||
gui.clandetails.home.lore.teleport.price=&7Teleporttaushinta\: &b{0}
|
||||
gui.clandetails.home.lore.teleport=&7Klikkaa hiiren vasemmalla painikkeella teleporttaaksesi klaanin tukikohtaan
|
||||
gui.staffclandetails.home.lore.teleport=&7Klikkaa hiiren vasemmalla painikkeella teleporttaaksesi tämän klaanin kotiin
|
||||
gui.clandetails.home.lore.clear=&7Pudota esine tyhjentääksesi klaanin koti
|
||||
gui.clandetails.home.lore.set.price=&7Aseta hinta\: &b{0}
|
||||
gui.clandetails.home.lore.set=&7Klikkaa hiiren oikealla asettaaksesi klaanisi kodin
|
||||
gui.staffclandetails.home.lore.set=&7Klikkaa hiiren oikealla asettaaksesi tämän klaanin kodin
|
||||
gui.clandetails.regroup.title=&fUudelleen ryhmittäydy
|
||||
gui.clandetails.regroup.lore.price=Hinta\: {0}
|
||||
gui.clandetails.regroup.lore.home=&7Klikkaa hiiren vasemalla ryhmittääksesi klaanisi jäsenet klaanin kotiin
|
||||
gui.clandetails.regroup.lore.me=&7Klikkaa hiiren oikealla ryhmittääksesi klaanisi jäsenet sinun sijainillesi
|
||||
gui.clandetails.ff.title=&fOmatuli
|
||||
gui.clandetails.ff.personal.lore=&7Henkilökohtainen\: &b{0}
|
||||
gui.clandetails.ff.clan.lore=&7Klaani\: &b{0}
|
||||
gui.clandetails.ff.personal.toggle.lore=&7Klikkaa hiiren vasemmalla painikkeella vaihtaaksesi oma tulen tilan
|
||||
gui.clandetails.ff.clan.toggle.lore=&7Klikkaa hiiren oikealla painikkeella vaihtaaksesi klaanisi oman tulen tilan
|
||||
gui.clandetails.bank.title=&fPankki
|
||||
gui.clandetails.bank.balance.lore=&7Saldo\: &b{0}
|
||||
gui.clandetails.bank.withdraw.status.lore=&7Nosta\: &b{0}
|
||||
gui.clandetails.bank.deposit.status.lore=&7Talletus\: &b{0}
|
||||
gui.clandetails.bank.withdraw.toggle.lore=&7Tiputa tavara kytkeäksesi nostamisen tilan
|
||||
gui.clandetails.bank.deposit.toggle.lore=&7Klikkaa hiiren oikealla painikkeella vaihtaaksesi talletuksen tilan
|
||||
gui.clandetails.fee.title=&fMaksu
|
||||
gui.clandetails.fee.status.lore=&7Tila\: &b{0}
|
||||
gui.clandetails.fee.value.lore=&7Arvo\: &b{0}
|
||||
gui.clandetails.fee.toggle.lore=&7Paina hiiren vasemmalla vaihtaaksesi maksun tilan
|
||||
gui.clandetails.rank.title=&fArvo
|
||||
gui.clandetails.rank.lore=&7Klikkaa vasemmalle nähdäksesi klaanin arvot ja muokkaa niitä
|
||||
gui.clandetails.verified.title=&fVarmennettu
|
||||
gui.clandetails.not.verified.title=&fEi vahvistettu
|
||||
gui.clandetails.verify.price.lore=Hinta\: {0}
|
||||
gui.clandetails.not.verified.lore=&7Klikkaa hiiren vasemmalla varmistaaksesi klaanisi
|
||||
gui.staffclandetails.not.verified.lore=&7Klikkaa hiiren vasemmalla varmistaaksesi tämän klaanin
|
||||
gui.clandetails.resign.title=&fErota
|
||||
gui.clandetails.resign.lore=&7Klikkaa hiiren vasemmalla erotaksesi klaanista
|
||||
gui.clandetails.disband.title=&fLakkauta
|
||||
gui.clandetails.disband.lore=&7Pudota esine lakkauttaaksesi klaanisi
|
||||
gui.staffclandetails.disband.lore=&7Paina hiiren vasemmalla lakkauttaaksesi tämän klaanin
|
||||
gui.clandetails.chat.title=&fChatti
|
||||
gui.clandetails.chat.clan.chat.lore=&7/{0} [message] - &bLähettää viestin klaanin keskustelupalstalle
|
||||
gui.clandetails.chat.clan.join.leave.lore=&7/{0} {1}/{2} - &bLiittyy/poistuu klaanikeskustelusta
|
||||
gui.clandetails.chat.ally.chat.lore=&7/{0} [message] - &bLähettää viestin liittolaisten keskustelupalstalle
|
||||
gui.clandetails.chat.ally.join.leave.lore=&7/{0} {1}/{2} - &bLiittyy/poistuu liittolaistenkeskustelusta
|
||||
gui.clandetails.chat.clan.status.lore=&7Klaani\: &b{0}
|
||||
gui.clandetails.chat.ally.status.lore=&7Liittolainen\: &b{0}
|
||||
gui.clandetails.chat.clan.toggle.lore=&7Klikkaa vasemmalla vaihtaaksesi klaanin keskustelu tilan
|
||||
gui.clandetails.chat.ally.toggle.lore=&7Klikkaa hiiren oikealla vaihtaaksesi liittolaisten keskustelu tilan
|
||||
gui.playerdetails.title={0}
|
||||
gui.playerdetails.player.title=&f{0}
|
||||
gui.playerdetails.player.lore.noclan=&7Klaani\: &bEi ole
|
||||
gui.playerdetails.player.lore.clan=&fKlaani\: [{0}&f] {1}
|
||||
gui.playerdetails.player.lore.rank=&7Arvo\: &b{0}
|
||||
gui.playerdetails.player.lore.status=&7Tila\: &b{0}
|
||||
gui.playerdetails.player.lore.kdr=&7KDR\: &B{0}
|
||||
gui.playerdetails.player.lore.kill.totals=&7Tappoja yhteensä\: &b[Vastustajat\:{0}, Neutraali\: {1}\: Siviili {2}]
|
||||
gui.playerdetails.player.lore.deaths=&7Kuolemat\: &b{0}
|
||||
gui.playerdetails.player.lore.join.date=&7Liittymispäivämäärä\: &b{0}
|
||||
gui.playerdetails.player.lore.last.seen=&7Viimeksi nähty\: &b{0}
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
gui.playerdetails.player.lore.past.clans.separator=&b,
|
||||
gui.playerdetails.player.lore.past.clans=&7Aiemmat klaanit\: &b{0}
|
||||
gui.playerdetails.player.lore.inactive=&7Inaktiivinen\: &b{0}/{1} päivää
|
||||
gui.playerdetails.kick.title=&fPotkia
|
||||
gui.playerdetails.promote.demote.title=&fYlentää/Alentaa
|
||||
gui.playerdetails.promote.lore.left.click=&7Paina hiiren vasemmalla ylentääksesi
|
||||
gui.playerdetails.demote.lore.right.click=&7Paina hiiren oikealla alentaaksesi
|
||||
gui.playerdetails.assign.unassign.title=&fAnna arvo/Poista arvo
|
||||
gui.playerdetails.assign.lore.left.click=&7Paina hiiren vasemmalla antaaksesi arvon
|
||||
gui.playerdetails.unassign.lore.right.click=&7Paina hiiren oikealla poistaaksesi arvon
|
||||
gui.playerdetails.trust.untrust.title=&fLuota/Poista luottamus
|
||||
gui.playerdetails.trust.lore.left.click=&7Paina hiiren vasemmalla luottaaksesi
|
||||
gui.playerdetails.untrust.lore.right.click=&7Paina hiiren oikealla poistaaksesi luottamus
|
||||
gui.playerdetails.ban.unban.title=&fPorttikiellä/Poista porttikielto
|
||||
gui.playerdetails.ban.left.click=&7Klikkaa vasemmalla kieltääksesi pelaaja klaaneista
|
||||
gui.playerdetails.unban.right.click=&7Klikkaa oikealla poistaaksesi kiellon pelaajalta
|
||||
gui.playerdetails.resetkdr.lore=&7Klikkaa vasemmalla resetoidaksesi pelaajan KDR\:än
|
||||
gui.playerdetails.purge.title=&fPuhdista
|
||||
gui.playerdetails.purge.lore=&7Klikkaa vasemmalla puhdistaaksesi tämän pelaajan tiedot
|
||||
gui.playerdetails.place.title=&fAnna
|
||||
gui.playerdetails.place.lore=&7Klikkaa vasemmalla valitaksesi klaanin pelaajalle
|
||||
gui.languageselector.title=Kielet - Nykyinen\: {0}
|
||||
gui.languageselector.language.title=&f{0}
|
||||
gui.languageselector.language.lore.left.click=&7Klikkaa vasemmalla valitaksesi tämän kieleksesi
|
||||
gui.languageselector.language.lore.translation.status=&7Käännöksen tila\: &b{0}%
|
||||
gui.languageselector.language.lore.right.click=&7Klikkaa hiiren oikealla painikkeella auttaaksesi kääntämisessä
|
||||
gui.confirmation.title=Vahvistus
|
||||
gui.confirmation.confirm=&7Klikkaa tästä vahvistaaksesi
|
||||
gui.confirmation.return=&7Klikkaa tästä mennäksesi takaisin
|
||||
gui.not.supported=&cVirhe tapahtui GUI\:ta avatessa\! Otetaan pois käytöstä... Latasitko varmasti oikean version?
|
||||
staff.member.verify.clan=&cHenkilökunnan jäsenen pitää vahvistaa klaanisi\!
|
||||
player.already.has.that.rank=&cPelaajalla on jo kyseinen arvo\!
|
||||
joined.clan.chat=&bLiityit klaani chattiin
|
||||
already.joined.clan.chat=&bOlet jo liittynyt klaani chattiin
|
||||
left.clan.chat=&bLähdit klaanichatista
|
||||
muted.clan.chat=&bMykistit klaanichatin
|
||||
unmuted.clan.chat=&bPoistit mykistyksen klaanichatista
|
||||
joined.ally.chat=&bLiityit liittolaisten chattiin
|
||||
left.ally.chat=&bLähdit liittolaisten chatista
|
||||
muted.ally.chat=&bMykistit liittolaisten chatin
|
||||
unmuted.ally.chat=&bPoistit mykistyksen liittolaisten chatista
|
||||
already.joined.ally.chat=&bOlet jo liittynyt liittolaisten chattiin
|
||||
player.already.in.this.clan=&cPelaaja on jo tässä klaanissa
|
||||
your.clan.reached.max.alliances=&cKlaanisi on saavuttanut liittolaisten enimmäismäärän
|
||||
other.clan.reached.max.alliances=&cToinen klaani jo saavuttanut liittolaisten enimmäismäärän
|
||||
insert.clan.tag=&bKirjoita klaanin tunniste (tai "{0}")\:
|
||||
insert.clan.name=&bKirjoita klaanin tunniste\:
|
||||
insert.rank.name=&bKirjoita arvon nimi (tai "{0}")\:
|
||||
click.to.help.translating=&bKlikkaa tätä linkkiä auttaaksesi kääntämisessä\:\n&r{0}
|
||||
your.clan.must.have.members.to.verify=&bKlaanillasi täytyy olla ainakin {0} jäsentä jotta klaani voidaan vahvistaa\!
|
||||
you.must.hold.a.banner=&cSinulla pitää olla lippu kädessäsi\!
|
||||
you.changed.clan.banner=&bVaihdoit klaanisi lippua\!
|
||||
your.clan.already.verified=&cKlaanisi on jo vahvistettu\!
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
clan.profile=\n&b%clan_name%&7 profiili &8-------------------------------------------\n \n &7Nimi\: &e[&8%clan_color_tag%&e] &b%clan_name%\n &7Kuvaus\: &f%clan_description%\n &7Tila\: &f%clan_status%\n &7Johtajat\: %clan_leaders%\n &7Jäseniä pelaamassa\: &f%clan_online_count%&7/&f%clan_size%\n &7KDR\: &e%clan_kdr%\n &7Tapot yhteensä\: &8[Rival\:&f%clan_rival_kills% &8Liittolaiset\:&f%clan_ally_kills% &8Neutraali\:&f%clan_neutral_kills% &8Siviili\:&f%clan_civilian_kills%&8]\n &7Kuolemat\: &f%clan_deaths%\n &7Vero\: &f%clan_fee_enabled%&7, &f%clan_fee_value% $\n &7Liittolaiset\: &f%clan_allies%\n &7Viholliset\: &f%clan_rivals%\n &7Perustettu\: &f%clan_founded%\n &7Toimeeton\: &f%clan_inactive_days%&7/&f%clan_max_inactive_days% päivää\n
|
||||
player.lookup.clanname=&e[&8%clan_color_tag%&e] &b%clan_name%
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
player.lookup.killtype=&7Tappotyyppi\: %player_kill_type%
|
||||
player.lookup=\n&b%player_name%&7's pelaajan tiedot &8-------------------------------------------\n \n &7Klaani\: &f%clan_name%\n &7Arvo\: &f%player_rank%\n &7Tila\: &f%player_status%\n &7KDR\: &e%player_kdr%\n &7Tappoja yhteensä\: &8[Viholliset\:&f%player_rival_kills% &8Liittolaiset\:&7%player_ally_kills% &8Neutraali\:&f%player_neutral_kills% &8Siviili\:&f%player_civilian_kills%&8]\n &7Kuolema\: &f%player_deaths%\n &7Liittymispäivä\: &f%player_join_date%\n &7Viimeksi nähty\: &f%player_last_seen%\n &7Aiemmat klaanit\: &f%player_past_clans%\n &7Toimeeton &f%player_inactive_days%&7/&f%player_max_inactive_days% päivää\n %kill_type_line%
|
||||
economy.disabled=&cEkonomia poistettu käytöstä\!
|
||||
has.been.purged=Pelaajan {0} tiedot puhdistettu
|
||||
accepted.invitation=&bHyväksyit {0} pyynnön
|
||||
denied.invitation=&cKielisit {0} pyynnön
|
||||
must.be.in.clan.to.pvp=&cSinun ja pelaajan {0} pitää olla klaanissa jotta voitte PVP\!
|
||||
clans.not.at.war.pvp.denied=&cKlaanisi ei sodi klaanin {0} kanssa\!
|
||||
cannot.attack.civilians=&cEt voi hyökätä siviilejä\!
|
||||
cannot.attack.clan.member=&cEt voi hyökätä toista klaanin jäsentä\!
|
||||
cannot.attack.ally=&cEt voi hyökätä liittolaistasi\!
|
||||
cannot.send.discord.message=Et voi lähettää viestejä {0}. Et ole klaanin jäsen\!
|
||||
discordhook.is.disabled=&cDiscord-integraatio on poistettu käytöstä tai sitä ei ole saatavilla\!
|
||||
your.clan.doesnt.have.any.linked.player=Klaanillasi ei ole liitettyjä jäseniä
|
||||
your.clan.doesnt.have.minimum.linked.player=Klaanillasi ei ole tarpeeksi liitettyjä jäseniä
|
||||
your.clan.is.not.on.the.whitelist=Klaanisi ei ole sallittu
|
||||
your.clan.already.has.channel=Klaanillasi on jo discord kanava
|
||||
discord.reached.category.limit=Discord on osunut kategorien rajaan\!
|
||||
discord.reached.channels.limit=Discord on osunut kanavien rajaan\!
|
||||
discord.created.successfully=&bDiscord-kanava luotiin onnistuneesti\!
|
||||
you.did.not.link.your.account=Et ole linkittänyt tiliäsi\!
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
cannot.change.member.fee.now=&cEt voi vaihtaa jäsenmaksua lähellä sen keräilyaikaa.
|
||||
cannot.change.member.fee.hours=&cYritä uudelleen {0} tunnin kuluttua...
|
||||
cannot.change.member.fee.minutes=&cYritä uudelleen {0} minuutin kuluttua...
|
||||
cannot.kick.last.leader=&Et voi siirtää viimeistä johtajaa\!
|
||||
cannot.disband.permanent=&cEt voi poistaa tätä klaania. Sillä on pysyvä tila.
|
||||
you.can.only.set.base.in.your.land=&cVoit asettaa kodin vain maallasi\!
|
||||
only.leaders.can.create.lands=&cVain johtajat voivat luoda maita\!
|
||||
only.one.land.per.clan=&cKlaanillasi on jo maa\!
|
||||
only.clan.members.can.create.lands=&cVain klaanin jäsenet voivat luoda maita\!
|
||||
land.allowed.all.actions=&bKaikki toiminnot ovat nyt sallittuja\!
|
||||
land.blocked.all.actions=&bKaikki toiminnot ovat nyt estettyjä\!
|
||||
land.allowed.action=&bSallittu toiminto\!
|
||||
land.blocked.action=&bEstetty toiminto\!
|
||||
you.do.not.own.lands=&cEt omista maata\!
|
||||
land.sharing.disabled=&cMaiden jakaminen on poistettu käytöstä\!
|
||||
clan.chat.disabled=&cKlaani chatti on pois päältä\!
|
||||
ally.chat.disabled=&cLiittolaisten chatti on pois päältä\!
|
||||
war.expired=Sota {0} kanssa on päättynyt\!
|
||||
you.cant.start.war.online.members.difference=Et voi alottaa sotaa. Toisella klaanilla on enemmän jäseniä paikalla kuin toisella.
|
||||
invitedplayer.invite.off=Tämä pelaaja on poistanut klaanikutsut pois käytöstä
|
||||
user.hasnt.played.before=&cTämä käyttäjä ei ole pelannut ennen
|
||||
clan.list.balance.header=\n{0} &7korkein saldo &8-----------------------\n\n&8Klaaneja yhteensä\: &7{1}\n\n&8\#&7. &8Klaani &7- &8Saldo
|
||||
clan.list.balance.line=&f{0}. {1}{2}{3}&b{4} &7- &e{5}$
|
||||
@@ -8,7 +8,6 @@ removedefault.command=supprimerdefaut
|
||||
permissions.command=permissions
|
||||
list.command=liste
|
||||
balance.command=solde
|
||||
list.order.asc=ascendant
|
||||
list.order.desc=desc
|
||||
list.type.name=nom
|
||||
list.type.kdr=kda
|
||||
@@ -24,7 +23,7 @@ interact_entity.command=interaction_entite
|
||||
container.command=conteneur
|
||||
confirm.command=confirmer
|
||||
profile.command=profile
|
||||
roster.command=liste des membres
|
||||
roster.command=membres
|
||||
lookup.command=recherche
|
||||
leaderboard.command=classement
|
||||
alliances.command=alliances
|
||||
@@ -32,7 +31,7 @@ rivalries.command=rivalités
|
||||
vitals.command=vitaux
|
||||
coords.command=coordonnées
|
||||
stats.command=statistiques
|
||||
ally.command=allié
|
||||
ally.command=allie
|
||||
add.command=ajoute
|
||||
remove.command=retirer
|
||||
allow.command=autoriser
|
||||
@@ -43,10 +42,8 @@ assign.command=assigner
|
||||
unassign.command=enlever
|
||||
rival.command=rival
|
||||
bb.command=bb
|
||||
display.command=affichage
|
||||
clear.command=effacer
|
||||
modtag.command=modtag
|
||||
rename.command=renommer
|
||||
toggle.command=basculer
|
||||
tag.command=tag
|
||||
deposit.command=dépôt
|
||||
@@ -169,37 +166,27 @@ command.description.bb.display=Affichez le bulletin de votre clan
|
||||
command.description.bb.clear=Effacez le bulletin de votre clan
|
||||
command.description.bb.post=Postez un message sur le bulletin de votre clan
|
||||
command.description.mod.bb.display=Affiche le tableau de bord d'un clan
|
||||
command.description.mod.bb.clear=Effacer le bulletin de votre clan
|
||||
command.description.mod.bb.post=Poster un message sur le bulletin de votre clan
|
||||
command.description.place=Place un joueur dans un clan
|
||||
command.description.reload=Recharge le plugin et sa configuration
|
||||
command.description.trust=Fait confiance à un membre
|
||||
command.description.untrust=Ne fait plus confiance à un membre
|
||||
command.description.resign=Rejette de votre clan
|
||||
command.description.help=Affiche cette aide ou recherche dans l'aide
|
||||
command.description.ally.add=Ajoute un allié
|
||||
command.description.clan=Ouvre l'interface
|
||||
command.description.disband=Dissoudre votre clan
|
||||
command.description.mod.disband=Dissoudre un clan
|
||||
command.description.mod.kick=Exclure un joueur du clan
|
||||
command.description.modtag.other=Modifier le tag du clan
|
||||
command.description.modtag=Modifie votre tag de clan
|
||||
command.description.purge=Purge certainnes données du joueur
|
||||
command.description.setbanner=Défini votre bannière de clan
|
||||
command.description.verify=Vérifie ton clan
|
||||
command.description.mod.verify=Vérifie un clan
|
||||
command.description.invite=Invite un joueur dans votre clan
|
||||
command.description.fee.check=Regarder la taxe de votre clan et s'il est disponible
|
||||
command.description.fee.set=Entrer la taxe de votre clan
|
||||
command.description.bank.status=Vérifie la balance bancaire de votre clan
|
||||
command.description.bank.admin.status=Vérifier le solde bancaire d'un clan
|
||||
command.description.bank.withdraw.all=Retirer tout de la banque de votre clan
|
||||
command.description.bank.withdraw.amount=Retirer un montant de la banque de votre clan
|
||||
command.description.bank.admin.take=Prélever une somme d'argent dans la banque d'un clan
|
||||
command.description.bank.deposit.all=Déposez tout votre argent dans la banque de votre clan
|
||||
command.description.bank.deposit.amount=Déposez une somme d'argent dans la banque de votre clan
|
||||
command.description.bank.admin.give=Donne une somme d'argent à la banque d'un clan
|
||||
command.description.bank.admin.set=Définis la somme d'argent de la banque d'un clan
|
||||
command.description.war.start=Commence une guerre
|
||||
command.description.war.end=Termine une guerre
|
||||
command.description.resetkdr.everyone=Réinitialise la KDA de tout le monde
|
||||
@@ -207,33 +194,6 @@ command.description.resetkdr.player=Réinitialise la KDA d'un joueur
|
||||
command.description.resetkdr=Réinitialise ton KDA
|
||||
command.description.admin.demote=Rétrograder n'importe quel chef de n'importe quel clan
|
||||
command.description.demote=Rétrograde un chef
|
||||
command.description.admin.promote=Promouvoir n'importe quel membre de n'importe quel clan
|
||||
command.description.promote=Promouvoir un membre en tant que leader
|
||||
command.description.admin.permanent=Bascule le statut permanent de n'importe quel clan
|
||||
command.description.toggle.bb=Permet d'afficher ou non le tableau d'affichage lors de la connexion
|
||||
command.description.toggle.invite=Bascule si les joueurs peuvent vous envoyer des invitations de clan ou non
|
||||
command.description.toggle.tag=Permet d'afficher ou non l'étiquette de votre clan à côté de votre nom
|
||||
command.description.toggle.deposit=Permet de déterminer si les dépôts sont autorisés dans votre clan
|
||||
command.description.toggle.withdraw=Bascule si les retraits dans le clan sont activés ou non
|
||||
command.description.toggle.fee=Bascule si la taxe du clan est activée ou non
|
||||
command.description.alliances=Liste toutes les alliances de clan
|
||||
command.description.coords=Montre les coordonnées des membres du clan
|
||||
command.description.rank.assign=Assigne un rang à un membre
|
||||
command.description.rank.unassign=Enlève un rang à un membre
|
||||
command.description.rank.create=Crée un rang
|
||||
command.description.rank.delete=Retire un rang
|
||||
command.description.rank.list=Liste les rangs de votre clan
|
||||
command.description.rank.setdisplayname=Sélectionner l'affichage d'un rang
|
||||
command.description.rank.setdefault=Sélectionné le rang par défaut
|
||||
command.description.rank.removedefault=Enlève le rang par défaut
|
||||
command.description.rank.permissions.available=Liste les permissions de rang disponible
|
||||
command.description.rank.permissions.rank=Liste les permissions d'un rang
|
||||
command.description.rank.permissions.add=Ajoute une permission à un rang
|
||||
command.description.rank.permissions.remove=Enlève une permission à un rang
|
||||
command.description.rename=Renommer votre clan
|
||||
command.description.mod.rename=Renommer un clan
|
||||
command.description.locale=Définir votre langue
|
||||
command.description.mod.locale=Définir la langue d'un joueur
|
||||
home-menu=/{0} home{1} - Téléporte au domicile du clan
|
||||
home-set-menu=/{0} home set{1} - Définir le domicile du clan
|
||||
home-clear-menu=/{0} home set{1} - Effacer le domicile du clan
|
||||
@@ -251,7 +211,6 @@ clans.lower=clans
|
||||
rival=Rival
|
||||
civilian=Civil
|
||||
neutral=Neutre
|
||||
ally=Allié
|
||||
free.agent=Agent Libre
|
||||
days=jours
|
||||
rivals=Rivaux
|
||||
@@ -260,10 +219,9 @@ online=En ligne
|
||||
player=Joueur
|
||||
seen=Vu
|
||||
leader=chef
|
||||
roster=liste des membres
|
||||
roster=membres
|
||||
trusted=fiable
|
||||
untrusted=non fiable
|
||||
in.rank=en rang
|
||||
deaths=Morts
|
||||
weights=Poids
|
||||
stats=statistiques
|
||||
@@ -274,12 +232,10 @@ food=Nourriture
|
||||
vitals=vitaux
|
||||
verified=Vérifié
|
||||
unverified=Non vérifié
|
||||
permanent=Permanent
|
||||
profile=profile
|
||||
civilian.abbreviation=Civ
|
||||
rank=Rang
|
||||
leaders=Chefs
|
||||
none=&8Aucun
|
||||
today=Aujourd'hui
|
||||
kills=Tue
|
||||
mostkilled=Plus Tués
|
||||
@@ -294,7 +250,6 @@ membership.invitation={0} a refusé l'invitation à rejoindre
|
||||
joined.the.clan={0} a rejoint le clan
|
||||
signed.off.request.cancelled={0} s'est déconnecté. Demande {1} annulée.
|
||||
clan.deletion={0} a refusé la suppression du clan. Le consensus a échoué.
|
||||
rename.refused={0} a refusé le changement de nom du clan. Le consensus a échoué.
|
||||
has.been.disbanded=Le clan {0} a été dissous
|
||||
denied.the.promotion={0} a refusé la promotion de {1}. Le consensus a échoué.
|
||||
demoted.back.to.member={0} a été rétrogradé en tant que membre
|
||||
@@ -310,17 +265,12 @@ has.joined={0} a rejoint {1}
|
||||
proposing.to.end.the.rivalry={0} propose de mettre fin à la rivalité avec {1}
|
||||
proposing.an.alliance={0} propose une alliance avec {1}
|
||||
inviting.you.to.join={0} vous invite à rejoindre {1}
|
||||
asking.for.the.deletion={0} demande la suppression du clan
|
||||
asking.for.the.promotion={0} demande la promotion de {1}
|
||||
asking.for.the.demotion={0} demande la rétrogradation de {1}
|
||||
asking.to.disband={0} demande la dissolution du clan
|
||||
asking.to.rename={0} demande à renommer le clan en {1}
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
request.message= \ &8[&8{0}&8] &b{1}\n %accepter% &bor %refuser%\n
|
||||
clickable.accept=&a&l[ACCEPTER]
|
||||
clickable.deny=&c&l[REFUSER]
|
||||
hover.click.to.accept=Cliquez ici pour accepter
|
||||
hover.click.to.deny=&cCliquez ici pour refuser
|
||||
not.sufficient.money=Vous n'avez pas assez d'argent sur votre compte (nécessaire \: {0} $)
|
||||
account.has.been.debited=Votre compte a été débité {0}
|
||||
mysql.connection.successful=MySQL Connexion réussie
|
||||
mysql.connection.failed=MySQL Échec de la connexion
|
||||
@@ -332,14 +282,12 @@ clan.players=Joueurs du Clan\: {0}
|
||||
clans=Clans\: {0}
|
||||
banned=Vous êtes banni des commandes de clan
|
||||
nothing.more.to.see=Rien de plus à voir
|
||||
nothing.to.vote=&cRien à accepter ou à refuser
|
||||
no.leader.permissions=Vous n'avez pas les permissions de chef
|
||||
you.have.already.voted=Vous avez déjà voté
|
||||
has.voted.to.deny={0} a voté pour refuser
|
||||
view.next.page=Tapez /{0} pour voir la page suivante.
|
||||
voted.to.accept={0} a voté pour accepter
|
||||
bulletin.board.header=&8* &e{0} &ftableau d'affichage
|
||||
bulletin.board.message={0}\: &f{1}
|
||||
bulletin.board.header={0}* {1}{2} tableau d’affichage
|
||||
has.been.disbanded.rivalry.ended={0} a été dissous. Rivalité terminée.
|
||||
has.been.disbanded.alliance.ended={0} a été dissous. L'alliance est terminée.
|
||||
clan.disbanded=Clan Dissous
|
||||
@@ -347,11 +295,8 @@ clan.disbanded=Clan Dissous
|
||||
many.color.days={0}{1} jours
|
||||
insufficient.permissions=Permissions insuffisantes
|
||||
clan.is.not.verified=Le clan n'est pas vérifié
|
||||
player.not.a.member.of.any.clan=&cLe joueur n'est membre d'aucun clan
|
||||
not.a.member.of.any.clan=Vous n'êtes membre d'aucun clan
|
||||
minimum.to.make.alliance=Votre clan doit avoir au moins {0} joueurs pour faire des alliances
|
||||
cannot.be.same.clan=&cVous devez insérer un clan différent du vôtre \!
|
||||
other.clan.not.verified=&cL'autre clan n'est pas vérifié \!
|
||||
your.clans.are.not.allies=Vos clans ne sont pas alliés
|
||||
has.broken.the.alliance={0} a rompu l'alliance avec {1}
|
||||
at.least.one.leader.accept.the.alliance=Au moins un chef de l'alliance doit être en ligne pour accepter l'alliance
|
||||
@@ -366,17 +311,16 @@ clan.wide.friendly.fire.blocked=Tir allié de clan bloqué
|
||||
clan.wide.friendly.fire.is.allowed=Tir allié de clan autorisé
|
||||
you.are.the.only.member.online=Vous êtes le seul membre en ligne
|
||||
your.clan.color.tag.cannot.be.longer.than.characters=&Votre tag de clan ne peut pas dépasser {0} caractères
|
||||
your.clan.tag.cannot.be.longer.than.characters=&cVotre tag de clan ne peut pas être plus long que {0} caractères
|
||||
your.clan.tag.must.be.longer.than.characters=&cVotre tag de clan doit être plus grand que {0} caractères
|
||||
your.tag.cannot.contain.the.following.colors=&cVotre tag de clan ne peut pas contenir les couleurs suivantes\: {0}
|
||||
your.tag.doesnt.meet.the.requirements=&cVotre tag ne répond pas aux exigences.
|
||||
your.tag.cannot.contain.color.codes=&cVotre tag ne peut pas contenir des codes de couleur
|
||||
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=&cLe tag de votre clan ne peut contenir que des lettres, des chiffres et des codes de couleur
|
||||
your.clan.tag.cannot.be.longer.than.characters=Votre tag de clan ne peut pas dépasser {0} caractères
|
||||
your.clan.tag.must.be.longer.than.characters=Votre tag de clan doit être plus grand que {0} caractères
|
||||
your.tag.cannot.contain.the.following.colors=Votre tag de clan ne peut pas contenir les couleurs suivantes\: {0}
|
||||
your.tag.cannot.contain.color.codes=Votre tag ne peut pas contenir des codes de couleur
|
||||
you.cannot.set.colored.ranks=Vous ne pouvez pas définir de rangs colorés
|
||||
your.clan.name.cannot.be.longer.than.characters=Votre tag de clan ne peut pas dépasser {0} caractères
|
||||
your.clan.name.must.be.longer.than.characters=Le nom d'utilisateur doit être composé de plus de {0} caractères
|
||||
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=Le tag de votre clan ne peut contenir que des lettres, des chiffres et des codes de couleur
|
||||
your.clan.name.cannot.contain.color.codes=Votre tag ne peut pas contenir des codes de couleur
|
||||
that.tag.name.is.disallowed=&cCe nom de tag n'est pas autorisé
|
||||
that.tag.name.is.disallowed=Ce nom de tag n'est pas autorisé
|
||||
you.must.first.resign=Vous devez d'abord démissionner de {0}
|
||||
clan.with.this.tag.already.exists=Un clan avec cette étiquette existe déjà
|
||||
get.your.clan.verified.to.access.advanced.features=Faites vérifier votre clan pour accéder aux fonctionnalités avancées
|
||||
@@ -384,7 +328,6 @@ clan.created=Clan {0} créé
|
||||
not.enough.leaders.online.to.vote.on.demotion=Il n'y a pas assez de chefs en ligne pour voter sur cette rétrogradation
|
||||
demotion.vote.has.been.requested.from.all.leaders=Le vote de rétrogradation a été demandé par tous les chefs
|
||||
player.is.not.a.leader.of.your.clan=Le joueur n'est pas un chef de votre clan
|
||||
player.is.not.a.leader=Le joueur n'est pas un leader
|
||||
clan.has.been.disbanded=Le clan {0} a été dissous
|
||||
clan.disband.vote.has.been.requested.from.all.leaders=Le vote de dissolution du clan a été demandé par tous les chefs
|
||||
friendy.fire.is.now.managed.by.your.clan=Le feu d'allié est maintenant géré par votre clan
|
||||
@@ -393,9 +336,8 @@ global.friendy.fire.is.now.managed.by.each.clan=Le feu d'allié est maintenant g
|
||||
global.friendy.fire.is.already.being.managed.by.each.clan=Le feu d'allié est déjà géré par chaque clan
|
||||
global.friendly.fire.is.set.to.allowed=Le feu d'allié global est configuré sur autorisé
|
||||
global.friendly.fire.is.already.being.allowed=Le feu d'allié global est déjà configuré sur autorisé
|
||||
the.player.doesn.t.not.have.the.permissions.to.join.clans=Le joueur n'a pas les permissions nécessaires pour rejoindre les clans
|
||||
the.player.doesn.t.not.have.the.permissions.to.join.clans=Le joueur n'a pas les permissions pour rejoindre les clans
|
||||
you.cannot.invite.yourself=Vous ne pouvez pas vous invitez vous-même
|
||||
you.did.not.answer.in.time=Vous n'avez pas répondu à temps, annulation...
|
||||
this.player.is.banned.from.using.clan.commands=Ce joueur n'est pas autorisé à utiliser les commandes du clan
|
||||
the.player.is.already.member.of.another.clan=Le joueur est déjà membre d'un autre clan
|
||||
has.been.asked.to.join={0} a été demandé à rejoindre {1}
|
||||
@@ -415,20 +357,16 @@ kdr.0=KDR\: {0}
|
||||
inactive.0=Inactif\: {0}
|
||||
clan.commands=commandes de clan
|
||||
you.can.only.modify.the.color.and.case.of.the.tag=Vous ne pouvez seulement modifier la couleur et le tag
|
||||
locale.has.been.changed=&cVotre langue a été modifiée
|
||||
tag.changed.to.0=Tag changé à {0}
|
||||
0.tag.changed.to.1=&bLe tag de {0} a été changé avec succès en {1}
|
||||
name.0=Nom\: {0}
|
||||
description.0=Description\: {0}
|
||||
leaders.0=Chefs\: {0}
|
||||
allies.0=Alliés\: {0}
|
||||
rivals.0=Rivaux\: {0}
|
||||
other.player.must.be.online=Le joueur doit être en ligne \!
|
||||
the.player.does.not.have.the.permissions.to.lead.a.clan=Le joueur n'a pas la permission de diriger un clan
|
||||
you.cannot.promote.yourself=Vous ne pouvez pas vous promouvoir vous-même
|
||||
the.player.is.already.a.leader=Le joueur est déjà un chef
|
||||
configuration.reloaded=Configuration rechargée
|
||||
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=Le dernier chef ne peut pas démissionner. Vous devez nommer un autre chef ou dissoudre le clan
|
||||
0.has.resigned={0} a démissionné
|
||||
you.cannot.trust.yourself=Vous ne pouvez pas vous faire confiance
|
||||
leaders.are.already.trusted=Les chefs sont déjà de confiance
|
||||
@@ -488,8 +426,6 @@ iron=fer
|
||||
the.clan.cannot.be.rivaled=Le clan ne peut pas être rivalisé
|
||||
bboff=BB désactivé
|
||||
bbon=BB activé
|
||||
inviteon=Invitation activée
|
||||
inviteoff=Invitation désactivée
|
||||
tagoff=Tag désavtivé
|
||||
tagon=Tag activé
|
||||
depositon=Dépôt activé
|
||||
@@ -504,7 +440,6 @@ hombase.set=Domicile du clan est fixée à \: {0}
|
||||
hombase.cleared=Domicile du clan effacé
|
||||
hombase.mod.set=Le domicile de {0} a été définie à\:
|
||||
hombase.not.set=Domicile non défini
|
||||
home.set.in.different.server=La base de clan a été définie dans un autre serveur
|
||||
rival.limit.reached=Vous avez atteint la limite de rivaux. Vous ne pouvez plus rivaliser avec aucun autre clan.
|
||||
you.moved.teleport.cancelled=Vous avez bougé, téléportation annulée
|
||||
waiting.for.teleport.stand.still.for.0.seconds=En attente de téléportation, restez immobile pendant {0} secondes
|
||||
@@ -515,48 +450,20 @@ your.clans.are.already.rivals=Vos clans sont déjà rivaux
|
||||
player.got.money=Vous avez reçu {0} pour avoir tué {1} selon votre KDR \: {2}
|
||||
cleared.bb=Tableau d'affichage effacé
|
||||
clan.balance=Solde du clan\: {0}
|
||||
clan.admin.balance={0}'s solde\: {1} $
|
||||
bb.fee.player.kicked={0} a été expulsé pour ne pas avoir payé les frais
|
||||
bb.fee.set={0} $ est le montant des frais
|
||||
bb.clan.deposit={0} $ ont été déposés par {1}
|
||||
player.clan.deposit=Vous avez déposé {0}
|
||||
bb.clan.withdraw={0} $ ont été retirés par {1}
|
||||
bb.clan.take={0} $ ont été pris par {1}
|
||||
bb.clan.give={0} $ ont été données par {1}
|
||||
bb.clan.set={0} $ ont été définis par {1}
|
||||
player.clan.withdraw=Vous retirez {0}
|
||||
clan.admin.take=Vous avez prélevé {0} $ sur la solde de {1}
|
||||
clan.admin.give=Vous avez donné {0} $ à la solde de {1}
|
||||
clan.admin.set=Vous mettez le solde bancaire de {0} à {1}
|
||||
clan.admin.bank.not.enough.money=La solde de {0} n'a pas assez d'argent \!
|
||||
clan.bank.not.enough.money=Votre banque de clans n'a pas assez d'argent
|
||||
your.clans.are.not.rivals=Vos clans ne sont pas rivaux
|
||||
the.clan.members.reached.limit=Votre clan a atteint la limite de membres
|
||||
this.clan.has.reached.the.member.limit=&bCe clan à atteint la limite de clan maximale
|
||||
you.have.reseted.your.kdr=Vous avez réinitialisé votre KDR
|
||||
you.have.reseted.0.kdr=Vous avez réinitialisé la KDR de {0}
|
||||
you.have.reseted.kdr.of.all.players=Vous avez réinitialisé la KDR de tous les joueurs
|
||||
you.have.successfully.renamed.your.clan=&bVous avez renommé votre clan en {0} avec succès
|
||||
you.have.successfully.renamed.the.clan=&bVous avez renommé le clan en {0} avec succès
|
||||
you.have.toggled.permanent.status=Vous avez activé le statut permanent pour {0}
|
||||
permanent.status.enabled=Le statut permanent de votre clan à été activé par {0}
|
||||
permanent.status.disabled=Le statut permanent de votre clan à été désactivé par {0}
|
||||
yes=Oui
|
||||
cancel=Annuler
|
||||
resign.confirmation=Êtes-vous sûr de vouloir démissionner ? {0}
|
||||
disband.confirmation=Êtes-vous sûr de dissoudre votre clan ? {0}
|
||||
resetkdr.confirmation=Êtes-vous sûr de réinitialisé votre KDR ? {0}
|
||||
resign.success=Vous avez démissionné de votre clan avec succès
|
||||
you.cannot.demote.the.last.leader=Vous ne pouvez pas rétrograder le dernier chef
|
||||
you.cannot.move.the.last.leader=Vous ne pouvez pas bouger le dernier leader
|
||||
player.successfully.demoted=Le lecteur a été rétrogradé avec succès
|
||||
player.successfully.promoted=Ce joueur à été promu avec succès
|
||||
bb.ago= auparavant
|
||||
bb.moments=moments
|
||||
bb.seconds= secondes
|
||||
bb.minutes= \ minutes
|
||||
bb.one.minute=1 minute
|
||||
bb.hours= heures
|
||||
bb.one.hour=1 heure
|
||||
bb.days= jours
|
||||
bb.one.day=1 jour
|
||||
@@ -576,8 +483,6 @@ no.description=Sans description
|
||||
the.player.must.wait.0.before.joining.your.clan.again=Ce joueur doit attendre {0} minute(s) avant de rejoindre votre clan à nouveau
|
||||
disabled.command=Commande désactivée
|
||||
rank.displayname.updated=Le nom d'affichage du rang a été mis à jour \!
|
||||
rank.setdefault=Le rang par défaut du clan a été mis a {0}
|
||||
rank.removedefault=Le rang par défaut du clan a été retiré
|
||||
rank.0.permissions=Permissions du rang {0}\:
|
||||
available.rank.permissions=Permissions disponibles pour les rangs\:
|
||||
rank.already.exists=Le rang existe déjà
|
||||
@@ -592,29 +497,17 @@ no.ranks=Aucun rang n'a été créé
|
||||
rank.no.permissions=Ce rang n'a aucune permission
|
||||
player.unassigned.from.rank=Joueur retiré d'un rang
|
||||
you.must.be.0.or.have.the.permission.1.to.use.this=Vous devez être {0} ou votre chef doit donner à votre rang la permission {1} pour utiliser ceci
|
||||
deposit.not.allowed=Les dépôts d'argent sont désactivés, utilisés /%clan %toggle %deposit pour l'activé
|
||||
withdraw.not.allowed=Les retraits sont désactivés, utilisé /%clan %toggle %withdraw pour l'activé
|
||||
resign.request.cancelled=Demande de démission annulée
|
||||
disband.request.cancelled=Demande de démission annulée
|
||||
resetkdr.request.cancelled=Demande de réinitialisation du KDR annulée
|
||||
clan.create.request.cancelled=Demande de création de clan annulée
|
||||
rank.create.request.cancelled=Demande de création de rang annulée
|
||||
promotion.vote.has.been.requested.from.all.leaders=Le vote de promotion a été demandé par tous les chefs
|
||||
rename.vote.has.been.requested.from.all.leaders=&bLe vote de changement de nom a été demandé par tout les leaders
|
||||
allowed=autorisé
|
||||
blocked=bloqué
|
||||
chat.joined=rejoint
|
||||
chat.not.joined=non rejoint
|
||||
chat.didnt.join=&bVous n'avez pas rejoint ce salon
|
||||
gui.loading=§7Chargement ...
|
||||
gui.back.title=&fRetour
|
||||
gui.previous.page.title=&fPage Précédente
|
||||
gui.next.page.title=&fPage Suivante
|
||||
gui.lore.no.permission=Vous n'avez pas la permission pour effectuer cela\!
|
||||
gui.main.title={0} - menu du clan
|
||||
gui.main.languageselector.title=Sélectionnez votre langue
|
||||
gui.main.languageselector.lore.left.click=&7Clic gauche pour sélectionner votre langue
|
||||
gui.main.languageselector.lore.right.click=&7Clic droit pour aider à traduire
|
||||
gui.main.other.commands.title=&fAutres commandes
|
||||
gui.main.other.commands.lore=&7Clic gauche pour voir toutes les commandes du clan
|
||||
gui.main.clan.list.title=&fListe des Clans
|
||||
@@ -624,22 +517,7 @@ gui.main.reset.kdr.lore.price=&7Prix\: &b{0}
|
||||
gui.main.reset.kdr.lore=&7Clic gauche pour réinitialiser votre KDR
|
||||
gui.main.leaderboard.title=&fClassement
|
||||
gui.main.leaderboard.lore=&fClique gauche pour voir le classement
|
||||
gui.main.staff.title=&fStaff
|
||||
gui.main.staff.lore=&7Clic gauche pour ouvrir le menu du staff
|
||||
gui.staff.title=Staff
|
||||
gui.staff.clan.list.lore.left.click=&7Clic gauche pour voir tous les clans
|
||||
gui.staff.clan.list.lore.right.click=&7Clic droit pour voir tous les clans non vérifiés
|
||||
gui.player.list.title=Liste des joueurs
|
||||
gui.staff.player.list.title=&Liste des joueurs
|
||||
gui.staff.player.list.lore.left.click=&7Clic gauche pour voir tous les joueurs
|
||||
gui.staff.player.list.lore.right.click=&7Clic droit pour voir tous les joueurs en ligne
|
||||
gui.staff.global.ff.title=&fTirs d'amis global
|
||||
gui.staff.global.ff.lore.status=&fStatus\: {0}
|
||||
gui.staff.global.ff.lore.toggle=&7Clique gauche pour activer le statut de tir d'ami
|
||||
gui.staff.reload.title=&fRecharger
|
||||
gui.staff.reload.lore=&7Clique gauche pour recharger le plugin
|
||||
gui.staff.clanlist.unverified.title=Clans non vérifiés - Total\: {0}
|
||||
gui.staff.clanlist.toplace.title=Sélectionnés le nouveau clan de {0}
|
||||
gui.warning.title=Avertissement
|
||||
gui.warning.no.permission.title=&fAucune permission
|
||||
gui.warning.no.permission.plugin.lore=Vous n'avez pas la permission pour effectuer cela\!
|
||||
@@ -725,7 +603,6 @@ gui.clandetails.home.title=&fMaison
|
||||
gui.clandetails.home.lore.teleport.price=&7Prix de téléportation \: &b{0}
|
||||
gui.clandetails.home.lore.teleport=&fClic gauche pour vous téléporter à la maison de votre clan
|
||||
gui.staffclandetails.home.lore.teleport=&fClic gauche pour vous téléporter à ce home de votre clan
|
||||
gui.clandetails.home.lore.clear=&7Poser l'objet pour nettoyer votre home de clan
|
||||
gui.clandetails.home.lore.set.price=&7Définir le prix\: &b{0}
|
||||
gui.clandetails.home.lore.set=&fClic droit pour définir le domicile de votre clan
|
||||
gui.staffclandetails.home.lore.set=&fClic droit pour définir ce home de clan
|
||||
@@ -742,12 +619,9 @@ gui.clandetails.bank.title=&fBank
|
||||
gui.clandetails.bank.balance.lore=§7Solde \: &b{0}
|
||||
gui.clandetails.bank.withdraw.status.lore=&7Retirer \: &b{0}
|
||||
gui.clandetails.bank.deposit.status.lore=&7Dépôt\: &b{0}
|
||||
gui.clandetails.bank.withdraw.toggle.lore=&7Lâcher l'élément pour activer/désactiver le statut de retrait
|
||||
gui.clandetails.bank.deposit.toggle.lore=&7Clic droit pour activer/désactiver le statut de dépôt
|
||||
gui.clandetails.fee.title=&fFrais
|
||||
gui.clandetails.fee.status.lore=&fStatus\: {0}
|
||||
gui.clandetails.fee.value.lore=&7Valeur \: &b{0}
|
||||
gui.clandetails.fee.toggle.lore=&7Clic gauche pour basculer le statut des frais
|
||||
gui.clandetails.rank.title=&fRang
|
||||
gui.clandetails.rank.lore=&7Clic gauche pour voir les rangs du clan et les modifier
|
||||
gui.clandetails.verified.title=&fVérifié
|
||||
@@ -755,20 +629,13 @@ gui.clandetails.not.verified.title=&fNon vérifié
|
||||
gui.clandetails.verify.price.lore=&7Prix\: &b{0}
|
||||
gui.clandetails.not.verified.lore=&7Clic gauche pour vérifier votre clan
|
||||
gui.staffclandetails.not.verified.lore=&7Clic gauche pour vérifier ce clan
|
||||
gui.clandetails.resign.title=&fAbandonner
|
||||
gui.clandetails.resign.lore=&7Clic gauche pour abandonner votre clan
|
||||
gui.clandetails.disband.title=&fDissoudre
|
||||
gui.clandetails.disband.lore=&7Lâchez l'objet pour dissoudre votre clan
|
||||
gui.staffclandetails.disband.lore=&7Clic gauche pour dissoudre ce clan
|
||||
gui.clandetails.chat.title=&fChat
|
||||
gui.clandetails.chat.clan.chat.lore=&7/{0} [message] - Envoie un message au chat du clan
|
||||
gui.clandetails.chat.clan.join.leave.lore=&7/{0} {1}/{2} - &bRejoindre/quitte le chat du clan
|
||||
gui.clandetails.chat.ally.chat.lore=&7/{0} [message] - Envoie un message au chat d'allié
|
||||
gui.clandetails.chat.ally.join.leave.lore=&7/{0} {1}/{2} - &bRejoindre/Quitter le chat d'alliés
|
||||
gui.clandetails.chat.clan.status.lore=&fClan\: {0}
|
||||
gui.clandetails.chat.ally.status.lore=&7Allié\: &b{0}
|
||||
gui.clandetails.chat.clan.toggle.lore=&7Clic gauche pour basculer le statut du chat du clan
|
||||
gui.clandetails.chat.ally.toggle.lore=&7Clique droit pour activer le statut de chat d'allié
|
||||
gui.playerdetails.title={0}
|
||||
gui.playerdetails.player.title=&f{0}
|
||||
gui.playerdetails.player.lore.noclan=&fClan\: Aucun
|
||||
@@ -794,92 +661,15 @@ gui.playerdetails.unassign.lore.right.click=&fClic droit pour dés-assigner
|
||||
gui.playerdetails.trust.untrust.title=&fFaire confiance/Ne pas faire confiance
|
||||
gui.playerdetails.trust.lore.left.click=&fClic gauche pour faire confiance
|
||||
gui.playerdetails.untrust.lore.right.click=&fClic droit pour ne pas faire confiance
|
||||
gui.playerdetails.ban.unban.title=&fBannir/Débannir
|
||||
gui.playerdetails.ban.left.click=&7Clic gauche pour bannir ce joueur des clans
|
||||
gui.playerdetails.unban.right.click=&7Clic droit pour débannir ce joueur
|
||||
gui.playerdetails.resetkdr.lore=&7Clic gauche pour réinitialiser le KDR de ce joueur
|
||||
gui.playerdetails.purge.title=&fPurger
|
||||
gui.playerdetails.purge.lore=&7Clic gauche pour purger les données de ce joueur
|
||||
gui.playerdetails.place.title=&fPlace
|
||||
gui.playerdetails.place.lore=&7Clic gauche pour choisir un clan pour ce joueur
|
||||
gui.languageselector.title=Langues - Actuellement \: {0}
|
||||
gui.languageselector.language.title=&f{0}
|
||||
gui.languageselector.language.lore.left.click=&7Clic gauche pour définir ceci comme votre langue
|
||||
gui.languageselector.language.lore.translation.status=&7État de la traduction \: &b{0}%
|
||||
gui.languageselector.language.lore.right.click=&7Clic droit pour aider à traduire
|
||||
gui.confirmation.title=Confirmation
|
||||
gui.confirmation.confirm=&7Cliquez ici pour confirmer
|
||||
gui.confirmation.return=&7Cliquez ici pour revenir
|
||||
gui.not.supported=&cUne erreur s'est produite lors de l'ouverture de l'interface graphique \! Désactivation... Avez-vous téléchargé la bonne version ?
|
||||
staff.member.verify.clan=&cUn membre du staff doit vérifier votre clan \!
|
||||
player.already.has.that.rank=&cLe joueur a déjà ce rang \!
|
||||
joined.clan.chat=&bVous avez rejoint le chat du clan
|
||||
already.joined.clan.chat=&bVous êtes déjà connecté au chat du clan
|
||||
left.clan.chat=&bVous avez quitté le chat du clan
|
||||
muted.clan.chat=&bVous avez rendu muet le chat du clan
|
||||
unmuted.clan.chat=&bVous avez débloqué le chat du clan
|
||||
joined.ally.chat=&bVous avez rejoint le chat allié
|
||||
left.ally.chat=&bVous avez quitté le chat allié
|
||||
muted.ally.chat=&bVous avez rendu muet le chat allié
|
||||
unmuted.ally.chat=&bVous avez réactivé le chat allié
|
||||
already.joined.ally.chat=&bVous avez deja rejoind le chat d'allié
|
||||
player.already.in.this.clan=&cLe joueur est déjà dans ce clan
|
||||
your.clan.reached.max.alliances=&cVotre clan a atteint le nombre maximum d'alliances
|
||||
other.clan.reached.max.alliances=&cL'autre clan a atteint le nombre maximum d'alliances
|
||||
insert.clan.tag=&bInsérez le tag du clan (ou "{0} ") \:
|
||||
insert.clan.name=&bInsérer le nom du clan \:
|
||||
insert.rank.name=&bInsérez le nom du rang (ou "{0} ") \:
|
||||
click.to.help.translating=&bCliquez sur ce lien pour aider à traduire \:\n&r{0}
|
||||
your.clan.must.have.members.to.verify=&cVotre clan doit avoir au moins {0} membres pour être vérifié \!
|
||||
you.must.hold.a.banner=&cVous devez avoir une bannière dans votre main \!
|
||||
you.changed.clan.banner=&bVous avez changé la bannière de votre clan\!
|
||||
your.clan.already.verified=&cVotre clan est déjà vérifié \!
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
clan.profile=&b%clan_name%&7 profile &8-------------------------------------------\n \n &7Nom\: &e[&8%clan_color_tag%&e] &b%clan_name%\n &7Description\: &f%clan_description%\n &7Statust\: &f%clan_status%\n &7Leaders\: %clan_leaders%\n &7Membres En Lignes\: &f%clan_online_count%&7/&f%clan_size%\n &7KDR\: &e%clan_kdr%\n &7Totales des meurtres\: &8[Rival\:&f%clan_rival_kills% &8Allié\:&f%clan_ally_kills% &8Neutre\:&f%clan_neutral_kills% &8Civil\:&f%clan_civilian_kills%&8]\n &7Morts\: &f%clan_deaths%\n &7Taxe\: &f%clan_fee_enabled%&7, &f%clan_fee_value% $\n &7Alliés\: &f%clan_allies%\n &7Rivaux\: &f%clan_rivals%\n &7Fondés\: &f%clan_founded%\n &7Inactif\: &f%clan_inactive_days%&7/&f%clan_max_inactive_days% days\n
|
||||
player.lookup.clanname=&e[&8%clan_color_tag%&e] &b%clan_name%
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
player.lookup.killtype=&7Type de Kill \: %player_kill_type%\n
|
||||
player.lookup=\nInfos du joueur%player_name%&7-------------------------------------------\n \n &7Clan\: &f%clan_name%\n &7Rang \: &f%player_rank%\n &7Statut\: &f%player_status%\n &7KDR \: &e%player_kdr%\n &7Totaux de Kill \: &8[Rival\:&f%player_rival_kills% &8Allié\:&7%player_ally_kills% &8Neutre\:%player_neutral_kills% &8Civil\:&f%player_civilian_kills%&8]\n &7Morts\: &7Deaths\: &f%player_deaths%\n &7Date d'entrée\:%player_join_date%\n &7Dernière fois en ligne \:%player_last_seen%\n &7Clans précédents \:%player_past_clans%\n &7Inactif depuis\: &f%player_inactive_days%&7/&f%player_max_inactive_days% jours\n %kill_type_line%
|
||||
economy.disabled=&cÉconomie désactivée\!
|
||||
has.been.purged=Les données de {0} ont été purgées
|
||||
accepted.invitation=&bVous avez accepté l'invitation de {0}
|
||||
denied.invitation=&cVous avez refusé l'invitation de {0}
|
||||
must.be.in.clan.to.pvp=&cVous et {0} devez être membre de clan en PvP \!
|
||||
clans.not.at.war.pvp.denied=&cVotre clan n'est pas en guerre avec {0}\!
|
||||
cannot.attack.civilians=&cVous ne pouvez pas attaquer un civil \!
|
||||
cannot.attack.clan.member=&cVous ne pouvez pas attaquer un autre membre du clan \!
|
||||
cannot.attack.ally=&cVous ne pouvez pas attaquer un allié \!
|
||||
cannot.send.discord.message=Vous ne pouvez pas envoyer de messages à {0}. Vous n'êtes pas membre de ce clan \!
|
||||
discordhook.is.disabled=&cL'intégration de Discord est désactivée ou indisponible \!
|
||||
your.clan.doesnt.have.any.linked.player=Votre clan n'a aucun joueur lié
|
||||
your.clan.doesnt.have.minimum.linked.player=Votre clan n'a pas un minimum de joueurs liés
|
||||
your.clan.is.not.on.the.whitelist=Votre clan n'est pas dans la liste blanche
|
||||
your.clan.already.has.channel=Votre clan a déjà un salon Discord
|
||||
discord.reached.category.limit=Discord a atteint la limite de catégories \!
|
||||
discord.reached.channels.limit=Discord a atteint la limite de salons \!
|
||||
discord.created.successfully=&bSalon Discord créé avec succès \!
|
||||
you.did.not.link.your.account=Vous n'avez pas lié votre compte \!
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
cannot.change.member.fee.now=&cVous ne pouvez pas modifier les frais de membre à proximité de l'heure de recouvrement.
|
||||
cannot.change.member.fee.hours=&cRéessayez dans {0} heures...
|
||||
cannot.change.member.fee.minutes=&cRéessayez dans {0} minute(s)...
|
||||
cannot.kick.last.leader=&cVous ne pouvez pas expulser le dernier leader\!
|
||||
cannot.disband.permanent=&cVous ne pouvez pas dissoudre ce clan. Il a un statut permanent.
|
||||
you.can.only.set.base.in.your.land=&cVous ne pouvez vous installer un home que sur votre terre \!
|
||||
only.leaders.can.create.lands=&cSeuls les leaders peuvent créer des territoires \!
|
||||
only.one.land.per.clan=&cVotre clan a déjà une terre \!
|
||||
only.clan.members.can.create.lands=&cSeuls les membres du clan peuvent créer des terres \!
|
||||
land.allowed.all.actions=&bToutes les actions sont maintenant autorisées \!
|
||||
land.blocked.all.actions=&bToutes les actions sont maintenant bloquées \!
|
||||
land.allowed.action=&bAction autorisée \!
|
||||
land.blocked.action=&bAction bloquée \!
|
||||
you.do.not.own.lands=&cVous ne possédez pas de terre \!
|
||||
land.sharing.disabled=&cLe partage de terres est désactivé \!
|
||||
clan.chat.disabled=&cLe chat du clan est désactivé \!
|
||||
ally.chat.disabled=&cLe chat allié est désactivé \!
|
||||
war.expired=La guerre avec {0} a expiré\!
|
||||
you.cant.start.war.online.members.difference=Vous ne pouvez pas commencer la guerre. Un clan a plus de membres en ligne que l'autre.
|
||||
invitedplayer.invite.off=Ce joueur a désactivé les invitations de clan
|
||||
user.hasnt.played.before=&cCet utilisateur n'a pas joué avant
|
||||
clan.list.balance.header=\n{0} &7Solde la plus haute &8-----------------------\n \n&8Total des clans\: &7{1}\n \n&8\#&7. &8Clan &7- &8Solde
|
||||
clan.list.balance.line=&f{0}. {1}{2}{3}&b{4} &7- &e{5}$
|
||||
@@ -2,24 +2,11 @@ description.command=תיאור
|
||||
create.command=צור
|
||||
delete.command=למחוק
|
||||
rank.command=דרוג
|
||||
setdisplayname.command=להביא שם
|
||||
permissions.command=הרשאה
|
||||
list.command=רשימה
|
||||
balance.command=יתרה
|
||||
give.command=להביא
|
||||
resign.command=להטפטר
|
||||
reload.command=רענון
|
||||
start.command=התחל
|
||||
leave.command=לעזוב
|
||||
acf-core.parameter.amount=סכום
|
||||
acf-core.parameter.member=חברים
|
||||
acf-core.parameter.rank=דרוג
|
||||
acf-core.parameter.description=תיאור
|
||||
acf-core.parameter.clan=קלאן
|
||||
acf-core.parameter.type=סוג
|
||||
acf-core.parameter.order=סדר
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
start=התחל
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
|
||||
@@ -43,10 +43,8 @@ assign.command=hozzárendel
|
||||
unassign.command=szétválaszt
|
||||
rival.command=vetélytárs
|
||||
bb.command=bb
|
||||
display.command=kijelző
|
||||
clear.command=törlés
|
||||
modtag.command=modtag
|
||||
rename.command=átnevezés
|
||||
toggle.command=váltás
|
||||
tag.command=címke
|
||||
deposit.command=letét
|
||||
@@ -230,10 +228,6 @@ command.description.rank.permissions.available=Felsorolja az elérhető rangsoro
|
||||
command.description.rank.permissions.rank=Rangod jogainak megtekintése
|
||||
command.description.rank.permissions.add=Hozzáad egy jogot a ranghoz
|
||||
command.description.rank.permissions.remove=Megvon egy jogot a rangtól
|
||||
command.description.rename=Átnevezi a klánodat
|
||||
command.description.mod.rename=Átnevezi a klánodat
|
||||
command.description.locale=Kiválasztja a nyelvedet
|
||||
command.description.mod.locale=Kiválasztja a játékos nyelvét
|
||||
home-menu=/{0} home{1} - Teleportálás a klán hazai bázisához
|
||||
home-set-menu=/{0} home set{1} - Beállítsa a klán hazai bázisát
|
||||
home-clear-menu=/{0} home clear{1} - Törli a klán hazai bázisát
|
||||
@@ -294,7 +288,6 @@ membership.invitation={0} tagadta a tagsági meghívást
|
||||
joined.the.clan={0} csatlakozott a klánhoz
|
||||
signed.off.request.cancelled={0} aláírták. {1} kérés törölve.
|
||||
clan.deletion={0} tagadta a klán törlését. A konszenzus sikertelen volt.
|
||||
rename.refused={0} tagadta a klán törlését. A törlés sikertelen volt.
|
||||
has.been.disbanded=A(z) {0} klán feloszlott
|
||||
denied.the.promotion={0} tagadta a {1} promócióját. A konszenzus sikertelen volt.
|
||||
demoted.back.to.member={0} visszatért a taghoz
|
||||
@@ -310,10 +303,9 @@ has.joined={0} csatlakozott {1}
|
||||
proposing.to.end.the.rivalry={0} azt javasolja, hogy vessen véget a rivalizálás {1}
|
||||
proposing.an.alliance={0} szövetséget javasol {1}
|
||||
inviting.you.to.join={0} meghívott téged, hogy csatlakozz {1}
|
||||
asking.for.the.deletion={0} a klán törlését kéri
|
||||
asking.for.the.promotion={0} kéri a promóció {1}
|
||||
asking.for.the.demotion={0} kéri a promóció {1}
|
||||
asking.to.disband={0} törölni akarja a klánt
|
||||
asking.to.rename={0} azt akarja hogy a klán neve ez legyen {1}
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
request.message= \n &8[&8{0}&8] &b{1}\n %accept% &bvagy %deny%\n
|
||||
clickable.accept=&a&l[ELFOGADÁS]
|
||||
@@ -338,8 +330,7 @@ you.have.already.voted=Már szavaztál
|
||||
has.voted.to.deny={0} tagadta a szavazást
|
||||
view.next.page=Típus /{0} a következő oldal megtekintéséhez.
|
||||
voted.to.accept={0} elfogadták
|
||||
bulletin.board.header=&8* &e{0} &ffaliújság
|
||||
bulletin.board.message={0}\: &f{1}
|
||||
bulletin.board.header={0}* {1}{2} hirdetőtábla
|
||||
has.been.disbanded.rivalry.ended={0} feloszlott. A rivalizálás véget ért.
|
||||
has.been.disbanded.alliance.ended={0} feloszlott. A Szövetség véget ért.
|
||||
clan.disbanded=A klán megszűnt
|
||||
@@ -366,17 +357,16 @@ clan.wide.friendly.fire.blocked=A klán egész barátságos tűz zárt
|
||||
clan.wide.friendly.fire.is.allowed=A Klánbarát barátságos tűz megengedett
|
||||
you.are.the.only.member.online=Te vagy az egyetlen tag online
|
||||
your.clan.color.tag.cannot.be.longer.than.characters=&cA klánod színezett tag-je nem lehet több {0} karakternél
|
||||
your.clan.tag.cannot.be.longer.than.characters=&cA klán emblémája nem lehet {0} karakternél hosszabb
|
||||
your.clan.tag.must.be.longer.than.characters=&cA klán emblémája nem lehet {0} karakternél rövidebb
|
||||
your.tag.cannot.contain.the.following.colors=&cAz emblémád nem tartalmazhatja a következő színeket\: {0}
|
||||
your.tag.doesnt.meet.the.requirements=&cAz emblémád nem felel meg a követelményeknek.
|
||||
your.tag.cannot.contain.color.codes=&cAz emblémád nem tartalmazhat színeket
|
||||
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=&cAz emblémád csak betűket, számokat, és színeket tartalmazhat
|
||||
your.clan.tag.cannot.be.longer.than.characters=A klán tagja legfeljebb {0} karakter lehet
|
||||
your.clan.tag.must.be.longer.than.characters=A klán tagjának hosszabbnak kell lennie, mint {0} karakter
|
||||
your.tag.cannot.contain.the.following.colors=A címke nem tartalmazhatja a következő színeket\: {0}
|
||||
your.tag.cannot.contain.color.codes=A címke nem tartalmazhat színkódokat
|
||||
you.cannot.set.colored.ranks=Nem használhatsz színes rangokat
|
||||
your.clan.name.cannot.be.longer.than.characters=A klán neve legfeljebb {0} karakter lehet
|
||||
your.clan.name.must.be.longer.than.characters=A klán neveinek {0} karakter hosszúnak kell lenniük
|
||||
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=A klán tagja csak betűket, számokat és színkódokat tartalmazhat
|
||||
your.clan.name.cannot.contain.color.codes=A klán neve nem tartalmazhat színkódokat
|
||||
that.tag.name.is.disallowed=&cAz adott embléma nem engedélyezett
|
||||
that.tag.name.is.disallowed=A címke neve elutasítva
|
||||
you.must.first.resign=Először lemondania a {0}
|
||||
clan.with.this.tag.already.exists=Ezzel a címkével már létezik egy klán
|
||||
get.your.clan.verified.to.access.advanced.features=Szerezd meg a klánt, hogy ellenőrizze a speciális funkciók elérését
|
||||
@@ -393,7 +383,7 @@ global.friendy.fire.is.now.managed.by.each.clan=A globális barátságos tüzet
|
||||
global.friendy.fire.is.already.being.managed.by.each.clan=A globális barátságos tüzeket már kezelik minden egyes klán
|
||||
global.friendly.fire.is.set.to.allowed=A globális barátságos tűz megengedett
|
||||
global.friendly.fire.is.already.being.allowed=A globális barátságos tűz már engedélyezett
|
||||
the.player.doesn.t.not.have.the.permissions.to.join.clans=A játékosnak nincs joga ahhoz hogy belépjén egy klánba
|
||||
the.player.doesn.t.not.have.the.permissions.to.join.clans=A játékosnak nincs joga a klánokhoz való csatlakozáshoz
|
||||
you.cannot.invite.yourself=Nem hívhatod meg magad
|
||||
you.did.not.answer.in.time=Nem válaszoltál időben, felfüggesztés...
|
||||
this.player.is.banned.from.using.clan.commands=Ez a játékos tiltja a klánparancsok használatát
|
||||
@@ -415,7 +405,6 @@ kdr.0=KDR\: {0}
|
||||
inactive.0=Elérhetetlen(ek)\: {0}
|
||||
clan.commands=klán parancsok
|
||||
you.can.only.modify.the.color.and.case.of.the.tag=Csak a címke színét és esetét módosíthatod
|
||||
locale.has.been.changed=&cA nyelvedet megváltoztattad
|
||||
tag.changed.to.0=A címke megváltoztatva {0}
|
||||
0.tag.changed.to.1=&bSikeresen megváltoztattad {0} tagját erre\: {1}
|
||||
name.0=Név\: {0}
|
||||
@@ -504,7 +493,6 @@ hombase.set=Klán bázis beállítva\: {0}
|
||||
hombase.cleared=Klán bázis törölve
|
||||
hombase.mod.set={0} bázisa beállítva\:
|
||||
hombase.not.set=Bázis nincs beállítva
|
||||
home.set.in.different.server=A bázis más szereveren van
|
||||
rival.limit.reached=Elérted a rivális limitet. Nem tehetsz többé klánokkal.
|
||||
you.moved.teleport.cancelled=Elmozdultál, a teleportálás megszakítva
|
||||
waiting.for.teleport.stand.still.for.0.seconds=Várakozás a teleportálásra, állj meg {0} másodpercig
|
||||
@@ -536,8 +524,6 @@ this.clan.has.reached.the.member.limit=&bEz a klán elérte a tag limitet
|
||||
you.have.reseted.your.kdr=Visszaállítottad KDR-t
|
||||
you.have.reseted.0.kdr=Visszaállítottad a(z) {0} KDR-t
|
||||
you.have.reseted.kdr.of.all.players=Visszaállítottad a játékosok KDR-jét
|
||||
you.have.successfully.renamed.your.clan=&bSikeresen megváltoztattad a klán nevét erre\: {0}
|
||||
you.have.successfully.renamed.the.clan=&bSikeresen megváltoztattad a klán nevét erre\: {0}
|
||||
you.have.toggled.permanent.status={0} -nak/nek átállítottad a végleges státuszát
|
||||
permanent.status.enabled=A klánod végleges státusza be lett kapcsolva {0} által
|
||||
permanent.status.disabled=A klánod végleges státusza ki lett kapcsolva {0} által
|
||||
@@ -545,7 +531,6 @@ yes=Igen
|
||||
cancel=Mégse
|
||||
resign.confirmation=Biztos, hogy el akarod hagyni a klánt? {0}
|
||||
disband.confirmation=Biztos, hogy fel akarod oszlatni a klánod? {0}
|
||||
resetkdr.confirmation=Biztos benne, hogy visszaállítod a KDR-edet? {0}
|
||||
resign.success=Sikeresen kiléptél a klánból
|
||||
you.cannot.demote.the.last.leader=Nem fokozhatod le az utolsó vezetőt
|
||||
you.cannot.move.the.last.leader=Nem mozdíthatod az utolsó vezetőt
|
||||
@@ -558,7 +543,7 @@ bb.minutes= \ perc
|
||||
bb.one.minute=1 perc
|
||||
bb.hours= \ óra
|
||||
bb.one.hour=1 óra
|
||||
bb.days= \ napok
|
||||
bb.days= nap
|
||||
bb.one.day=1 nap
|
||||
the.fee.is.0.and.its.current.value.is.1=Az adó {0} és a jelenlegi értéke {1} $
|
||||
fee.enabled=engedélyezve
|
||||
@@ -566,18 +551,9 @@ fee.disabled=letiltva
|
||||
fee.set=Az adó sikeresen beállítva
|
||||
max.fee.allowed.is.0={0} a maximális adó
|
||||
fee.collected={0} $ kilett véve klán adó miatt
|
||||
player.purged=A játékos sikeresen nullázva lett
|
||||
upkeep.collected={0} $ kilett véve a fenntartás miatt
|
||||
balance.is.not.enough.for.upkeep=Nincs elég pénz a klán bankjában ({0} $), hogy ne törlödjön
|
||||
your.clan.description.must.be.longer.than=A klán leírásodnak minimum ennyi {0} karakternek kell lennie
|
||||
your.clan.description.cannot.be.longer.than=A klán leírásod nem lehet hosszabb {0} karakternél
|
||||
description.changed=Sikeresen megváltoztattad a klánodnak a leírását
|
||||
no.description=Nincs leírás
|
||||
the.player.must.wait.0.before.joining.your.clan.again=Ennek a játékosnak várnia kell {0} percet mielőtt újra belépne a klánodba
|
||||
disabled.command=Tiltott parancs
|
||||
rank.displayname.updated=A rang kijelzett neve frissítve lett\!
|
||||
rank.setdefault=A klánnak az alapértelmezett rangja erre lett állítva {0}
|
||||
rank.removedefault=A klán alapértelmezett rangja el lett távolítva
|
||||
rank.0.permissions=Rang {0} jogai\:
|
||||
available.rank.permissions=Elérhető jogok a rangokhoz\:
|
||||
rank.already.exists=Ez a rang már létezik
|
||||
@@ -590,17 +566,10 @@ clans.ranks=Klán rangok\:
|
||||
ranks.list.item={0}\# {1} ({2})
|
||||
no.ranks=Nem lettek rangok létrehozva
|
||||
rank.no.permissions=Ennek a rangnak nincs leírása
|
||||
player.unassigned.from.rank=A játékosnak nincs besorolása a rangból
|
||||
you.must.be.0.or.have.the.permission.1.to.use.this=Szükséges {0} nak lenned vagy a tulajnak ezt a jogot adnia {1}, hogy ezt használd
|
||||
deposit.not.allowed=Betétel nem engedélyezett, használd /%clan %toggle %deposit az engedélyezéséhez
|
||||
withdraw.not.allowed=Kivétel nem engedélyezett, használd /%clan %toggle %withdraw az engedélyezéséhez
|
||||
resign.request.cancelled=Lemondási kérelem megszakítva
|
||||
disband.request.cancelled=Lemondási kérelem megszakítva
|
||||
resetkdr.request.cancelled=Lemondási kérelem megszakítva
|
||||
clan.create.request.cancelled=Klán készítési kérelem megszakítva
|
||||
rank.create.request.cancelled=Rang készítési kérelem megszakítva
|
||||
promotion.vote.has.been.requested.from.all.leaders=Felfokozási szavazás kérvényezve lett minden vezetőtől
|
||||
rename.vote.has.been.requested.from.all.leaders=&b Átnevezési szavazást kértek minden vezetőtől
|
||||
allowed=engedélyezve
|
||||
blocked=letiltva
|
||||
chat.joined=belépett
|
||||
@@ -628,32 +597,22 @@ gui.main.staff.title=&fStaff
|
||||
gui.main.staff.lore=&7Jobb-klikk a staff menü megnyitásához
|
||||
gui.staff.title=Személyzet
|
||||
gui.staff.clan.list.lore.left.click=&7Jobb-klikk hogy megnézd az összes klánt
|
||||
gui.staff.clan.list.lore.right.click=Jobb-katt a összes nem hitelesített klánhoz
|
||||
gui.player.list.title=Játékoslista
|
||||
gui.staff.player.list.title=&fJátékoslista
|
||||
gui.staff.player.list.lore.left.click=Bal-kattintás hogy megnézed az összes játékost
|
||||
gui.staff.player.list.lore.right.click=Jobb-katt hogy megnézed az összes elérhető játékost
|
||||
gui.staff.global.ff.title=&fÁltalános baráti tűz
|
||||
gui.staff.global.ff.lore.status=&7Állapot\: &b{0}
|
||||
gui.staff.global.ff.lore.toggle=Bal-katt hogy beállítsd a barátságos státuszt
|
||||
gui.staff.reload.title=&fÚjratöltés
|
||||
gui.staff.reload.lore=Bal-katt hogy újraindítsd a plugint
|
||||
gui.staff.clanlist.unverified.title=Nem ellenőrzött klánok - Összes\: {0}
|
||||
gui.staff.clanlist.toplace.title=Válaszd ki {0} új klánját
|
||||
gui.warning.title=Figyelem
|
||||
gui.warning.no.permission.title=&fNincs jog
|
||||
gui.warning.no.permission.plugin.lore=&7Nincsen jogod ahhoz hogy ezt csináld\!
|
||||
gui.warning.no.permission.leader.lore=Te vagy a klánnak a vezetője?
|
||||
gui.warning.no.permission.rank.lore=&7Szükséges {0} nak lenned vagy a tulajnak ezt a jogot adnia {1}, hogy ezt használd\!
|
||||
gui.warning.not.verified.title=&fNem ellenőrzött
|
||||
gui.warning.not.verified.lore=&7A te klánodnak hitelesítve kell hogy legyen\!
|
||||
gui.allies.title=Szövetségesek
|
||||
gui.allies.clan.lore=&7Jobb-klikk, hogy töröld ezt a szövetségest
|
||||
gui.allies.add.title=&fHozzáad egy szövetségest
|
||||
gui.add.ally.title=Hozzáad egy szövetségest
|
||||
gui.add.ally.clan.lore=&7Jobb-klikk hogy szövetkezz a klánnal
|
||||
gui.rivals.title=Versenytárs
|
||||
gui.rivals.clan.lore=&7Jobb-klikk, hogy töröld ezt az ellenséget
|
||||
gui.rivals.add.title=&fRivális hozzáadása
|
||||
gui.add.rival.title=Rivális hozzáadása
|
||||
gui.add.rival.clan.lore=&7Jobb-klikk hogy riválisok legyetek a klánnal
|
||||
@@ -670,105 +629,43 @@ gui.invite.title=Játékos meghívása
|
||||
gui.invite.player.title=&f{0}
|
||||
gui.invite.player.price.lore=&7Ár\: &b{0}
|
||||
gui.invite.player.lore=&7Jobb-klikk az meghíváshoz
|
||||
gui.roster.title={0} névsorja
|
||||
gui.roster.invite.title=&fMeghívás
|
||||
gui.roster.invite.lore=Hívj meg egy játékost a klánodba
|
||||
gui.leaderboard.title=Toplista - Játékosok\: {0}
|
||||
gui.leaderboard.player.title=&f\#{0} {1}
|
||||
gui.ranks.title=Rangok
|
||||
gui.ranks.title.set.rank=Rang beállítások - Jelenlegi\: {0}
|
||||
gui.ranks.create.title=&Rang létrehozása
|
||||
gui.ranks.create.lore=&7Bal-katt a rang elkészítéséhez
|
||||
gui.ranks.rank.title=&fRang\: {0}
|
||||
gui.ranks.rank.displayname.lore=&7Kijelzett név\: &b{0}
|
||||
gui.ranks.rank.remove.lore=&7Jobb-katt a rang eltávolításához
|
||||
gui.ranks.rank.edit.permissions.lore=&7Bal-katt a rang jogainak átállításához
|
||||
gui.ranks.rank.assign.lore=&7Bal-katt a rang hozzárendeléséhez {0}
|
||||
gui.permissions.title={0} jogosultságai
|
||||
gui.permissions.add.title=&fJog hozzáadása
|
||||
gui.permissions.permission.title=&f{0}
|
||||
gui.permissions.permission.lore=&7Jobb-katt a rang jogosultságának eltávolításához
|
||||
gui.add.permission.title=Jog hozzáadása
|
||||
gui.add.permission.permission.title=&f{0}
|
||||
gui.add.permission.permission.lore=&7Bal-katt a rang jogosultságának eltávolításához
|
||||
gui.clandetails.title=[{0}] {1}
|
||||
gui.clandetails.free.agent.title=&Szabadúszó
|
||||
gui.clandetails.free.agent.create.clan.price.lore=&7Ár\: &b{0}
|
||||
gui.clandetails.free.agent.create.clan.lore=&7Bal-katt a rang elkészítéséhez
|
||||
gui.clandetails.clan.title=&f[{0}&f] {1}
|
||||
gui.clandetails.clan.lore.description=&7Leírás\: &b{0}
|
||||
gui.clandetails.clan.lore.status=&7Állapot\: &b{0}
|
||||
gui.clandetails.clan.lore.leaders=&7Vezetők\: &b{0}
|
||||
gui.clandetails.clan.lore.online.members=&7Elérhető tagok\: &b{0}/{1}
|
||||
gui.clandetails.clan.lore.kdr=&7KDR\: &b{0}
|
||||
gui.clandetails.clan.lore.kill.totals=&7Összes ölés\: &b[Rival\:{0} Neutral\:{1} Civilian\:{2}]
|
||||
gui.clandetails.clan.lore.deaths=&7Halálok\: &b{0}
|
||||
gui.clandetails.clan.lore.fee=&7Díj\: &b{0}, {1} $
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
gui.clandetails.clan.lore.allies.separator=&b,
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
gui.clandetails.clan.lore.rivals.separator=&b,
|
||||
gui.clandetails.clan.lore.allies=&7Szövetségesek\: &b{0}
|
||||
gui.clandetails.clan.lore.rivals=&Vetélytárs(ak)\: {0}
|
||||
gui.clandetails.clan.lore.founded=&7Alapítva\: &b{0}
|
||||
gui.clandetails.clan.lore.inactive=&7Inaktív\: &b{0}/{1} napok
|
||||
gui.clandetails.allies.title=&fSzövetségesek
|
||||
gui.clandetails.allies.lore=&7Bal-katt az allysok megtekintéséhez
|
||||
gui.clandetails.rivals.title=&fRiválisok
|
||||
gui.clandetails.rivals.lore=&7Bal-katt az allysok megtekintéséhez
|
||||
gui.clandetails.roster.title=&fNévsor
|
||||
gui.clandetails.roster.lore=&7Bal-katt a klán tagjainak megtekintéséhez, vagy hívj be többet
|
||||
gui.staffclandetails.roster.lore=&7Bal-klikk hogy megnézd a klánlistát
|
||||
gui.clandetails.coords.title=&fKoordináták
|
||||
gui.clandetails.coords.lore=&7Ball-klikk megmutatja a koordinátákat a klánod tagjáiról
|
||||
gui.clandetails.home.title=&fOtthon
|
||||
gui.clandetails.home.lore.teleport.price=&7Teleportációs összeg\: &b{0}
|
||||
gui.clandetails.home.lore.teleport=&7Bal-katt a haza teleportáláshoz
|
||||
gui.staffclandetails.home.lore.teleport=&7Bal-katt a haza teleportáláshoz
|
||||
gui.clandetails.home.lore.clear=&7Dobd ki az itemet hogy kiürítsd a klánod házát
|
||||
gui.clandetails.home.lore.set.price=&7Teleportációs összeg\: &b{0}
|
||||
gui.clandetails.home.lore.set=&7Jobb-katt a haza teleportáláshoz
|
||||
gui.staffclandetails.home.lore.set=&7Jobb-katt a haza beállításához
|
||||
gui.clandetails.regroup.title=&fÖsszecsoportosítás
|
||||
gui.clandetails.regroup.lore.price=&7Ár\: &b{0}
|
||||
gui.clandetails.regroup.lore.home=&7Bal-katt a klán tagjainak megtekintéséhez, vagy hívj be többet
|
||||
gui.clandetails.regroup.lore.me=&7Jobb-katt a klán tagjainak összecsoportosításához
|
||||
gui.clandetails.ff.title=&fBaráti tűz
|
||||
gui.clandetails.ff.personal.lore=&7Személyes\: &b{0}
|
||||
gui.clandetails.ff.clan.lore=&7Klán\: &b{0}
|
||||
gui.clandetails.ff.personal.toggle.lore=Bal-katt hogy beállítsd a barátságos státuszt
|
||||
gui.clandetails.ff.clan.toggle.lore=Jobb-katt hogy beállítsd a barátságos státuszt
|
||||
gui.clandetails.bank.title=&fBank
|
||||
gui.clandetails.bank.balance.lore=&fEgyenleg\: &b{0}
|
||||
gui.clandetails.bank.withdraw.status.lore=&7Kivétel\: &b{0}
|
||||
gui.clandetails.bank.deposit.status.lore=&7Betétel\: &b{0}
|
||||
gui.clandetails.bank.withdraw.toggle.lore=&7Dobd el az elemet a visszavonás állapotának váltásához
|
||||
gui.clandetails.bank.deposit.toggle.lore=&7Kattints a jobb gombbal a befizetés állapotának váltásához
|
||||
gui.clandetails.fee.title=&fAdó
|
||||
gui.clandetails.fee.status.lore=&7Állapot\: &b{0}
|
||||
gui.clandetails.fee.value.lore=&7Érték\: &b{0}
|
||||
gui.clandetails.fee.toggle.lore=&7Kattints a bal gombbal a befizetés állapotának váltásához
|
||||
gui.clandetails.rank.title=&fRang
|
||||
gui.clandetails.rank.lore=&7Kattints a bal gombbal a klán rangjainak megtekintéséhez és szerkesztéséhez
|
||||
gui.clandetails.verified.title=&fHitelesítve
|
||||
gui.clandetails.not.verified.title=&fNem ellenőrzött
|
||||
gui.clandetails.verify.price.lore=&7Ár\: &b{0}
|
||||
gui.clandetails.not.verified.lore=&7Kattintsa bal gombbal a klán megerősítéséhez
|
||||
gui.staffclandetails.not.verified.lore=&7Kattintson a bal gombbal a klán megerősítéséhez
|
||||
gui.clandetails.resign.title=&fKilépés
|
||||
gui.clandetails.resign.lore=&7Kattints a bal gombbal a klán kilépéséhez
|
||||
gui.clandetails.disband.title=&7Feloszlatás
|
||||
gui.clandetails.disband.lore=&7Dobd el az itemet a klánod feloszlatásához
|
||||
gui.staffclandetails.disband.lore=&7Kattints a bal gombbal a klán feloszlatásához
|
||||
gui.clandetails.chat.title=&fChat
|
||||
gui.clandetails.chat.clan.chat.lore=&7/{0} [message] - &bÜzenetet küld a klán chatbe
|
||||
gui.clandetails.chat.clan.join.leave.lore=&7/{0} {1}/{2} - &bBelép/kilép a klán chatből
|
||||
gui.clandetails.chat.ally.chat.lore=&7/{0} [message] - &bÜzenetet küld a ally chatbe
|
||||
gui.clandetails.chat.ally.join.leave.lore=&7/{0} {1}/{2} - &bBelép/kilép a ally chatből
|
||||
gui.clandetails.chat.clan.status.lore=&7Klán\: &b{0}
|
||||
gui.clandetails.chat.ally.status.lore=&7Szövetségesek\: &b{0}
|
||||
gui.clandetails.chat.clan.toggle.lore=Bal-katt hogy beállítsd a klán chat státuszt
|
||||
gui.clandetails.chat.ally.toggle.lore=Jobb-katt hogy beállítsd a ally chat státuszt
|
||||
gui.playerdetails.title={0}
|
||||
gui.playerdetails.player.title=&f{0}
|
||||
gui.playerdetails.player.lore.noclan=&7Klán\: &bNincs
|
||||
@@ -776,40 +673,21 @@ gui.playerdetails.player.lore.clan=&7Klán\: &b[{0}&b] {1}
|
||||
gui.playerdetails.player.lore.rank=&7Rang\: &b{0}
|
||||
gui.playerdetails.player.lore.status=&7Állapot\: &b{0}
|
||||
gui.playerdetails.player.lore.kdr=&7KDR\: &b{0}
|
||||
gui.playerdetails.player.lore.kill.totals=&7Összes ölés\: &b[Rival\:{0} Neutral\:{1} Civilian\:{2}]
|
||||
gui.playerdetails.player.lore.deaths=&7Halálok\: &b{0}
|
||||
gui.playerdetails.player.lore.join.date=&7Csatlakozás\: &b{0}
|
||||
gui.playerdetails.player.lore.last.seen=&7Utoljára látva\: &b{0}
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
gui.playerdetails.player.lore.past.clans.separator=&b,
|
||||
gui.playerdetails.player.lore.past.clans=&7Előző klánok\: &b{0}
|
||||
gui.playerdetails.player.lore.inactive=&7Inaktív\: &b{0}/{1} napok
|
||||
gui.playerdetails.kick.title=&fKirúgás
|
||||
gui.playerdetails.promote.demote.title=&fFokozás/Lefokozás
|
||||
gui.playerdetails.promote.lore.left.click=&7Bal-klikk a felfokozáshoz
|
||||
gui.playerdetails.demote.lore.right.click=&7Jobb-klikk a lefokozáshoz
|
||||
gui.playerdetails.assign.unassign.title=&fRang kiosztása/kiosztása
|
||||
gui.playerdetails.assign.lore.left.click=&7Bal-klikk a kiosztáshoz
|
||||
gui.playerdetails.unassign.lore.right.click=&7Jobb-klikk a kiosztáshoz
|
||||
gui.playerdetails.trust.untrust.title=&fBizalom/bizalmatlanság
|
||||
gui.playerdetails.trust.lore.left.click=Bal-kattintás a bizalomhoz
|
||||
gui.playerdetails.untrust.lore.right.click=&7Jobb-katt a bizalom eltávolításához
|
||||
gui.playerdetails.ban.unban.title=&fTiltás/Tiltás visszavonása
|
||||
gui.playerdetails.ban.left.click=&7Bal-katt a játékos kitiltásához a klánból
|
||||
gui.playerdetails.unban.right.click=&7Jobb-katt a kitiltás feloldásához
|
||||
gui.playerdetails.resetkdr.lore=&7Bal-katt a játékos KDR-jének újrafrissítéséhez
|
||||
gui.playerdetails.purge.title=&fKitisztitás
|
||||
gui.playerdetails.purge.lore=&7Bal-katt a játékos adatának a törléséhez
|
||||
gui.playerdetails.place.title=&fLerakás
|
||||
gui.playerdetails.place.lore=&7Bal-katt hogy kiválaszd a klánba egy játékost
|
||||
gui.languageselector.title=Nyelvek - Jelenlegi\: {0}
|
||||
gui.languageselector.language.title=&f{0}
|
||||
gui.languageselector.language.lore.left.click=&7Bal klikk, hogy beállítsd ezt a fordítást
|
||||
gui.languageselector.language.lore.translation.status=&7Fordítási státusz\: &b{0}%
|
||||
gui.languageselector.language.lore.right.click=&7Bal-klikk hogy segítsd a fordítást
|
||||
gui.confirmation.title=Megerősítés
|
||||
gui.confirmation.confirm=&7Kattints ide a megerősítéshez
|
||||
gui.confirmation.return=&7Kattints ide a visszavonáshoz
|
||||
gui.not.supported=&cHiba történt a GUI megnyitása közben\! Kikapcsolása... Biztos a jó verziót töltötted le?
|
||||
staff.member.verify.clan=&cEgy staffnak hitelesítenie kell a klánodat\!
|
||||
player.already.has.that.rank=&cEnnek a játékosnak már ez a rankja\!
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
description.command=descrizione
|
||||
create.command=creare
|
||||
create.command=crea
|
||||
delete.command=elimina
|
||||
rank.command=rango
|
||||
setdisplayname.command=setdisplayname
|
||||
@@ -9,7 +9,7 @@ permissions.command=permessi
|
||||
list.command=list
|
||||
balance.command=balance
|
||||
list.order.asc=aSC
|
||||
list.order.desc=descrizione
|
||||
list.order.desc=disc
|
||||
list.type.name=nome
|
||||
list.type.kdr=kdr
|
||||
list.type.size=size
|
||||
@@ -43,10 +43,8 @@ assign.command=assegna
|
||||
unassign.command=annulla assegnazione
|
||||
rival.command=rivale
|
||||
bb.command=bb
|
||||
display.command=mostra
|
||||
clear.command=elimina
|
||||
modtag.command=modtag
|
||||
rename.command=rinomina
|
||||
toggle.command=scambia
|
||||
tag.command=tag
|
||||
deposit.command=deposito
|
||||
@@ -230,10 +228,6 @@ command.description.rank.permissions.available=Elenca i ranghi disponibili
|
||||
command.description.rank.permissions.rank=Modifica i permessi di un rank
|
||||
command.description.rank.permissions.add=Aggiungi un permesso a un rango
|
||||
command.description.rank.permissions.remove=Rimuovi un permesso da un rango
|
||||
command.description.rename=Rinomina il tuo clan
|
||||
command.description.mod.rename=Rinomina un clan
|
||||
command.description.locale=Seleziona la tua lingua
|
||||
command.description.mod.locale=Imposta la lingua del giocatore
|
||||
home-menu=/{0} home{1} - Teletrasporta alla base di casa
|
||||
home-set-menu=/{0} home set{1} - Imposta la base principale del clan
|
||||
home-clear-menu=/{0} home set{1} - Cancella la base principale del clan
|
||||
@@ -294,7 +288,6 @@ membership.invitation={0} ha rifiutato l'invito di adesione
|
||||
joined.the.clan={0} si è unito al clan
|
||||
signed.off.request.cancelled={0} si è disconnesso. {1} richiesta annullata.
|
||||
clan.deletion={0} ha negato l'eliminazione del clan. Consenso fallito.
|
||||
rename.refused={0} rifiutata la rinominazione del clan. Consenso negato.
|
||||
has.been.disbanded=Il Clan {0} è stato sciolto
|
||||
denied.the.promotion={0} ha negato la promozione di {1}. Consenso fallito.
|
||||
demoted.back.to.member={0} è stato degradato di nuovo a membro
|
||||
@@ -310,10 +303,9 @@ has.joined={0} si è unito a {1}
|
||||
proposing.to.end.the.rivalry={0} sta proponendo di porre fine alla rivalità con {1}
|
||||
proposing.an.alliance={0} sta proponendo un'alleanza con {1}
|
||||
inviting.you.to.join={0} ti sta invitando ad unirti a {1}
|
||||
asking.for.the.deletion={0} chiede l'eliminazione del clan
|
||||
asking.for.the.promotion={0} chiede la promozione di {1}
|
||||
asking.for.the.demotion={0} chiede la promozione di {1}
|
||||
asking.to.disband={0} sta chiedendo di sottrarsi dal clan
|
||||
asking.to.rename={0} sta chiedendo di rinominare il clan con in {1}
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
request.message= \ &8[&8{0}&8] &b{1}\n %accetta% &bor %deny%
|
||||
clickable.accept=&a&l[ACCETTA]
|
||||
@@ -338,8 +330,6 @@ you.have.already.voted=Hai già votato
|
||||
has.voted.to.deny={0} ha votato per negare
|
||||
view.next.page=Digita /{0} per visualizzare la pagina successiva.
|
||||
voted.to.accept={0} ha votato per accettare
|
||||
bulletin.board.header=&8* &e{0} &fbacheca bollettino
|
||||
bulletin.board.message={0}\: &f{1}
|
||||
has.been.disbanded.rivalry.ended={0} è stato sciolto. La rivalità è finita.
|
||||
has.been.disbanded.alliance.ended={0} è stato sciolto. L'alleanza è finita.
|
||||
clan.disbanded=Clan sciolto
|
||||
@@ -365,26 +355,17 @@ you.banned=Sei stato bannato dai comandi di clan
|
||||
clan.wide.friendly.fire.blocked=Fuoco alleato del clan bloccato
|
||||
clan.wide.friendly.fire.is.allowed=Fuoco alleato del clan bloccato
|
||||
you.are.the.only.member.online=Sei l'unico membro online
|
||||
your.clan.color.tag.cannot.be.longer.than.characters=&cLa targa colorata del tuo clan non può essere più lunga di {0} caratteri
|
||||
your.clan.tag.cannot.be.longer.than.characters=&cIl nome del tuo clan non può contenere più di {0} caratteri
|
||||
your.clan.tag.must.be.longer.than.characters=&cIl nome del tuo clan deve essere più lungo di {0} caratteri
|
||||
your.tag.cannot.contain.the.following.colors=&cIl nome del clan non può contenere i seguenti colori\: {0}
|
||||
your.tag.doesnt.meet.the.requirements=&cIl nome del tuo clan non soddisfa i requisiti.
|
||||
your.tag.cannot.contain.color.codes=&cIl nome del clan non può contenere codici colore
|
||||
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=&cIl nome del tuo clan può contenere solo lettere, numeri e codici colore
|
||||
your.clan.tag.cannot.be.longer.than.characters=Il tag del tuo clan non può contenere più di {0} caratteri
|
||||
your.clan.tag.must.be.longer.than.characters=Il tag del tuo clan deve contenere più di {0} caratteri
|
||||
your.tag.cannot.contain.the.following.colors=Il tuo tag non può contenere i seguenti colori\: {0}
|
||||
your.tag.cannot.contain.color.codes=Il tuo tag non può contenere codici di colore
|
||||
you.cannot.set.colored.ranks=Non puoi impostare ranghi colorati
|
||||
your.clan.name.cannot.be.longer.than.characters=Il nome del tuo clan non può contenere più di {0} caratteri
|
||||
your.clan.name.must.be.longer.than.characters=Il nome del clan deve essere più lungo di {0} caratteri
|
||||
your.clan.name.cannot.contain.color.codes=Il tuo tag non può contenere codici di colore
|
||||
that.tag.name.is.disallowed=Questo nome per il tuo clan non è ammesso
|
||||
that.tag.name.is.disallowed=Quel nome tag non è consentito
|
||||
you.must.first.resign=È necessario prima dimettersi da {0}
|
||||
clan.with.this.tag.already.exists=Un clan con questo nome esiste già.
|
||||
get.your.clan.verified.to.access.advanced.features=Ottieni la verifica del tuo clan per accedere alle funzioni avanzate
|
||||
clan.created=Clan {0} creati
|
||||
not.enough.leaders.online.to.vote.on.demotion=È necessario siano online più leader per votare questa demozione di ruolo
|
||||
demotion.vote.has.been.requested.from.all.leaders=Il voto di dimissione e stato richiesto da tutti i leader
|
||||
player.is.not.a.leader.of.your.clan=Il giocatore non un leader del tuo clan
|
||||
player.is.not.a.leader=Il giocatore non è un leader
|
||||
clan.has.been.disbanded=Il Clan {0} è stato sciolto
|
||||
clan.disband.vote.has.been.requested.from.all.leaders=È stato richiesto il voto di scioglimento del clan da tutti i leader
|
||||
friendy.fire.is.now.managed.by.your.clan=Il fuoco amichevole è ora gestito dal tuo clan
|
||||
@@ -393,72 +374,21 @@ global.friendy.fire.is.now.managed.by.each.clan=Il fuoco amichevole globale vien
|
||||
global.friendy.fire.is.already.being.managed.by.each.clan=Il fuoco amichevole globale è già gestito da ogni clan
|
||||
global.friendly.fire.is.set.to.allowed=Il fuoco amichevole globale è impostato su consentito
|
||||
global.friendly.fire.is.already.being.allowed=Il fuoco amichevole globale è già stato consentito
|
||||
the.player.doesn.t.not.have.the.permissions.to.join.clans=Il giocatore non ha i permessi per aggiungersi ai clan
|
||||
the.player.doesn.t.not.have.the.permissions.to.join.clans=Il giocatore non ha i permessi per unirsi ai clan
|
||||
you.cannot.invite.yourself=Non puoi invitare te stesso
|
||||
you.did.not.answer.in.time=Non ho fatto in tempo a rispondere, annulla...
|
||||
this.player.is.banned.from.using.clan.commands=Questo giocatore è bannato dall'utilizzo dei comandi clan
|
||||
the.player.is.already.member.of.another.clan=Il giocatore è già membro di un altro clan
|
||||
has.been.asked.to.join={0} è stato chiesto di unirsi a {1}
|
||||
you.cannot.kick.yourself=Non puoi kickarti da solo\!
|
||||
the.player.is.not.a.member.of.your.clan=Questo giocatore non un membro del tuo clan
|
||||
you.cannot.kick.another.leader=Non puoi calciare un'altro leader
|
||||
has.been.kicked.by={0} è stato rimosso dal clan da {1}
|
||||
no.clans.have.been.created=Nessun clan è stato creato
|
||||
total.clans=Clan totali\:
|
||||
legend=Legenda\:
|
||||
kill.type.civilian=Tipo di Uccisione\: {0}Civile
|
||||
no.player.data.found=Nessun dato del giocatore trovato
|
||||
clan.0=Clan\: {0}
|
||||
status.0=Stato\: {0}
|
||||
rank.0=Rango\: {0}
|
||||
kdr.0=KDR\: {0}
|
||||
inactive.0=Inattivo da\: {0}
|
||||
clan.commands=clan comandi
|
||||
you.can.only.modify.the.color.and.case.of.the.tag=È possibile modificare solo il colore e le maiuscole del nome clan
|
||||
locale.has.been.changed=La lingua è stata cambiata con successo
|
||||
tag.changed.to.0=Tag cambiato in {0}
|
||||
0.tag.changed.to.1=&bIl tag di {0} è stato modificato con successo in {1}
|
||||
name.0=Nome\: {0}
|
||||
description.0=Descrizione\: {0}
|
||||
leaders.0=Leader\: {0}
|
||||
allies.0=Alleati\: {0}
|
||||
rivals.0=Rivali\: {0}
|
||||
other.player.must.be.online=&cIl giocatore deve essere online\!
|
||||
the.player.does.not.have.the.permissions.to.lead.a.clan=Il giocatore non ha i permessi adeguati per aggiungersi ai clan
|
||||
you.cannot.promote.yourself=Non puoi auto promuoverti
|
||||
the.player.is.already.a.leader=Questo giocatore è già leader di un clan
|
||||
configuration.reloaded=Configurazioni aggiornate
|
||||
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=L'ultimo leader non può dimettersi. Devi nominare un altro capo o sciogliere il clan
|
||||
0.has.resigned={0} si è dimesso
|
||||
you.cannot.trust.yourself=Non puoi eseguire questa azione su te stesso
|
||||
leaders.are.already.trusted=I leader sono già autorizzati
|
||||
this.player.is.already.trusted=Questo giocatore è già autorizzato
|
||||
has.been.given.trusted.status.by={0} ha appena ricevuto fiducia da {1}
|
||||
this.player.is.not.banned=Questo utente non è bannato
|
||||
player.removed.from.the.banned.list=Giocatore rimosso dalla lista nera
|
||||
you.have.been.unbanned.from.clan.commands=Sei stato sbannato dai comandi del clan
|
||||
you.cannot.untrust.yourself=Non puoi eseguire questa azione su te stesso
|
||||
leaders.cannot.be.untrusted=Lo stato di fiducia dei leader non può essere alterato
|
||||
this.player.is.already.untrusted=Quest giocatore non ha già lo stato di fiducia
|
||||
has.been.given.untrusted.status.by={0} ha appena rimosso lo stato di fiducia da {1}
|
||||
the.clan.does.not.exist=Il clan non esiste
|
||||
the.clan.is.already.verified=Il clan e già verificato
|
||||
the.clan.has.been.verified=Il clan è stato verificato
|
||||
clan.0.has.been.verified=Il clan {0} è stato verificato con successo\!
|
||||
total.clan.players.0=Giocatori del clan\: {0}
|
||||
proposing.war={0} sta proponendo di iniziare una guerra contro {1}
|
||||
you.can.only.start.war.with.rivals=Puoi iniziare una guerra solo contro clan rivali
|
||||
leaders.have.been.asked.to.accept.the.war.request=Ai capi di {0} è stato chiesto di accettare la richiesta di guerra
|
||||
leaders.asked.to.end.rivalry=Ai capi di {0} è stato chiesto di terminare la guerra
|
||||
proposing.to.end.the.war={0} sta proponendo di terminare la guerra contro {1}
|
||||
clans.already.at.war=I vostri clan sono già in guerra tra loro
|
||||
clans.not.at.war=I vostri clan non sono in guerra tra loro
|
||||
you.are.at.war={0} è ora in guerra con {1}
|
||||
denied.war.req={0} ha negato la richiesta di guerra inviata da {1}
|
||||
you.are.no.longer.at.war={0} non è più in guerra contro {1}
|
||||
end.war.denied=La richiesta di porre fine alla guerra è stata negata da {0}
|
||||
denied.war.end={0} ha rifiutato la richiesta di {1} di porre fine alla guerra
|
||||
has.initiated.a.rivalry={0} ha iniziato una rivalità contro {1}
|
||||
start=inizia
|
||||
end=fine
|
||||
add=aggiungi
|
||||
@@ -467,15 +397,7 @@ allow=permetti
|
||||
block=blocca
|
||||
auto=automatico
|
||||
war=guerra
|
||||
0.s.sword.1.2.b.bow.3.4.a.arrow={0}S\=Spada{1}, {2}B\=Arco{3}, {4}A\=Frecce
|
||||
weapon.S=S
|
||||
weapon.B=B
|
||||
weapon.A=A
|
||||
materials=Materiali
|
||||
armor.h=H
|
||||
armor.c=C
|
||||
armor.l=L
|
||||
armor.B=B
|
||||
diamond=diamante
|
||||
gold=oro
|
||||
wood=legna
|
||||
@@ -486,132 +408,43 @@ hunger=Fame
|
||||
stone=pietra
|
||||
iron=ferro
|
||||
the.clan.cannot.be.rivaled=Il clan non può essere rivale
|
||||
bboff=BB disattivato
|
||||
bbon=BB attivata
|
||||
inviteon=Invito attivato su
|
||||
inviteoff=Invito disattivato
|
||||
tagoff=Tag clan disabilitato
|
||||
tagon=Tag clan attivato
|
||||
depositon=Deposito attivato
|
||||
depositoff=Deposito disattivato
|
||||
withdrawon=Prelievo attivato
|
||||
withdrawoff=Prelievo disattivato
|
||||
feeoff=Tassa disattivata
|
||||
feeon=Tassa attivata
|
||||
home.base.only.once=La base principale può essere impostata una sola volta
|
||||
now.at.homebase=Sei ora nella base del clan {0}
|
||||
hombase.set=Base del clan impostata a\: {0}
|
||||
hombase.cleared=Clan del base eliminata
|
||||
hombase.mod.set=Base del clan {0} reimpostata a\:
|
||||
hombase.not.set=la base del clan non è stata impostata ancora.
|
||||
home.set.in.different.server=La Home-base è stata impostata in un altro server
|
||||
rival.limit.reached=Hai raggiunto il limite di rivali. Non puoi rivaleggiare più clan.
|
||||
you.moved.teleport.cancelled=Ti sei mosso, teletrasporto annullato
|
||||
waiting.for.teleport.stand.still.for.0.seconds=In attesa di teletrasporto, resta fermo per {0} secondi
|
||||
on=attivo
|
||||
off=disattivato
|
||||
player.rank.changed=Il Rango è stato impostato
|
||||
your.clans.are.already.rivals=I vostri clan sono già rivali
|
||||
player.got.money=Hai ottenuto {0} per aver ucciso {1} in base al tuo KDR\: {2}
|
||||
cleared.bb=La bacheca è stata svuotata
|
||||
clan.balance=Bilancio-Clan\: {0}
|
||||
clan.admin.balance=Saldo di {0}\: {1}$
|
||||
bb.fee.player.kicked={0} è stato espulso per non aver pagato le tasse
|
||||
bb.fee.set={0} $ è la tassa
|
||||
bb.clan.deposit={0} $ sono stati depositati da {1}
|
||||
player.clan.deposit=Hai depositato {0}
|
||||
bb.clan.withdraw={0} $ sono stati prelevati da {1}
|
||||
bb.clan.take={0} $ sono stati presi da {1}
|
||||
bb.clan.give={0} $ sono stati dati da {1}
|
||||
bb.clan.set={0} $ sono stati impostati da {1}
|
||||
player.clan.withdraw=Prelievi {0}
|
||||
clan.admin.take=Hai prelevato {0} $ dalla banca di {1}
|
||||
clan.admin.give=Hai depositato {0} $ in banca di {1}
|
||||
clan.admin.set=Hai impostato il saldo bancario di {0} su {1}
|
||||
clan.admin.bank.not.enough.money=La banca di {0} non dispone di abbastanza soldi\!
|
||||
clan.bank.not.enough.money=La banca del tuo clan non ha abbastanza soldi
|
||||
your.clans.are.not.rivals=I vostri clan non sono rivali
|
||||
the.clan.members.reached.limit=Il tuo clan ha raggiunto il limite di membri
|
||||
this.clan.has.reached.the.member.limit=&bQuesto clan ha raggiunto il limite di membri
|
||||
you.have.reseted.your.kdr=Hai resettato il tuo KDR
|
||||
you.have.reseted.0.kdr=Hai resettato il KDR di {0}
|
||||
you.have.reseted.kdr.of.all.players=Hai resettato il KDR di tutti i giocatori
|
||||
you.have.successfully.renamed.your.clan=&bHai rinominato con successo il tuo clan in {0}
|
||||
you.have.successfully.renamed.the.clan=&bHai rinominato con successo il clan in {0}
|
||||
you.have.toggled.permanent.status=Hai abilitato lo stato permanente per
|
||||
permanent.status.enabled=Lo stato permanente del tuo clan è stato abilitato da {0}
|
||||
permanent.status.disabled=Lo stato permanente del tuo clan è stato disabilitato da {0}
|
||||
yes=Sì
|
||||
cancel=Annulla
|
||||
resign.confirmation=Sei sicuro di volerti dimettere da questo clan? {0}
|
||||
disband.confirmation=Sei sicuro di voler sciogliere il tuo clan? {0}
|
||||
resetkdr.confirmation=Sei sicuro di volere resettare il tuo punteggio KDR? {0}
|
||||
resign.success=Ti sei dimesso con successo dal tuo clan
|
||||
you.cannot.demote.the.last.leader=Non puoi far retrocedere l'ultimo leader rimasto
|
||||
you.cannot.move.the.last.leader=Non puoi spostare l'ultimo leader rimasto
|
||||
player.successfully.demoted=Il giocatore è stato retrocesso con successo
|
||||
player.successfully.promoted=Il giocatore è stato promosso con successo
|
||||
bb.ago= \ fa
|
||||
bb.moments=\ momenti
|
||||
bb.seconds= \ secondi
|
||||
bb.minutes= \ minuti
|
||||
bb.one.minute=1 minuto
|
||||
bb.hours= \ ore
|
||||
bb.one.hour=1 ora
|
||||
bb.days= \ giorni
|
||||
bb.days= giorni
|
||||
bb.one.day=1 giorno
|
||||
the.fee.is.0.and.its.current.value.is.1=La commissione è {0} e il suo valore attuale è {1}$
|
||||
fee.enabled=abilitato
|
||||
fee.disabled=disabilitato
|
||||
fee.set=La tassa è stata impostata con successo
|
||||
max.fee.allowed.is.0=La tariffa massima consentita è {0}
|
||||
fee.collected={0} $ sono stati sottratti per la caparra del clan
|
||||
player.purged=Il giocatore e stato epurato con successo
|
||||
upkeep.collected={0} $ sono stati sottratti per il mantenimento del clan
|
||||
balance.is.not.enough.for.upkeep=Il saldo del clan non è sufficiente per pagare la manutenzione ({0} $), deposita l'importo per evitare che il clan venga sciolto
|
||||
your.clan.description.must.be.longer.than=La descrizione del tuo clan deve essere più lunga di {0} caratteri
|
||||
your.clan.description.cannot.be.longer.than=La descrizione del tuo clan non può essere più lunga di {0} caratteri
|
||||
description.changed=Hai cambiato con successo la descrizione del tuo clan
|
||||
no.description=Nessuna descrizione
|
||||
the.player.must.wait.0.before.joining.your.clan.again=Questo giocatore deve aspettare {0} minuto/i prima di unirsi di nuovo ad un nuovo clan
|
||||
disabled.command=Comando disabilitato
|
||||
rank.displayname.updated=Il nome visualizzato del rango è stato aggiornato\!
|
||||
rank.setdefault=Il rango predefinito del clan è stato ora impostato su {0}
|
||||
rank.removedefault=Il rango predefinito del clan è stato rimosso
|
||||
rank.0.permissions=Permessi del Rango {0}\:
|
||||
available.rank.permissions=Permessi disponibili per i ranghi\:
|
||||
rank.already.exists=Rango già esistente
|
||||
rank.0.does.not.exist=Il Rango {0} non esiste
|
||||
rank.created=Rango creato
|
||||
permission.0.added.to.rank.1=Permesso {0} aggiunto al rango {1}
|
||||
permission.0.removed.from.rank.1=Permesso {0} rimosso dal rango {1}
|
||||
rank.0.deleted=Rango {0} eliminato
|
||||
clans.ranks=Classifica del Clan\:
|
||||
ranks.list.item={0}\# {1} ({2})
|
||||
no.ranks=Nessun rango è stato ancora creato
|
||||
rank.no.permissions=Questo rango non ha alcun permesso
|
||||
player.unassigned.from.rank=Giocatore non assegnato dal rango
|
||||
you.must.be.0.or.have.the.permission.1.to.use.this=Devi essere {0} o il tuo leader deve dare al tuo rango il permesso {1} per utilizzare questo
|
||||
deposit.not.allowed=Il deposito non è abilitato, usa /%clan %toggle %deposit per permetterlo
|
||||
withdraw.not.allowed=Il prelievo non è permesso, usa /%clan %toggle %withdraw per permetterlo
|
||||
resign.request.cancelled=Richiesta di dimissioni cancellata
|
||||
disband.request.cancelled=Richiesta di scioglimento annullata
|
||||
resetkdr.request.cancelled=Richiesta di ripristino KDR annullata
|
||||
clan.create.request.cancelled=Richiesta di creazione clan annullata
|
||||
rank.create.request.cancelled=Richiesta di creazione del Rango annullata
|
||||
promotion.vote.has.been.requested.from.all.leaders=Il voto di promozione è stato richiesto a tutti i leader
|
||||
rename.vote.has.been.requested.from.all.leaders=La richiesta di cambio nome è stata richiesta a tutti i leader
|
||||
allowed=permesso
|
||||
blocked=bloccato
|
||||
chat.joined=si è unito
|
||||
chat.not.joined=non si è unito
|
||||
chat.didnt.join=&bNon sei entrato in questo canale
|
||||
gui.loading=&7Caricamento...
|
||||
gui.back.title=&fIndietro
|
||||
gui.previous.page.title=Pagina Precedente
|
||||
gui.next.page.title=&fPagina Successiva
|
||||
gui.lore.no.permission=&7Non hai i permessi per vedere questo\!
|
||||
gui.main.title={0} - Menu del clan
|
||||
gui.main.languageselector.title=Seleziona la tua lingua
|
||||
gui.main.languageselector.lore.left.click=&7Click sinistro per selezionare la lingua
|
||||
gui.main.languageselector.lore.right.click=&7Click destro per aiutare la traduzione
|
||||
@@ -623,28 +456,10 @@ gui.main.reset.kdr.title=&fResetta il KDR
|
||||
gui.main.reset.kdr.lore.price=&7Prezzo\: &b{0}
|
||||
gui.main.reset.kdr.lore=&7Click sinistro per resettare il tuo KDR
|
||||
gui.main.leaderboard.title=&fClassifica
|
||||
gui.main.leaderboard.lore=&7Clicca sinistro per vedere la classifica
|
||||
gui.main.staff.title=&fStaff
|
||||
gui.main.staff.lore=&7Clicca sinistro per aprire il menu Staff
|
||||
gui.staff.title=Staff
|
||||
gui.staff.clan.list.lore.left.click=&7Clicca sinistro per vedere tutti i clan
|
||||
gui.staff.clan.list.lore.right.click=&7Clicca destro per vedere tutti i clan non verificati
|
||||
gui.player.list.title=Elenco dei giocatori
|
||||
gui.staff.player.list.title=&fElenco Giocatori
|
||||
gui.staff.player.list.lore.left.click=&7Clicca sinistro per vedere tutti i giocatori
|
||||
gui.staff.player.list.lore.right.click=&7Clicca destro per vedere tutti i giocatori online
|
||||
gui.staff.global.ff.title=Fuoco Amico Globale
|
||||
gui.staff.global.ff.lore.status=&7Stato\: &b{0}
|
||||
gui.staff.global.ff.lore.toggle=&7Clicca sinistro per attivare il fuoco amico
|
||||
gui.staff.reload.title=&fAggiorna
|
||||
gui.staff.reload.lore=&7Clicca sinistro per ricaricare il plugin
|
||||
gui.staff.clanlist.unverified.title=Clan Non Verificati - Totale\: {0}
|
||||
gui.staff.clanlist.toplace.title=Seleziona il nuovo clan {0}
|
||||
gui.warning.title=Attenzione
|
||||
gui.warning.no.permission.title=&fNessun permesso
|
||||
gui.warning.no.permission.plugin.lore=&7Non hai i permessi per eseguire questa azione\!
|
||||
gui.warning.no.permission.leader.lore=&7Sei uno dei leader del clan?
|
||||
gui.warning.no.permission.rank.lore=&7Devi essere {0} o un leader deve dare al tuo rango il permesso {1} per usarlo\!
|
||||
gui.warning.not.verified.title=&fNon verificato
|
||||
gui.warning.not.verified.lore=&7Il tuo clan deve essere verificato\!
|
||||
gui.allies.title=Alleati
|
||||
@@ -658,8 +473,6 @@ gui.rivals.add.title=&fAggiungi un rivale
|
||||
gui.add.rival.title=Aggiungi un rivale
|
||||
gui.add.rival.clan.lore=&7Click sinistro per rivaleggiare questo clan
|
||||
gui.clanlist.title=Clans - Totale\: {0}
|
||||
gui.clanlist.clan.title=&7Clan\: &b[{0}&b] {1}
|
||||
gui.clanlist.clan.lore.position=&b\#{0}
|
||||
gui.clanlist.clan.lore.kdr=&7KDR\: &b{0}
|
||||
gui.clanlist.clan.lore.members=&7Membri\: &b{0}
|
||||
gui.coords.title=Coordinate
|
||||
@@ -691,11 +504,8 @@ gui.permissions.permission.lore=&7Click destro per rimuovere questo permesso dal
|
||||
gui.add.permission.title=Aggiungi un permesso
|
||||
gui.add.permission.permission.title=&f{0}
|
||||
gui.add.permission.permission.lore=&7Click sinistro per aggiungere questo permesso al rango
|
||||
gui.clandetails.title=[{0}] {1}
|
||||
gui.clandetails.free.agent.title=&Utente libero
|
||||
gui.clandetails.free.agent.create.clan.price.lore=&7Prezzo\: &b{0}
|
||||
gui.clandetails.free.agent.create.clan.lore=&7Click sinistro per creare un clan
|
||||
gui.clandetails.clan.title=&f[{0}&f] {1}
|
||||
gui.clandetails.clan.lore.description=&7Descrizione\: &b{0}
|
||||
gui.clandetails.clan.lore.status=&7Stato\: &b{0}
|
||||
gui.clandetails.clan.lore.leaders=&7Leader\: &b{0}
|
||||
@@ -709,26 +519,16 @@ gui.clandetails.clan.lore.allies.separator=&b,
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
gui.clandetails.clan.lore.rivals.separator=&b,
|
||||
gui.clandetails.clan.lore.allies=&7Alleati\: &b{0}
|
||||
gui.clandetails.clan.lore.rivals=&7Rivali\: &b{0}
|
||||
gui.clandetails.clan.lore.founded=&7Fondato\: &b{0}
|
||||
gui.clandetails.clan.lore.inactive=&7Inattivo\: &b{0}/{1} giorni
|
||||
gui.clandetails.allies.title=&fAlleati
|
||||
gui.clandetails.allies.lore=&7Clicca sinistro per vedere i tuoi alleati o aggiungerne altri
|
||||
gui.clandetails.rivals.title=&fRivali
|
||||
gui.clandetails.rivals.lore=&7Clicca sinistro per vedere i tuoi rivali o aggiungerne altri
|
||||
gui.clandetails.roster.title=&fElenco
|
||||
gui.clandetails.roster.lore=&7Clicca sinistro per vedere i membri del tuo clan o invitarne altri
|
||||
gui.staffclandetails.roster.lore=&7Clicca sinistro per vedere i membri del clan
|
||||
gui.clandetails.coords.title=&fCoordinate
|
||||
gui.clandetails.coords.lore=&7Clic sinistro per vedere le coordinate dei membri del tuo clan
|
||||
gui.clandetails.home.title=&fCasa
|
||||
gui.clandetails.home.lore.teleport.price=&7Prezzo teletrasporto\: &b{0}
|
||||
gui.clandetails.home.lore.teleport=&7Clic sinistro per teletrasportarti nella casa del tuo clan
|
||||
gui.staffclandetails.home.lore.teleport=&7Clic sinistro per teletrasportarti nella casa di questo clan
|
||||
gui.clandetails.home.lore.clear=&7Rilascia l'oggetto per cancellare la casa del tuo clan
|
||||
gui.clandetails.home.lore.set.price=&7Imposta prezzo\: &b{0}
|
||||
gui.clandetails.home.lore.set=&7Clicca destro per impostare la casa del tuo clan
|
||||
gui.staffclandetails.home.lore.set=&7Clicca destro per impostare la casa di questo clan
|
||||
gui.clandetails.regroup.title=&fRaggruppare
|
||||
gui.clandetails.regroup.lore.price=&7Prezzo\: &b{0}
|
||||
gui.clandetails.regroup.lore.home=&7Clic sinistro per raggruppare i membri del tuo clan nella casa del clan
|
||||
@@ -736,35 +536,11 @@ gui.clandetails.regroup.lore.me=&7Click destro per raggruppare i membri del tuo
|
||||
gui.clandetails.ff.title=&fFuoco Amico
|
||||
gui.clandetails.ff.personal.lore=&7Personale\: &b{0}
|
||||
gui.clandetails.ff.clan.lore=&7Clan\: &b{0}
|
||||
gui.clandetails.ff.personal.toggle.lore=&7Clicca sinistro per attivare o disattivare il tuo fuoco amico
|
||||
gui.clandetails.ff.clan.toggle.lore=&7Clicca destro per attivare o disattivare il fuoco amico del tuo clan
|
||||
gui.clandetails.bank.title=&fBanca
|
||||
gui.clandetails.bank.balance.lore=&7Saldo\: &b{0}
|
||||
gui.clandetails.bank.withdraw.status.lore=&7Prelievo\: &b{0}
|
||||
gui.clandetails.bank.deposit.status.lore=&7Deposito\: &b{0}
|
||||
gui.clandetails.bank.withdraw.toggle.lore=&7Rilascia l'elemento per attivare o disattivare lo stato di prelievo
|
||||
gui.clandetails.bank.deposit.toggle.lore=&7Clicca destro per attivare o disattivare lo stato del deposito
|
||||
gui.clandetails.fee.title=&fTassa
|
||||
gui.clandetails.fee.status.lore=&7Stato\: &b{0}
|
||||
gui.clandetails.fee.value.lore=&7Valore\: &b{0}
|
||||
gui.clandetails.fee.toggle.lore=&7Clicca sinistro per attivare o disattivare lo stato della tassa
|
||||
gui.clandetails.rank.title=&fRango
|
||||
gui.clandetails.rank.lore=&7Clicca sinistro per vedere i ranghi del clan e modificarli
|
||||
gui.clandetails.verified.title=&fVerificato
|
||||
gui.clandetails.not.verified.title=&fNon verificato
|
||||
gui.clandetails.verify.price.lore=&7Prezzo\: &b{0}
|
||||
gui.clandetails.not.verified.lore=&7Clicca sinistro per verificare il tuo clan
|
||||
gui.staffclandetails.not.verified.lore=&7Clicca sinistro per verificare questo clan
|
||||
gui.clandetails.resign.title=&fDimettiti
|
||||
gui.clandetails.resign.lore=&7Clicca sinistro per dimetterti dal tuo clan
|
||||
gui.clandetails.disband.title=&fSciogli
|
||||
gui.clandetails.disband.lore=&7Rilascia l'oggetto per sciogliere il tuo clan
|
||||
gui.staffclandetails.disband.lore=&7Clicca sinistro per sciogliere questo clan
|
||||
gui.clandetails.chat.title=&fChat
|
||||
gui.clandetails.chat.clan.chat.lore=&7/{0} [message] - &bInvia un messaggio alla chat del clan
|
||||
gui.clandetails.chat.clan.join.leave.lore=&7/{0} {1}/{2} - &bEntra/esci dalla chat del clan
|
||||
gui.clandetails.chat.ally.chat.lore=&7/{0} [message] - &bInvia un messaggio nella chat alleati
|
||||
gui.clandetails.chat.ally.join.leave.lore=&7/{0} {1}/{2} - &bEntra/esci dalla chat alleati
|
||||
gui.clandetails.chat.clan.status.lore=&7Clan\: &b{0}
|
||||
gui.clandetails.chat.ally.status.lore=&7Alleati\: &b{0}
|
||||
gui.clandetails.chat.clan.toggle.lore=&7Click sinistro per attivare o disattivare lo stato della chat
|
||||
@@ -788,23 +564,14 @@ gui.playerdetails.kick.title=&fEspelli
|
||||
gui.playerdetails.promote.demote.title=&fPromuovi/Retrocedi
|
||||
gui.playerdetails.promote.lore.left.click=&7Click sinistro per promuovere
|
||||
gui.playerdetails.demote.lore.right.click=&7Click destro per retrocedere
|
||||
gui.playerdetails.assign.unassign.title=&fAssegna/Rimuovi rango
|
||||
gui.playerdetails.assign.lore.left.click=&7Clicca sinistro per assegnare
|
||||
gui.playerdetails.unassign.lore.right.click=&7Premi destro per rimuovere l'assegnazione
|
||||
gui.playerdetails.trust.untrust.title=&fFidato/Non fidato
|
||||
gui.playerdetails.trust.lore.left.click=&7Clicca sinistro per concedere lo stato di Fiducia
|
||||
gui.playerdetails.untrust.lore.right.click=&7Clicca destro per rimuovere lo stato di Fiducia
|
||||
gui.playerdetails.ban.unban.title=&fBandisci/Sbandisci
|
||||
gui.playerdetails.ban.left.click=&7Clic sinistro per bannare questo giocatore dai clan
|
||||
gui.playerdetails.unban.right.click=&7Clicca destro per sbannare questo utente
|
||||
gui.playerdetails.resetkdr.lore=&7Clic sinistro per resettare il KDR di questo giocatore
|
||||
gui.playerdetails.purge.title=&fEliminare
|
||||
gui.playerdetails.purge.lore=&7Clic sinistro per eliminare i dati di questo giocatore
|
||||
gui.playerdetails.place.title=&fPosizione
|
||||
gui.playerdetails.place.lore=&7Clic sinistro per scegliere un clan per questo giocatore
|
||||
gui.languageselector.title=Lingue - Attuale\: {0}
|
||||
gui.languageselector.language.title=&f{0}
|
||||
gui.languageselector.language.lore.left.click=&7Clicca sinistro per selezionare la tua lingua
|
||||
gui.languageselector.language.lore.translation.status=&7Stato traduzione\: &b{0}%
|
||||
gui.languageselector.language.lore.right.click=&7Click destro per aiutare la traduzione
|
||||
gui.confirmation.title=Conferma
|
||||
@@ -814,19 +581,9 @@ gui.not.supported=&cSi è verificato un errore durante l'apertura della GUI\! Di
|
||||
staff.member.verify.clan=&cUn membro dello staff deve verificare il tuo clan\!
|
||||
player.already.has.that.rank=&cIl giocatore ha già questo rango\!
|
||||
joined.clan.chat=&bSei entrato nella chat del clan
|
||||
already.joined.clan.chat=&bSei già dentro la chat del clan
|
||||
left.clan.chat=&bSei uscito dalla la chat del clan
|
||||
muted.clan.chat=&bHai silenziato la chat del clan
|
||||
unmuted.clan.chat=&bHai riabilitato la lettura della la chat del clan
|
||||
joined.ally.chat=&bSei entrato nella chat alleati
|
||||
left.ally.chat=&bSei uscito dalla chat alleati
|
||||
muted.ally.chat=&bHai silenziato la chat alleati
|
||||
unmuted.ally.chat=&bHai riabilitato la lettura della chat alleati
|
||||
already.joined.ally.chat=&bSei già dentro la chat alleati
|
||||
player.already.in.this.clan=&cIl giocatore è già in questo clan
|
||||
your.clan.reached.max.alliances=&cIl tuo clan ha raggiunto il numero massimo di alleanze
|
||||
other.clan.reached.max.alliances=&cL'altro clan ha raggiunto il numero massimo di alleanze
|
||||
insert.clan.tag=&bInserisci il nome del clan (o "{0}")\:
|
||||
insert.clan.name=&bInserisci il nome del clan\:
|
||||
insert.rank.name=&bInserisci il nome del rango (o "{0}")\:
|
||||
click.to.help.translating=&bClicca su questo link per aiutarci a tradurre\:\n&r{0}
|
||||
@@ -835,38 +592,21 @@ you.must.hold.a.banner=&cDevi avere un stendardo in mano\!
|
||||
you.changed.clan.banner=&bHai cambiato lo stendardo del tuo clan\!
|
||||
your.clan.already.verified=&cIl tuo clan è già stato verificato\!
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
clan.profile=\n&7Profilo del clan\: &b%clan_name% &8-------------------------------------------\n \n &7Nome\: &e[&8%clan_color_tag%&e] &b%clan_name%\n &7Descrizione\: &f%clan_description%\n &7Stato\: &f%clan_status%\n &7Leader\: %clan_leaders%\n &7Membri Online\: &f%clan_online_count%&7/&f%clan_size%\n &7KDR\: &e%clan_kdr%\n &7Uccisioni totali\: &8[Nemici\:&f%clan_rival_kills% &8Alleati\:&f%clan_ally_kills% &8Neutrali\:&f%clan_neutral_kills% &8Civili\:&f%clan_civilian_kills%&8]\n &7Morti\: &f%clan_deaths%\n &7Tasse\: &f%clan_fee_enabled%&7, &f%clan_fee_value% $\n &7Alleanze\: &f%clan_allies%\n &7Nemici\: &f%clan_rivals%\n &7Creazione\: &f%clan_founded%\n &7Inattivo da\: &f%clan_inactive_days%&7/&f%clan_max_inactive_days% giorni\n
|
||||
player.lookup.clanname=&e[&8%clan_color_tag%&e] &b%clan_name%
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
player.lookup.killtype=&7Tipo Uccisione\: %player_kill_type%\n
|
||||
player.lookup=\n&7 Informazioni utente\: &b%player_name% &8-------------------------------------------\n \n &7Clan\: &f%clan_name%\n &7Rango\: &f%player_rank%\n &7Stato\: &f%player_status%\n &7KDR\: &e%player_kdr%\n &7Uccisioni totali\: &8[Nemici\:&f%player_rival_kills% &8Alleati\:&7%player_ally_kills% &8Neutrali\:&f%player_neutral_kills% &8Civili\:&f%player_civilian_kills%&8]\n &7Morti\: &f%player_deaths%\n &7Data unione\: &f%player_join_date%\n &7Ultimo login\: &f%player_last_seen%\n &7Clan passati\: &f%player_past_clans%\n &7Inattivo da\: &f%player_inactive_days%&7/&f%player_max_inactive_days% giorni\n %kill_type_line%
|
||||
economy.disabled=&cEconomia disattivata\!
|
||||
has.been.purged=I dati di {0} sono stati eliminati
|
||||
accepted.invitation=&bHai accettato l'invito di {0}
|
||||
denied.invitation=&cHai negato l'invito di {0}
|
||||
must.be.in.clan.to.pvp=&cTu e {0} dovete essere membri del clan per fare pvp\!
|
||||
clans.not.at.war.pvp.denied=&cIl tuo clan non è in guerra con {0}\!
|
||||
cannot.attack.civilians=&cNon puoi attaccare i civili\!
|
||||
cannot.attack.clan.member=&cNon puoi attaccare un altro membro del clan\!
|
||||
cannot.attack.ally=&cNon puoi attaccare un alleato\!
|
||||
cannot.send.discord.message=Non puoi inviare messaggi a {0}. Non sei un membro di quel clan\!
|
||||
discordhook.is.disabled=&cL'integrazione di Discord è disabilitata o non disponibile\!
|
||||
your.clan.doesnt.have.any.linked.player=Il tuo clan non ha nessun giocatore collegato
|
||||
your.clan.doesnt.have.minimum.linked.player=Il tuo clan non ha minimo giocatori collegati
|
||||
your.clan.is.not.on.the.whitelist=Il tuo clan non è whitelist
|
||||
your.clan.already.has.channel=Il tuo clan ha già un canale discord
|
||||
discord.reached.category.limit=Discord ha raggiunto il limite delle categorie\!
|
||||
discord.reached.channels.limit=Discord ha raggiunto il limite dei canali\!
|
||||
discord.created.successfully=&bCanale Discord creato con successo\!
|
||||
you.did.not.link.your.account=Non hai collegato il tuo account\!
|
||||
# suppress inspection "TrailingSpacesInProperty"
|
||||
cannot.change.member.fee.now=&cNon puoi cambiare l'importo della tassa dei membri vicino alla scadenza di pagamento.
|
||||
cannot.change.member.fee.hours=&cRiprova tra {0} ore...
|
||||
cannot.change.member.fee.minutes=&cRiprova tra {0} minuto/i...
|
||||
cannot.kick.last.leader=&cNon puoi espellere l'ultimo leader\!
|
||||
cannot.disband.permanent=&cNon puoi dissolvere questo clan. Ha stato permanente.
|
||||
you.can.only.set.base.in.your.land=&cPuoi impostare casa solo nella tua terra\!
|
||||
only.leaders.can.create.lands=&cSolo i leader possono claimare terreni\!
|
||||
only.one.land.per.clan=&cIl tuo clan ha già una terra\!
|
||||
only.clan.members.can.create.lands=&cSolo i membri di un clan possono creare terre\!
|
||||
land.allowed.all.actions=&bTutte le azioni sono state permesse\!
|
||||
@@ -875,11 +615,5 @@ land.allowed.action=&bAzione permessa\!
|
||||
land.blocked.action=&bAzione bloccata\!
|
||||
you.do.not.own.lands=&cNon possiedi una terra\!
|
||||
land.sharing.disabled=&cCondivisione di terra è disattivata\!
|
||||
clan.chat.disabled=&cLa chat del Clan è disabilitata\!
|
||||
ally.chat.disabled=&cLa chat alleati è disabilitata\!
|
||||
war.expired=La guerra con {0} è scaduta\!
|
||||
you.cant.start.war.online.members.difference=Non puoi iniziare la guerra. Un clan ha più membri online dell'altro.
|
||||
invitedplayer.invite.off=Questo giocatore ha disabilitato gli inviti al clan
|
||||
user.hasnt.played.before=&cQuesto utente non ha mai giocato prima
|
||||
clan.list.balance.header=\n{0} &7Classifica Bilanci &8-----------------------\n \n&8Clan Totali\: &7{1}\n \n&8\#&7. &8Clan &7- &8Bilancio
|
||||
clan.list.balance.line=&f{0}. {1}{2}{3}&b{4} &7- &e{5}$
|
||||
Loaded 100 of 117 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user