mirror of
https://github.com/EssentialsX/Essentials.git
synced 2024-12-22 17:18:37 +01:00
Merge pull request #2278 from EssentialsX/1.13
Full 1.13 support + 2.16.0 release
This commit is contained in:
commit
023cf6a1aa
2
.gitignore
vendored
2
.gitignore
vendored
@ -39,6 +39,7 @@
|
||||
/jars
|
||||
/out
|
||||
.idea/
|
||||
.buildtools/
|
||||
*.iml
|
||||
*.classpath
|
||||
*.project
|
||||
@ -46,6 +47,7 @@
|
||||
target/
|
||||
dependency-reduced-pom.xml
|
||||
/Essentials/config.yml
|
||||
/Essentials/kits.yml
|
||||
/Essentials/userdata/testplayer1.yml
|
||||
/Essentials/usermap.csv
|
||||
/Essentials/userdata
|
||||
|
14
.travis.yml
14
.travis.yml
@ -1,20 +1,10 @@
|
||||
language: java
|
||||
|
||||
branches:
|
||||
only:
|
||||
- 2.x
|
||||
- 1.13
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- .buildtools
|
||||
- $HOME/.m2
|
||||
|
||||
before_install:
|
||||
- mkdir -p .buildtools
|
||||
- cd .buildtools
|
||||
- wget -O BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
|
||||
- rm -r work/
|
||||
- java -jar BuildTools.jar --rev 1.8
|
||||
- java -jar BuildTools.jar --rev 1.8.3
|
||||
- cd ..
|
||||
- chmod +x scripts/buildtools.sh
|
||||
- scripts/buildtools.sh
|
||||
|
@ -1,39 +0,0 @@
|
||||
# EssentialsX new Kit configuration.
|
||||
# If you don't have any kits defined in this file, the plugin will try to copy them from the config.yml
|
||||
|
||||
# Note: All items MUST be followed by a quantity!
|
||||
# All kit names should be lower case, and will be treated as lower in permissions/costs.
|
||||
# Syntax: - itemID[:DataValue/Durability] Amount [Enchantment:Level].. [itemmeta:value]...
|
||||
# For Item Meta information visit http://wiki.ess3.net/wiki/Item_Meta
|
||||
# 'delay' refers to the cooldown between how often you can use each kit, measured in seconds.
|
||||
# Set delay to -1 for a one time kit.
|
||||
# For more information, visit http://wiki.ess3.net/wiki/Kits
|
||||
kits:
|
||||
tools:
|
||||
delay: 10
|
||||
items:
|
||||
- 272 1
|
||||
- 273 1
|
||||
- 274 1
|
||||
- 275 1
|
||||
dtools:
|
||||
delay: 600
|
||||
items:
|
||||
- 278 1 efficiency:1 durability:1 fortune:1 name:&4Gigadrill lore:The_drill_that_&npierces|the_heavens
|
||||
- 277 1 digspeed:3 name:Dwarf lore:Diggy|Diggy|Hole
|
||||
- 298 1 color:255,255,255 name:Top_Hat lore:Good_day,_Good_day
|
||||
- 279:780 1
|
||||
notch:
|
||||
delay: 6000
|
||||
items:
|
||||
- 397:3 1 player:Notch
|
||||
color:
|
||||
delay: 6000
|
||||
items:
|
||||
- 387 1 title:&4Book_&9o_&6Colors author:KHobbits lore:Ingame_color_codes book:Colors
|
||||
firework:
|
||||
delay: 6000
|
||||
items:
|
||||
- 401 1 name:Angry_Creeper color:red fade:green type:creeper power:1
|
||||
- 401 1 name:Starry_Night color:yellow,orange fade:blue type:star effect:trail,twinkle power:1
|
||||
- 401 2 name:Solar_Wind color:yellow,orange fade:red shape:large effect:twinkle color:yellow,orange fade:red shape:ball effect:trail color:red,purple fade:pink shape:star effect:trail power:1
|
@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>EssentialsXParent</artifactId>
|
||||
<version>2.15.0</version>
|
||||
<version>2.16.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>EssentialsX</artifactId>
|
||||
@ -24,7 +24,7 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>2.3.2</version>
|
||||
<version>3.7.0</version>
|
||||
<configuration>
|
||||
<showDeprecation>false</showDeprecation>
|
||||
</configuration>
|
||||
@ -32,7 +32,7 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>1.4</version>
|
||||
<version>3.1.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
@ -46,34 +46,6 @@
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>BOSEconomy</groupId>
|
||||
<artifactId>BOSEconomy</artifactId>
|
||||
<version>v0.7.8.1</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/../lib/BOSEconomy.jar</systemPath>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>iConomy</groupId>
|
||||
<artifactId>iConomy5</artifactId>
|
||||
<version>5</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/../lib/iCo5.jar</systemPath>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>iConomy</groupId>
|
||||
<artifactId>iConomy6</artifactId>
|
||||
<version>6</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/../lib/iCo6.jar</systemPath>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>MultiCurrency</groupId>
|
||||
<artifactId>MultiCurrency</artifactId>
|
||||
<version>2.2</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/../lib/MultiCurrency.jar</systemPath>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.milkbowl.vault</groupId>
|
||||
<artifactId>Vault</artifactId>
|
||||
@ -83,19 +55,19 @@
|
||||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>NMSProvider</artifactId>
|
||||
<version>2.15.0</version>
|
||||
<version>2.16.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>UpdatedMetaProvider</artifactId>
|
||||
<version>2.15.0</version>
|
||||
<version>2.16.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>1_8_R1Provider</artifactId>
|
||||
<version>2.15.0</version>
|
||||
<version>2.16.0</version>
|
||||
<scope>compile</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
@ -107,7 +79,7 @@
|
||||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>1_8_R2Provider</artifactId>
|
||||
<version>2.15.0</version>
|
||||
<version>2.16.0</version>
|
||||
<scope>compile</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
@ -119,13 +91,13 @@
|
||||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>LegacyProvider</artifactId>
|
||||
<version>2.15.0</version>
|
||||
<version>2.16.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>ReflectionProvider</artifactId>
|
||||
<version>2.15.0</version>
|
||||
<version>2.16.0</version>
|
||||
<scope>compile</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
@ -134,6 +106,12 @@
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>FlattenedProvider</artifactId>
|
||||
<version>2.16.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<repositories>
|
||||
<repository>
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.earth2me.essentials;
|
||||
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
|
||||
import java.util.HashMap;
|
||||
@ -197,14 +199,44 @@ public class Enchantments {
|
||||
ALIASENCHANTMENTS.put("sweeping", sweeping);
|
||||
}
|
||||
} catch (IllegalArgumentException ignored) {}
|
||||
|
||||
|
||||
try { // 1.13
|
||||
Enchantment loyalty = Enchantment.getByName("LOYALTY");
|
||||
if (loyalty != null) {
|
||||
ENCHANTMENTS.put("loyalty", loyalty);
|
||||
ALIASENCHANTMENTS.put("loyal", loyalty);
|
||||
ALIASENCHANTMENTS.put("return", loyalty);
|
||||
}
|
||||
Enchantment impaling = Enchantment.getByName("IMPALING");
|
||||
if (impaling != null) {
|
||||
ENCHANTMENTS.put("impaling", impaling);
|
||||
ALIASENCHANTMENTS.put("impale", impaling);
|
||||
ALIASENCHANTMENTS.put("oceandamage", impaling);
|
||||
ALIASENCHANTMENTS.put("oceandmg", impaling);
|
||||
}
|
||||
Enchantment riptide = Enchantment.getByName("RIPTIDE");
|
||||
if (riptide != null) {
|
||||
ENCHANTMENTS.put("riptide", riptide);
|
||||
ALIASENCHANTMENTS.put("rip", riptide);
|
||||
ALIASENCHANTMENTS.put("tide", riptide);
|
||||
ALIASENCHANTMENTS.put("launch", riptide);
|
||||
}
|
||||
Enchantment channelling = Enchantment.getByName("CHANNELING");
|
||||
if (channelling != null) {
|
||||
ENCHANTMENTS.put("channelling", channelling);
|
||||
ALIASENCHANTMENTS.put("chanelling", channelling);
|
||||
ALIASENCHANTMENTS.put("channeling", channelling);
|
||||
ALIASENCHANTMENTS.put("chaneling", channelling);
|
||||
ALIASENCHANTMENTS.put("channel", channelling);
|
||||
}
|
||||
} catch (IllegalArgumentException ignored) {}
|
||||
}
|
||||
|
||||
public static Enchantment getByName(String name) {
|
||||
Enchantment enchantment;
|
||||
if (NumberUtil.isInt(name)) {
|
||||
enchantment = Enchantment.getById(Integer.parseInt(name));
|
||||
} else {
|
||||
enchantment = Enchantment.getByName(name.toUpperCase(Locale.ENGLISH));
|
||||
Enchantment enchantment = Enchantment.getByKey(NamespacedKey.minecraft(name.toLowerCase()));
|
||||
if (enchantment == null) {
|
||||
enchantment = Enchantment.getByName(name.toUpperCase());
|
||||
}
|
||||
if (enchantment == null) {
|
||||
enchantment = ENCHANTMENTS.get(name.toLowerCase(Locale.ENGLISH));
|
||||
|
@ -18,6 +18,9 @@
|
||||
package com.earth2me.essentials;
|
||||
|
||||
import com.earth2me.essentials.commands.*;
|
||||
import com.earth2me.essentials.items.AbstractItemDb;
|
||||
import com.earth2me.essentials.items.FlatItemDb;
|
||||
import com.earth2me.essentials.items.LegacyItemDb;
|
||||
import com.earth2me.essentials.metrics.Metrics;
|
||||
import com.earth2me.essentials.perm.PermissionsHandler;
|
||||
import com.earth2me.essentials.register.payment.Methods;
|
||||
@ -28,6 +31,7 @@ import com.earth2me.essentials.textreader.IText;
|
||||
import com.earth2me.essentials.textreader.KeywordReplacer;
|
||||
import com.earth2me.essentials.textreader.SimpleTextInput;
|
||||
import com.earth2me.essentials.utils.DateUtil;
|
||||
import com.earth2me.essentials.utils.VersionUtil;
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.base.Throwables;
|
||||
import com.google.common.collect.Iterables;
|
||||
@ -37,17 +41,17 @@ import net.ess3.api.ISettings;
|
||||
import net.ess3.nms.PotionMetaProvider;
|
||||
import net.ess3.nms.SpawnEggProvider;
|
||||
import net.ess3.nms.SpawnerProvider;
|
||||
import net.ess3.nms.flattened.FlatSpawnEggProvider;
|
||||
import net.ess3.nms.legacy.LegacyPotionMetaProvider;
|
||||
import net.ess3.nms.legacy.LegacySpawnEggProvider;
|
||||
import net.ess3.nms.legacy.LegacySpawnerProvider;
|
||||
import net.ess3.nms.refl.ReflSpawnEggProvider;
|
||||
import net.ess3.nms.updatedmeta.BasePotionDataProvider;
|
||||
import net.ess3.nms.updatedmeta.BlockMetaSpawnerProvider;
|
||||
import net.ess3.nms.legacy.LegacySpawnEggProvider;
|
||||
import net.ess3.nms.legacy.LegacySpawnerProvider;
|
||||
import net.ess3.nms.v1_8_R1.v1_8_R1SpawnerProvider;
|
||||
import net.ess3.nms.v1_8_R2.v1_8_R2SpawnerProvider;
|
||||
import net.ess3.providers.ProviderFactory;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
@ -92,7 +96,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
|
||||
private transient Worth worth;
|
||||
private transient List<IConf> confList;
|
||||
private transient Backup backup;
|
||||
private transient ItemDb itemDb;
|
||||
private transient AbstractItemDb itemDb;
|
||||
private transient final Methods paymentMethod = new Methods();
|
||||
private transient PermissionsHandler permissionsHandler;
|
||||
private transient AlternativeCommandsHandler alternativeCommandsHandler;
|
||||
@ -168,6 +172,10 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
|
||||
|
||||
Console.setInstance(this);
|
||||
|
||||
if (!VersionUtil.isServerSupported()) {
|
||||
getLogger().severe(tl("serverUnsupported"));
|
||||
}
|
||||
|
||||
final PluginManager pm = getServer().getPluginManager();
|
||||
for (Plugin plugin : pm.getPlugins()) {
|
||||
if (plugin.getDescription().getName().startsWith("Essentials") && !plugin.getDescription().getVersion().equals(this.getDescription().getVersion()) && !plugin.getDescription().getName().equals("EssentialsAntiCheat")) {
|
||||
@ -206,11 +214,13 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
|
||||
execTimer.mark("Init(Spawn/Warp)");
|
||||
worth = new Worth(this.getDataFolder());
|
||||
confList.add(worth);
|
||||
itemDb = new ItemDb(this);
|
||||
itemDb = getItemDbFromConfig();
|
||||
confList.add(itemDb);
|
||||
execTimer.mark("Init(Worth/ItemDB)");
|
||||
jails = new Jails(this);
|
||||
confList.add(jails);
|
||||
execTimer.mark("Init(Jails)");
|
||||
|
||||
spawnerProvider = new ProviderFactory<>(getLogger(),
|
||||
Arrays.asList(
|
||||
BlockMetaSpawnerProvider.class,
|
||||
@ -220,6 +230,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
|
||||
), "mob spawner").getProvider();
|
||||
spawnEggProvider = new ProviderFactory<>(getLogger(),
|
||||
Arrays.asList(
|
||||
FlatSpawnEggProvider.class,
|
||||
ReflSpawnEggProvider.class,
|
||||
LegacySpawnEggProvider.class
|
||||
), "spawn egg").getProvider();
|
||||
@ -228,6 +239,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
|
||||
BasePotionDataProvider.class,
|
||||
LegacyPotionMetaProvider.class
|
||||
), "potion meta").getProvider();
|
||||
execTimer.mark("Init(Providers)");
|
||||
reload();
|
||||
} catch (YAMLException exception) {
|
||||
if (pm.getPlugin("EssentialsUpdate") != null) {
|
||||
@ -252,7 +264,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
|
||||
addDefaultBackPermissionsToWorld(w);
|
||||
|
||||
metrics = new Metrics(this);
|
||||
if (!metrics.isOptOut()) {
|
||||
if (metrics.isEnabled()) {
|
||||
getLogger().info("Starting Metrics. Opt-out using the global bStats config.");
|
||||
} else {
|
||||
getLogger().info("Metrics disabled per bStats config.");
|
||||
@ -920,4 +932,22 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
|
||||
ess.reload();
|
||||
}
|
||||
}
|
||||
|
||||
private AbstractItemDb getItemDbFromConfig() {
|
||||
final String setting = settings.getItemDbType();
|
||||
|
||||
if (setting.equalsIgnoreCase("json")) {
|
||||
return new FlatItemDb(this);
|
||||
} else if (setting.equalsIgnoreCase("csv")) {
|
||||
return new LegacyItemDb(this);
|
||||
} else {
|
||||
VersionUtil.BukkitVersion version = VersionUtil.getServerBukkitVersion();
|
||||
|
||||
if (version.isHigherThanOrEqualTo(VersionUtil.v1_13_0_R01)) {
|
||||
return new FlatItemDb(this);
|
||||
} else {
|
||||
return new LegacyItemDb(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.earth2me.essentials;
|
||||
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
import com.earth2me.essentials.utils.LocationUtil;
|
||||
import com.earth2me.essentials.utils.MaterialUtil;
|
||||
import net.ess3.api.IEssentials;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Material;
|
||||
@ -28,11 +30,12 @@ public class EssentialsBlockListener implements Listener {
|
||||
// Do not rely on getItemInHand();
|
||||
// http://leaky.bukkit.org/issues/663
|
||||
final ItemStack is = LocationUtil.convertBlockToItem(event.getBlockPlaced());
|
||||
|
||||
if (is == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (is.getType() == Material.MOB_SPAWNER && event.getItemInHand() != null && event.getPlayer() != null && event.getItemInHand().getType() == Material.MOB_SPAWNER) {
|
||||
if (is.getType() == MaterialUtil.SPAWNER && event.getItemInHand() != null && event.getPlayer() != null && event.getItemInHand().getType() == MaterialUtil.SPAWNER) {
|
||||
final BlockState blockState = event.getBlockPlaced().getState();
|
||||
if (blockState instanceof CreatureSpawner) {
|
||||
final CreatureSpawner spawner = (CreatureSpawner) blockState;
|
||||
|
@ -6,6 +6,7 @@ import com.earth2me.essentials.textreader.TextInput;
|
||||
import com.earth2me.essentials.textreader.TextPager;
|
||||
import com.earth2me.essentials.utils.DateUtil;
|
||||
import com.earth2me.essentials.utils.LocationUtil;
|
||||
import com.earth2me.essentials.utils.MaterialUtil;
|
||||
import net.ess3.api.IEssentials;
|
||||
|
||||
import org.bukkit.BanEntry;
|
||||
@ -598,7 +599,7 @@ public class EssentialsPlayerListener implements Listener {
|
||||
public void onPlayerInteract(final PlayerInteractEvent event) {
|
||||
switch (event.getAction()) {
|
||||
case RIGHT_CLICK_BLOCK:
|
||||
if (!event.isCancelled() && event.getClickedBlock().getType() == Material.BED_BLOCK && ess.getSettings().getUpdateBedAtDaytime()) {
|
||||
if (!event.isCancelled() && MaterialUtil.isBed(event.getClickedBlock().getType()) && ess.getSettings().getUpdateBedAtDaytime()) {
|
||||
User player = ess.getUser(event.getPlayer());
|
||||
if (player.isAuthorized("essentials.sethome.bed")) {
|
||||
player.getBase().setBedSpawnLocation(event.getClickedBlock().getLocation());
|
||||
@ -617,7 +618,7 @@ public class EssentialsPlayerListener implements Listener {
|
||||
case LEFT_CLICK_BLOCK:
|
||||
if (event.getItem() != null && event.getItem().getType() != Material.AIR) {
|
||||
final User user = ess.getUser(event.getPlayer());
|
||||
if (user.hasPowerTools() && user.arePowerToolsEnabled() && usePowertools(user, event.getItem().getTypeId())) {
|
||||
if (user.hasPowerTools() && user.arePowerToolsEnabled() && usePowertools(user, event.getItem().getType())) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
@ -651,8 +652,8 @@ public class EssentialsPlayerListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean usePowertools(final User user, final int id) {
|
||||
final List<String> commandList = user.getPowertool(id);
|
||||
private boolean usePowertools(final User user, final Material material) {
|
||||
final List<String> commandList = user.getPowertool(material);
|
||||
if (commandList == null || commandList.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import com.earth2me.essentials.signs.EssentialsSign;
|
||||
import com.earth2me.essentials.textreader.IText;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
@ -95,7 +96,7 @@ public interface ISettings extends IConf {
|
||||
|
||||
int getProtectCreeperMaxHeight();
|
||||
|
||||
List<Integer> getProtectList(final String configName);
|
||||
List<Material> getProtectList(final String configName);
|
||||
|
||||
boolean getProtectPreventSpawn(final String creatureName);
|
||||
|
||||
@ -133,9 +134,12 @@ public interface ISettings extends IConf {
|
||||
|
||||
boolean isEcoDisabled();
|
||||
|
||||
@Deprecated
|
||||
boolean isTradeInStacks(int id);
|
||||
|
||||
List<Integer> itemSpawnBlacklist();
|
||||
boolean isTradeInStacks(Material type);
|
||||
|
||||
List<Material> itemSpawnBlacklist();
|
||||
|
||||
List<EssentialsSign> enabledSigns();
|
||||
|
||||
@ -239,6 +243,8 @@ public interface ISettings extends IConf {
|
||||
|
||||
boolean ignoreColorsInMaxLength();
|
||||
|
||||
boolean hideDisplayNameInVanish();
|
||||
|
||||
int getMaxUserCacheCount();
|
||||
|
||||
boolean allowSilentJoinQuit();
|
||||
@ -310,4 +316,10 @@ public interface ISettings extends IConf {
|
||||
boolean isCompassTowardsHomePerm();
|
||||
|
||||
boolean isAllowWorldInBroadcastworld();
|
||||
|
||||
String getItemDbType();
|
||||
|
||||
boolean isForceEnableRecipe();
|
||||
|
||||
boolean allowOldIdSigns();
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import com.earth2me.essentials.commands.IEssentialsCommand;
|
||||
import net.ess3.api.ITeleport;
|
||||
import net.ess3.api.MaxMoneyException;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@ -35,7 +36,7 @@ public interface IUser {
|
||||
|
||||
boolean canAfford(BigDecimal value);
|
||||
|
||||
Boolean canSpawnItem(final int itemId);
|
||||
Boolean canSpawnItem(final Material material);
|
||||
|
||||
void setLastLocation();
|
||||
|
||||
|
@ -1,484 +0,0 @@
|
||||
package com.earth2me.essentials;
|
||||
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import com.earth2me.essentials.utils.StringUtil;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.nms.refl.ReflUtil;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.FireworkEffect;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Banner;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.*;
|
||||
import org.bukkit.potion.Potion;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
|
||||
public class ItemDb implements IConf, net.ess3.api.IItemDb {
|
||||
private final transient IEssentials ess;
|
||||
private final transient Map<String, Integer> items = new HashMap<>();
|
||||
private final transient Map<ItemData, List<String>> names = new HashMap<>();
|
||||
private final transient Map<ItemData, String> primaryName = new HashMap<>();
|
||||
private final transient Map<String, Short> durabilities = new HashMap<>();
|
||||
private final transient Map<String, String> nbtData = new HashMap<>();
|
||||
private final transient ManagedFile file;
|
||||
private final transient Pattern splitPattern = Pattern.compile("((.*)[:+',;.](\\d+))");
|
||||
private final transient Pattern csvSplitPattern = Pattern.compile("(\"([^\"]*)\"|[^,]*)(,|$)");
|
||||
|
||||
public ItemDb(final IEssentials ess) {
|
||||
this.ess = ess;
|
||||
file = new ManagedFile("items.csv", ess);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reloadConfig() {
|
||||
final List<String> lines = file.getLines();
|
||||
|
||||
if (lines.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
durabilities.clear();
|
||||
items.clear();
|
||||
names.clear();
|
||||
primaryName.clear();
|
||||
|
||||
for (String line : lines) {
|
||||
if (line.length() > 0 && line.charAt(0) == '#') {
|
||||
continue;
|
||||
}
|
||||
|
||||
String itemName = null;
|
||||
int numeric = -1;
|
||||
short data = 0;
|
||||
String nbt = null;
|
||||
|
||||
int col = 0;
|
||||
Matcher matcher = csvSplitPattern.matcher(line);
|
||||
while (matcher.find()) {
|
||||
String match = matcher.group(1);
|
||||
if (StringUtils.stripToNull(match) == null) {
|
||||
continue;
|
||||
}
|
||||
match = StringUtils.strip(match.trim(), "\"");
|
||||
switch (col) {
|
||||
case 0:
|
||||
itemName = match.toLowerCase(Locale.ENGLISH);
|
||||
break;
|
||||
case 1:
|
||||
numeric = Integer.parseInt(match);
|
||||
break;
|
||||
case 2:
|
||||
data = Short.parseShort(match);
|
||||
break;
|
||||
case 3:
|
||||
nbt = StringUtils.stripToNull(match);
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
col++;
|
||||
}
|
||||
// Invalid row
|
||||
if (itemName == null || numeric < 0) {
|
||||
continue;
|
||||
}
|
||||
durabilities.put(itemName, data);
|
||||
items.put(itemName, numeric);
|
||||
if (nbt != null) {
|
||||
nbtData.put(itemName, nbt);
|
||||
}
|
||||
|
||||
ItemData itemData = new ItemData(numeric, data);
|
||||
if (names.containsKey(itemData)) {
|
||||
List<String> nameList = names.get(itemData);
|
||||
nameList.add(itemName);
|
||||
} else {
|
||||
List<String> nameList = new ArrayList<>();
|
||||
nameList.add(itemName);
|
||||
names.put(itemData, nameList);
|
||||
primaryName.put(itemData, itemName);
|
||||
}
|
||||
}
|
||||
|
||||
for (List<String> nameList : names.values()) {
|
||||
Collections.sort(nameList, LengthCompare.INSTANCE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack get(final String id, final int quantity) throws Exception {
|
||||
final ItemStack retval = get(id.toLowerCase(Locale.ENGLISH));
|
||||
retval.setAmount(quantity);
|
||||
return retval;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack get(final String id) throws Exception {
|
||||
int itemid = 0;
|
||||
String itemname;
|
||||
short metaData = 0;
|
||||
Matcher parts = splitPattern.matcher(id);
|
||||
if (parts.matches()) {
|
||||
itemname = parts.group(2);
|
||||
metaData = Short.parseShort(parts.group(3));
|
||||
} else {
|
||||
itemname = id;
|
||||
}
|
||||
|
||||
if (NumberUtil.isInt(itemname)) {
|
||||
itemid = Integer.parseInt(itemname);
|
||||
} else if (NumberUtil.isInt(id)) {
|
||||
itemid = Integer.parseInt(id);
|
||||
} else {
|
||||
itemname = itemname.toLowerCase(Locale.ENGLISH);
|
||||
}
|
||||
|
||||
if (itemid < 1) {
|
||||
if (items.containsKey(itemname)) {
|
||||
itemid = items.get(itemname);
|
||||
if (durabilities.containsKey(itemname) && metaData == 0) {
|
||||
metaData = durabilities.get(itemname);
|
||||
}
|
||||
} else if (Material.getMaterial(itemname.toUpperCase(Locale.ENGLISH)) != null) {
|
||||
Material bMaterial = Material.getMaterial(itemname.toUpperCase(Locale.ENGLISH));
|
||||
itemid = bMaterial.getId();
|
||||
} else {
|
||||
try {
|
||||
Material bMaterial = Bukkit.getUnsafe().getMaterialFromInternalName(itemname.toLowerCase(Locale.ENGLISH));
|
||||
itemid = bMaterial.getId();
|
||||
} catch (Throwable throwable) {
|
||||
throw new Exception(tl("unknownItemName", itemname), throwable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (itemid < 1) {
|
||||
throw new Exception(tl("unknownItemName", itemname));
|
||||
}
|
||||
|
||||
final Material mat = Material.getMaterial(itemid);
|
||||
if (mat == null) {
|
||||
throw new Exception(tl("unknownItemId", itemid));
|
||||
}
|
||||
ItemStack retval = new ItemStack(mat);
|
||||
if (nbtData.containsKey(itemname)) {
|
||||
String nbt = nbtData.get(itemname);
|
||||
if (nbt.startsWith("*")) {
|
||||
nbt = nbtData.get(nbt.substring(1));
|
||||
}
|
||||
retval = ess.getServer().getUnsafe().modifyItemStack(retval, nbt);
|
||||
}
|
||||
if (mat == Material.MOB_SPAWNER) {
|
||||
if (metaData == 0) metaData = EntityType.PIG.getTypeId();
|
||||
try {
|
||||
retval = ess.getSpawnerProvider().setEntityType(retval, EntityType.fromId(metaData));
|
||||
} catch (IllegalArgumentException e) {
|
||||
throw new Exception("Can't spawn entity ID " + metaData + " from mob spawners.");
|
||||
}
|
||||
} else if (mat == Material.MONSTER_EGG) {
|
||||
EntityType type;
|
||||
try {
|
||||
type = EntityType.fromId(metaData);
|
||||
} catch (IllegalArgumentException e) {
|
||||
throw new Exception("Can't spawn entity ID " + metaData + " from spawn eggs.");
|
||||
}
|
||||
retval = ess.getSpawnEggProvider().createEggItem(type);
|
||||
} else if (mat.name().endsWith("POTION")
|
||||
&& ReflUtil.getNmsVersionObject().isLowerThan(ReflUtil.V1_11_R1)) { // Only apply this to pre-1.11 as items.csv might only work in 1.11
|
||||
retval = ess.getPotionMetaProvider().createPotionItem(mat, metaData);
|
||||
} else {
|
||||
retval.setDurability(metaData);
|
||||
}
|
||||
retval.setAmount(mat.getMaxStackSize());
|
||||
return retval;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getMatching(User user, String[] args) throws Exception {
|
||||
List<ItemStack> is = new ArrayList<>();
|
||||
|
||||
if (args.length < 1) {
|
||||
is.add(user.getItemInHand().clone());
|
||||
} else if (args[0].equalsIgnoreCase("hand")) {
|
||||
is.add(user.getItemInHand().clone());
|
||||
} else if (args[0].equalsIgnoreCase("inventory") || args[0].equalsIgnoreCase("invent") || args[0].equalsIgnoreCase("all")) {
|
||||
for (ItemStack stack : user.getBase().getInventory().getContents()) {
|
||||
if (stack == null || stack.getType() == Material.AIR) {
|
||||
continue;
|
||||
}
|
||||
is.add(stack.clone());
|
||||
}
|
||||
} else if (args[0].equalsIgnoreCase("blocks")) {
|
||||
for (ItemStack stack : user.getBase().getInventory().getContents()) {
|
||||
if (stack == null || stack.getTypeId() > 255 || stack.getType() == Material.AIR) {
|
||||
continue;
|
||||
}
|
||||
is.add(stack.clone());
|
||||
}
|
||||
} else {
|
||||
is.add(get(args[0]));
|
||||
}
|
||||
|
||||
if (is.isEmpty() || is.get(0).getType() == Material.AIR) {
|
||||
throw new Exception(tl("itemSellAir"));
|
||||
}
|
||||
|
||||
return is;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String names(ItemStack item) {
|
||||
ItemData itemData = new ItemData(item.getTypeId(), item.getDurability());
|
||||
List<String> nameList = names.get(itemData);
|
||||
if (nameList == null) {
|
||||
itemData = new ItemData(item.getTypeId(), (short) 0);
|
||||
nameList = names.get(itemData);
|
||||
if (nameList == null) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
if (nameList.size() > 15) {
|
||||
nameList = nameList.subList(0, 14);
|
||||
}
|
||||
return StringUtil.joinList(", ", nameList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String name(ItemStack item) {
|
||||
ItemData itemData = new ItemData(item.getTypeId(), item.getDurability());
|
||||
String name = primaryName.get(itemData);
|
||||
if (name == null) {
|
||||
itemData = new ItemData(item.getTypeId(), (short) 0);
|
||||
name = primaryName.get(itemData);
|
||||
if (name == null) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String serialize(ItemStack is) {
|
||||
String mat = is.getType().name();
|
||||
if (is.getData().getData() != 0) {
|
||||
mat = mat + ":" + is.getData().getData();
|
||||
}
|
||||
int quantity = is.getAmount();
|
||||
StringBuilder sb = new StringBuilder(); // Add space AFTER you add something. We can trim at end.
|
||||
sb.append(mat).append(" ").append(quantity).append(" ");
|
||||
|
||||
// ItemMeta applies to anything.
|
||||
if (is.hasItemMeta()) {
|
||||
ItemMeta meta = is.getItemMeta();
|
||||
if (meta.hasDisplayName()) {
|
||||
sb.append("name:").append(meta.getDisplayName().replaceAll(" ", "_")).append(" ");
|
||||
}
|
||||
|
||||
if (meta.hasLore()) {
|
||||
sb.append("lore:");
|
||||
boolean first = true;
|
||||
for (String s : meta.getLore()) {
|
||||
// Add | before the line if it's not the first one. Easy but weird way
|
||||
// to do this since we need each line separated by |
|
||||
if (!first) {
|
||||
sb.append("|");
|
||||
}
|
||||
first = false;
|
||||
sb.append(s.replaceAll(" ", "_"));
|
||||
}
|
||||
sb.append(" ");
|
||||
}
|
||||
|
||||
if (meta.hasEnchants()) {
|
||||
for (Enchantment e : meta.getEnchants().keySet()) {
|
||||
sb.append(e.getName().toLowerCase()).append(":").append(meta.getEnchantLevel(e)).append(" ");
|
||||
}
|
||||
}
|
||||
|
||||
Set<ItemFlag> flags = meta.getItemFlags();
|
||||
if (flags != null && !flags.isEmpty()) {
|
||||
sb.append("itemflags:");
|
||||
boolean first = true;
|
||||
for (ItemFlag flag : flags) {
|
||||
if (!first) {
|
||||
sb.append(",");
|
||||
}
|
||||
sb.append(flag.name());
|
||||
first = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (is.getType()) {
|
||||
case WRITTEN_BOOK:
|
||||
// Everything from http://wiki.ess3.net/wiki/Item_Meta#Books in that order.
|
||||
// Interesting as I didn't see a way to do pages or chapters.
|
||||
BookMeta bookMeta = (BookMeta) is.getItemMeta();
|
||||
if (bookMeta.hasTitle()) {
|
||||
sb.append("title:").append(bookMeta.getTitle()).append(" ");
|
||||
}
|
||||
if (bookMeta.hasAuthor()) {
|
||||
sb.append("author:").append(bookMeta.getAuthor()).append(" ");
|
||||
}
|
||||
// Only other thing it could have is lore but that's done up there ^^^
|
||||
break;
|
||||
case ENCHANTED_BOOK:
|
||||
EnchantmentStorageMeta enchantmentStorageMeta = (EnchantmentStorageMeta) is.getItemMeta();
|
||||
for (Enchantment e : enchantmentStorageMeta.getStoredEnchants().keySet()) {
|
||||
sb.append(e.getName().toLowerCase()).append(":").append(enchantmentStorageMeta.getStoredEnchantLevel(e)).append(" ");
|
||||
}
|
||||
break;
|
||||
case FIREWORK:
|
||||
// Everything from http://wiki.ess3.net/wiki/Item_Meta#Fireworks in that order.
|
||||
FireworkMeta fireworkMeta = (FireworkMeta) is.getItemMeta();
|
||||
if (fireworkMeta.hasEffects()) {
|
||||
for (FireworkEffect effect : fireworkMeta.getEffects()) {
|
||||
if (effect.getColors() != null && !effect.getColors().isEmpty()) {
|
||||
sb.append("color:");
|
||||
boolean first = true;
|
||||
for (Color c : effect.getColors()) {
|
||||
if (!first) {
|
||||
sb.append(","); // same thing as above.
|
||||
}
|
||||
sb.append(c.toString());
|
||||
first = false;
|
||||
}
|
||||
sb.append(" ");
|
||||
}
|
||||
|
||||
sb.append("shape: ").append(effect.getType().name()).append(" ");
|
||||
if (effect.getFadeColors() != null && !effect.getFadeColors().isEmpty()) {
|
||||
sb.append("fade:");
|
||||
boolean first = true;
|
||||
for (Color c : effect.getFadeColors()) {
|
||||
if (!first) {
|
||||
sb.append(","); // same thing as above.
|
||||
}
|
||||
sb.append(c.toString());
|
||||
first = false;
|
||||
}
|
||||
sb.append(" ");
|
||||
}
|
||||
}
|
||||
sb.append("power: ").append(fireworkMeta.getPower()).append(" ");
|
||||
}
|
||||
break;
|
||||
case POTION:
|
||||
Potion potion = Potion.fromItemStack(is);
|
||||
for (PotionEffect e : potion.getEffects()) {
|
||||
// long but needs to be effect:speed power:2 duration:120 in that order.
|
||||
sb.append("splash:").append(potion.isSplash()).append(" ").append("effect:").append(e.getType().getName().toLowerCase()).append(" ").append("power:").append(e.getAmplifier()).append(" ").append("duration:").append(e.getDuration() / 20).append(" ");
|
||||
}
|
||||
break;
|
||||
case SKULL_ITEM:
|
||||
// item stack with meta
|
||||
SkullMeta skullMeta = (SkullMeta) is.getItemMeta();
|
||||
if (skullMeta != null && skullMeta.hasOwner()) {
|
||||
sb.append("player:").append(skullMeta.getOwner()).append(" ");
|
||||
}
|
||||
break;
|
||||
case LEATHER_HELMET:
|
||||
case LEATHER_CHESTPLATE:
|
||||
case LEATHER_LEGGINGS:
|
||||
case LEATHER_BOOTS:
|
||||
LeatherArmorMeta leatherArmorMeta = (LeatherArmorMeta) is.getItemMeta();
|
||||
int rgb = leatherArmorMeta.getColor().asRGB();
|
||||
sb.append("color:").append(rgb).append(" ");
|
||||
break;
|
||||
case BANNER:
|
||||
BannerMeta bannerMeta = (BannerMeta) is.getItemMeta();
|
||||
if (bannerMeta != null) {
|
||||
int basecolor = bannerMeta.getBaseColor().getColor().asRGB();
|
||||
sb.append("basecolor:").append(basecolor).append(" ");
|
||||
for (org.bukkit.block.banner.Pattern p : bannerMeta.getPatterns()) {
|
||||
String type = p.getPattern().getIdentifier();
|
||||
int color = p.getColor().getColor().asRGB();
|
||||
sb.append(type).append(",").append(color).append(" ");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SHIELD:
|
||||
// Hacky fix for accessing Shield meta - https://github.com/drtshock/Essentials/pull/745#issuecomment-234843795
|
||||
BlockStateMeta shieldMeta = (BlockStateMeta) is.getItemMeta();
|
||||
Banner shieldBannerMeta = (Banner) shieldMeta.getBlockState();
|
||||
int basecolor = shieldBannerMeta.getBaseColor().getColor().asRGB();
|
||||
sb.append("basecolor:").append(basecolor).append(" ");
|
||||
for (org.bukkit.block.banner.Pattern p : shieldBannerMeta.getPatterns()) {
|
||||
String type = p.getPattern().getIdentifier();
|
||||
int color = p.getColor().getColor().asRGB();
|
||||
sb.append(type).append(",").append(color).append(" ");
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return sb.toString().trim().replaceAll("§", "&");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> listNames() {
|
||||
return primaryName.values();
|
||||
}
|
||||
|
||||
static class ItemData {
|
||||
final private int itemNo;
|
||||
final private short itemData;
|
||||
|
||||
ItemData(final int itemNo, final short itemData) {
|
||||
this.itemNo = itemNo;
|
||||
this.itemData = itemData;
|
||||
}
|
||||
|
||||
public int getItemNo() {
|
||||
return itemNo;
|
||||
}
|
||||
|
||||
public short getItemData() {
|
||||
return itemData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (31 * itemNo) ^ itemData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null) {
|
||||
return false;
|
||||
}
|
||||
if (!(o instanceof ItemData)) {
|
||||
return false;
|
||||
}
|
||||
ItemData pairo = (ItemData) o;
|
||||
return this.itemNo == pairo.getItemNo() && this.itemData == pairo.getItemData();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static class LengthCompare implements java.util.Comparator<String> {
|
||||
|
||||
private static final LengthCompare INSTANCE = new LengthCompare();
|
||||
|
||||
public LengthCompare() {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compare(String s1, String s2) {
|
||||
return s1.length() - s2.length();
|
||||
}
|
||||
}
|
||||
}
|
@ -3,7 +3,9 @@ package com.earth2me.essentials;
|
||||
import com.earth2me.essentials.textreader.BookInput;
|
||||
import com.earth2me.essentials.textreader.BookPager;
|
||||
import com.earth2me.essentials.textreader.IText;
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
import com.earth2me.essentials.utils.FormatUtil;
|
||||
import com.earth2me.essentials.utils.MaterialUtil;
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import com.google.common.base.Joiner;
|
||||
import net.ess3.api.IEssentials;
|
||||
@ -33,8 +35,8 @@ import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
|
||||
public class MetaItemStack {
|
||||
private static final Map<String, DyeColor> colorMap = new HashMap<String, DyeColor>();
|
||||
private static final Map<String, FireworkEffect.Type> fireworkShape = new HashMap<String, FireworkEffect.Type>();
|
||||
private static final Map<String, DyeColor> colorMap = new HashMap<>();
|
||||
private static final Map<String, FireworkEffect.Type> fireworkShape = new HashMap<>();
|
||||
|
||||
static {
|
||||
for (DyeColor color : DyeColor.values()) {
|
||||
@ -97,10 +99,6 @@ public class MetaItemStack {
|
||||
completePotion = true;
|
||||
}
|
||||
|
||||
private boolean isPotion(Material type) {
|
||||
return type.name().endsWith("POTION");
|
||||
}
|
||||
|
||||
public boolean canSpawn(final IEssentials ess) {
|
||||
try {
|
||||
ess.getServer().getUnsafe().modifyItemStack(stack.clone(), "{}");
|
||||
@ -158,16 +156,7 @@ public class MetaItemStack {
|
||||
return;
|
||||
}
|
||||
|
||||
Material banner = null;
|
||||
Material shield = null;
|
||||
|
||||
try {
|
||||
// 1.8
|
||||
banner = Material.valueOf("BANNER");
|
||||
|
||||
// 1.9
|
||||
shield = Material.valueOf("SHIELD");
|
||||
} catch(IllegalArgumentException ignored){}
|
||||
Material WRITTEN_BOOK = EnumUtil.getMaterial("WRITTEN_BOOK");
|
||||
|
||||
if (split.length > 1 && split[0].equalsIgnoreCase("name") && hasMetaPermission(sender, "name", false, true, ess)) {
|
||||
final String displayName = FormatUtil.replaceFormat(split[1].replace('_', ' '));
|
||||
@ -185,16 +174,16 @@ public class MetaItemStack {
|
||||
} else if (split[0].equalsIgnoreCase("unbreakable") && hasMetaPermission(sender, "unbreakable", false, true, ess)) {
|
||||
boolean value = split.length > 1 ? Boolean.valueOf(split[1]) : true;
|
||||
setUnbreakable(stack, value);
|
||||
} else if (split.length > 1 && (split[0].equalsIgnoreCase("player") || split[0].equalsIgnoreCase("owner")) && stack.getType() == Material.SKULL_ITEM && hasMetaPermission(sender, "head", false, true, ess)) {
|
||||
if (stack.getDurability() == 3) {
|
||||
} else if (split.length > 1 && (split[0].equalsIgnoreCase("player") || split[0].equalsIgnoreCase("owner")) && hasMetaPermission(sender, "head", false, true, ess)) {
|
||||
if (MaterialUtil.isPlayerHead(stack.getType(), stack.getDurability())) {
|
||||
final String owner = split[1];
|
||||
final SkullMeta meta = (SkullMeta) stack.getItemMeta();
|
||||
meta.setOwner(owner);
|
||||
meta.setOwningPlayer(ess.getServer().getOfflinePlayer(owner));
|
||||
stack.setItemMeta(meta);
|
||||
} else {
|
||||
throw new Exception(tl("onlyPlayerSkulls"));
|
||||
}
|
||||
} else if (split.length > 1 && split[0].equalsIgnoreCase("book") && stack.getType() == Material.WRITTEN_BOOK && (hasMetaPermission(sender, "book", true, true, ess) || hasMetaPermission(sender, "chapter-" + split[1].toLowerCase(Locale.ENGLISH), true, true, ess))) {
|
||||
} else if (split.length > 1 && split[0].equalsIgnoreCase("book") && stack.getType() == WRITTEN_BOOK && (hasMetaPermission(sender, "book", true, true, ess) || hasMetaPermission(sender, "chapter-" + split[1].toLowerCase(Locale.ENGLISH), true, true, ess))) {
|
||||
final BookMeta meta = (BookMeta) stack.getItemMeta();
|
||||
final IText input = new BookInput("book", true, ess);
|
||||
final BookPager pager = new BookPager(input);
|
||||
@ -202,42 +191,42 @@ public class MetaItemStack {
|
||||
List<String> pages = pager.getPages(split[1]);
|
||||
meta.setPages(pages);
|
||||
stack.setItemMeta(meta);
|
||||
} else if (split.length > 1 && split[0].equalsIgnoreCase("author") && stack.getType() == Material.WRITTEN_BOOK && hasMetaPermission(sender, "author", false, true, ess)) {
|
||||
} else if (split.length > 1 && split[0].equalsIgnoreCase("author") && stack.getType() == WRITTEN_BOOK && hasMetaPermission(sender, "author", false, true, ess)) {
|
||||
final String author = FormatUtil.replaceFormat(split[1]);
|
||||
final BookMeta meta = (BookMeta) stack.getItemMeta();
|
||||
meta.setAuthor(author);
|
||||
stack.setItemMeta(meta);
|
||||
} else if (split.length > 1 && split[0].equalsIgnoreCase("title") && stack.getType() == Material.WRITTEN_BOOK && hasMetaPermission(sender, "title", false, true, ess)) {
|
||||
} else if (split.length > 1 && split[0].equalsIgnoreCase("title") && stack.getType() == WRITTEN_BOOK && hasMetaPermission(sender, "title", false, true, ess)) {
|
||||
final String title = FormatUtil.replaceFormat(split[1].replace('_', ' '));
|
||||
final BookMeta meta = (BookMeta) stack.getItemMeta();
|
||||
meta.setTitle(title);
|
||||
stack.setItemMeta(meta);
|
||||
} else if (split.length > 1 && split[0].equalsIgnoreCase("power") && stack.getType() == Material.FIREWORK && hasMetaPermission(sender, "firework-power", false, true, ess)) {
|
||||
} else if (split.length > 1 && split[0].equalsIgnoreCase("power") && (MaterialUtil.isFirework(stack.getType()))&& hasMetaPermission(sender, "firework-power", false, true, ess)) {
|
||||
final int power = NumberUtil.isInt(split[1]) ? Integer.parseInt(split[1]) : 0;
|
||||
final FireworkMeta meta = (FireworkMeta) stack.getItemMeta();
|
||||
meta.setPower(power > 3 ? 4 : power);
|
||||
stack.setItemMeta(meta);
|
||||
} else if (split.length > 1 && split[0].equalsIgnoreCase("itemflags") && hasMetaPermission(sender, "itemflags", false, true, ess)) {
|
||||
addItemFlags(string);
|
||||
} else if (stack.getType() == Material.FIREWORK) {//WARNING - Meta for fireworks will be ignored after this point.
|
||||
} else if (MaterialUtil.isFirework(stack.getType())) {//WARNING - Meta for fireworks will be ignored after this point.
|
||||
addFireworkMeta(sender, false, string, ess);
|
||||
} else if (isPotion(stack.getType())) { //WARNING - Meta for potions will be ignored after this point.
|
||||
} else if (MaterialUtil.isPotion(stack.getType())) { //WARNING - Meta for potions will be ignored after this point.
|
||||
addPotionMeta(sender, false, string, ess);
|
||||
} else if (banner != null && stack.getType() == banner) { //WARNING - Meta for banners will be ignored after this point.
|
||||
} else if (MaterialUtil.isBanner(stack.getType())) {
|
||||
//WARNING - Meta for banners will be ignored after this point.
|
||||
addBannerMeta(sender, false, string, ess);
|
||||
} else if (shield != null && stack.getType() == shield) { //WARNING - Meta for shields will be ignored after this point.
|
||||
addBannerMeta(sender, false, string, ess);
|
||||
} else if (split.length > 1 && (split[0].equalsIgnoreCase("color") || split[0].equalsIgnoreCase("colour")) && (stack.getType() == Material.LEATHER_BOOTS || stack.getType() == Material.LEATHER_CHESTPLATE || stack.getType() == Material.LEATHER_HELMET || stack.getType() == Material.LEATHER_LEGGINGS)) {
|
||||
} else if (split.length > 1 && (split[0].equalsIgnoreCase("color") || split[0].equalsIgnoreCase("colour")) && MaterialUtil.isLeatherArmor(stack.getType())) {
|
||||
final String[] color = split[1].split("(\\||,)");
|
||||
if(color.length == 1 && (NumberUtil.isInt(color[0]) || color[0].startsWith("#"))) { // int rgb and hex
|
||||
if (color.length == 1 && (NumberUtil.isInt(color[0]) || color[0].startsWith("#"))) {
|
||||
// Either integer or hexadecimal
|
||||
final LeatherArmorMeta meta = (LeatherArmorMeta) stack.getItemMeta();
|
||||
String input = color[0];
|
||||
if(input.startsWith("#")) {
|
||||
if (input.startsWith("#")) { // Hex
|
||||
meta.setColor(Color.fromRGB(
|
||||
Integer.valueOf(input.substring(1, 3), 16),
|
||||
Integer.valueOf(input.substring(3, 5), 16),
|
||||
Integer.valueOf(input.substring(5, 7), 16)));
|
||||
} else {
|
||||
} else { // Int
|
||||
meta.setColor(Color.fromRGB(Integer.parseInt(input)));
|
||||
}
|
||||
stack.setItemMeta(meta);
|
||||
@ -281,7 +270,7 @@ public class MetaItemStack {
|
||||
}
|
||||
|
||||
public void addFireworkMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception {
|
||||
if (stack.getType() == Material.FIREWORK) {
|
||||
if (MaterialUtil.isFirework(stack.getType())) {
|
||||
final String[] split = splitPattern.split(string, 2);
|
||||
if (split.length < 2) {
|
||||
return;
|
||||
@ -353,7 +342,7 @@ public class MetaItemStack {
|
||||
}
|
||||
|
||||
public void addPotionMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception {
|
||||
if (isPotion(stack.getType())) {
|
||||
if (MaterialUtil.isPotion(stack.getType())) {
|
||||
final String[] split = splitPattern.split(string, 2);
|
||||
|
||||
if (split.length < 2) {
|
||||
@ -482,7 +471,7 @@ public class MetaItemStack {
|
||||
}
|
||||
|
||||
public void addBannerMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception {
|
||||
if (stack.getType() == Material.BANNER && string != null) {
|
||||
if (MaterialUtil.isBanner(stack.getType()) && !stack.getType().toString().equals("SHIELD") && string != null) {
|
||||
final String[] split = splitPattern.split(string, 2);
|
||||
|
||||
if (split.length < 2) {
|
||||
@ -506,7 +495,7 @@ public class MetaItemStack {
|
||||
}
|
||||
|
||||
stack.setItemMeta(meta);
|
||||
} else if (stack.getType() == Material.SHIELD && string != null) {
|
||||
} else if (stack.getType().toString().equals("SHIELD") && string != null) {
|
||||
final String[] split = splitPattern.split(string, 2);
|
||||
|
||||
if (split.length < 2) {
|
||||
|
@ -75,6 +75,14 @@ public enum Mob {
|
||||
HUSK("Husk", Enemies.ENEMY, "HUSK"),
|
||||
ILLUSIONER("Illusioner", Enemies.ENEMY, "ILLUSIONER"),
|
||||
PARROT("Parrot", Enemies.NEUTRAL, "PARROT"),
|
||||
TURTLE("Turtle", Enemies.NEUTRAL, "TURTLE"),
|
||||
PHANTOM("Phantom", Enemies.ENEMY, "PHANTOM"),
|
||||
COD("Cod", Enemies.NEUTRAL, "COD"),
|
||||
SALMON("Salmon", Enemies.NEUTRAL, "SALMON"),
|
||||
PUFFERFISH("Pufferfish", Enemies.NEUTRAL, "PUFFERFISH"),
|
||||
TROPICAL_FISH("TropicalFish", Enemies.NEUTRAL, "TROPICAL_FISH"),
|
||||
DROWNED("Drowned", Enemies.ENEMY, "DROWNED"),
|
||||
DOLPHIN("Dolphin", Enemies.NEUTRAL, "DOLPHIN"),
|
||||
;
|
||||
|
||||
public static final Logger logger = Logger.getLogger("Essentials");
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.earth2me.essentials;
|
||||
|
||||
import com.earth2me.essentials.craftbukkit.InventoryWorkaround;
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
import com.earth2me.essentials.utils.StringUtil;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Material;
|
||||
@ -53,9 +54,9 @@ public enum MobData {
|
||||
BAY_HORSE("bay", EntityType.HORSE, Horse.Color.BROWN, true),
|
||||
BROWN_HORSE("brown", EntityType.HORSE, Horse.Color.BROWN, false),
|
||||
SADDLE_HORSE("saddle", EntityType.HORSE, Data.HORSESADDLE, true),
|
||||
GOLD_ARMOR_HORSE("goldarmor", EntityType.HORSE, Material.GOLD_BARDING, true),
|
||||
DIAMOND_ARMOR_HORSE("diamondarmor", EntityType.HORSE, Material.DIAMOND_BARDING, true),
|
||||
ARMOR_HORSE("armor", EntityType.HORSE, Material.IRON_BARDING, true),
|
||||
GOLD_ARMOR_HORSE("goldarmor", EntityType.HORSE, EnumUtil.getMaterial("GOLDEN_HORSE_ARMOR", "GOLD_BARDING"), true),
|
||||
DIAMOND_ARMOR_HORSE("diamondarmor", EntityType.HORSE, EnumUtil.getMaterial("DIAMOND_HORSE_ARMOR", "DIAMOND_BARDING"), true),
|
||||
ARMOR_HORSE("armor", EntityType.HORSE, EnumUtil.getMaterial("IRON_HORSE_ARMOR", "IRON_BARDING"), true),
|
||||
SIAMESE_CAT("siamese", EntityType.OCELOT, Ocelot.Type.SIAMESE_CAT, true),
|
||||
WHITE_CAT("white", EntityType.OCELOT, Ocelot.Type.SIAMESE_CAT, false),
|
||||
RED_CAT("red", EntityType.OCELOT, Ocelot.Type.RED_CAT, true),
|
||||
@ -66,12 +67,12 @@ public enum MobData {
|
||||
BABY_ZOMBIE("baby", EntityType.ZOMBIE.getEntityClass(), Data.BABYZOMBIE, true),
|
||||
ADULT_ZOMBIE("adult", EntityType.ZOMBIE.getEntityClass(), Data.ADULTZOMBIE, true),
|
||||
DIAMOND_SWORD_ZOMBIE("diamondsword", EntityType.ZOMBIE.getEntityClass(), Material.DIAMOND_SWORD, true),
|
||||
GOLD_SWORD_ZOMBIE("goldsword", EntityType.ZOMBIE.getEntityClass(), Material.GOLD_SWORD, true),
|
||||
GOLD_SWORD_ZOMBIE("goldsword", EntityType.ZOMBIE.getEntityClass(), EnumUtil.getMaterial("GOLDEN_SWORD", "GOLD_SWORD"), true),
|
||||
IRON_SWORD_ZOMBIE("ironsword", EntityType.ZOMBIE.getEntityClass(), Material.IRON_SWORD, true),
|
||||
STONE_SWORD_ZOMBIE("stonesword", EntityType.ZOMBIE.getEntityClass(), Material.STONE_SWORD, false),
|
||||
SWORD_ZOMBIE("sword", EntityType.ZOMBIE.getEntityClass(), Material.STONE_SWORD, true),
|
||||
DIAMOND_SWORD_SKELETON("diamondsword", EntityType.SKELETON, Material.DIAMOND_SWORD, true),
|
||||
GOLD_SWORD_SKELETON("goldsword", EntityType.SKELETON, Material.GOLD_SWORD, true),
|
||||
GOLD_SWORD_SKELETON("goldsword", EntityType.SKELETON, EnumUtil.getMaterial("GOLDEN_SWORD", "GOLD_SWORD"), true),
|
||||
IRON_SWORD_SKELETON("ironsword", EntityType.SKELETON, Material.IRON_SWORD, true),
|
||||
STONE_SWORD_SKELETON("stonesword", EntityType.SKELETON, Material.STONE_SWORD, false),
|
||||
SWORD_SKELETON("sword", EntityType.SKELETON, Material.STONE_SWORD, true),
|
||||
@ -95,6 +96,18 @@ public enum MobData {
|
||||
BLUE_PARROT("blue", EntityType.PARROT, Parrot.Variant.BLUE, true),
|
||||
CYAN_PARROT("cyan", EntityType.PARROT, Parrot.Variant.CYAN, true),
|
||||
GRAY_PARROT("gray", EntityType.PARROT, Parrot.Variant.GRAY, true),
|
||||
KOB_TROPICAL_FISH("kob", EntityType.TROPICAL_FISH, TropicalFish.Pattern.KOB, true),
|
||||
SUNSTREAK_TROPICAL_FISH("sunstreak", EntityType.TROPICAL_FISH, TropicalFish.Pattern.SUNSTREAK, true),
|
||||
SNOOPER_TROPICAL_FISH("snooper", EntityType.TROPICAL_FISH, TropicalFish.Pattern.SNOOPER, true),
|
||||
DASHER_TROPICAL_FISH("dasher", EntityType.TROPICAL_FISH, TropicalFish.Pattern.DASHER, true),
|
||||
BRINELY_TROPICAL_FISH("brinely", EntityType.TROPICAL_FISH, TropicalFish.Pattern.BRINELY, true),
|
||||
SPOTTY_TROPICAL_FISH("spotty", EntityType.TROPICAL_FISH, TropicalFish.Pattern.SPOTTY, true),
|
||||
FLOPPER_TROPICAL_FISH("flopper", EntityType.TROPICAL_FISH, TropicalFish.Pattern.FLOPPER, true),
|
||||
STRIPEY_TROPICAL_FISH("stripey", EntityType.TROPICAL_FISH, TropicalFish.Pattern.STRIPEY, true),
|
||||
GLITTER_TROPICAL_FISH("glitter", EntityType.TROPICAL_FISH, TropicalFish.Pattern.GLITTER, true),
|
||||
BLOCKFISH_TROPICAL_FISH("blockfish", EntityType.TROPICAL_FISH, TropicalFish.Pattern.BLOCKFISH, true),
|
||||
BETTY_TROPICAL_FISH("betty", EntityType.TROPICAL_FISH, TropicalFish.Pattern.BETTY, true),
|
||||
CLAYFISH_TROPICAL_FISH("clayfish", EntityType.TROPICAL_FISH, TropicalFish.Pattern.CLAYFISH, true);
|
||||
;
|
||||
|
||||
|
||||
@ -252,6 +265,8 @@ public enum MobData {
|
||||
}
|
||||
} else if (this.value instanceof Parrot.Variant) {
|
||||
((Parrot) spawned).setVariant((Parrot.Variant) this.value);
|
||||
} else if (this.value instanceof TropicalFish.Pattern) {
|
||||
((TropicalFish) spawned).setPattern((TropicalFish.Pattern) this.value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,7 +8,9 @@ import org.bukkit.advancement.AdvancementProgress;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.attribute.AttributeInstance;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.PistonMoveReaction;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.conversations.Conversation;
|
||||
import org.bukkit.conversations.ConversationAbandonedEvent;
|
||||
import org.bukkit.entity.*;
|
||||
@ -25,6 +27,8 @@ import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.scoreboard.Scoreboard;
|
||||
import org.bukkit.util.BoundingBox;
|
||||
import org.bukkit.util.RayTraceResult;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
@ -145,6 +149,10 @@ public class OfflinePlayer implements Player {
|
||||
return -1;
|
||||
}
|
||||
|
||||
public BlockFace getFacing() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean performCommand(String string) {
|
||||
return false;
|
||||
@ -200,24 +208,34 @@ public class OfflinePlayer implements Player {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block getTargetBlock(HashSet<Byte> hs, int i) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block getTargetBlock(Set<Material> mat, int i) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Block> getLastTwoTargetBlocks(HashSet<Byte> hs, int i) {
|
||||
public List<Block> getLastTwoTargetBlocks(Set<Material> mat, int i) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Block> getLastTwoTargetBlocks(Set<Material> mat, int i) {
|
||||
return Collections.emptyList();
|
||||
public Block getTargetBlockExact(int maxDistance) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block getTargetBlockExact(int maxDistance, FluidCollisionMode fluidCollisionMode) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RayTraceResult rayTraceBlocks(double maxDistance) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RayTraceResult rayTraceBlocks(double maxDistance, FluidCollisionMode fluidCollisionMode) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -243,6 +261,15 @@ public class OfflinePlayer implements Player {
|
||||
return server;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPersistent() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPersistent(boolean persistent) {
|
||||
}
|
||||
|
||||
public Vector getMomentum() {
|
||||
return getVelocity();
|
||||
}
|
||||
@ -481,7 +508,8 @@ public class OfflinePlayer implements Player {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendBlockChange(Location lctn, int i, byte b) {
|
||||
public void sendBlockChange(Location loc, BlockData block) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -653,6 +681,31 @@ public class OfflinePlayer implements Player {
|
||||
public void setPlayerListName(String name) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPlayerListHeader() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPlayerListFooter() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlayerListHeader(String header) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlayerListFooter(String footer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlayerListHeaderFooter(String header, String footer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPlayerListName() {
|
||||
return name;
|
||||
@ -734,6 +787,21 @@ public class OfflinePlayer implements Player {
|
||||
public void setBedSpawnLocation(Location lctn, boolean force) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean sleep(Location location, boolean force) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void wakeup(boolean setSpawnLocation) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Location getBedLocation() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playEffect(EntityEffect ee) {
|
||||
}
|
||||
@ -742,10 +810,20 @@ public class OfflinePlayer implements Player {
|
||||
public void hidePlayer(Player player) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hidePlayer(Plugin plugin, Player player) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showPlayer(Player player) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showPlayer(Plugin plugin, Player player) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canSee(Player player) {
|
||||
return false;
|
||||
@ -920,6 +998,26 @@ public class OfflinePlayer implements Player {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean discoverRecipe(NamespacedKey recipe) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int discoverRecipes(Collection<NamespacedKey> recipes) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean undiscoverRecipe(NamespacedKey recipe) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int undiscoverRecipes(Collection<NamespacedKey> recipes) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasLineOfSight(Entity entity) {
|
||||
return false;
|
||||
@ -1195,6 +1293,21 @@ public class OfflinePlayer implements Player {
|
||||
public void setGliding(boolean b) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSwimming() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSwimming(boolean swimming) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRiptiding() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAI(boolean b) {
|
||||
}
|
||||
@ -1412,6 +1525,11 @@ public class OfflinePlayer implements Player {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getClientViewDistance() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLocale() {
|
||||
return null;
|
||||
@ -1459,6 +1577,11 @@ public class OfflinePlayer implements Player {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BoundingBox getBoundingBox() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Entity> getPassengers() {
|
||||
return null;
|
||||
@ -1478,4 +1601,8 @@ public class OfflinePlayer implements Player {
|
||||
public PistonMoveReaction getPistonMoveReaction() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateCommands() {
|
||||
}
|
||||
}
|
||||
|
@ -11,8 +11,8 @@ import java.util.Set;
|
||||
|
||||
|
||||
public class Potions {
|
||||
private static final Map<String, PotionEffectType> POTIONS = new HashMap<String, PotionEffectType>();
|
||||
private static final Map<String, PotionEffectType> ALIASPOTIONS = new HashMap<String, PotionEffectType>();
|
||||
private static final Map<String, PotionEffectType> POTIONS = new HashMap<>();
|
||||
private static final Map<String, PotionEffectType> ALIASPOTIONS = new HashMap<>();
|
||||
|
||||
static {
|
||||
|
||||
|
@ -10,14 +10,13 @@ import com.earth2me.essentials.utils.NumberUtil;
|
||||
|
||||
import net.ess3.api.IEssentials;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.MemoryConfiguration;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.DecimalFormat;
|
||||
@ -37,7 +36,6 @@ public class Settings implements net.ess3.api.ISettings {
|
||||
private final transient EssentialsConf config;
|
||||
private static final Logger logger = Logger.getLogger("Essentials");
|
||||
private final transient IEssentials ess;
|
||||
private boolean metricsEnabled = true;
|
||||
|
||||
public Settings(IEssentials ess) {
|
||||
this.ess = ess;
|
||||
@ -538,19 +536,22 @@ public class Settings implements net.ess3.api.ISettings {
|
||||
defaultEnabledConfirmCommands = _getDefaultEnabledConfirmCommands();
|
||||
isCompassTowardsHomePerm = _isCompassTowardsHomePerm();
|
||||
isAllowWorldInBroadcastworld = _isAllowWorldInBroadcastworld();
|
||||
itemDbType = _getItemDbType();
|
||||
forceEnableRecipe = _isForceEnableRecipe();
|
||||
allowOldIdSigns = _allowOldIdSigns();
|
||||
}
|
||||
|
||||
private List<Integer> itemSpawnBl = new ArrayList<Integer>();
|
||||
private List<Material> itemSpawnBl = new ArrayList<Material>();
|
||||
|
||||
@Override
|
||||
public List<Integer> itemSpawnBlacklist() {
|
||||
public List<Material> itemSpawnBlacklist() {
|
||||
return itemSpawnBl;
|
||||
}
|
||||
|
||||
private List<Integer> _getItemSpawnBlacklist() {
|
||||
final List<Integer> epItemSpwn = new ArrayList<Integer>();
|
||||
private List<Material> _getItemSpawnBlacklist() {
|
||||
final List<Material> epItemSpwn = new ArrayList<>();
|
||||
if (ess.getItemDb() == null) {
|
||||
logger.log(Level.FINE, "Aborting ItemSpawnBL read, itemDB not yet loaded.");
|
||||
logger.log(Level.FINE, "Skipping item spawn blacklist read; item DB not yet loaded.");
|
||||
return epItemSpwn;
|
||||
}
|
||||
for (String itemName : config.getString("item-spawn-blacklist", "").split(",")) {
|
||||
@ -560,9 +561,9 @@ public class Settings implements net.ess3.api.ISettings {
|
||||
}
|
||||
try {
|
||||
final ItemStack iStack = ess.getItemDb().get(itemName);
|
||||
epItemSpwn.add(iStack.getTypeId());
|
||||
epItemSpwn.add(iStack.getType());
|
||||
} catch (Exception ex) {
|
||||
logger.log(Level.SEVERE, tl("unknownItemInList", itemName, "item-spawn-blacklist"));
|
||||
logger.log(Level.SEVERE, tl("unknownItemInList", itemName, "item-spawn-blacklist"), ex);
|
||||
}
|
||||
}
|
||||
return epItemSpwn;
|
||||
@ -648,10 +649,17 @@ public class Settings implements net.ess3.api.ISettings {
|
||||
|
||||
// #easteregg
|
||||
@Override
|
||||
@Deprecated
|
||||
public boolean isTradeInStacks(int id) {
|
||||
return config.getBoolean("trade-in-stacks-" + id, false);
|
||||
}
|
||||
|
||||
// #easteregg
|
||||
@Override
|
||||
public boolean isTradeInStacks(Material type) {
|
||||
return config.getBoolean("trade-in-stacks." + type.toString().toLowerCase().replace("_", ""), false);
|
||||
}
|
||||
|
||||
// #easteregg
|
||||
private boolean economyDisabled = false;
|
||||
|
||||
@ -670,8 +678,8 @@ public class Settings implements net.ess3.api.ISettings {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Integer> getProtectList(final String configName) {
|
||||
final List<Integer> list = new ArrayList<Integer>();
|
||||
public List<Material> getProtectList(final String configName) {
|
||||
final List<Material> list = new ArrayList<>();
|
||||
for (String itemName : config.getString(configName, "").split(",")) {
|
||||
itemName = itemName.trim();
|
||||
if (itemName.isEmpty()) {
|
||||
@ -680,7 +688,7 @@ public class Settings implements net.ess3.api.ISettings {
|
||||
ItemStack itemStack;
|
||||
try {
|
||||
itemStack = ess.getItemDb().get(itemName);
|
||||
list.add(itemStack.getTypeId());
|
||||
list.add(itemStack.getType());
|
||||
} catch (Exception ex) {
|
||||
logger.log(Level.SEVERE, tl("unknownItemInList", itemName, configName));
|
||||
}
|
||||
@ -1096,6 +1104,11 @@ public class Settings implements net.ess3.api.ISettings {
|
||||
return config.getBoolean("ignore-colors-in-max-nick-length", false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hideDisplayNameInVanish() {
|
||||
return config.getBoolean("hide-displayname-in-vanish", false);
|
||||
}
|
||||
|
||||
private boolean allowSilentJoin;
|
||||
|
||||
public boolean _allowSilentJoinQuit() {
|
||||
@ -1344,24 +1357,8 @@ public class Settings implements net.ess3.api.ISettings {
|
||||
DecimalFormat currencyFormat = new DecimalFormat(currencyFormatString, decimalFormatSymbols);
|
||||
currencyFormat.setRoundingMode(RoundingMode.FLOOR);
|
||||
|
||||
// Updates NumberUtil#PRETTY_FORMAT field so that all of Essentials
|
||||
// can follow a single format.
|
||||
try {
|
||||
Field field = NumberUtil.class.getDeclaredField("PRETTY_FORMAT");
|
||||
field.setAccessible(true);
|
||||
Field modifiersField = Field.class.getDeclaredField("modifiers");
|
||||
modifiersField.setAccessible(true);
|
||||
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
|
||||
field.set(null, currencyFormat);
|
||||
modifiersField.setAccessible(false);
|
||||
field.setAccessible(false);
|
||||
} catch (NoSuchFieldException | IllegalAccessException e) {
|
||||
ess.getLogger().severe("Failed to apply custom currency format: " + e.getMessage());
|
||||
if (isDebug()) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// Updates NumberUtil#PRETTY_FORMAT field so that all of Essentials can follow a single format.
|
||||
NumberUtil.internalSetPrettyFormat(currencyFormat);
|
||||
return currencyFormat;
|
||||
}
|
||||
|
||||
@ -1471,4 +1468,37 @@ public class Settings implements net.ess3.api.ISettings {
|
||||
public boolean isAllowWorldInBroadcastworld() {
|
||||
return isAllowWorldInBroadcastworld;
|
||||
}
|
||||
|
||||
private String itemDbType; // #EasterEgg - admins can manually switch items provider if they want
|
||||
|
||||
private String _getItemDbType() {
|
||||
return config.getString("item-db-type", "auto");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getItemDbType() {
|
||||
return itemDbType;
|
||||
}
|
||||
|
||||
private boolean forceEnableRecipe; // https://github.com/EssentialsX/Essentials/issues/1397
|
||||
|
||||
private boolean _isForceEnableRecipe() {
|
||||
return config.getBoolean("force-enable-recipe", false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isForceEnableRecipe() {
|
||||
return forceEnableRecipe;
|
||||
}
|
||||
|
||||
private boolean allowOldIdSigns;
|
||||
|
||||
private boolean _allowOldIdSigns() {
|
||||
return config.getBoolean("allow-old-id-signs", false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowOldIdSigns() {
|
||||
return allowOldIdSigns;
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.earth2me.essentials;
|
||||
|
||||
import com.earth2me.essentials.Mob.MobException;
|
||||
import com.earth2me.essentials.craftbukkit.InventoryWorkaround;
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
import com.earth2me.essentials.utils.LocationUtil;
|
||||
import com.earth2me.essentials.utils.StringUtil;
|
||||
import net.ess3.api.IEssentials;
|
||||
@ -19,6 +20,13 @@ import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
|
||||
public class SpawnMob {
|
||||
|
||||
private static final Material GOLDEN_HELMET = EnumUtil.getMaterial("GOLDEN_HELMET", "GOLD_HELMET");
|
||||
private static final Material GOLDEN_CHESTPLATE = EnumUtil.getMaterial("GOLDEN_CHESTPLATE", "GOLD_CHESTPLATE");
|
||||
private static final Material GOLDEN_LEGGINGS = EnumUtil.getMaterial("GOLDEN_LEGGINGS", "GOLD_LEGGINGS");
|
||||
private static final Material GOLDEN_BOOTS = EnumUtil.getMaterial("GOLDEN_BOOTS", "GOLD_BOOTS");
|
||||
private static final Material GOLDEN_SWORD = EnumUtil.getMaterial("GOLDEN_SWORD", "GOLD_SWORD");
|
||||
|
||||
public static String mobList(final User user) {
|
||||
final Set<String> mobList = Mob.getMobList();
|
||||
final Set<String> availableList = new HashSet<String>();
|
||||
@ -191,10 +199,10 @@ public class SpawnMob {
|
||||
invent.setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE, 1));
|
||||
invent.setHelmet(new ItemStack(Material.DIAMOND_HELMET, 1));
|
||||
} else if (inputData.contains("gold")) {
|
||||
invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1));
|
||||
invent.setLeggings(new ItemStack(Material.GOLD_LEGGINGS, 1));
|
||||
invent.setChestplate(new ItemStack(Material.GOLD_CHESTPLATE, 1));
|
||||
invent.setHelmet(new ItemStack(Material.GOLD_HELMET, 1));
|
||||
invent.setBoots(new ItemStack(GOLDEN_BOOTS, 1));
|
||||
invent.setLeggings(new ItemStack(GOLDEN_LEGGINGS, 1));
|
||||
invent.setChestplate(new ItemStack(GOLDEN_CHESTPLATE, 1));
|
||||
invent.setHelmet(new ItemStack(GOLDEN_HELMET, 1));
|
||||
} else if (inputData.contains("leather")) {
|
||||
invent.setBoots(new ItemStack(Material.LEATHER_BOOTS, 1));
|
||||
invent.setLeggings(new ItemStack(Material.LEATHER_LEGGINGS, 1));
|
||||
@ -228,7 +236,7 @@ public class SpawnMob {
|
||||
InventoryWorkaround.setItemInMainHand(invent, new ItemStack(Material.BOW, 1));
|
||||
InventoryWorkaround.setItemInMainHandDropChance(invent, 0.1f);
|
||||
|
||||
invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1));
|
||||
invent.setBoots(new ItemStack(GOLDEN_BOOTS, 1));
|
||||
invent.setBootsDropChance(0.0f);
|
||||
}
|
||||
|
||||
@ -237,10 +245,10 @@ public class SpawnMob {
|
||||
setVillager(zombie, false);
|
||||
|
||||
final EntityEquipment invent = zombie.getEquipment();
|
||||
InventoryWorkaround.setItemInMainHand(invent, new ItemStack(Material.GOLD_SWORD, 1));
|
||||
InventoryWorkaround.setItemInMainHand(invent, new ItemStack(GOLDEN_SWORD, 1));
|
||||
InventoryWorkaround.setItemInMainHandDropChance(invent, 0.1f);
|
||||
|
||||
invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1));
|
||||
invent.setBoots(new ItemStack(GOLDEN_BOOTS, 1));
|
||||
invent.setBootsDropChance(0.0f);
|
||||
}
|
||||
|
||||
@ -249,7 +257,7 @@ public class SpawnMob {
|
||||
setVillager(zombie, false);
|
||||
|
||||
final EntityEquipment invent = zombie.getEquipment();
|
||||
invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1));
|
||||
invent.setBoots(new ItemStack(GOLDEN_BOOTS, 1));
|
||||
invent.setBootsDropChance(0.0f);
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,8 @@ import com.earth2me.essentials.utils.DateUtil;
|
||||
import com.earth2me.essentials.utils.LocationUtil;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import net.ess3.api.events.UserWarpEvent;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||
@ -247,6 +249,13 @@ public class Teleport implements net.ess3.api.ITeleport {
|
||||
//The warp function is a wrapper used to teleportPlayer a player to a /warp
|
||||
@Override
|
||||
public void warp(IUser teleportee, String warp, Trade chargeFor, TeleportCause cause) throws Exception {
|
||||
UserWarpEvent event = new UserWarpEvent(teleportee, warp, chargeFor);
|
||||
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if(event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
warp = event.getWarp();
|
||||
Location loc = ess.getWarps().getWarp(warp);
|
||||
teleportee.sendMessage(tl("warpingTo", warp, loc.getWorld().getName(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()));
|
||||
if (!teleportee.equals(teleportOwner)) {
|
||||
|
@ -8,6 +8,7 @@ import com.earth2me.essentials.register.payment.Methods;
|
||||
import com.earth2me.essentials.utils.DateUtil;
|
||||
import com.earth2me.essentials.utils.FormatUtil;
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import com.earth2me.essentials.utils.VersionUtil;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.MaxMoneyException;
|
||||
import net.ess3.api.events.AfkStatusChangeEvent;
|
||||
@ -18,6 +19,7 @@ import net.ess3.nms.refl.ReflUtil;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -26,12 +28,7 @@ import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Calendar;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.WeakHashMap;
|
||||
import java.util.*;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@ -222,8 +219,19 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean canSpawnItem(final int itemId) {
|
||||
return !ess.getSettings().itemSpawnBlacklist().contains(itemId);
|
||||
public Boolean canSpawnItem(final Material material) {
|
||||
if (ess.getSettings().permissionBasedItemSpawn()) {
|
||||
final String name = material.toString().toLowerCase(Locale.ENGLISH).replace("_", "");
|
||||
|
||||
if (isAuthorized("essentials.itemspawn.item-all") || isAuthorized("essentials.itemspawn.item-" + name)) return true;
|
||||
|
||||
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) {
|
||||
final int id = material.getId();
|
||||
if (isAuthorized("essentials.itemspawn.item-" + id)) return true;
|
||||
}
|
||||
}
|
||||
|
||||
return isAuthorized("essentials.itemspawn.exempt") || !ess.getSettings().itemSpawnBlacklist().contains(material);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -359,7 +367,7 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return super.getBase().getDisplayName() == null ? super.getBase().getName() : super.getBase().getDisplayName();
|
||||
return super.getBase().getDisplayName() == null || (ess.getSettings().hideDisplayNameInVanish() && isHidden()) ? super.getBase().getName() : super.getBase().getDisplayName();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -871,7 +879,7 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
|
||||
* Returns the {@link ItemStack} in the main hand or off-hand. If the main hand is empty then the offhand item is returned - also nullable.
|
||||
*/
|
||||
public ItemStack getItemInHand() {
|
||||
if (ReflUtil.getNmsVersionObject().isLowerThan(ReflUtil.V1_9_R1)) {
|
||||
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_9_R01)) {
|
||||
return getBase().getInventory().getItemInHand();
|
||||
} else {
|
||||
PlayerInventory inventory = getBase().getInventory();
|
||||
|
@ -7,6 +7,7 @@ import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.InvalidWorldException;
|
||||
import net.ess3.api.MaxMoneyException;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -231,26 +232,35 @@ public abstract class UserData extends PlayerExtension implements IConf {
|
||||
config.save();
|
||||
}
|
||||
|
||||
private List<Integer> unlimited;
|
||||
private List<Material> unlimited;
|
||||
|
||||
private List<Integer> _getUnlimited() {
|
||||
return config.getIntegerList("unlimited");
|
||||
private List<Material> _getUnlimited() {
|
||||
List<Material> retlist = new ArrayList<>();
|
||||
List<String> configList = config.getStringList("unlimited");
|
||||
for(String s : configList) {
|
||||
Material mat = Material.matchMaterial(s);
|
||||
if(mat != null) {
|
||||
retlist.add(mat);
|
||||
}
|
||||
}
|
||||
|
||||
return retlist;
|
||||
}
|
||||
|
||||
public List<Integer> getUnlimited() {
|
||||
public List<Material> getUnlimited() {
|
||||
return unlimited;
|
||||
}
|
||||
|
||||
public boolean hasUnlimited(ItemStack stack) {
|
||||
return unlimited.contains(stack.getTypeId());
|
||||
return unlimited.contains(stack.getType());
|
||||
}
|
||||
|
||||
public void setUnlimited(ItemStack stack, boolean state) {
|
||||
if (unlimited.contains(stack.getTypeId())) {
|
||||
unlimited.remove(Integer.valueOf(stack.getTypeId()));
|
||||
if (unlimited.contains(stack.getType())) {
|
||||
unlimited.remove(stack.getType());
|
||||
}
|
||||
if (state) {
|
||||
unlimited.add(stack.getTypeId());
|
||||
unlimited.add(stack.getType());
|
||||
}
|
||||
config.setProperty("unlimited", unlimited);
|
||||
config.save();
|
||||
@ -262,7 +272,7 @@ public abstract class UserData extends PlayerExtension implements IConf {
|
||||
if (config.isConfigurationSection("powertools")) {
|
||||
return config.getConfigurationSection("powertools").getValues(false);
|
||||
}
|
||||
return new HashMap<String, Object>();
|
||||
return new HashMap<>();
|
||||
}
|
||||
|
||||
public void clearAllPowertools() {
|
||||
@ -273,19 +283,19 @@ public abstract class UserData extends PlayerExtension implements IConf {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<String> getPowertool(ItemStack stack) {
|
||||
return (List<String>) powertools.get("" + stack.getTypeId());
|
||||
return (List<String>) powertools.get(stack.getType().name().toLowerCase(Locale.ENGLISH));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<String> getPowertool(int id) {
|
||||
return (List<String>) powertools.get("" + id);
|
||||
public List<String> getPowertool(Material material) {
|
||||
return (List<String>) powertools.get(material.name().toLowerCase(Locale.ENGLISH));
|
||||
}
|
||||
|
||||
public void setPowertool(ItemStack stack, List<String> commandList) {
|
||||
if (commandList == null || commandList.isEmpty()) {
|
||||
powertools.remove("" + stack.getTypeId());
|
||||
powertools.remove(stack.getType().name().toLowerCase(Locale.ENGLISH));
|
||||
} else {
|
||||
powertools.put("" + stack.getTypeId(), commandList);
|
||||
powertools.put(stack.getType().name().toLowerCase(Locale.ENGLISH), commandList);
|
||||
}
|
||||
config.setProperty("powertools", powertools);
|
||||
config.save();
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.earth2me.essentials;
|
||||
|
||||
import com.earth2me.essentials.commands.NotEnoughArgumentsException;
|
||||
import com.earth2me.essentials.utils.VersionUtil;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -21,57 +22,62 @@ public class Worth implements IConf {
|
||||
config.load();
|
||||
}
|
||||
|
||||
public BigDecimal getPrice(ItemStack itemStack) {
|
||||
String itemname = itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
|
||||
/**
|
||||
* Get the value of an item stack from the config.
|
||||
*
|
||||
* @param ess The Essentials instance.
|
||||
* @param itemStack The item stack to look up in the config.
|
||||
* @return The price from the config.
|
||||
*/
|
||||
public BigDecimal getPrice(IEssentials ess, ItemStack itemStack) {
|
||||
BigDecimal result;
|
||||
|
||||
//First check for matches with item name
|
||||
String itemname = itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
|
||||
|
||||
// Check for matches with data value from stack
|
||||
// Note that we always default to BigDecimal.ONE.negate(), equivalent to -1
|
||||
result = config.getBigDecimal("worth." + itemname + "." + itemStack.getDurability(), BigDecimal.ONE.negate());
|
||||
|
||||
// Check for matches with data value 0
|
||||
if (result.signum() < 0) {
|
||||
final ConfigurationSection itemNameMatch = config.getConfigurationSection("worth." + itemname);
|
||||
if (itemNameMatch != null && itemNameMatch.getKeys(false).size() == 1) {
|
||||
result = config.getBigDecimal("worth." + itemname + ".0", BigDecimal.ONE.negate());
|
||||
}
|
||||
}
|
||||
|
||||
// Check for matches with data value wildcard
|
||||
if (result.signum() < 0) {
|
||||
result = config.getBigDecimal("worth." + itemname + ".*", BigDecimal.ONE.negate());
|
||||
}
|
||||
|
||||
// Check for matches with item name alone
|
||||
if (result.signum() < 0) {
|
||||
result = config.getBigDecimal("worth." + itemname, BigDecimal.ONE.negate());
|
||||
}
|
||||
|
||||
//Now we should check for item ID
|
||||
if (result.signum() < 0) {
|
||||
result = config.getBigDecimal("worth." + itemStack.getTypeId() + "." + itemStack.getDurability(), BigDecimal.ONE.negate());
|
||||
}
|
||||
if (result.signum() < 0) {
|
||||
final ConfigurationSection itemNumberMatch = config.getConfigurationSection("worth." + itemStack.getTypeId());
|
||||
if (itemNumberMatch != null && itemNumberMatch.getKeys(false).size() == 1) {
|
||||
result = config.getBigDecimal("worth." + itemStack.getTypeId() + ".0", BigDecimal.ONE.negate());
|
||||
}
|
||||
}
|
||||
if (result.signum() < 0) {
|
||||
result = config.getBigDecimal("worth." + itemStack.getTypeId() + ".*", BigDecimal.ONE.negate());
|
||||
}
|
||||
if (result.signum() < 0) {
|
||||
result = config.getBigDecimal("worth." + itemStack.getTypeId(), BigDecimal.ONE.negate());
|
||||
}
|
||||
|
||||
//This is to match the old worth syntax
|
||||
if (result.signum() < 0) {
|
||||
result = config.getBigDecimal("worth-" + itemStack.getTypeId(), BigDecimal.ONE.negate());
|
||||
}
|
||||
if (result.signum() < 0) {
|
||||
return null;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the amount of items to be sold from a player's inventory.
|
||||
*
|
||||
* @param ess The Essentials instance.
|
||||
* @param user The user attempting to sell the item.
|
||||
* @param is A stack of the item to search the inventory for.
|
||||
* @param args The amount to try to sell.
|
||||
* @param isBulkSell Whether or not to try and bulk sell all items.
|
||||
* @return The amount of items to sell from the player's inventory.
|
||||
* @throws Exception Thrown if trying to sell air or an invalid amount.
|
||||
*/
|
||||
public int getAmount(IEssentials ess, User user, ItemStack is, String[] args, boolean isBulkSell) throws Exception {
|
||||
if (is == null || is.getType() == Material.AIR) {
|
||||
throw new Exception(tl("itemSellAir"));
|
||||
}
|
||||
int id = is.getTypeId();
|
||||
|
||||
int amount = 0;
|
||||
|
||||
if (args.length > 1) {
|
||||
@ -86,7 +92,7 @@ public class Worth implements IConf {
|
||||
}
|
||||
|
||||
boolean stack = args.length > 1 && args[1].endsWith("s");
|
||||
boolean requireStack = ess.getSettings().isTradeInStacks(id);
|
||||
boolean requireStack = ess.getSettings().isTradeInStacks(is.getType());
|
||||
|
||||
if (requireStack && !stack) {
|
||||
throw new Exception(tl("itemMustBeStacked"));
|
||||
@ -123,14 +129,23 @@ public class Worth implements IConf {
|
||||
return amount;
|
||||
}
|
||||
|
||||
public void setPrice(ItemStack itemStack, double price) {
|
||||
if (itemStack.getType().getData() == null) {
|
||||
config.setProperty("worth." + itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""), price);
|
||||
} else {
|
||||
/**
|
||||
* Set the price of an item and save it to the config.
|
||||
*
|
||||
* @param ess The Essentials instance.
|
||||
* @param itemStack A stack of the item to save.
|
||||
* @param price The new price of the item.
|
||||
*/
|
||||
public void setPrice(IEssentials ess, ItemStack itemStack, double price) {
|
||||
String path = "worth." + itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
|
||||
|
||||
// Spigot 1.13+ throws an exception if a 1.13+ plugin even *attempts* to do set data.
|
||||
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01) && itemStack.getType().getData() == null) {
|
||||
// Bukkit-bug: getDurability still contains the correct value, while getData().getData() is 0.
|
||||
config.setProperty("worth." + itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "") + "." + itemStack.getDurability(), price);
|
||||
path = path + "." + itemStack.getDurability();
|
||||
}
|
||||
config.removeProperty("worth-" + itemStack.getTypeId());
|
||||
|
||||
config.setProperty(path, price);
|
||||
config.save();
|
||||
}
|
||||
|
||||
|
@ -185,7 +185,7 @@ public class Economy {
|
||||
* Divides the balance of a user by a value
|
||||
*
|
||||
* @param name Name of the user
|
||||
* @param value The balance is divided by this value
|
||||
* @param amount The balance is divided by this value
|
||||
*
|
||||
* @throws UserDoesNotExistException If a user by that name does not exists
|
||||
* @throws NoLoanPermittedException If the user is not allowed to have a negative balance
|
||||
@ -209,7 +209,7 @@ public class Economy {
|
||||
* Multiplies the balance of a user by a value
|
||||
*
|
||||
* @param name Name of the user
|
||||
* @param value The balance is multiplied by this value
|
||||
* @param amount The balance is multiplied by this value
|
||||
*
|
||||
* @throws UserDoesNotExistException If a user by that name does not exists
|
||||
* @throws NoLoanPermittedException If the user is not allowed to have a negative balance
|
||||
|
@ -1,24 +1,156 @@
|
||||
package com.earth2me.essentials.api;
|
||||
|
||||
import com.earth2me.essentials.CommandSource;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.utils.MaterialUtil;
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import com.earth2me.essentials.utils.StringUtil;
|
||||
import net.ess3.api.IEssentials;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
|
||||
public interface IItemDb {
|
||||
ItemStack get(final String name, final int quantity) throws Exception;
|
||||
|
||||
/**
|
||||
* Create a stack from the given name with the given quantity.
|
||||
*
|
||||
* @param name Item name to look up in the database
|
||||
* @param quantity Quantity of the item stack
|
||||
* @return The requested item stack
|
||||
* @throws Exception if the item stack cannot be created
|
||||
*/
|
||||
default ItemStack get(final String name, final int quantity) throws Exception {
|
||||
final ItemStack stack = get(name.toLowerCase(Locale.ENGLISH));
|
||||
stack.setAmount(quantity);
|
||||
return stack;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a stack from the given name with the maximum stack size for that material.
|
||||
*
|
||||
* @param name Item name to look up in the database
|
||||
* @return The requested item stack with the maximum stack size
|
||||
* @throws Exception if the item stack cannot be created
|
||||
*/
|
||||
ItemStack get(final String name) throws Exception;
|
||||
|
||||
String names(ItemStack item);
|
||||
/**
|
||||
* Get a comma-separated string list of up to 15 aliases for the given stack.
|
||||
*
|
||||
* @param item Item stack whose names to find
|
||||
* @return Comma-separated list of up to 15 item names
|
||||
*/
|
||||
default String names(ItemStack item) {
|
||||
List<String> nameList = nameList(item);
|
||||
|
||||
if (nameList.size() > 15) {
|
||||
nameList = nameList.subList(0, 14);
|
||||
}
|
||||
return StringUtil.joinList(", ", nameList);
|
||||
};
|
||||
|
||||
/**
|
||||
* Get a List of all aliases for the given item stack.
|
||||
*
|
||||
* @param item Item stack whose names to find
|
||||
* @return List of all names
|
||||
*/
|
||||
List<String> nameList(ItemStack item);
|
||||
|
||||
/**
|
||||
* Get the primary name for the given item stack.
|
||||
*
|
||||
* @param item Item stack whose name to find
|
||||
* @return Primary name of the item
|
||||
*/
|
||||
String name(ItemStack item);
|
||||
|
||||
/**
|
||||
* Get all stacks in a given User's inventory that matches the given arguments.
|
||||
*
|
||||
* @param user The user with the player inventory to search
|
||||
* @param args Either an item name, or one of the following:
|
||||
* hand (default), inventory/invent/all, blocks
|
||||
* @return A List of all matching ItemStacks
|
||||
* @throws Exception if the given args are invalid or no blocks are found
|
||||
*/
|
||||
List<ItemStack> getMatching(User user, String[] args) throws Exception;
|
||||
|
||||
/**
|
||||
* Serialise an ItemStack into a format that can be decoded by
|
||||
* {@link #get(String) get} and
|
||||
* {@link com.earth2me.essentials.MetaItemStack#parseStringMeta(CommandSource, boolean, String[], int, IEssentials)} MetaItemStack#parseStringMeta}.
|
||||
* Used to encode items for kits.
|
||||
*
|
||||
* @param is Stack to serialise
|
||||
* @return Serialised stack
|
||||
*/
|
||||
String serialize(ItemStack is);
|
||||
|
||||
/**
|
||||
* Return names recognised by the database, intended for tab-completion.
|
||||
*
|
||||
* @return Collection of all item names
|
||||
*/
|
||||
Collection<String> listNames();
|
||||
|
||||
/**
|
||||
* Get the material matching the given legacy ID. Used for conversion from item IDs to
|
||||
* modern names.
|
||||
*
|
||||
* @param id Legacy ID of material to find
|
||||
* @return Updated material
|
||||
*/
|
||||
@Deprecated
|
||||
default Material getFromLegacyId(int id) {
|
||||
return getFromLegacy(id, (byte) 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the legacy ID for the given material.
|
||||
*
|
||||
* @param material Material to look up
|
||||
* @return Legacy ID of given material
|
||||
* @throws Exception if the ID cannot be looked up
|
||||
* @deprecated Item IDs are no longer supported.
|
||||
*/
|
||||
@Deprecated
|
||||
int getLegacyId(Material material) throws Exception;
|
||||
|
||||
/**
|
||||
* Convert colon syntax (eg. "13", "1:5") legacy IDs to Material. Used for conversion from
|
||||
* item IDs to modern names.
|
||||
*
|
||||
* @param item Legacy ID in colon syntax.
|
||||
* @return
|
||||
*/
|
||||
default Material getFromLegacy(String item) {
|
||||
final String[] split = item.split(":");
|
||||
|
||||
final int id = Integer.parseInt(split[0]);
|
||||
byte damage = 0;
|
||||
|
||||
if (split.length > 1 && NumberUtil.isInt(split[1])) {
|
||||
damage = Byte.parseByte(split[1]);
|
||||
}
|
||||
|
||||
return getFromLegacy(id, damage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert legacy ID and damage value to Material. Used for conversion from item IDs to
|
||||
* modern names.
|
||||
*
|
||||
* @param id Legacy ID
|
||||
* @param damage Damage value
|
||||
* @return Material
|
||||
*/
|
||||
default Material getFromLegacy(final int id, final byte damage) {
|
||||
return MaterialUtil.convertFromLegacy(id, damage);
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,8 @@ public class Commandbigtree extends EssentialsCommand {
|
||||
tree = TreeType.BIG_TREE;
|
||||
} else if (args.length > 0 && args[0].equalsIgnoreCase("jungle")) {
|
||||
tree = TreeType.JUNGLE;
|
||||
} else if (args.length > 0 && args[0].equalsIgnoreCase("darkoak")) {
|
||||
tree = TreeType.DARK_OAK;
|
||||
} else {
|
||||
throw new NotEnoughArgumentsException();
|
||||
}
|
||||
@ -44,7 +46,7 @@ public class Commandbigtree extends EssentialsCommand {
|
||||
@Override
|
||||
protected List<String> getTabCompleteOptions(Server server, User user, String commandLabel, String[] args) {
|
||||
if (args.length == 1) {
|
||||
return Lists.newArrayList("redwood", "tree", "jungle");
|
||||
return Lists.newArrayList("redwood", "tree", "jungle", "darkoak");
|
||||
} else {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.earth2me.essentials.commands;
|
||||
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.craftbukkit.InventoryWorkaround;
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
@ -15,6 +16,9 @@ import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
|
||||
public class Commandbook extends EssentialsCommand {
|
||||
|
||||
private static final Material WRITABLE_BOOK = EnumUtil.getMaterial("WRITABLE_BOOK", "BOOK_AND_QUILL");
|
||||
|
||||
public Commandbook() {
|
||||
super("book");
|
||||
}
|
||||
@ -44,7 +48,7 @@ public class Commandbook extends EssentialsCommand {
|
||||
}
|
||||
} else {
|
||||
if (isAuthor(bmeta, player) || user.isAuthorized("essentials.book.others")) {
|
||||
ItemStack newItem = new ItemStack(Material.BOOK_AND_QUILL, item.getAmount());
|
||||
ItemStack newItem = new ItemStack(WRITABLE_BOOK, item.getAmount());
|
||||
newItem.setItemMeta(bmeta);
|
||||
InventoryWorkaround.setItemInMainHand(user.getBase(), newItem);
|
||||
user.sendMessage(tl("editBookContents"));
|
||||
@ -52,7 +56,7 @@ public class Commandbook extends EssentialsCommand {
|
||||
throw new Exception(tl("denyBookEdit"));
|
||||
}
|
||||
}
|
||||
} else if (item.getType() == Material.BOOK_AND_QUILL) {
|
||||
} else if (item.getType() == WRITABLE_BOOK) {
|
||||
BookMeta bmeta = (BookMeta) item.getItemMeta();
|
||||
if (!user.isAuthorized("essentials.book.author")) {
|
||||
bmeta.setAuthor(player);
|
||||
|
@ -8,15 +8,12 @@ import com.earth2me.essentials.craftbukkit.InventoryWorkaround;
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import com.earth2me.essentials.utils.StringUtil;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
public class Commandclearinventory extends EssentialsCommand {
|
||||
@ -87,6 +84,7 @@ public class Commandclearinventory extends EssentialsCommand {
|
||||
short data = -1;
|
||||
int type = -1;
|
||||
int amount = -1;
|
||||
final Set<Material> mats = new HashSet<>();
|
||||
|
||||
if (args.length > (offset + 1) && NumberUtil.isInt(args[(offset + 1)])) {
|
||||
amount = Integer.parseInt(args[(offset + 1)]);
|
||||
@ -95,15 +93,15 @@ public class Commandclearinventory extends EssentialsCommand {
|
||||
if (args[offset].equalsIgnoreCase("**")) {
|
||||
type = -2;
|
||||
} else if (!args[offset].equalsIgnoreCase("*")) {
|
||||
final String[] split = args[offset].split(":");
|
||||
final ItemStack item = ess.getItemDb().get(split[0]);
|
||||
type = item.getTypeId();
|
||||
final String[] split = args[offset].split(",");
|
||||
|
||||
if (split.length > 1 && NumberUtil.isInt(split[1])) {
|
||||
data = Short.parseShort(split[1]);
|
||||
} else {
|
||||
data = item.getDurability();
|
||||
for (String name : split) {
|
||||
try {
|
||||
mats.add(ess.getItemDb().get(name).getType());
|
||||
} catch (Exception ignored) {}
|
||||
}
|
||||
|
||||
type = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -123,32 +121,27 @@ public class Commandclearinventory extends EssentialsCommand {
|
||||
InventoryWorkaround.setItemInOffHand(player, null);
|
||||
player.getInventory().setArmorContents(null);
|
||||
} else {
|
||||
if (data == -1) // data -1 means that all subtypes will be cleared
|
||||
{
|
||||
ItemStack stack = new ItemStack(type);
|
||||
if (showExtended) {
|
||||
sender.sendMessage(tl("inventoryClearingAllStack", stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName()));
|
||||
}
|
||||
player.getInventory().clear(type, data);
|
||||
} else if (amount == -1) // amount -1 means all items will be cleared
|
||||
{
|
||||
ItemStack stack = new ItemStack(type, BASE_AMOUNT, data);
|
||||
ItemStack removedStack = player.getInventory().removeItem(stack).get(0);
|
||||
final int removedAmount = (BASE_AMOUNT - removedStack.getAmount());
|
||||
if (removedAmount > 0 || showExtended) {
|
||||
sender.sendMessage(tl("inventoryClearingStack", removedAmount, stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName()));
|
||||
}
|
||||
} else {
|
||||
if (amount < 0) {
|
||||
amount = 1;
|
||||
}
|
||||
ItemStack stack = new ItemStack(type, amount, data);
|
||||
if (player.getInventory().containsAtLeast(stack, amount)) {
|
||||
sender.sendMessage(tl("inventoryClearingStack", amount, stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName()));
|
||||
player.getInventory().removeItem(stack);
|
||||
for (Material mat : mats) {
|
||||
if (amount == -1) // amount -1 means all items will be cleared
|
||||
{
|
||||
ItemStack stack = new ItemStack(mat, BASE_AMOUNT, data);
|
||||
ItemStack removedStack = player.getInventory().removeItem(stack).get(0);
|
||||
final int removedAmount = (BASE_AMOUNT - removedStack.getAmount());
|
||||
if (removedAmount > 0 || showExtended) {
|
||||
sender.sendMessage(tl("inventoryClearingStack", removedAmount, stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName()));
|
||||
}
|
||||
} else {
|
||||
if (showExtended) {
|
||||
sender.sendMessage(tl("inventoryClearFail", player.getDisplayName(), amount, stack.getType().toString().toLowerCase(Locale.ENGLISH)));
|
||||
if (amount < 0) {
|
||||
amount = 1;
|
||||
}
|
||||
ItemStack stack = new ItemStack(mat, amount);
|
||||
if (player.getInventory().containsAtLeast(stack, amount)) {
|
||||
sender.sendMessage(tl("inventoryClearingStack", amount, stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName()));
|
||||
player.getInventory().removeItem(stack);
|
||||
} else {
|
||||
if (showExtended) {
|
||||
sender.sendMessage(tl("inventoryClearFail", player.getDisplayName(), amount, stack.getType().toString().toLowerCase(Locale.ENGLISH)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ public class Commandenchant extends EssentialsCommand {
|
||||
throw new NotEnoughArgumentsException(tl("enchantments", StringUtil.joinList(enchantmentslist.toArray())));
|
||||
}
|
||||
|
||||
int level = -1;
|
||||
int level = 1;
|
||||
if (args.length > 1) {
|
||||
try {
|
||||
level = Integer.parseInt(args[1]);
|
||||
|
@ -4,10 +4,7 @@ import com.earth2me.essentials.CommandSource;
|
||||
import com.earth2me.essentials.EssentialsUpgrade;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.UserMap;
|
||||
import com.earth2me.essentials.metrics.Metrics;
|
||||
import com.earth2me.essentials.utils.DateUtil;
|
||||
import com.earth2me.essentials.utils.FloatUtil;
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import com.earth2me.essentials.utils.*;
|
||||
import com.google.common.base.Charsets;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.bukkit.Material;
|
||||
@ -19,13 +16,15 @@ import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.PluginDescriptionFile;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
// This command has 4 undocumented behaviours #EasterEgg
|
||||
public class Commandessentials extends EssentialsCommand {
|
||||
|
||||
private final Sound NOTE_HARP = EnumUtil.valueOf(Sound.class, "BLOCK_NOTE_HARP", "NOTE_PIANO");
|
||||
|
||||
public Commandessentials() {
|
||||
super("essentials");
|
||||
}
|
||||
@ -36,7 +35,22 @@ public class Commandessentials extends EssentialsCommand {
|
||||
private final List<String> versionPlugins = Arrays.asList(
|
||||
"Vault",
|
||||
"LuckPerms",
|
||||
"PermissionsEx"
|
||||
"PermissionsEx",
|
||||
"GroupManager"
|
||||
);
|
||||
|
||||
private final List<String> officialPlugins = Arrays.asList(
|
||||
"EssentialsAntiBuild",
|
||||
"EssentialsChat",
|
||||
"EssentialsGeoIP",
|
||||
"EssentialsProtect",
|
||||
"EssentialsSpawn",
|
||||
"EssentialsXMPP"
|
||||
);
|
||||
|
||||
private final List<String> warnPlugins = Arrays.asList(
|
||||
"PermissionsEx",
|
||||
"GroupManager"
|
||||
);
|
||||
|
||||
@Override
|
||||
@ -51,8 +65,6 @@ public class Commandessentials extends EssentialsCommand {
|
||||
run_moo(server, sender, commandLabel, args);
|
||||
} else if (args[0].equalsIgnoreCase("reset")) {
|
||||
run_reset(server, sender, commandLabel, args);
|
||||
} else if (args[0].equalsIgnoreCase("opt-out")) {
|
||||
run_optout(server, sender, commandLabel, args);
|
||||
} else if (args[0].equalsIgnoreCase("cleanup")) {
|
||||
run_cleanup(server, sender, commandLabel, args);
|
||||
} else if (args[0].equalsIgnoreCase("uuidconvert")) {
|
||||
@ -143,15 +155,9 @@ public class Commandessentials extends EssentialsCommand {
|
||||
if (note == null || note.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
Sound noteHarp;
|
||||
try {
|
||||
noteHarp = Sound.valueOf("NOTE_PIANO"); // pre-1.9, referenced internally as note.harp
|
||||
} catch (IllegalArgumentException e) {
|
||||
noteHarp = Sound.valueOf("BLOCK_NOTE_HARP"); // 1.9
|
||||
}
|
||||
|
||||
for (Player onlinePlayer : ess.getOnlinePlayers()) {
|
||||
onlinePlayer.playSound(onlinePlayer.getLocation(), noteHarp, 1, noteMap.get(note));
|
||||
onlinePlayer.playSound(onlinePlayer.getLocation(), NOTE_HARP, 1, noteMap.get(note));
|
||||
}
|
||||
}
|
||||
}, 20, 2);
|
||||
@ -171,12 +177,8 @@ public class Commandessentials extends EssentialsCommand {
|
||||
private final String[] playerMoo = new String[]{" (__)", " (oo)", " /------\\/", " / | | |", " * /\\---/\\", " ~~ ~~", "....\"Have you mooed today?\"..."};
|
||||
|
||||
private void run_moo(final Server server, final CommandSource sender, final String command, final String args[]) {
|
||||
Sound moo;
|
||||
try {
|
||||
moo = Sound.valueOf("COW_IDLE"); // pre-1.9
|
||||
} catch (IllegalArgumentException e) {
|
||||
moo = Sound.valueOf("ENTITY_COW_MILK"); // 1.9
|
||||
}
|
||||
Sound moo = EnumUtil.valueOf(Sound.class, "COW_IDLE", "ENTITY_COW_MILK");
|
||||
|
||||
if (args.length == 2 && args[1].equals("moo")) {
|
||||
for (String s : consoleMoo) {
|
||||
logger.info(s);
|
||||
@ -197,19 +199,6 @@ public class Commandessentials extends EssentialsCommand {
|
||||
}
|
||||
}
|
||||
|
||||
private void run_optout(final Server server, final CommandSource sender, final String command, final String args[]) {
|
||||
final Metrics metrics = ess.getMetrics();
|
||||
|
||||
sender.sendMessage("Essentials collects simple metrics to highlight which features to concentrate work on in the future.");
|
||||
if (metrics.isOptOut()) {
|
||||
metrics.enable();
|
||||
} else {
|
||||
metrics.disable();
|
||||
}
|
||||
sender.sendMessage("Anonymous Metrics are now " + (metrics.isOptOut() ? "disabled" : "enabled") + " for EssentialsX until server restart.");
|
||||
sender.sendMessage("To " + (metrics.isOptOut() ? "disable" : "enable") + " them for all plugins permanently, see the bStats config.");
|
||||
}
|
||||
|
||||
private void run_cleanup(final Server server, final CommandSource sender, final String command, final String args[]) throws Exception {
|
||||
if (args.length < 2 || !NumberUtil.isInt(args[1])) {
|
||||
sender.sendMessage("This sub-command will delete users who havent logged in in the last <days> days.");
|
||||
@ -318,11 +307,13 @@ public class Commandessentials extends EssentialsCommand {
|
||||
|
||||
boolean isMismatched = false;
|
||||
boolean isVaultInstalled = false;
|
||||
boolean isUnsupported = false;
|
||||
final boolean isServerSupported = VersionUtil.isServerSupported();
|
||||
final PluginManager pm = server.getPluginManager();
|
||||
final String essVer = pm.getPlugin("Essentials").getDescription().getVersion();
|
||||
|
||||
sender.sendMessage("Server version: " + server.getBukkitVersion() + " " + server.getVersion());
|
||||
sender.sendMessage("EssentialsX version: " + essVer);
|
||||
sender.sendMessage(tl(isServerSupported ? "versionOutputFine" : "versionOutputWarn", "Server", server.getBukkitVersion() + " " + server.getVersion()));
|
||||
sender.sendMessage(tl("versionOutputFine", "EssentialsX", essVer));
|
||||
|
||||
for (Plugin plugin : pm.getPlugins()) {
|
||||
final PluginDescriptionFile desc = plugin.getDescription();
|
||||
@ -330,15 +321,28 @@ public class Commandessentials extends EssentialsCommand {
|
||||
String version = desc.getVersion();
|
||||
|
||||
if (name.startsWith("Essentials") && !name.equalsIgnoreCase("Essentials")) {
|
||||
if (!version.equalsIgnoreCase(essVer)) {
|
||||
version = "\u00a7c" + version;
|
||||
isMismatched = true;
|
||||
if (officialPlugins.contains(name)) {
|
||||
name = name.replace("Essentials", "EssentialsX");
|
||||
|
||||
if (!version.equalsIgnoreCase(essVer)) {
|
||||
isMismatched = true;
|
||||
sender.sendMessage(tl("versionOutputWarn", name, version));
|
||||
} else {
|
||||
sender.sendMessage(tl("versionOutputFine", name, version));
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(tl("versionOutputUnsupported", name, version));
|
||||
isUnsupported = true;
|
||||
}
|
||||
sender.sendMessage(name.replace("Essentials", "EssentialsX") + " version: " + version);
|
||||
}
|
||||
|
||||
if (versionPlugins.contains(name)) {
|
||||
sender.sendMessage(name + " version: " + version);
|
||||
if (warnPlugins.contains(name)) {
|
||||
sender.sendMessage(tl("versionOutputUnsupported", name, version));
|
||||
isUnsupported = true;
|
||||
} else {
|
||||
sender.sendMessage(tl("versionOutputFine", name, version));
|
||||
}
|
||||
}
|
||||
|
||||
if (name.equals("Vault")) isVaultInstalled = true;
|
||||
@ -349,7 +353,15 @@ public class Commandessentials extends EssentialsCommand {
|
||||
}
|
||||
|
||||
if (!isVaultInstalled) {
|
||||
sender.sendMessage("Vault is not installed - chat and permissions may not work.");
|
||||
sender.sendMessage(tl("versionOutputVaultMissing"));
|
||||
}
|
||||
|
||||
if (isUnsupported) {
|
||||
sender.sendMessage(tl("versionOutputUnsupportedPlugins"));
|
||||
}
|
||||
|
||||
if (!VersionUtil.isServerSupported()) {
|
||||
sender.sendMessage(tl("serverUnsupported"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -362,7 +374,6 @@ public class Commandessentials extends EssentialsCommand {
|
||||
//options.add("nya");
|
||||
//options.add("moo");
|
||||
options.add("reset");
|
||||
options.add("opt-out");
|
||||
options.add("cleanup");
|
||||
//options.add("uuidconvert");
|
||||
//options.add("uuidtest");
|
||||
@ -380,8 +391,6 @@ public class Commandessentials extends EssentialsCommand {
|
||||
if (args.length == 2) {
|
||||
return getPlayers(server, sender);
|
||||
}
|
||||
} else if (args[0].equalsIgnoreCase("opt-out")) {
|
||||
// No args
|
||||
} else if (args[0].equalsIgnoreCase("cleanup")) {
|
||||
if (args.length == 2) {
|
||||
return COMMON_DURATIONS;
|
||||
|
@ -2,6 +2,7 @@ package com.earth2me.essentials.commands;
|
||||
|
||||
import com.earth2me.essentials.MetaItemStack;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.utils.MaterialUtil;
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.bukkit.DyeColor;
|
||||
@ -43,8 +44,8 @@ public class Commandfirework extends EssentialsCommand {
|
||||
|
||||
@Override
|
||||
protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
|
||||
final ItemStack stack = user.getBase().getItemInHand();
|
||||
if (stack.getType() == Material.FIREWORK) {
|
||||
final ItemStack stack = user.getItemInHand();
|
||||
if (MaterialUtil.isFirework(stack.getType())) {
|
||||
if (args.length > 0) {
|
||||
if (args[0].equalsIgnoreCase("clear")) {
|
||||
FireworkMeta fmeta = (FireworkMeta) stack.getItemMeta();
|
||||
|
@ -31,9 +31,9 @@ public class Commandgive extends EssentialsCommand {
|
||||
}
|
||||
|
||||
ItemStack stack = ess.getItemDb().get(args[1]);
|
||||
|
||||
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
|
||||
if (sender.isPlayer() && (ess.getSettings().permissionBasedItemSpawn() ? (!ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.item-all") && !ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.item-" + itemname) && !ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.item-" + stack.getTypeId())) : (!ess.getUser(sender.getPlayer()).isAuthorized("essentials.itemspawn.exempt") && !ess.getUser(sender.getPlayer()).canSpawnItem(stack.getTypeId())))) {
|
||||
|
||||
if (sender.isPlayer() && !ess.getUser(sender.getPlayer()).canSpawnItem(stack.getType())) {
|
||||
throw new Exception(tl("cantSpawnItem", itemname));
|
||||
}
|
||||
|
||||
|
@ -33,8 +33,8 @@ public class Commandhat extends EssentialsCommand {
|
||||
user.sendMessage(tl("hatRemoved"));
|
||||
}
|
||||
} else {
|
||||
if (user.getBase().getItemInHand().getType() != Material.AIR) {
|
||||
final ItemStack hand = user.getBase().getItemInHand();
|
||||
final ItemStack hand = user.getItemInHand();
|
||||
if (hand != null && hand.getType() != Material.AIR) {
|
||||
if (hand.getType().getMaxDurability() == 0) {
|
||||
final PlayerInventory inv = user.getBase().getInventory();
|
||||
final ItemStack head = inv.getHelmet();
|
||||
|
@ -25,12 +25,14 @@ public class Commanditem extends EssentialsCommand {
|
||||
if (args.length < 1) {
|
||||
throw new NotEnoughArgumentsException();
|
||||
}
|
||||
|
||||
ItemStack stack = ess.getItemDb().get(args[0]);
|
||||
|
||||
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
|
||||
if (ess.getSettings().permissionBasedItemSpawn() ? (!user.isAuthorized("essentials.itemspawn.item-all") && !user.isAuthorized("essentials.itemspawn.item-" + itemname) && !user.isAuthorized("essentials.itemspawn.item-" + stack.getTypeId())) : (!user.isAuthorized("essentials.itemspawn.exempt") && !user.canSpawnItem(stack.getTypeId()))) {
|
||||
if (!user.canSpawnItem(stack.getType())) {
|
||||
throw new Exception(tl("cantSpawnItem", itemname));
|
||||
}
|
||||
|
||||
try {
|
||||
if (args.length > 1 && Integer.parseInt(args[1]) > 0) {
|
||||
stack.setAmount(Integer.parseInt(args[1]));
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.earth2me.essentials.commands;
|
||||
|
||||
import com.earth2me.essentials.CommandSource;
|
||||
import com.earth2me.essentials.utils.VersionUtil;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -21,9 +22,9 @@ public class Commanditemdb extends EssentialsCommand {
|
||||
ItemStack itemStack = null;
|
||||
boolean itemHeld = false;
|
||||
if (args.length < 1) {
|
||||
if (sender.isPlayer()) {
|
||||
if (sender.isPlayer() && sender.getPlayer() != null) {
|
||||
itemHeld = true;
|
||||
itemStack = sender.getPlayer().getItemInHand();
|
||||
itemStack = ess.getUser(sender.getPlayer()).getItemInHand();
|
||||
}
|
||||
if (itemStack == null) {
|
||||
throw new NotEnoughArgumentsException();
|
||||
@ -31,7 +32,13 @@ public class Commanditemdb extends EssentialsCommand {
|
||||
} else {
|
||||
itemStack = ess.getItemDb().get(args[0]);
|
||||
}
|
||||
sender.sendMessage(tl("itemType", itemStack.getType().toString(), itemStack.getTypeId() + ":" + Integer.toString(itemStack.getDurability())));
|
||||
|
||||
sender.sendMessage(tl("itemType", itemStack.getType().toString()));
|
||||
|
||||
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) {
|
||||
final String itemId = itemStack.getType().getId() + ":" + itemStack.getDurability();
|
||||
sender.sendMessage(tl("itemId", itemId));
|
||||
}
|
||||
|
||||
if (itemHeld && itemStack.getType() != Material.AIR) {
|
||||
int maxuses = itemStack.getType().getMaxDurability();
|
||||
|
@ -16,15 +16,16 @@ public class Commandmore extends EssentialsCommand {
|
||||
|
||||
@Override
|
||||
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
|
||||
final ItemStack stack = user.getBase().getItemInHand();
|
||||
final ItemStack stack = user.getItemInHand();
|
||||
if (stack == null) {
|
||||
throw new Exception(tl("cantSpawnItem", "Air"));
|
||||
}
|
||||
|
||||
if (stack.getAmount() >= ((user.isAuthorized("essentials.oversizedstacks")) ? ess.getSettings().getOversizedStackSize() : stack.getMaxStackSize())) {
|
||||
throw new Exception(tl("fullStack"));
|
||||
}
|
||||
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
|
||||
if (ess.getSettings().permissionBasedItemSpawn() ? (!user.isAuthorized("essentials.itemspawn.item-all") && !user.isAuthorized("essentials.itemspawn.item-" + itemname) && !user.isAuthorized("essentials.itemspawn.item-" + stack.getTypeId())) : (!user.isAuthorized("essentials.itemspawn.exempt") && !user.canSpawnItem(stack.getTypeId()))) {
|
||||
if (!user.canSpawnItem(stack.getType())) {
|
||||
throw new Exception(tl("cantSpawnItem", itemname));
|
||||
}
|
||||
if (user.isAuthorized("essentials.oversizedstacks")) {
|
||||
|
@ -75,7 +75,7 @@ public class Commandnick extends EssentialsLoopCommand {
|
||||
|
||||
private String formatNickname(final User user, final String nick) throws Exception {
|
||||
String newNick = user == null ? FormatUtil.replaceFormat(nick) : FormatUtil.formatString(user, "essentials.nick", nick);
|
||||
if (!newNick.matches("^[a-zA-Z_0-9\u00a7]+$")) {
|
||||
if (!newNick.matches("^[a-zA-Z_0-9\u00a7]+$") && user != null && !user.isAuthorized("essentials.nick.allowunsafe")) {
|
||||
throw new Exception(tl("nickNamesAlpha"));
|
||||
} else if (getNickLength(newNick) > ess.getSettings().getMaxNickLength()) {
|
||||
throw new Exception(tl("nickTooLong"));
|
||||
|
@ -2,7 +2,9 @@ package com.earth2me.essentials.commands;
|
||||
|
||||
import com.earth2me.essentials.CommandSource;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import com.earth2me.essentials.utils.VersionUtil;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.inventory.*;
|
||||
@ -19,13 +21,20 @@ import net.ess3.nms.refl.ReflUtil;
|
||||
|
||||
|
||||
public class Commandrecipe extends EssentialsCommand {
|
||||
|
||||
private static final Material FIREWORK_ROCKET = EnumUtil.getMaterial("FIREWORK_ROCKET", "FIREWORK");
|
||||
private static final Material FIREWORK_STAR = EnumUtil.getMaterial("FIREWORK_STAR", "FIREWORK_CHARGE");
|
||||
private static final Material GUNPOWDER = EnumUtil.getMaterial("GUNPOWDER", "SULPHUR");
|
||||
|
||||
public Commandrecipe() {
|
||||
super("recipe");
|
||||
}
|
||||
|
||||
private void disableCommandForVersion1_12() throws Exception {
|
||||
if (ReflUtil.getNmsVersionObject().equals(ReflUtil.V1_12_R1)) {
|
||||
throw new Exception("/recipe is temporarily disabled. Please use the recipe book in your inventory.");
|
||||
VersionUtil.BukkitVersion version = VersionUtil.getServerBukkitVersion();
|
||||
if (version.isHigherThanOrEqualTo(VersionUtil.v1_12_0_R01)
|
||||
&& !ess.getSettings().isForceEnableRecipe()) {
|
||||
throw new Exception("Please use the recipe book in your inventory.");
|
||||
}
|
||||
}
|
||||
|
||||
@ -64,11 +73,11 @@ public class Commandrecipe extends EssentialsCommand {
|
||||
} else if (selectedRecipe instanceof ShapedRecipe) {
|
||||
shapedRecipe(sender, (ShapedRecipe) selectedRecipe, sender.isPlayer());
|
||||
} else if (selectedRecipe instanceof ShapelessRecipe) {
|
||||
if (recipesOfType.size() == 1 && itemType.getType() == Material.FIREWORK) {
|
||||
if (recipesOfType.size() == 1 && (itemType.getType() == FIREWORK_ROCKET)) {
|
||||
ShapelessRecipe shapelessRecipe = new ShapelessRecipe(itemType);
|
||||
shapelessRecipe.addIngredient(Material.SULPHUR);
|
||||
shapelessRecipe.addIngredient(GUNPOWDER);
|
||||
shapelessRecipe.addIngredient(Material.PAPER);
|
||||
shapelessRecipe.addIngredient(Material.FIREWORK_CHARGE);
|
||||
shapelessRecipe.addIngredient(FIREWORK_STAR);
|
||||
shapelessRecipe(sender, shapelessRecipe, sender.isPlayer());
|
||||
} else {
|
||||
shapelessRecipe(sender, (ShapelessRecipe) selectedRecipe, sender.isPlayer());
|
||||
|
@ -4,6 +4,7 @@ import com.earth2me.essentials.ChargeException;
|
||||
import com.earth2me.essentials.Trade;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.utils.StringUtil;
|
||||
import com.earth2me.essentials.utils.VersionUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
import net.ess3.api.IUser;
|
||||
import org.bukkit.Material;
|
||||
@ -38,7 +39,7 @@ public class Commandrepair extends EssentialsCommand {
|
||||
}
|
||||
|
||||
public void repairHand(User user) throws Exception {
|
||||
final ItemStack item = user.getBase().getItemInHand();
|
||||
final ItemStack item = user.getItemInHand();
|
||||
if (item == null || item.getType().isBlock() || item.getDurability() == 0) {
|
||||
throw new Exception(tl("repairInvalidType"));
|
||||
}
|
||||
@ -48,7 +49,7 @@ public class Commandrepair extends EssentialsCommand {
|
||||
}
|
||||
|
||||
final String itemName = item.getType().toString().toLowerCase(Locale.ENGLISH);
|
||||
final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), new Trade("repair-" + item.getTypeId(), new Trade("repair-item", ess), ess), ess);
|
||||
final Trade charge = getCharge(item.getType());
|
||||
|
||||
charge.isAffordableFor(user);
|
||||
|
||||
@ -76,7 +77,7 @@ public class Commandrepair extends EssentialsCommand {
|
||||
}
|
||||
|
||||
private void repairItem(final ItemStack item) throws Exception {
|
||||
final Material material = Material.getMaterial(item.getTypeId());
|
||||
final Material material = item.getType();
|
||||
if (material.isBlock() || material.getMaxDurability() < 1) {
|
||||
throw new Exception(tl("repairInvalidType"));
|
||||
}
|
||||
@ -88,13 +89,15 @@ public class Commandrepair extends EssentialsCommand {
|
||||
item.setDurability((short) 0);
|
||||
}
|
||||
|
||||
private void repairItems(final ItemStack[] items, final IUser user, final List<String> repaired) {
|
||||
private void repairItems(final ItemStack[] items, final IUser user, final List<String> repaired) throws Exception {
|
||||
for (ItemStack item : items) {
|
||||
if (item == null || item.getType().isBlock() || item.getDurability() == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
final String itemName = item.getType().toString().toLowerCase(Locale.ENGLISH);
|
||||
final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), new Trade("repair-" + item.getTypeId(), new Trade("repair-item", ess), ess), ess);
|
||||
final Trade charge = getCharge(item.getType());
|
||||
|
||||
try {
|
||||
charge.isAffordableFor(user);
|
||||
} catch (ChargeException ex) {
|
||||
@ -119,6 +122,16 @@ public class Commandrepair extends EssentialsCommand {
|
||||
}
|
||||
}
|
||||
|
||||
private Trade getCharge(final Material material) {
|
||||
final String itemName = material.toString().toLowerCase(Locale.ENGLISH);
|
||||
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) {
|
||||
final int itemId = material.getId();
|
||||
return new Trade("repair-" + itemName.replace('_', '-'), new Trade("repair-" + itemId, new Trade("repair-item", ess), ess), ess);
|
||||
} else {
|
||||
return new Trade("repair-" + itemName.replace('_', '-'), new Trade("repair-item", ess), ess);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> getTabCompleteOptions(Server server, User user, String commandLabel, String[] args) {
|
||||
if (args.length == 1) {
|
||||
|
@ -69,7 +69,7 @@ public class Commandsell extends EssentialsCommand {
|
||||
|
||||
private BigDecimal sellItem(User user, ItemStack is, String[] args, boolean isBulkSell) throws Exception {
|
||||
int amount = ess.getWorth().getAmount(ess, user, is, args, isBulkSell);
|
||||
BigDecimal worth = ess.getWorth().getPrice(is);
|
||||
BigDecimal worth = ess.getWorth().getPrice(ess, is);
|
||||
|
||||
if (worth == null) {
|
||||
throw new Exception(tl("itemCannotBeSold"));
|
||||
|
@ -31,7 +31,7 @@ public class Commandsetworth extends EssentialsCommand {
|
||||
price = args[1];
|
||||
}
|
||||
|
||||
ess.getWorth().setPrice(stack, FloatUtil.parseDouble(price));
|
||||
ess.getWorth().setPrice(ess, stack, FloatUtil.parseDouble(price));
|
||||
user.sendMessage(tl("worthSet"));
|
||||
}
|
||||
|
||||
@ -42,7 +42,7 @@ public class Commandsetworth extends EssentialsCommand {
|
||||
}
|
||||
|
||||
ItemStack stack = ess.getItemDb().get(args[0]);
|
||||
ess.getWorth().setPrice(stack, FloatUtil.parseDouble(args[1]));
|
||||
ess.getWorth().setPrice(ess, stack, FloatUtil.parseDouble(args[1]));
|
||||
sender.sendMessage(tl("worthSet"));
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,8 @@ package com.earth2me.essentials.commands;
|
||||
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.craftbukkit.InventoryWorkaround;
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
import com.earth2me.essentials.utils.MaterialUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
@ -14,6 +16,9 @@ import java.util.List;
|
||||
import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
public class Commandskull extends EssentialsCommand {
|
||||
|
||||
private static final Material SKULL_ITEM = EnumUtil.getMaterial("PLAYER_HEAD", "SKULL_ITEM");
|
||||
|
||||
public Commandskull() {
|
||||
super("skull");
|
||||
}
|
||||
@ -31,14 +36,14 @@ public class Commandskull extends EssentialsCommand {
|
||||
owner = user.getName();
|
||||
}
|
||||
|
||||
ItemStack itemSkull = user.getBase().getItemInHand();
|
||||
ItemStack itemSkull = user.getItemInHand();
|
||||
SkullMeta metaSkull = null;
|
||||
boolean spawn = false;
|
||||
|
||||
if (itemSkull != null && itemSkull.getType() == Material.SKULL_ITEM && itemSkull.getDurability() == 3) {
|
||||
if (itemSkull != null && MaterialUtil.isPlayerHead(itemSkull.getType(), itemSkull.getDurability())) {
|
||||
metaSkull = (SkullMeta) itemSkull.getItemMeta();
|
||||
} else if (user.isAuthorized("essentials.skull.spawn")) {
|
||||
itemSkull = new ItemStack(Material.SKULL_ITEM, 1, (byte) 3);
|
||||
itemSkull = new ItemStack(SKULL_ITEM, 1, (byte) 3);
|
||||
metaSkull = (SkullMeta) itemSkull.getItemMeta();
|
||||
spawn = true;
|
||||
} else {
|
||||
|
@ -3,6 +3,7 @@ package com.earth2me.essentials.commands;
|
||||
import com.earth2me.essentials.Mob;
|
||||
import com.earth2me.essentials.Trade;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
import com.earth2me.essentials.utils.LocationUtil;
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import com.earth2me.essentials.utils.StringUtil;
|
||||
@ -28,7 +29,9 @@ public class Commandspawner extends EssentialsCommand {
|
||||
}
|
||||
|
||||
final Location target = LocationUtil.getTarget(user.getBase());
|
||||
if (target == null || target.getBlock().getType() != Material.MOB_SPAWNER) {
|
||||
Material MOB_SPAWNER = EnumUtil.getMaterial("SPAWNER", "MOB_SPAWNER");
|
||||
|
||||
if (target == null || target.getBlock().getType() != MOB_SPAWNER) {
|
||||
throw new Exception(tl("mobSpawnTarget"));
|
||||
}
|
||||
|
||||
|
@ -32,6 +32,10 @@ public class Commandtree extends EssentialsCommand {
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("jungle")) {
|
||||
tree = TreeType.SMALL_JUNGLE;
|
||||
} else if (args[0].equalsIgnoreCase("acacia")) {
|
||||
tree = TreeType.ACACIA;
|
||||
} else if (args[0].equalsIgnoreCase("birch")) {
|
||||
tree = TreeType.BIRCH;
|
||||
}
|
||||
if (tree == null) {
|
||||
throw new NotEnoughArgumentsException();
|
||||
|
@ -32,12 +32,12 @@ public class Commandunlimited extends EssentialsCommand {
|
||||
final String list = getList(target);
|
||||
user.sendMessage(list);
|
||||
} else if (args[0].equalsIgnoreCase("clear")) {
|
||||
final List<Integer> itemList = target.getUnlimited();
|
||||
final List<Material> itemList = target.getUnlimited();
|
||||
|
||||
int index = 0;
|
||||
while (itemList.size() > index) {
|
||||
final Integer item = itemList.get(index);
|
||||
if (toggleUnlimited(user, target, item.toString()) == false) {
|
||||
final Material item = itemList.get(index);
|
||||
if (!toggleUnlimited(user, target, item.toString())) {
|
||||
index++;
|
||||
}
|
||||
}
|
||||
@ -50,16 +50,16 @@ public class Commandunlimited extends EssentialsCommand {
|
||||
final StringBuilder output = new StringBuilder();
|
||||
output.append(tl("unlimitedItems")).append(" ");
|
||||
boolean first = true;
|
||||
final List<Integer> items = target.getUnlimited();
|
||||
final List<Material> items = target.getUnlimited();
|
||||
if (items.isEmpty()) {
|
||||
output.append(tl("none"));
|
||||
}
|
||||
for (Integer integer : items) {
|
||||
for (Material material : items) {
|
||||
if (!first) {
|
||||
output.append(", ");
|
||||
}
|
||||
first = false;
|
||||
final String matname = Material.getMaterial(integer).toString().toLowerCase(Locale.ENGLISH).replace("_", "");
|
||||
final String matname = material.toString().toLowerCase(Locale.ENGLISH).replace("_", "");
|
||||
output.append(matname);
|
||||
}
|
||||
|
||||
@ -71,7 +71,7 @@ public class Commandunlimited extends EssentialsCommand {
|
||||
stack.setAmount(Math.min(stack.getType().getMaxStackSize(), 2));
|
||||
|
||||
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
|
||||
if (ess.getSettings().permissionBasedItemSpawn() && (!user.isAuthorized("essentials.unlimited.item-all") && !user.isAuthorized("essentials.unlimited.item-" + itemname) && !user.isAuthorized("essentials.unlimited.item-" + stack.getTypeId()) && !((stack.getType() == Material.WATER_BUCKET || stack.getType() == Material.LAVA_BUCKET) && user.isAuthorized("essentials.unlimited.item-bucket")))) {
|
||||
if (ess.getSettings().permissionBasedItemSpawn() && (!user.isAuthorized("essentials.unlimited.item-all") && !user.isAuthorized("essentials.unlimited.item-" + itemname) && !((stack.getType() == Material.WATER_BUCKET || stack.getType() == Material.LAVA_BUCKET) && user.isAuthorized("essentials.unlimited.item-bucket")))) {
|
||||
throw new Exception(tl("unlimitedItemPermission", itemname));
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ import com.earth2me.essentials.CommandSource;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.craftbukkit.SetExpFix;
|
||||
import com.earth2me.essentials.utils.DateUtil;
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.Statistic;
|
||||
@ -16,6 +17,10 @@ import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
|
||||
public class Commandwhois extends EssentialsCommand {
|
||||
// For some reason, in 1.13 PLAY_ONE_MINUTE = ticks played = what used to be PLAY_ONE_TICK
|
||||
// https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/commits/b848d8ce633871b52115247b089029749c02f579
|
||||
private static final Statistic PLAY_ONE_TICK = EnumUtil.getStatistic("PLAY_ONE_MINUTE", "PLAY_ONE_TICK");
|
||||
|
||||
public Commandwhois() {
|
||||
super("whois");
|
||||
}
|
||||
@ -36,7 +41,7 @@ public class Commandwhois extends EssentialsCommand {
|
||||
sender.sendMessage(tl("whoisHunger", user.getBase().getFoodLevel(), user.getBase().getSaturation()));
|
||||
sender.sendMessage(tl("whoisExp", SetExpFix.getTotalExperience(user.getBase()), user.getBase().getLevel()));
|
||||
sender.sendMessage(tl("whoisLocation", user.getLocation().getWorld().getName(), user.getLocation().getBlockX(), user.getLocation().getBlockY(), user.getLocation().getBlockZ()));
|
||||
long playtimeMs = System.currentTimeMillis() - (user.getBase().getStatistic(Statistic.PLAY_ONE_TICK) * 50);
|
||||
long playtimeMs = System.currentTimeMillis() - (user.getBase().getStatistic(PLAY_ONE_TICK) * 50);
|
||||
sender.sendMessage(tl("whoisPlaytime", DateUtil.formatDateDiff(playtimeMs)));
|
||||
if (!ess.getSettings().isEcoDisabled()) {
|
||||
sender.sendMessage(tl("whoisMoney", NumberUtil.displayCurrency(user.getMoney(), ess)));
|
||||
|
@ -84,7 +84,7 @@ public class Commandworth extends EssentialsCommand {
|
||||
amount = ess.getWorth().getAmount(ess, user, is, args, true);
|
||||
}
|
||||
|
||||
BigDecimal worth = ess.getWorth().getPrice(is);
|
||||
BigDecimal worth = ess.getWorth().getPrice(ess, is);
|
||||
|
||||
if (worth == null) {
|
||||
throw new Exception(tl("itemCannotBeSold"));
|
||||
|
@ -3,6 +3,7 @@ package com.earth2me.essentials.craftbukkit;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.entity.*;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
@ -10,6 +11,8 @@ import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.material.MaterialData;
|
||||
import org.bukkit.metadata.MetadataValue;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.util.BoundingBox;
|
||||
import org.bukkit.util.RayTraceResult;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.io.File;
|
||||
@ -17,6 +20,7 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
|
||||
public class FakeWorld implements World {
|
||||
@ -38,16 +42,6 @@ public class FakeWorld implements World {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlockTypeIdAt(int i, int i1, int i2) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlockTypeIdAt(Location lctn) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHighestBlockYAt(int i, int i1) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
@ -93,6 +87,11 @@ public class FakeWorld implements World {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isChunkGenerated(int x, int z) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadChunk(int i, int i1) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
@ -138,6 +137,21 @@ public class FakeWorld implements World {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isChunkForceLoaded(int x, int z) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setChunkForceLoaded(int x, int z, boolean forced) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Chunk> getForceLoadedChunks() {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item dropItem(Location lctn, ItemStack is) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
@ -164,7 +178,7 @@ public class FakeWorld implements World {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generateTree(Location lctn, TreeType tt, BlockChangeDelegate bcd) {
|
||||
public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@ -203,6 +217,11 @@ public class FakeWorld implements World {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setSpawnLocation(Location location) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setSpawnLocation(int i, int i1, int i2) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
@ -348,6 +367,11 @@ public class FakeWorld implements World {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public FallingBlock spawnFallingBlock(Location location, BlockData blockData) throws IllegalArgumentException {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChunkSnapshot getEmptyChunkSnapshot(int i, int i1, boolean bln, boolean bln1) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
@ -583,11 +607,6 @@ public class FakeWorld implements World {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public FallingBlock spawnFallingBlock(Location location, int blockId, byte blockData) throws IllegalArgumentException {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playSound(Location arg0, Sound arg1, float arg2, float arg3) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
@ -600,12 +619,12 @@ public class FakeWorld implements World {
|
||||
|
||||
@Override
|
||||
public void playSound(Location location, Sound sound, SoundCategory soundCategory, float v, float v1) {
|
||||
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playSound(Location location, String s, SoundCategory soundCategory, float v, float v1) {
|
||||
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -650,66 +669,151 @@ public class FakeWorld implements World {
|
||||
|
||||
@Override
|
||||
public void spawnParticle(Particle particle, Location location, int i) {
|
||||
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void spawnParticle(Particle particle, double v, double v1, double v2, int i) {
|
||||
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void spawnParticle(Particle particle, Location location, int i, T t) {
|
||||
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void spawnParticle(Particle particle, double v, double v1, double v2, int i, T t) {
|
||||
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2) {
|
||||
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5) {
|
||||
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2, T t) {
|
||||
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5, T t) {
|
||||
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2, double v3) {
|
||||
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5, double v6) {
|
||||
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2, double v3, T t) {
|
||||
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5, double v6, T t) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2, double v3, T t, boolean b) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> void spawnParticle(Particle particle, double v, double v1, double v2, int i, double v3, double v4, double v5, double v6, T t, boolean b) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Location locateNearestStructure(Location origin, StructureType structureType, int radius, boolean findUnexplored) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Entity> getNearbyEntities(Location loc, double x, double y, double z) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Entity> getNearbyEntities(Location location, double x, double y, double z, Predicate<Entity> filter) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Entity> getNearbyEntities(BoundingBox boundingBox) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Entity> getNearbyEntities(BoundingBox boundingBox, Predicate<Entity> filter) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public RayTraceResult rayTraceEntities(Location start, Vector direction, double maxDistance) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public RayTraceResult rayTraceEntities(Location start, Vector direction, double maxDistance, double raySize) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public RayTraceResult rayTraceEntities(Location start, Vector direction, double maxDistance, Predicate<Entity> filter) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public RayTraceResult rayTraceEntities(Location start, Vector direction, double maxDistance, double raySize, Predicate<Entity> filter) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public RayTraceResult rayTraceBlocks(Location start, Vector direction, double maxDistance) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public RayTraceResult rayTraceBlocks(Location start, Vector direction, double maxDistance, FluidCollisionMode fluidCollisionMode) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public RayTraceResult rayTraceBlocks(Location start, Vector direction, double maxDistance, FluidCollisionMode fluidCollisionMode, boolean ignorePassableBlocks) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public RayTraceResult rayTrace(Location start, Vector direction, double maxDistance, FluidCollisionMode fluidCollisionMode, boolean ignorePassableBlocks, double raySize, Predicate<Entity> filter) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getGameRuleDefault(GameRule<T> arg0) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getGameRuleValue(GameRule<T> arg0) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> boolean setGameRule(GameRule<T> arg0, T arg1) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
}
|
||||
}
|
||||
|
227
Essentials/src/com/earth2me/essentials/items/AbstractItemDb.java
Normal file
227
Essentials/src/com/earth2me/essentials/items/AbstractItemDb.java
Normal file
@ -0,0 +1,227 @@
|
||||
package com.earth2me.essentials.items;
|
||||
|
||||
import com.earth2me.essentials.Essentials;
|
||||
import com.earth2me.essentials.IConf;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.utils.MaterialUtil;
|
||||
import com.earth2me.essentials.utils.StringUtil;
|
||||
import com.earth2me.essentials.utils.VersionUtil;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.FireworkEffect;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Banner;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.*;
|
||||
import org.bukkit.potion.Potion;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
|
||||
import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
public abstract class AbstractItemDb implements IConf, net.ess3.api.IItemDb {
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getMatching(User user, String[] args) throws Exception {
|
||||
List<ItemStack> is = new ArrayList<>();
|
||||
|
||||
if (args.length < 1) {
|
||||
is.add(user.getItemInHand().clone());
|
||||
} else if (args[0].equalsIgnoreCase("hand")) {
|
||||
is.add(user.getItemInHand().clone());
|
||||
} else if (args[0].equalsIgnoreCase("inventory") || args[0].equalsIgnoreCase("invent") || args[0].equalsIgnoreCase("all")) {
|
||||
for (ItemStack stack : user.getBase().getInventory().getContents()) {
|
||||
if (stack == null || stack.getType() == Material.AIR) {
|
||||
continue;
|
||||
}
|
||||
is.add(stack.clone());
|
||||
}
|
||||
} else if (args[0].equalsIgnoreCase("blocks")) {
|
||||
for (ItemStack stack : user.getBase().getInventory().getContents()) {
|
||||
if (stack == null || stack.getType() == Material.AIR) {
|
||||
continue;
|
||||
}
|
||||
is.add(stack.clone());
|
||||
}
|
||||
} else {
|
||||
is.add(get(args[0]));
|
||||
}
|
||||
|
||||
if (is.isEmpty() || is.get(0).getType() == Material.AIR) {
|
||||
throw new Exception(tl("itemSellAir"));
|
||||
}
|
||||
|
||||
return is;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String serialize(ItemStack is) {
|
||||
String mat = is.getType().name();
|
||||
if (VersionUtil.getServerBukkitVersion().isLowerThanOrEqualTo(VersionUtil.v1_12_2_R01) && is.getData().getData() != 0) {
|
||||
mat = mat + ":" + is.getData().getData();
|
||||
}
|
||||
int quantity = is.getAmount();
|
||||
StringBuilder sb = new StringBuilder(); // Add space AFTER you add something. We can trim at end.
|
||||
sb.append(mat).append(" ").append(quantity).append(" ");
|
||||
|
||||
// ItemMeta applies to anything.
|
||||
if (is.hasItemMeta()) {
|
||||
ItemMeta meta = is.getItemMeta();
|
||||
if (meta.hasDisplayName()) {
|
||||
sb.append("name:").append(meta.getDisplayName().replaceAll(" ", "_")).append(" ");
|
||||
}
|
||||
|
||||
if (meta.hasLore()) {
|
||||
sb.append("lore:");
|
||||
boolean first = true;
|
||||
for (String s : meta.getLore()) {
|
||||
// Add | before the line if it's not the first one. Easy but weird way
|
||||
// to do this since we need each line separated by |
|
||||
if (!first) {
|
||||
sb.append("|");
|
||||
}
|
||||
first = false;
|
||||
sb.append(s.replaceAll(" ", "_"));
|
||||
}
|
||||
sb.append(" ");
|
||||
}
|
||||
|
||||
if (meta.hasEnchants()) {
|
||||
for (Enchantment e : meta.getEnchants().keySet()) {
|
||||
sb.append(e.getName().toLowerCase()).append(":").append(meta.getEnchantLevel(e)).append(" ");
|
||||
}
|
||||
}
|
||||
|
||||
Set<ItemFlag> flags = meta.getItemFlags();
|
||||
if (flags != null && !flags.isEmpty()) {
|
||||
sb.append("itemflags:");
|
||||
boolean first = true;
|
||||
for (ItemFlag flag : flags) {
|
||||
if (!first) {
|
||||
sb.append(",");
|
||||
}
|
||||
sb.append(flag.name());
|
||||
first = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final Material material = is.getType();
|
||||
|
||||
switch (material) {
|
||||
case WRITTEN_BOOK:
|
||||
// Everything from http://wiki.ess3.net/wiki/Item_Meta#Books in that order.
|
||||
// Interesting as I didn't see a way to do pages or chapters.
|
||||
BookMeta bookMeta = (BookMeta) is.getItemMeta();
|
||||
if (bookMeta.hasTitle()) {
|
||||
sb.append("title:").append(bookMeta.getTitle()).append(" ");
|
||||
}
|
||||
if (bookMeta.hasAuthor()) {
|
||||
sb.append("author:").append(bookMeta.getAuthor()).append(" ");
|
||||
}
|
||||
// Only other thing it could have is lore but that's done up there ^^^
|
||||
break;
|
||||
case ENCHANTED_BOOK:
|
||||
EnchantmentStorageMeta enchantmentStorageMeta = (EnchantmentStorageMeta) is.getItemMeta();
|
||||
for (Enchantment e : enchantmentStorageMeta.getStoredEnchants().keySet()) {
|
||||
sb.append(e.getName().toLowerCase()).append(":").append(enchantmentStorageMeta.getStoredEnchantLevel(e)).append(" ");
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (MaterialUtil.isFirework(material)) {
|
||||
// Everything from http://wiki.ess3.net/wiki/Item_Meta#Fireworks in that order.
|
||||
FireworkMeta fireworkMeta = (FireworkMeta) is.getItemMeta();
|
||||
if (fireworkMeta.hasEffects()) {
|
||||
for (FireworkEffect effect : fireworkMeta.getEffects()) {
|
||||
if (effect.getColors() != null && !effect.getColors().isEmpty()) {
|
||||
sb.append("color:");
|
||||
boolean first = true;
|
||||
for (Color c : effect.getColors()) {
|
||||
if (!first) {
|
||||
sb.append(","); // same thing as above.
|
||||
}
|
||||
sb.append(c.toString());
|
||||
first = false;
|
||||
}
|
||||
sb.append(" ");
|
||||
}
|
||||
|
||||
sb.append("shape:").append(effect.getType().name()).append(" ");
|
||||
if (effect.getFadeColors() != null && !effect.getFadeColors().isEmpty()) {
|
||||
sb.append("fade:");
|
||||
boolean first = true;
|
||||
for (Color c : effect.getFadeColors()) {
|
||||
if (!first) {
|
||||
sb.append(","); // same thing as above.
|
||||
}
|
||||
sb.append(c.toString());
|
||||
first = false;
|
||||
}
|
||||
sb.append(" ");
|
||||
}
|
||||
}
|
||||
sb.append("power:").append(fireworkMeta.getPower()).append(" ");
|
||||
}
|
||||
} else if (MaterialUtil.isPotion(material)) {
|
||||
Potion potion = Potion.fromItemStack(is);
|
||||
for (PotionEffect e : potion.getEffects()) {
|
||||
// long but needs to be effect:speed power:2 duration:120 in that order.
|
||||
sb.append("splash:").append(potion.isSplash()).append(" ").append("effect:").append(e.getType().getName().toLowerCase()).append(" ").append("power:").append(e.getAmplifier()).append(" ").append("duration:").append(e.getDuration() / 20).append(" ");
|
||||
}
|
||||
} else if (MaterialUtil.isPlayerHead(material, is.getData().getData())) {
|
||||
// item stack with meta
|
||||
SkullMeta skullMeta = (SkullMeta) is.getItemMeta();
|
||||
if (skullMeta != null && skullMeta.hasOwner()) {
|
||||
sb.append("player:").append(skullMeta.getOwner()).append(" ");
|
||||
}
|
||||
} else if (MaterialUtil.isBanner(material)) {
|
||||
if (material.toString().contains("SHIELD")) {
|
||||
// Hacky fix for accessing Shield meta - https://github.com/drtshock/Essentials/pull/745#issuecomment-234843795
|
||||
BlockStateMeta shieldMeta = (BlockStateMeta) is.getItemMeta();
|
||||
Banner shieldBannerMeta = (Banner) shieldMeta.getBlockState();
|
||||
DyeColor baseDyeColor = shieldBannerMeta.getBaseColor();
|
||||
if (baseDyeColor != null) {
|
||||
int basecolor = baseDyeColor.getColor().asRGB();
|
||||
sb.append("basecolor:").append(basecolor).append(" ");
|
||||
}
|
||||
for (org.bukkit.block.banner.Pattern p : shieldBannerMeta.getPatterns()) {
|
||||
String type = p.getPattern().getIdentifier();
|
||||
int color = p.getColor().getColor().asRGB();
|
||||
sb.append(type).append(",").append(color).append(" ");
|
||||
}
|
||||
} else {
|
||||
BannerMeta bannerMeta = (BannerMeta) is.getItemMeta();
|
||||
if (bannerMeta != null) {
|
||||
DyeColor baseDyeColor = bannerMeta.getBaseColor();
|
||||
if (baseDyeColor == null) {
|
||||
baseDyeColor = MaterialUtil.getColorOf(material);
|
||||
}
|
||||
if (baseDyeColor != null) {
|
||||
int basecolor = baseDyeColor
|
||||
.getColor()
|
||||
.asRGB();
|
||||
sb.append("basecolor:").append(basecolor).append(" ");
|
||||
}
|
||||
for (org.bukkit.block.banner.Pattern p : bannerMeta.getPatterns()) {
|
||||
String type = p.getPattern().getIdentifier();
|
||||
int color = p.getColor().getColor().asRGB();
|
||||
sb.append(type).append(",").append(color).append(" ");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (MaterialUtil.isLeatherArmor(material)) {
|
||||
LeatherArmorMeta leatherArmorMeta = (LeatherArmorMeta) is.getItemMeta();
|
||||
int rgb = leatherArmorMeta.getColor().asRGB();
|
||||
sb.append("color:").append(rgb).append(" ");
|
||||
}
|
||||
|
||||
return sb.toString().trim().replaceAll("§", "&");
|
||||
}
|
||||
}
|
237
Essentials/src/com/earth2me/essentials/items/FlatItemDb.java
Normal file
237
Essentials/src/com/earth2me/essentials/items/FlatItemDb.java
Normal file
@ -0,0 +1,237 @@
|
||||
package com.earth2me.essentials.items;
|
||||
|
||||
import com.earth2me.essentials.ManagedFile;
|
||||
import com.earth2me.essentials.utils.MaterialUtil;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import net.ess3.api.IEssentials;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.Damageable;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.PotionMeta;
|
||||
import org.bukkit.inventory.meta.Repairable;
|
||||
import org.bukkit.potion.PotionData;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
|
||||
public class FlatItemDb extends AbstractItemDb {
|
||||
protected static final Logger LOGGER = Logger.getLogger("Essentials");
|
||||
private final transient IEssentials ess;
|
||||
|
||||
private static Gson gson = new Gson();
|
||||
|
||||
// Maps primary name to ItemData
|
||||
private final transient Map<String, ItemData> items = new HashMap<>();
|
||||
|
||||
// Maps alias to primary name
|
||||
private final transient Map<String, String> itemAliases = new HashMap<>();
|
||||
|
||||
// Every known alias
|
||||
private final transient Set<String> allAliases = new HashSet<>();
|
||||
|
||||
private transient ManagedFile file = null;
|
||||
|
||||
public FlatItemDb(final IEssentials ess) {
|
||||
this.ess = ess;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reloadConfig() {
|
||||
if (file == null) {
|
||||
file = new ManagedFile("items.json", ess);
|
||||
}
|
||||
|
||||
this.rebuild();
|
||||
LOGGER.info(String.format("Loaded %s items from items.json.", listNames().size()));
|
||||
}
|
||||
|
||||
private void rebuild() {
|
||||
this.reset();
|
||||
|
||||
String json = file.getLines().stream()
|
||||
.filter(line -> !line.startsWith("#"))
|
||||
.collect(Collectors.joining());
|
||||
|
||||
this.loadJSON(String.join("\n", json));
|
||||
}
|
||||
|
||||
private void reset() {
|
||||
items.clear();
|
||||
itemAliases.clear();
|
||||
allAliases.clear();
|
||||
}
|
||||
|
||||
public void loadJSON(String source) {
|
||||
JsonObject map = (new JsonParser()).parse(source).getAsJsonObject();
|
||||
|
||||
for (Map.Entry<String, JsonElement> entry : map.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
JsonElement element = entry.getValue();
|
||||
boolean valid = false;
|
||||
|
||||
if (element.isJsonObject()) {
|
||||
ItemData data = gson.fromJson(element, ItemData.class);
|
||||
items.put(key, data);
|
||||
valid = true;
|
||||
} else {
|
||||
try {
|
||||
String target = element.getAsString();
|
||||
itemAliases.put(key, target);
|
||||
valid = true;
|
||||
} catch (Exception ignored) {}
|
||||
}
|
||||
|
||||
if (valid) {
|
||||
allAliases.add(key);
|
||||
} else {
|
||||
LOGGER.warning(String.format("Failed to add item: \"%s\": %s", key, element.toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack get(String id) throws Exception {
|
||||
id = id.toLowerCase();
|
||||
final String[] split = id.split(":");
|
||||
|
||||
ItemData data = getByName(split[0]);
|
||||
|
||||
if (data == null) {
|
||||
throw new Exception(tl("unknownItemName", id));
|
||||
}
|
||||
|
||||
PotionData potionData = data.getPotionData();
|
||||
Material material = data.getMaterial();
|
||||
|
||||
ItemStack stack = new ItemStack(material);
|
||||
stack.setAmount(material.getMaxStackSize());
|
||||
|
||||
ItemMeta meta = stack.getItemMeta();
|
||||
|
||||
if (potionData != null && meta instanceof PotionMeta) {
|
||||
PotionMeta potionMeta = (PotionMeta) meta;
|
||||
potionMeta.setBasePotionData(potionData);
|
||||
}
|
||||
|
||||
// For some reason, Damageable doesn't extend ItemMeta but CB implements them in the same
|
||||
// class. As to why, your guess is as good as mine.
|
||||
if (split.length > 1 && meta instanceof Damageable) {
|
||||
Damageable damageMeta = (Damageable) meta;
|
||||
damageMeta.setDamage(Integer.parseInt(split[1]));
|
||||
}
|
||||
|
||||
stack.setItemMeta(meta);
|
||||
|
||||
return stack;
|
||||
}
|
||||
|
||||
private ItemData getByName(String name) {
|
||||
name = name.toLowerCase();
|
||||
if (items.containsKey(name)) {
|
||||
return items.get(name);
|
||||
} else if (itemAliases.containsKey(name)) {
|
||||
return items.get(itemAliases.get(name));
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> nameList(ItemStack item) {
|
||||
List<String> names = new ArrayList<>();
|
||||
String primaryName = name(item);
|
||||
names.add(primaryName);
|
||||
|
||||
for (Map.Entry<String, String> entry : itemAliases.entrySet()) {
|
||||
if (entry.getValue().equalsIgnoreCase(primaryName)) {
|
||||
names.add(entry.getKey());
|
||||
}
|
||||
}
|
||||
|
||||
return names;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String name(ItemStack item) {
|
||||
Material type = item.getType();
|
||||
PotionData potion = null;
|
||||
|
||||
if (MaterialUtil.isPotion(type) && item.getItemMeta() instanceof PotionMeta) {
|
||||
potion = ((PotionMeta) item.getItemMeta()).getBasePotionData();
|
||||
}
|
||||
|
||||
ItemData data = new ItemData(type, potion);
|
||||
|
||||
for (Map.Entry<String, ItemData> entry : items.entrySet()) {
|
||||
if (entry.getValue().equals(data)) {
|
||||
return entry.getKey();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public int getLegacyId(Material material) throws Exception {
|
||||
throw new UnsupportedOperationException("Legacy IDs aren't supported on this version.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> listNames() {
|
||||
return Collections.unmodifiableSet(allAliases);
|
||||
}
|
||||
|
||||
public static class ItemData {
|
||||
private Material material;
|
||||
private PotionData potionData;
|
||||
|
||||
public ItemData(Material material, PotionData potionData) {
|
||||
this.material = material;
|
||||
this.potionData = potionData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (31 * material.hashCode()) ^ potionData.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null) {
|
||||
return false;
|
||||
}
|
||||
if (!(o instanceof ItemData)) {
|
||||
return false;
|
||||
}
|
||||
ItemData that = (ItemData) o;
|
||||
return this.material == that.getMaterial() && potionDataEquals(that);
|
||||
}
|
||||
|
||||
public Material getMaterial() {
|
||||
return material;
|
||||
}
|
||||
|
||||
public PotionData getPotionData() {
|
||||
return this.potionData;
|
||||
}
|
||||
|
||||
private boolean potionDataEquals(ItemData o) {
|
||||
if (this.potionData == null && o.getPotionData() == null) {
|
||||
return true;
|
||||
} else if (this.potionData != null && o.getPotionData() != null) {
|
||||
return this.potionData.equals(o.getPotionData());
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
316
Essentials/src/com/earth2me/essentials/items/LegacyItemDb.java
Normal file
316
Essentials/src/com/earth2me/essentials/items/LegacyItemDb.java
Normal file
@ -0,0 +1,316 @@
|
||||
package com.earth2me.essentials.items;
|
||||
|
||||
import com.earth2me.essentials.ManagedFile;
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.nms.refl.ReflUtil;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
|
||||
public class LegacyItemDb extends AbstractItemDb {
|
||||
protected static final Logger LOGGER = Logger.getLogger("Essentials");
|
||||
private final transient IEssentials ess;
|
||||
private final transient Map<String, Integer> items = new HashMap<>();
|
||||
private final transient Map<ItemData, List<String>> names = new HashMap<>();
|
||||
private final transient Map<ItemData, String> primaryName = new HashMap<>();
|
||||
private final transient Map<Integer, ItemData> legacyIds = new HashMap<>();
|
||||
private final transient Map<String, Short> durabilities = new HashMap<>();
|
||||
private final transient Map<String, String> nbtData = new HashMap<>();
|
||||
private final transient ManagedFile file;
|
||||
private final transient Pattern splitPattern = Pattern.compile("((.*)[:+',;.](\\d+))");
|
||||
private final transient Pattern csvSplitPattern = Pattern.compile("(\"([^\"]*)\"|[^,]*)(,|$)");
|
||||
|
||||
public LegacyItemDb(final IEssentials ess) {
|
||||
this.ess = ess;
|
||||
file = new ManagedFile("items.csv", ess);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reloadConfig() {
|
||||
final List<String> lines = file.getLines();
|
||||
|
||||
if (lines.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
durabilities.clear();
|
||||
items.clear();
|
||||
names.clear();
|
||||
primaryName.clear();
|
||||
|
||||
for (String line : lines) {
|
||||
if (line.length() > 0 && line.charAt(0) == '#') {
|
||||
continue;
|
||||
}
|
||||
|
||||
String itemName = null;
|
||||
int numeric = -1;
|
||||
short data = 0;
|
||||
String nbt = null;
|
||||
|
||||
int col = 0;
|
||||
Matcher matcher = csvSplitPattern.matcher(line);
|
||||
while (matcher.find()) {
|
||||
String match = matcher.group(1);
|
||||
if (StringUtils.stripToNull(match) == null) {
|
||||
continue;
|
||||
}
|
||||
match = StringUtils.strip(match.trim(), "\"");
|
||||
switch (col) {
|
||||
case 0:
|
||||
itemName = match.toLowerCase(Locale.ENGLISH);
|
||||
break;
|
||||
case 1:
|
||||
numeric = Integer.parseInt(match);
|
||||
break;
|
||||
case 2:
|
||||
data = Short.parseShort(match);
|
||||
break;
|
||||
case 3:
|
||||
nbt = StringUtils.stripToNull(match);
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
col++;
|
||||
}
|
||||
// Invalid row
|
||||
if (itemName == null || numeric < 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Material material = Material.matchMaterial(itemName);
|
||||
if (material == null) {
|
||||
LOGGER.warning(String.format("Failed to find material for %s", itemName));
|
||||
continue;
|
||||
}
|
||||
durabilities.put(itemName, data);
|
||||
items.put(itemName, numeric);
|
||||
if (nbt != null) {
|
||||
nbtData.put(itemName, nbt);
|
||||
}
|
||||
|
||||
ItemData itemData = new ItemData(material, numeric, data);
|
||||
if (names.containsKey(itemData)) {
|
||||
List<String> nameList = names.get(itemData);
|
||||
nameList.add(itemName);
|
||||
} else {
|
||||
List<String> nameList = new ArrayList<>();
|
||||
nameList.add(itemName);
|
||||
names.put(itemData, nameList);
|
||||
primaryName.put(itemData, itemName);
|
||||
}
|
||||
|
||||
legacyIds.put(numeric, itemData);
|
||||
}
|
||||
|
||||
for (List<String> nameList : names.values()) {
|
||||
Collections.sort(nameList, LengthCompare.INSTANCE);
|
||||
}
|
||||
|
||||
LOGGER.info(String.format("Loaded %s items from items.csv.", listNames().size()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack get(final String id) throws Exception {
|
||||
int itemid = 0;
|
||||
String itemname;
|
||||
short metaData = 0;
|
||||
Matcher parts = splitPattern.matcher(id);
|
||||
if (parts.matches()) {
|
||||
itemname = parts.group(2);
|
||||
metaData = Short.parseShort(parts.group(3));
|
||||
} else {
|
||||
itemname = id;
|
||||
}
|
||||
|
||||
if (NumberUtil.isInt(itemname)) {
|
||||
itemid = Integer.parseInt(itemname);
|
||||
} else if (NumberUtil.isInt(id)) {
|
||||
itemid = Integer.parseInt(id);
|
||||
} else {
|
||||
itemname = itemname.toLowerCase(Locale.ENGLISH);
|
||||
}
|
||||
|
||||
if (itemid < 1) {
|
||||
if (items.containsKey(itemname)) {
|
||||
itemid = items.get(itemname);
|
||||
if (durabilities.containsKey(itemname) && metaData == 0) {
|
||||
metaData = durabilities.get(itemname);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (itemid < 1) {
|
||||
throw new Exception(tl("unknownItemName", itemname));
|
||||
}
|
||||
|
||||
ItemData data = legacyIds.get(itemid);
|
||||
if (data == null) {
|
||||
throw new Exception(tl("unknownItemId", itemid));
|
||||
}
|
||||
|
||||
Material mat = data.getMaterial();
|
||||
ItemStack retval = new ItemStack(mat);
|
||||
if (nbtData.containsKey(itemname)) {
|
||||
String nbt = nbtData.get(itemname);
|
||||
if (nbt.startsWith("*")) {
|
||||
nbt = nbtData.get(nbt.substring(1));
|
||||
}
|
||||
retval = ess.getServer().getUnsafe().modifyItemStack(retval, nbt);
|
||||
}
|
||||
Material MOB_SPAWNER = EnumUtil.getMaterial("SPAWNER", "MOB_SPAWNER");
|
||||
if (mat == MOB_SPAWNER) {
|
||||
if (metaData == 0) metaData = EntityType.PIG.getTypeId();
|
||||
try {
|
||||
retval = ess.getSpawnerProvider().setEntityType(retval, EntityType.fromId(metaData));
|
||||
} catch (IllegalArgumentException e) {
|
||||
throw new Exception("Can't spawn entity ID " + metaData + " from mob spawners.");
|
||||
}
|
||||
} else if (mat.name().contains("MONSTER_EGG")) {
|
||||
EntityType type;
|
||||
try {
|
||||
type = EntityType.fromId(metaData);
|
||||
} catch (IllegalArgumentException e) {
|
||||
throw new Exception("Can't spawn entity ID " + metaData + " from spawn eggs.");
|
||||
}
|
||||
retval = ess.getSpawnEggProvider().createEggItem(type);
|
||||
} else if (mat.name().endsWith("POTION")
|
||||
&& ReflUtil.getNmsVersionObject().isLowerThan(ReflUtil.V1_11_R1)) { // Only apply this to pre-1.11 as items.csv might only work in 1.11
|
||||
retval = ess.getPotionMetaProvider().createPotionItem(mat, metaData);
|
||||
} else {
|
||||
retval.setDurability(metaData);
|
||||
}
|
||||
retval.setAmount(mat.getMaxStackSize());
|
||||
return retval;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> nameList(ItemStack item) {
|
||||
ItemData itemData = new ItemData(item.getType(), item.getDurability());
|
||||
List<String> nameList = names.get(itemData);
|
||||
if (nameList == null) {
|
||||
itemData = new ItemData(item.getType(), (short) 0);
|
||||
nameList = names.get(itemData);
|
||||
if (nameList == null) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return Collections.unmodifiableList(nameList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String name(ItemStack item) {
|
||||
ItemData itemData = new ItemData(item.getType(), item.getDurability());
|
||||
String name = primaryName.get(itemData);
|
||||
if (name == null) {
|
||||
itemData = new ItemData(item.getType(), (short) 0);
|
||||
name = primaryName.get(itemData);
|
||||
if (name == null) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Material getFromLegacy(final int id, final byte damage) {
|
||||
ItemData data = this.legacyIds.get(id);
|
||||
if (data == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return data.getMaterial();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLegacyId(Material material) throws Exception {
|
||||
for(Map.Entry<String, Integer> entry : items.entrySet()) {
|
||||
if(material.name().toLowerCase(Locale.ENGLISH).equalsIgnoreCase(entry.getKey())) {
|
||||
return entry.getValue();
|
||||
}
|
||||
}
|
||||
|
||||
throw new Exception("Itemid not found for material: " + material.name());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> listNames() {
|
||||
return primaryName.values();
|
||||
}
|
||||
|
||||
static class ItemData {
|
||||
final private Material material;
|
||||
private int legacyId;
|
||||
final private short itemData;
|
||||
|
||||
ItemData(Material material, short itemData) {
|
||||
this.material = material;
|
||||
this.itemData = itemData;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
ItemData(Material material, final int legacyId, final short itemData) {
|
||||
this.material = material;
|
||||
this.legacyId = legacyId;
|
||||
this.itemData = itemData;
|
||||
}
|
||||
|
||||
public Material getMaterial() {
|
||||
return material;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public int getItemNo() {
|
||||
return legacyId;
|
||||
}
|
||||
|
||||
public short getItemData() {
|
||||
return itemData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (31 * material.hashCode()) ^ itemData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null) {
|
||||
return false;
|
||||
}
|
||||
if (!(o instanceof ItemData)) {
|
||||
return false;
|
||||
}
|
||||
ItemData pairo = (ItemData) o;
|
||||
return this.material == pairo.getMaterial() && this.itemData == pairo.getItemData();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static class LengthCompare implements java.util.Comparator<String> {
|
||||
|
||||
private static final LengthCompare INSTANCE = new LengthCompare();
|
||||
|
||||
public LengthCompare() {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compare(String s1, String s2) {
|
||||
return s1.length() - s2.length();
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -42,11 +42,6 @@ public class Methods {
|
||||
* Implement all methods along with their respective name & class.
|
||||
*/
|
||||
private static void _init() {
|
||||
addMethod("iConomy", new com.earth2me.essentials.register.payment.methods.iCo6());
|
||||
addMethod("iConomy", new com.earth2me.essentials.register.payment.methods.iCo5());
|
||||
addMethod("BOSEconomy", new com.earth2me.essentials.register.payment.methods.BOSE7());
|
||||
addMethod("Currency", new com.earth2me.essentials.register.payment.methods.MCUR());
|
||||
Dependencies.add("MultiCurrency");
|
||||
addMethod("Vault", new com.earth2me.essentials.register.payment.methods.VaultEco());
|
||||
}
|
||||
|
||||
|
@ -1,271 +0,0 @@
|
||||
package com.earth2me.essentials.register.payment.methods;
|
||||
|
||||
import com.earth2me.essentials.register.payment.Method;
|
||||
import cosine.boseconomy.BOSEconomy;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
||||
/**
|
||||
* BOSEconomy 7 Implementation of Method
|
||||
*
|
||||
* @author Acrobot
|
||||
* @author Nijikokun <nijikokun@shortmail.com> (@nijikokun) @copyright (c) 2011 @license AOL license
|
||||
* <http://aol.nexua.org>
|
||||
*/
|
||||
public class BOSE7 implements Method {
|
||||
private BOSEconomy BOSEconomy;
|
||||
|
||||
@Override
|
||||
public BOSEconomy getPlugin() {
|
||||
return this.BOSEconomy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "BOSEconomy";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLongName() {
|
||||
return getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return "0.7.0";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int fractionalDigits() {
|
||||
return this.BOSEconomy.getFractionalDigits();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String format(double amount) {
|
||||
String currency = this.BOSEconomy.getMoneyNamePlural();
|
||||
|
||||
if (amount == 1) {
|
||||
currency = this.BOSEconomy.getMoneyName();
|
||||
}
|
||||
|
||||
return amount + " " + currency;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBanks() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBank(String bank) {
|
||||
return this.BOSEconomy.bankExists(bank);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasAccount(String name) {
|
||||
return this.BOSEconomy.playerRegistered(name, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBankAccount(String bank, String name) {
|
||||
return this.BOSEconomy.isBankOwner(bank, name) || this.BOSEconomy.isBankMember(bank, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean createAccount(String name) {
|
||||
if (hasAccount(name)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.BOSEconomy.registerPlayer(name);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean createAccount(String name, Double balance) {
|
||||
if (hasAccount(name)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.BOSEconomy.registerPlayer(name);
|
||||
this.BOSEconomy.setPlayerMoney(name, balance, false);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MethodAccount getAccount(String name) {
|
||||
if (!hasAccount(name)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new BOSEAccount(name, this.BOSEconomy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MethodBankAccount getBankAccount(String bank, String name) {
|
||||
if (!hasBankAccount(bank, name)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new BOSEBankAccount(bank, BOSEconomy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCompatible(Plugin plugin) {
|
||||
return plugin.getDescription().getName().equalsIgnoreCase("boseconomy") && plugin instanceof BOSEconomy && !plugin.getDescription().getVersion().equals("0.6.2");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlugin(Plugin plugin) {
|
||||
BOSEconomy = (BOSEconomy) plugin;
|
||||
}
|
||||
|
||||
|
||||
public class BOSEAccount implements MethodAccount {
|
||||
private final String name;
|
||||
private final BOSEconomy BOSEconomy;
|
||||
|
||||
public BOSEAccount(String name, BOSEconomy bOSEconomy) {
|
||||
this.name = name;
|
||||
this.BOSEconomy = bOSEconomy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double balance() {
|
||||
return this.BOSEconomy.getPlayerMoneyDouble(this.name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean set(double amount) {
|
||||
return this.BOSEconomy.setPlayerMoney(this.name, amount, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean add(double amount) {
|
||||
return this.BOSEconomy.addPlayerMoney(this.name, amount, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean subtract(double amount) {
|
||||
double balance = this.balance();
|
||||
return this.BOSEconomy.setPlayerMoney(this.name, (balance - amount), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean multiply(double amount) {
|
||||
double balance = this.balance();
|
||||
return this.BOSEconomy.setPlayerMoney(this.name, (balance * amount), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean divide(double amount) {
|
||||
double balance = this.balance();
|
||||
return this.BOSEconomy.setPlayerMoney(this.name, (balance / amount), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasEnough(double amount) {
|
||||
return (this.balance() >= amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasOver(double amount) {
|
||||
return (this.balance() > amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasUnder(double amount) {
|
||||
return (this.balance() < amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNegative() {
|
||||
return (this.balance() < 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean remove() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class BOSEBankAccount implements MethodBankAccount {
|
||||
private final String bank;
|
||||
private final BOSEconomy BOSEconomy;
|
||||
|
||||
public BOSEBankAccount(String bank, BOSEconomy bOSEconomy) {
|
||||
this.bank = bank;
|
||||
this.BOSEconomy = bOSEconomy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBankName() {
|
||||
return this.bank;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBankId() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double balance() {
|
||||
return this.BOSEconomy.getBankMoneyDouble(bank);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean set(double amount) {
|
||||
return this.BOSEconomy.setBankMoney(bank, amount, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean add(double amount) {
|
||||
double balance = this.balance();
|
||||
return this.BOSEconomy.setBankMoney(bank, (balance + amount), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean subtract(double amount) {
|
||||
double balance = this.balance();
|
||||
return this.BOSEconomy.setBankMoney(bank, (balance - amount), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean multiply(double amount) {
|
||||
double balance = this.balance();
|
||||
return this.BOSEconomy.setBankMoney(bank, (balance * amount), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean divide(double amount) {
|
||||
double balance = this.balance();
|
||||
return this.BOSEconomy.setBankMoney(bank, (balance / amount), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasEnough(double amount) {
|
||||
return (this.balance() >= amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasOver(double amount) {
|
||||
return (this.balance() > amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasUnder(double amount) {
|
||||
return (this.balance() < amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNegative() {
|
||||
return (this.balance() < 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean remove() {
|
||||
return this.BOSEconomy.removeBank(bank);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,163 +0,0 @@
|
||||
package com.earth2me.essentials.register.payment.methods;
|
||||
|
||||
import com.earth2me.essentials.register.payment.Method;
|
||||
import me.ashtheking.currency.Currency;
|
||||
import me.ashtheking.currency.CurrencyList;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
||||
/**
|
||||
* MultiCurrency Method implementation.
|
||||
*
|
||||
* @author Acrobot @copyright (c) 2011 @license AOL license <http://aol.nexua.org>
|
||||
*/
|
||||
public class MCUR implements Method {
|
||||
private Currency currencyList;
|
||||
|
||||
@Override
|
||||
public Object getPlugin() {
|
||||
return this.currencyList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "MultiCurrency";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLongName() {
|
||||
return getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return "0.09";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int fractionalDigits() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String format(double amount) {
|
||||
return amount + " Currency";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBanks() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBank(String bank) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasAccount(String name) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBankAccount(String bank, String name) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean createAccount(String name) {
|
||||
CurrencyList.setValue((String) CurrencyList.maxCurrency(name)[0], name, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean createAccount(String name, Double balance) {
|
||||
CurrencyList.setValue((String) CurrencyList.maxCurrency(name)[0], name, balance);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MethodAccount getAccount(String name) {
|
||||
return new MCurrencyAccount(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MethodBankAccount getBankAccount(String bank, String name) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCompatible(Plugin plugin) {
|
||||
return (plugin.getDescription().getName().equalsIgnoreCase("Currency") || plugin.getDescription().getName().equalsIgnoreCase("MultiCurrency")) && plugin instanceof Currency;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlugin(Plugin plugin) {
|
||||
currencyList = (Currency) plugin;
|
||||
}
|
||||
|
||||
|
||||
public class MCurrencyAccount implements MethodAccount {
|
||||
private final String name;
|
||||
|
||||
public MCurrencyAccount(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double balance() {
|
||||
return CurrencyList.getValue((String) CurrencyList.maxCurrency(name)[0], name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean set(double amount) {
|
||||
CurrencyList.setValue((String) CurrencyList.maxCurrency(name)[0], name, amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean add(double amount) {
|
||||
return CurrencyList.add(name, amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean subtract(double amount) {
|
||||
return CurrencyList.subtract(name, amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean multiply(double amount) {
|
||||
return CurrencyList.multiply(name, amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean divide(double amount) {
|
||||
return CurrencyList.divide(name, amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasEnough(double amount) {
|
||||
return CurrencyList.hasEnough(name, amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasOver(double amount) {
|
||||
return CurrencyList.hasOver(name, amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasUnder(double amount) {
|
||||
return CurrencyList.hasUnder(name, amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNegative() {
|
||||
return CurrencyList.isNegative(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean remove() {
|
||||
return CurrencyList.remove(name);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,312 +0,0 @@
|
||||
package com.earth2me.essentials.register.payment.methods;
|
||||
|
||||
import com.earth2me.essentials.register.payment.Method;
|
||||
import com.iConomy.iConomy;
|
||||
import com.iConomy.system.Account;
|
||||
import com.iConomy.system.BankAccount;
|
||||
import com.iConomy.system.Holdings;
|
||||
import com.iConomy.util.Constants;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
||||
/**
|
||||
* iConomy 5 Implementation of Method
|
||||
*
|
||||
* @author Nijikokun <nijikokun@shortmail.com> (@nijikokun) @copyright (c) 2011 @license AOL license
|
||||
* <http://aol.nexua.org>
|
||||
*/
|
||||
public class iCo5 implements Method {
|
||||
private iConomy iConomy;
|
||||
|
||||
@Override
|
||||
public iConomy getPlugin() {
|
||||
return this.iConomy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "iConomy";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLongName() {
|
||||
return getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return "5";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int fractionalDigits() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String format(double amount) {
|
||||
return com.iConomy.iConomy.format(amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBanks() {
|
||||
return Constants.Banking;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBank(String bank) {
|
||||
return (hasBanks()) && com.iConomy.iConomy.Banks.exists(bank);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasAccount(String name) {
|
||||
return com.iConomy.iConomy.hasAccount(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBankAccount(String bank, String name) {
|
||||
return (hasBank(bank)) && com.iConomy.iConomy.getBank(bank).hasAccount(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean createAccount(String name) {
|
||||
if (hasAccount(name)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return com.iConomy.iConomy.Accounts.create(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean createAccount(String name, Double balance) {
|
||||
if (hasAccount(name)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!com.iConomy.iConomy.Accounts.create(name)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
getAccount(name).set(balance);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MethodAccount getAccount(String name) {
|
||||
return new iCoAccount(com.iConomy.iConomy.getAccount(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public MethodBankAccount getBankAccount(String bank, String name) {
|
||||
return new iCoBankAccount(com.iConomy.iConomy.getBank(bank).getAccount(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCompatible(Plugin plugin) {
|
||||
return plugin.getDescription().getName().equalsIgnoreCase("iconomy") && plugin.getClass().getName().equals("com.iConomy.iConomy") && plugin instanceof iConomy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlugin(Plugin plugin) {
|
||||
iConomy = (iConomy) plugin;
|
||||
}
|
||||
|
||||
|
||||
public class iCoAccount implements MethodAccount {
|
||||
private final Account account;
|
||||
private final Holdings holdings;
|
||||
|
||||
public iCoAccount(Account account) {
|
||||
this.account = account;
|
||||
this.holdings = account.getHoldings();
|
||||
}
|
||||
|
||||
public Account getiCoAccount() {
|
||||
return account;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double balance() {
|
||||
return this.holdings.balance();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean set(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.set(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean add(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.add(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean subtract(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.subtract(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean multiply(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.multiply(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean divide(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.divide(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasEnough(double amount) {
|
||||
return this.holdings.hasEnough(amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasOver(double amount) {
|
||||
return this.holdings.hasOver(amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasUnder(double amount) {
|
||||
return this.holdings.hasUnder(amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNegative() {
|
||||
return this.holdings.isNegative();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean remove() {
|
||||
if (this.account == null) {
|
||||
return false;
|
||||
}
|
||||
this.account.remove();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class iCoBankAccount implements MethodBankAccount {
|
||||
private final BankAccount account;
|
||||
private final Holdings holdings;
|
||||
|
||||
public iCoBankAccount(BankAccount account) {
|
||||
this.account = account;
|
||||
this.holdings = account.getHoldings();
|
||||
}
|
||||
|
||||
public BankAccount getiCoBankAccount() {
|
||||
return account;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBankName() {
|
||||
return this.account.getBankName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBankId() {
|
||||
return this.account.getBankId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public double balance() {
|
||||
return this.holdings.balance();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean set(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.set(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean add(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.add(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean subtract(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.subtract(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean multiply(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.multiply(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean divide(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.divide(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasEnough(double amount) {
|
||||
return this.holdings.hasEnough(amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasOver(double amount) {
|
||||
return this.holdings.hasOver(amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasUnder(double amount) {
|
||||
return this.holdings.hasUnder(amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNegative() {
|
||||
return this.holdings.isNegative();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean remove() {
|
||||
if (this.account == null) {
|
||||
return false;
|
||||
}
|
||||
this.account.remove();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,201 +0,0 @@
|
||||
package com.earth2me.essentials.register.payment.methods;
|
||||
|
||||
import com.earth2me.essentials.register.payment.Method;
|
||||
import com.iCo6.iConomy;
|
||||
import com.iCo6.system.Account;
|
||||
import com.iCo6.system.Accounts;
|
||||
import com.iCo6.system.Holdings;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
||||
/**
|
||||
* iConomy 6 Implementation of Method
|
||||
*
|
||||
* @author Nijikokun <nijikokun@shortmail.com> (@nijikokun) @copyright (c) 2011 @license AOL license
|
||||
* <http://aol.nexua.org>
|
||||
*/
|
||||
public class iCo6 implements Method {
|
||||
private iConomy iConomy;
|
||||
|
||||
@Override
|
||||
public iConomy getPlugin() {
|
||||
return this.iConomy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "iConomy";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLongName() {
|
||||
return getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return "6";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int fractionalDigits() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String format(double amount) {
|
||||
return com.iCo6.iConomy.format(amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBanks() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBank(String bank) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasAccount(String name) {
|
||||
return (new Accounts()).exists(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBankAccount(String bank, String name) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean createAccount(String name) {
|
||||
if (hasAccount(name)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (new Accounts()).create(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean createAccount(String name, Double balance) {
|
||||
if (hasAccount(name)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (new Accounts()).create(name, balance);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MethodAccount getAccount(String name) {
|
||||
return new iCoAccount((new Accounts()).get(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public MethodBankAccount getBankAccount(String bank, String name) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCompatible(Plugin plugin) {
|
||||
return plugin.getDescription().getName().equalsIgnoreCase("iconomy") && plugin.getClass().getName().equals("com.iCo6.iConomy") && plugin instanceof iConomy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlugin(Plugin plugin) {
|
||||
iConomy = (iConomy) plugin;
|
||||
}
|
||||
|
||||
|
||||
public class iCoAccount implements MethodAccount {
|
||||
private final Account account;
|
||||
private final Holdings holdings;
|
||||
|
||||
public iCoAccount(Account account) {
|
||||
this.account = account;
|
||||
this.holdings = account.getHoldings();
|
||||
}
|
||||
|
||||
public Account getiCoAccount() {
|
||||
return account;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double balance() {
|
||||
return this.holdings.getBalance();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean set(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.setBalance(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean add(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.add(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean subtract(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.subtract(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean multiply(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.multiply(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean divide(double amount) {
|
||||
if (this.holdings == null) {
|
||||
return false;
|
||||
}
|
||||
this.holdings.divide(amount);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasEnough(double amount) {
|
||||
return this.holdings.hasEnough(amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasOver(double amount) {
|
||||
return this.holdings.hasOver(amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasUnder(double amount) {
|
||||
return this.holdings.hasUnder(amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNegative() {
|
||||
return this.holdings.isNegative();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean remove() {
|
||||
if (this.account == null) {
|
||||
return false;
|
||||
}
|
||||
this.account.remove();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
@ -9,8 +9,7 @@ import org.bukkit.Location;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@Data @EqualsAndHashCode(callSuper = false) public class Spawns implements StorageObject {
|
||||
@MapValueType(Location.class)
|
||||
private Map<String, Location> spawns = new HashMap<String, Location>();
|
||||
private Map<String, Location> spawns = new HashMap<>();
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.earth2me.essentials.signs;
|
||||
|
||||
import com.earth2me.essentials.*;
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.MaxMoneyException;
|
||||
@ -25,6 +26,7 @@ import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
|
||||
public class EssentialsSign {
|
||||
private static final Material SIGN_POST = EnumUtil.getMaterial("SIGN", "SIGN_POST");
|
||||
private static final Set<Material> EMPTY_SET = new HashSet<Material>();
|
||||
protected static final BigDecimal MINTRANSACTION = new BigDecimal("0.01");
|
||||
protected transient final String signName;
|
||||
@ -58,9 +60,7 @@ public class EssentialsSign {
|
||||
sign.setLine(0, getSuccessName(ess));
|
||||
}
|
||||
return ret;
|
||||
} catch (ChargeException ex) {
|
||||
showError(ess, user.getSource(), ex, signName);
|
||||
} catch (SignException ex) {
|
||||
} catch (ChargeException | SignException ex) {
|
||||
showError(ess, user.getSource(), ex, signName);
|
||||
}
|
||||
// Return true, so the player sees the wrong sign.
|
||||
@ -115,9 +115,6 @@ public class EssentialsSign {
|
||||
}
|
||||
|
||||
return onSignInteract(sign, user, getUsername(user), ess);
|
||||
} catch (ChargeException ex) {
|
||||
showError(ess, user.getSource(), ex, signName);
|
||||
return false;
|
||||
} catch (Exception ex) {
|
||||
showError(ess, user.getSource(), ex, signName);
|
||||
return false;
|
||||
@ -161,9 +158,7 @@ public class EssentialsSign {
|
||||
User user = ess.getUser(player);
|
||||
try {
|
||||
return onBlockPlace(block, user, getUsername(user), ess);
|
||||
} catch (ChargeException ex) {
|
||||
showError(ess, user.getSource(), ex, signName);
|
||||
} catch (SignException ex) {
|
||||
} catch (ChargeException | SignException ex) {
|
||||
showError(ess, user.getSource(), ex, signName);
|
||||
}
|
||||
return false;
|
||||
@ -173,9 +168,7 @@ public class EssentialsSign {
|
||||
User user = ess.getUser(player);
|
||||
try {
|
||||
return onBlockInteract(block, user, getUsername(user), ess);
|
||||
} catch (ChargeException ex) {
|
||||
showError(ess, user.getSource(), ex, signName);
|
||||
} catch (SignException ex) {
|
||||
} catch (ChargeException | SignException ex) {
|
||||
showError(ess, user.getSource(), ex, signName);
|
||||
}
|
||||
return false;
|
||||
@ -213,7 +206,7 @@ public class EssentialsSign {
|
||||
|
||||
protected static boolean checkIfBlockBreaksSigns(final Block block) {
|
||||
final Block sign = block.getRelative(BlockFace.UP);
|
||||
if (sign.getType() == Material.SIGN_POST && isValidSign(new BlockSign(sign))) {
|
||||
if (sign.getType() == SIGN_POST && isValidSign(new BlockSign(sign))) {
|
||||
return true;
|
||||
}
|
||||
final BlockFace[] directions = new BlockFace[]{BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST};
|
||||
@ -309,7 +302,7 @@ public class EssentialsSign {
|
||||
final int amount = getIntegerPositive(getSignText(sign, amountIndex));
|
||||
return new Trade(amount, ess);
|
||||
}
|
||||
final ItemStack item = getItemStack(itemType, 1, ess);
|
||||
final ItemStack item = getItemStack(itemType, 1, true, ess);
|
||||
final int amount = Math.min(getIntegerPositive(getSignText(sign, amountIndex)), item.getType().getMaxStackSize() * player.getBase().getInventory().getSize());
|
||||
if (item.getType() == Material.AIR || amount < 1) {
|
||||
throw new SignException(tl("moreThanZero"));
|
||||
@ -346,6 +339,17 @@ public class EssentialsSign {
|
||||
}
|
||||
|
||||
protected final ItemStack getItemStack(final String itemName, final int quantity, final IEssentials ess) throws SignException {
|
||||
return getItemStack(itemName, quantity, false, ess);
|
||||
}
|
||||
|
||||
protected final ItemStack getItemStack(final String itemName, final int quantity, final boolean allowId, final IEssentials ess) throws SignException {
|
||||
if (allowId && ess.getSettings().allowOldIdSigns()) {
|
||||
final Material newMaterial = ess.getItemDb().getFromLegacy(itemName);
|
||||
if (newMaterial != null) {
|
||||
return new ItemStack(newMaterial, quantity);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
final ItemStack item = ess.getItemDb().get(itemName);
|
||||
item.setAmount(quantity);
|
||||
@ -420,7 +424,7 @@ public class EssentialsSign {
|
||||
sign.setLine(index, quantity + " exp");
|
||||
return new Trade(quantity, ess);
|
||||
} else {
|
||||
final ItemStack stack = getItemStack(item, quantity, ess);
|
||||
final ItemStack stack = getItemStack(item, quantity, true, ess);
|
||||
sign.setLine(index, quantity + " " + item);
|
||||
return new Trade(stack, ess);
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.earth2me.essentials.signs;
|
||||
|
||||
import com.earth2me.essentials.I18n;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
import com.earth2me.essentials.utils.FormatUtil;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.MaxMoneyException;
|
||||
@ -22,7 +23,7 @@ import java.util.logging.Logger;
|
||||
public class SignBlockListener implements Listener {
|
||||
private static final Logger LOGGER = Logger.getLogger("Essentials");
|
||||
private static final Material WALL_SIGN = Material.WALL_SIGN;
|
||||
private static final Material SIGN_POST = Material.SIGN_POST;
|
||||
private static final Material SIGN_POST = EnumUtil.getMaterial("SIGN", "SIGN_POST");
|
||||
private final transient IEssentials ess;
|
||||
|
||||
public SignBlockListener(IEssentials ess) {
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.earth2me.essentials.signs;
|
||||
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
import net.ess3.api.IEssentials;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@ -11,6 +12,8 @@ import org.bukkit.event.entity.EntityExplodeEvent;
|
||||
|
||||
|
||||
public class SignEntityListener implements Listener {
|
||||
|
||||
private static final Material SIGN_POST = EnumUtil.getMaterial("SIGN", "SIGN_POST");
|
||||
private final transient IEssentials ess;
|
||||
|
||||
public SignEntityListener(final IEssentials ess) {
|
||||
@ -25,7 +28,7 @@ public class SignEntityListener implements Listener {
|
||||
}
|
||||
|
||||
for (Block block : event.blockList()) {
|
||||
if (((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) {
|
||||
if (((block.getType() == Material.WALL_SIGN || block.getType() == SIGN_POST) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
@ -46,7 +49,7 @@ public class SignEntityListener implements Listener {
|
||||
}
|
||||
|
||||
final Block block = event.getBlock();
|
||||
if (((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) {
|
||||
if (((block.getType() == Material.WALL_SIGN || block.getType() == SIGN_POST) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.earth2me.essentials.signs;
|
||||
|
||||
import com.earth2me.essentials.utils.MaterialUtil;
|
||||
import net.ess3.api.IEssentials;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@ -54,7 +55,7 @@ public class SignPlayerListener implements Listener {
|
||||
}
|
||||
|
||||
final Material mat = block.getType();
|
||||
if (mat == Material.SIGN_POST || mat == Material.WALL_SIGN) {
|
||||
if (MaterialUtil.isSign(mat)) {
|
||||
final String csign = ((Sign) block.getState()).getLine(0);
|
||||
for (EssentialsSign sign : ess.getSettings().enabledSigns()) {
|
||||
if (csign.equalsIgnoreCase(sign.getSuccessName(ess))) {
|
||||
|
@ -4,7 +4,9 @@ import com.earth2me.essentials.ChargeException;
|
||||
import com.earth2me.essentials.Trade;
|
||||
import com.earth2me.essentials.Trade.OverflowType;
|
||||
import com.earth2me.essentials.User;
|
||||
import com.earth2me.essentials.utils.EnumUtil;
|
||||
import com.earth2me.essentials.utils.FormatUtil;
|
||||
import com.earth2me.essentials.utils.MaterialUtil;
|
||||
import net.ess3.api.IEssentials;
|
||||
import net.ess3.api.MaxMoneyException;
|
||||
import org.bukkit.Location;
|
||||
@ -21,14 +23,14 @@ import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
@Deprecated // This sign will be removed soon
|
||||
public class SignProtection extends EssentialsSign {
|
||||
private final transient Set<Material> protectedBlocks = EnumSet.noneOf(Material.class);
|
||||
private final transient Set<Material> protectedBlocks = EnumUtil.getAllMatching(Material.class,
|
||||
"CHEST",
|
||||
"FURNACE",
|
||||
"BURNING_FURNACE",
|
||||
"DISPENSER");
|
||||
|
||||
public SignProtection() {
|
||||
super("Protection");
|
||||
protectedBlocks.add(Material.CHEST);
|
||||
protectedBlocks.add(Material.BURNING_FURNACE);
|
||||
protectedBlocks.add(Material.FURNACE);
|
||||
protectedBlocks.add(Material.DISPENSER);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -103,7 +105,7 @@ public class SignProtection extends EssentialsSign {
|
||||
}
|
||||
|
||||
private SignProtectionState checkProtectionSign(final Block block, final User user, final String username) {
|
||||
if (block.getType() == Material.SIGN_POST || block.getType() == Material.WALL_SIGN) {
|
||||
if (MaterialUtil.isSign(block.getType())) {
|
||||
final BlockSign sign = new BlockSign(block);
|
||||
if (sign.getLine(0).equals(this.getSuccessName())) { // TODO call getSuccessName(IEssentials)
|
||||
return checkProtectionSign(sign, user, username);
|
||||
@ -160,7 +162,7 @@ public class SignProtection extends EssentialsSign {
|
||||
public boolean isBlockProtected(final Block block) {
|
||||
final Block[] faces = getAdjacentBlocks(block);
|
||||
for (Block b : faces) {
|
||||
if (b.getType() == Material.SIGN_POST || b.getType() == Material.WALL_SIGN) {
|
||||
if (MaterialUtil.isSign(b.getType())) {
|
||||
final Sign sign = (Sign) b.getState();
|
||||
if (sign.getLine(0).equalsIgnoreCase("§1[Protection]")) {
|
||||
return true;
|
||||
@ -170,7 +172,7 @@ public class SignProtection extends EssentialsSign {
|
||||
final Block[] faceChest = getAdjacentBlocks(b);
|
||||
|
||||
for (Block a : faceChest) {
|
||||
if (a.getType() == Material.SIGN_POST || a.getType() == Material.WALL_SIGN) {
|
||||
if (MaterialUtil.isSign(a.getType())) {
|
||||
final Sign sign = (Sign) a.getState();
|
||||
if (sign.getLine(0).equalsIgnoreCase("§1[Protection]")) {
|
||||
return true;
|
||||
|
@ -237,7 +237,7 @@ public class SignTrade extends EssentialsSign {
|
||||
return new Trade((amountType == AmountType.COST ? stackamount : amount), ess);
|
||||
} else {
|
||||
final int stackamount = getIntegerPositive(split[0]);
|
||||
final ItemStack item = getItemStack(split[1], stackamount, ess);
|
||||
final ItemStack item = getItemStack(split[1], stackamount, true, ess);
|
||||
int amount = getInteger(split[2]);
|
||||
if (amountType == AmountType.ROUNDED) {
|
||||
amount -= amount % stackamount;
|
||||
|
@ -1,9 +1,11 @@
|
||||
package com.earth2me.essentials.storage;
|
||||
|
||||
import com.earth2me.essentials.Enchantments;
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -59,15 +61,9 @@ public class BukkitConstructor extends CustomClassLoaderConstructor {
|
||||
public Object construct(final Node node) {
|
||||
if (node.getType().equals(Material.class)) {
|
||||
final String val = constructScalarRefl((ScalarNode) node);
|
||||
Material mat;
|
||||
if (NumberUtil.isInt(val)) {
|
||||
final int typeId = Integer.parseInt(val);
|
||||
mat = Material.getMaterial(typeId);
|
||||
} else {
|
||||
mat = Material.matchMaterial(val);
|
||||
}
|
||||
return mat;
|
||||
return Material.matchMaterial(val);
|
||||
}
|
||||
|
||||
if (node.getType().equals(MaterialData.class)) {
|
||||
final String val = constructScalarRefl((ScalarNode) node);
|
||||
if (val.isEmpty()) {
|
||||
@ -77,13 +73,9 @@ public class BukkitConstructor extends CustomClassLoaderConstructor {
|
||||
if (split.length == 0) {
|
||||
return null;
|
||||
}
|
||||
Material mat;
|
||||
if (NumberUtil.isInt(split[0])) {
|
||||
final int typeId = Integer.parseInt(split[0]);
|
||||
mat = Material.getMaterial(typeId);
|
||||
} else {
|
||||
mat = Material.matchMaterial(split[0]);
|
||||
}
|
||||
|
||||
Material mat = Material.matchMaterial(split[0]);
|
||||
|
||||
if (mat == null) {
|
||||
return null;
|
||||
}
|
||||
@ -106,13 +98,9 @@ public class BukkitConstructor extends CustomClassLoaderConstructor {
|
||||
if (split2.length == 0) {
|
||||
return null;
|
||||
}
|
||||
Material mat;
|
||||
if (NumberUtil.isInt(split2[0])) {
|
||||
final int typeId = Integer.parseInt(split2[0]);
|
||||
mat = Material.getMaterial(typeId);
|
||||
} else {
|
||||
mat = Material.matchMaterial(split2[0]);
|
||||
}
|
||||
|
||||
Material mat = Material.matchMaterial(split2[0]);
|
||||
|
||||
if (mat == null) {
|
||||
return null;
|
||||
}
|
||||
@ -131,13 +119,7 @@ public class BukkitConstructor extends CustomClassLoaderConstructor {
|
||||
if (split3.length < 1) {
|
||||
continue;
|
||||
}
|
||||
Enchantment enchantment;
|
||||
if (NumberUtil.isInt(split3[0])) {
|
||||
final int enchantId = Integer.parseInt(split3[0]);
|
||||
enchantment = Enchantment.getById(enchantId);
|
||||
} else {
|
||||
enchantment = Enchantment.getByName(split3[0].toUpperCase(Locale.ENGLISH));
|
||||
}
|
||||
Enchantment enchantment = Enchantments.getByName(split3[0]);
|
||||
if (enchantment == null) {
|
||||
continue;
|
||||
}
|
||||
@ -165,13 +147,7 @@ public class BukkitConstructor extends CustomClassLoaderConstructor {
|
||||
if (split.length == 0) {
|
||||
return null;
|
||||
}
|
||||
Enchantment enchant;
|
||||
if (NumberUtil.isInt(split[0])) {
|
||||
final int typeId = Integer.parseInt(split[0]);
|
||||
enchant = Enchantment.getById(typeId);
|
||||
} else {
|
||||
enchant = Enchantment.getByName(split[0].toUpperCase(Locale.ENGLISH));
|
||||
}
|
||||
Enchantment enchant = Enchantments.getByName(split[0]);
|
||||
if (enchant == null) {
|
||||
return null;
|
||||
}
|
||||
|
81
Essentials/src/com/earth2me/essentials/utils/EnumUtil.java
Normal file
81
Essentials/src/com/earth2me/essentials/utils/EnumUtil.java
Normal file
@ -0,0 +1,81 @@
|
||||
package com.earth2me.essentials.utils;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Statistic;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class EnumUtil {
|
||||
|
||||
|
||||
/**
|
||||
* Returns the field matching the first provided enum name that exists within the given
|
||||
* enum class.
|
||||
*
|
||||
* @param enumClass The class to search through
|
||||
* @param names The names of the fields to search for
|
||||
* @param <T> The enum to search through
|
||||
* @return The first matching enum field
|
||||
*/
|
||||
public static <T extends Enum> T valueOf(Class<T> enumClass, String... names) {
|
||||
for (String name : names) {
|
||||
try {
|
||||
Field enumField = enumClass.getDeclaredField(name);
|
||||
|
||||
if (enumField.isEnumConstant()) {
|
||||
return (T) enumField.get(null);
|
||||
}
|
||||
} catch (NoSuchFieldException | IllegalAccessException ignored) {}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a set containing <b>all</b> fields of the given enum that maths one of the provided
|
||||
* names.
|
||||
*
|
||||
* @param enumClass The class to search through
|
||||
* @param names The names of the fields to search for
|
||||
* @param <T> The enum to search through
|
||||
* @return All matching enum fields
|
||||
*/
|
||||
public static <T extends Enum> Set<T> getAllMatching(Class<T> enumClass, String... names) {
|
||||
Set<T> set = new HashSet<>();
|
||||
|
||||
for (String name : names) {
|
||||
try {
|
||||
Field enumField = enumClass.getDeclaredField(name);
|
||||
|
||||
if (enumField.isEnumConstant()) {
|
||||
set.add((T) enumField.get(null));
|
||||
}
|
||||
} catch (NoSuchFieldException | IllegalAccessException ignored) {}
|
||||
}
|
||||
|
||||
return set;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the first Material field found from the given names.
|
||||
*
|
||||
* @param names The names of the fields to search for
|
||||
* @return The first matching Material
|
||||
*/
|
||||
public static Material getMaterial(String... names) {
|
||||
return valueOf(Material.class, names);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the first Statistic field found from the given names.
|
||||
*
|
||||
* @param names The names of the fields to search for
|
||||
* @return The first matching Statistic
|
||||
*/
|
||||
public static Statistic getStatistic(String... names) {
|
||||
return valueOf(Statistic.class, names);
|
||||
}
|
||||
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package com.earth2me.essentials.utils;
|
||||
|
||||
import com.earth2me.essentials.IEssentials;
|
||||
import net.ess3.api.IUser;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
@ -13,9 +14,6 @@ import java.util.*;
|
||||
|
||||
import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
import com.earth2me.essentials.Essentials;
|
||||
import com.earth2me.essentials.IEssentials;
|
||||
|
||||
|
||||
public class LocationUtil {
|
||||
// The player can stand inside these materials
|
||||
@ -24,147 +22,25 @@ public class LocationUtil {
|
||||
|
||||
static {
|
||||
// Materials from Material.isTransparent()
|
||||
HOLLOW_MATERIALS.add(Material.AIR);
|
||||
HOLLOW_MATERIALS.add(Material.SAPLING);
|
||||
HOLLOW_MATERIALS.add(Material.POWERED_RAIL);
|
||||
HOLLOW_MATERIALS.add(Material.DETECTOR_RAIL);
|
||||
HOLLOW_MATERIALS.add(Material.LONG_GRASS);
|
||||
HOLLOW_MATERIALS.add(Material.DEAD_BUSH);
|
||||
HOLLOW_MATERIALS.add(Material.YELLOW_FLOWER);
|
||||
HOLLOW_MATERIALS.add(Material.RED_ROSE);
|
||||
HOLLOW_MATERIALS.add(Material.BROWN_MUSHROOM);
|
||||
HOLLOW_MATERIALS.add(Material.RED_MUSHROOM);
|
||||
HOLLOW_MATERIALS.add(Material.TORCH);
|
||||
HOLLOW_MATERIALS.add(Material.FIRE);
|
||||
HOLLOW_MATERIALS.add(Material.REDSTONE_WIRE);
|
||||
HOLLOW_MATERIALS.add(Material.CROPS);
|
||||
HOLLOW_MATERIALS.add(Material.LADDER);
|
||||
HOLLOW_MATERIALS.add(Material.RAILS);
|
||||
HOLLOW_MATERIALS.add(Material.LEVER);
|
||||
HOLLOW_MATERIALS.add(Material.REDSTONE_TORCH_OFF);
|
||||
HOLLOW_MATERIALS.add(Material.REDSTONE_TORCH_ON);
|
||||
HOLLOW_MATERIALS.add(Material.STONE_BUTTON);
|
||||
HOLLOW_MATERIALS.add(Material.SNOW);
|
||||
HOLLOW_MATERIALS.add(Material.SUGAR_CANE_BLOCK);
|
||||
HOLLOW_MATERIALS.add(Material.PORTAL);
|
||||
HOLLOW_MATERIALS.add(Material.DIODE_BLOCK_OFF);
|
||||
HOLLOW_MATERIALS.add(Material.DIODE_BLOCK_ON);
|
||||
HOLLOW_MATERIALS.add(Material.PUMPKIN_STEM);
|
||||
HOLLOW_MATERIALS.add(Material.MELON_STEM);
|
||||
HOLLOW_MATERIALS.add(Material.VINE);
|
||||
HOLLOW_MATERIALS.add(Material.WATER_LILY);
|
||||
HOLLOW_MATERIALS.add(Material.NETHER_WARTS);
|
||||
HOLLOW_MATERIALS.add(Material.ENDER_PORTAL);
|
||||
HOLLOW_MATERIALS.add(Material.COCOA);
|
||||
HOLLOW_MATERIALS.add(Material.TRIPWIRE_HOOK);
|
||||
HOLLOW_MATERIALS.add(Material.TRIPWIRE);
|
||||
HOLLOW_MATERIALS.add(Material.FLOWER_POT);
|
||||
HOLLOW_MATERIALS.add(Material.CARROT);
|
||||
HOLLOW_MATERIALS.add(Material.POTATO);
|
||||
HOLLOW_MATERIALS.add(Material.WOOD_BUTTON);
|
||||
HOLLOW_MATERIALS.add(Material.SKULL);
|
||||
HOLLOW_MATERIALS.add(Material.REDSTONE_COMPARATOR_OFF);
|
||||
HOLLOW_MATERIALS.add(Material.REDSTONE_COMPARATOR_ON);
|
||||
HOLLOW_MATERIALS.add(Material.ACTIVATOR_RAIL);
|
||||
HOLLOW_MATERIALS.add(Material.CARPET);
|
||||
HOLLOW_MATERIALS.add(Material.DOUBLE_PLANT);
|
||||
|
||||
// Additional Materials added in by Essentials
|
||||
HOLLOW_MATERIALS.add(Material.SEEDS);
|
||||
HOLLOW_MATERIALS.add(Material.SIGN_POST);
|
||||
HOLLOW_MATERIALS.add(Material.WOODEN_DOOR);
|
||||
HOLLOW_MATERIALS.add(Material.WALL_SIGN);
|
||||
HOLLOW_MATERIALS.add(Material.STONE_PLATE);
|
||||
HOLLOW_MATERIALS.add(Material.IRON_DOOR_BLOCK);
|
||||
HOLLOW_MATERIALS.add(Material.WOOD_PLATE);
|
||||
HOLLOW_MATERIALS.add(Material.FENCE_GATE);
|
||||
for (Material mat : Material.values()) {
|
||||
if (mat.isTransparent()) {
|
||||
HOLLOW_MATERIALS.add(mat);
|
||||
}
|
||||
}
|
||||
|
||||
TRANSPARENT_MATERIALS.addAll(HOLLOW_MATERIALS);
|
||||
TRANSPARENT_MATERIALS.add(Material.WATER);
|
||||
TRANSPARENT_MATERIALS.add(Material.STATIONARY_WATER);
|
||||
try {
|
||||
TRANSPARENT_MATERIALS.add(Material.valueOf("FLOWING_WATER"));
|
||||
} catch (Exception ignored) { // 1.13 WATER uses Levelled
|
||||
}
|
||||
}
|
||||
|
||||
public static final int RADIUS = 3;
|
||||
public static final Vector3D[] VOLUME;
|
||||
|
||||
public static ItemStack convertBlockToItem(final Block block) {
|
||||
final ItemStack is = new ItemStack(block.getType(), 1, (short) 0, block.getData());
|
||||
switch (is.getType()) {
|
||||
case WOODEN_DOOR:
|
||||
is.setType(Material.WOOD_DOOR);
|
||||
is.setDurability((short) 0);
|
||||
break;
|
||||
case IRON_DOOR_BLOCK:
|
||||
is.setType(Material.IRON_DOOR);
|
||||
is.setDurability((short) 0);
|
||||
break;
|
||||
case SIGN_POST:
|
||||
case WALL_SIGN:
|
||||
is.setType(Material.SIGN);
|
||||
is.setDurability((short) 0);
|
||||
break;
|
||||
case CROPS:
|
||||
is.setType(Material.SEEDS);
|
||||
is.setDurability((short) 0);
|
||||
break;
|
||||
case CAKE_BLOCK:
|
||||
is.setType(Material.CAKE);
|
||||
is.setDurability((short) 0);
|
||||
break;
|
||||
case BED_BLOCK:
|
||||
is.setType(Material.BED);
|
||||
is.setDurability((short) 0);
|
||||
break;
|
||||
case REDSTONE_WIRE:
|
||||
is.setType(Material.REDSTONE);
|
||||
is.setDurability((short) 0);
|
||||
break;
|
||||
case REDSTONE_TORCH_OFF:
|
||||
case REDSTONE_TORCH_ON:
|
||||
is.setType(Material.REDSTONE_TORCH_ON);
|
||||
is.setDurability((short) 0);
|
||||
break;
|
||||
case DIODE_BLOCK_OFF:
|
||||
case DIODE_BLOCK_ON:
|
||||
is.setType(Material.DIODE);
|
||||
is.setDurability((short) 0);
|
||||
break;
|
||||
case DOUBLE_STEP:
|
||||
is.setType(Material.STEP);
|
||||
break;
|
||||
case TORCH:
|
||||
case RAILS:
|
||||
case LADDER:
|
||||
case WOOD_STAIRS:
|
||||
case COBBLESTONE_STAIRS:
|
||||
case LEVER:
|
||||
case STONE_BUTTON:
|
||||
case FURNACE:
|
||||
case DISPENSER:
|
||||
case PUMPKIN:
|
||||
case JACK_O_LANTERN:
|
||||
case WOOD_PLATE:
|
||||
case STONE_PLATE:
|
||||
case PISTON_STICKY_BASE:
|
||||
case PISTON_BASE:
|
||||
case IRON_FENCE:
|
||||
case THIN_GLASS:
|
||||
case TRAP_DOOR:
|
||||
case FENCE:
|
||||
case FENCE_GATE:
|
||||
case NETHER_FENCE:
|
||||
is.setDurability((short) 0);
|
||||
break;
|
||||
case FIRE:
|
||||
return null;
|
||||
case PUMPKIN_STEM:
|
||||
is.setType(Material.PUMPKIN_SEEDS);
|
||||
break;
|
||||
case MELON_STEM:
|
||||
is.setType(Material.MELON_SEEDS);
|
||||
break;
|
||||
}
|
||||
return is;
|
||||
return new ItemStack(block.getType(), 1);
|
||||
}
|
||||
|
||||
|
||||
@ -200,15 +76,11 @@ public class LocationUtil {
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public static Location getTarget(final LivingEntity entity) throws Exception {
|
||||
Block block;
|
||||
Block block = null;
|
||||
try {
|
||||
block = entity.getTargetBlock(TRANSPARENT_MATERIALS, 300);
|
||||
} catch (NoSuchMethodError e) {
|
||||
HashSet<Byte> legacyTransparent = new HashSet<>(); // Bukkit API prevents declaring as Set<Byte>
|
||||
for (Material m : TRANSPARENT_MATERIALS) {
|
||||
legacyTransparent.add((byte) m.getId());
|
||||
}
|
||||
block = entity.getTargetBlock(legacyTransparent, 300);
|
||||
// failing now :(
|
||||
}
|
||||
if (block == null) {
|
||||
throw new Exception("Not targeting a block");
|
||||
@ -217,10 +89,7 @@ public class LocationUtil {
|
||||
}
|
||||
|
||||
static boolean isBlockAboveAir(final World world, final int x, final int y, final int z) {
|
||||
if (y > world.getMaxHeight()) {
|
||||
return true;
|
||||
}
|
||||
return HOLLOW_MATERIALS.contains(world.getBlockAt(x, y - 1, z).getType());
|
||||
return y > world.getMaxHeight() || HOLLOW_MATERIALS.contains(world.getBlockAt(x, y - 1, z).getType());
|
||||
}
|
||||
|
||||
public static boolean isBlockUnsafeForUser(final IUser user, final World world, final int x, final int y, final int z) {
|
||||
@ -235,26 +104,35 @@ public class LocationUtil {
|
||||
}
|
||||
|
||||
public static boolean isBlockUnsafe(final World world, final int x, final int y, final int z) {
|
||||
if (isBlockDamaging(world, x, y, z)) {
|
||||
return true;
|
||||
}
|
||||
return isBlockAboveAir(world, x, y, z);
|
||||
return isBlockDamaging(world, x, y, z) || isBlockAboveAir(world, x, y, z);
|
||||
}
|
||||
|
||||
public static boolean isBlockDamaging(final World world, final int x, final int y, final int z) {
|
||||
final Block below = world.getBlockAt(x, y - 1, z);
|
||||
if (below.getType() == Material.LAVA || below.getType() == Material.STATIONARY_LAVA) {
|
||||
|
||||
switch (below.getType()) {
|
||||
case LAVA:
|
||||
case FIRE:
|
||||
return true;
|
||||
}
|
||||
|
||||
if (MaterialUtil.isBed(below.getType())) {
|
||||
return true;
|
||||
}
|
||||
if (below.getType() == Material.FIRE) {
|
||||
return true;
|
||||
}
|
||||
if (below.getType() == Material.BED_BLOCK) {
|
||||
return true;
|
||||
}
|
||||
if (world.getBlockAt(x, y, z).getType() == Material.PORTAL) {
|
||||
|
||||
try {
|
||||
if (below.getType() == Material.valueOf("FLOWING_LAVA")) {
|
||||
return true;
|
||||
}
|
||||
} catch (Exception ignored) { // 1.13 LAVA uses Levelled
|
||||
}
|
||||
|
||||
Material PORTAL = EnumUtil.getMaterial("NETHER_PORTAL", "PORTAL");
|
||||
|
||||
if (world.getBlockAt(x, y, z).getType() == PORTAL) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return (!HOLLOW_MATERIALS.contains(world.getBlockAt(x, y, z).getType())) || (!HOLLOW_MATERIALS.contains(world.getBlockAt(x, y + 1, z).getType()));
|
||||
}
|
||||
|
||||
|
122
Essentials/src/com/earth2me/essentials/utils/MaterialUtil.java
Normal file
122
Essentials/src/com/earth2me/essentials/utils/MaterialUtil.java
Normal file
@ -0,0 +1,122 @@
|
||||
package com.earth2me.essentials.utils;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.material.MaterialData;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
public class MaterialUtil {
|
||||
|
||||
|
||||
private static final Set<Material> BEDS;
|
||||
private static final Set<Material> BANNERS;
|
||||
private static final Set<Material> FIREWORKS;
|
||||
private static final Set<Material> LEGACY_SKULLS;
|
||||
private static final Set<Material> LEATHER_ARMOR;
|
||||
private static final Set<Material> MOB_HEADS;
|
||||
// includes TIPPED_ARROW which also has potion effects
|
||||
private static final Set<Material> PLAYER_HEADS;
|
||||
private static final Set<Material> POTIONS;
|
||||
private static final Set<Material> SIGNS;
|
||||
|
||||
public static final Material SPAWNER = EnumUtil.getMaterial("MOB_SPAWNER", "SPAWNER");
|
||||
|
||||
static {
|
||||
|
||||
BEDS = EnumUtil.getAllMatching(Material.class, "BED", "WHITE_BED", "ORANGE_BED",
|
||||
"MAGENTA_BED", "LIGHT_BLUE_BED", "YELLOW_BED", "LIME_BED", "PINK_BED", "GRAY_BED",
|
||||
"LIGHT_GRAY_BED", "CYAN_BED", "PURPLE_BED", "BLUE_BED", "BROWN_BED", "GREEN_BED",
|
||||
"RED_BED", "BLACK_BED");
|
||||
|
||||
BANNERS = EnumUtil.getAllMatching(Material.class, "BANNER", "WHITE_BANNER",
|
||||
"ORANGE_BANNER", "MAGENTA_BANNER", "LIGHT_BLUE_BANNER", "YELLOW_BANNER", "LIME_BANNER",
|
||||
"PINK_BANNER","GRAY_BANNER","LIGHT_GRAY_BANNER", "CYAN_BANNER", "PURPLE_BANNER",
|
||||
"BLUE_BANNER", "BROWN_BANNER", "GREEN_BANNER", "RED_BANNER", "BLACK_BANNER", "SHIELD");
|
||||
|
||||
FIREWORKS = EnumUtil.getAllMatching(Material.class, "FIREWORK", "FIREWORK_ROCKET",
|
||||
"FIREWORK_CHARGE", "FIREWORK_STAR");
|
||||
|
||||
LEATHER_ARMOR = EnumUtil.getAllMatching(Material.class, "LEATHER_HELMET",
|
||||
"LEATHER_CHESTPLATE", "LEATHER_LEGGINGS", "LEATHER_BOOTS");
|
||||
|
||||
LEGACY_SKULLS = EnumUtil.getAllMatching(Material.class,"SKULL", "SKULL_ITEM");
|
||||
|
||||
MOB_HEADS = EnumUtil.getAllMatching(Material.class, "SKELETON_SKULL",
|
||||
"SKELETON_WALL_SKULL", "WITHER_SKELETON_SKULL", "WITHER_SKELETON_WALL_SKULL",
|
||||
"CREEPER_HEAD", "CREEPER_WALL_HEAD", "ZOMBIE_HEAD", "ZOMBIE_WALL_HEAD", "DRAGON_HEAD"
|
||||
, "DRAGON_WALL_HEAD");
|
||||
|
||||
PLAYER_HEADS = EnumUtil.getAllMatching(Material.class, "PLAYER_HEAD", "PLAYER_WALL_HEAD");
|
||||
|
||||
POTIONS = EnumUtil.getAllMatching(Material.class, "POTION", "SPLASH_POTION",
|
||||
"LINGERING_POTION", "TIPPED_ARROW");
|
||||
|
||||
SIGNS = EnumUtil.getAllMatching(Material.class, "SIGN", "SIGN_POST", "WALL_SIGN");
|
||||
}
|
||||
|
||||
public static boolean isBed(Material material) {
|
||||
return BEDS.contains(material);
|
||||
}
|
||||
|
||||
public static boolean isBanner(Material material) {
|
||||
return BANNERS.contains(material);
|
||||
}
|
||||
|
||||
public static boolean isFirework(Material material) {
|
||||
return FIREWORKS.contains(material);
|
||||
}
|
||||
|
||||
public static boolean isLeatherArmor(Material material) {
|
||||
return LEATHER_ARMOR.contains(material);
|
||||
}
|
||||
|
||||
public static boolean isMobHead(Material material, int durability) {
|
||||
if (MOB_HEADS.contains(material)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return LEGACY_SKULLS.contains(material) && (durability < 0 || durability != 3);
|
||||
}
|
||||
|
||||
public static boolean isPlayerHead(Material material, int durability) {
|
||||
if (PLAYER_HEADS.contains(material)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return LEGACY_SKULLS.contains(material) && durability == 3;
|
||||
}
|
||||
|
||||
public static boolean isPotion(Material material) {
|
||||
return POTIONS.contains(material);
|
||||
}
|
||||
|
||||
public static boolean isSign(Material material) {
|
||||
return SIGNS.contains(material);
|
||||
}
|
||||
|
||||
public static boolean isSkull(Material material) {
|
||||
return isPlayerHead(material, -1) || isMobHead(material, -1);
|
||||
}
|
||||
|
||||
public static Material convertFromLegacy(int id, byte damage) {
|
||||
return EnumSet.allOf(Material.class).stream()
|
||||
.filter(material -> material.getId() == id)
|
||||
.findFirst()
|
||||
.map(material -> Bukkit.getUnsafe().fromLegacy(new MaterialData(material, damage)))
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
public static DyeColor getColorOf(Material material) {
|
||||
for (DyeColor color : DyeColor.values()) {
|
||||
if (material.toString().contains(color.name())) {
|
||||
return color;
|
||||
}
|
||||
}
|
||||
|
||||
return DyeColor.WHITE;
|
||||
}
|
||||
}
|
@ -11,14 +11,14 @@ import java.util.Locale;
|
||||
|
||||
import static com.earth2me.essentials.I18n.tl;
|
||||
|
||||
|
||||
public class NumberUtil {
|
||||
static DecimalFormat twoDPlaces = new DecimalFormat("#,###.##");
|
||||
static DecimalFormat currencyFormat = new DecimalFormat("#0.00", DecimalFormatSymbols.getInstance(Locale.US));
|
||||
|
||||
private static DecimalFormat twoDPlaces = new DecimalFormat("#,###.##");
|
||||
private static DecimalFormat currencyFormat = new DecimalFormat("#0.00", DecimalFormatSymbols.getInstance(Locale.US));
|
||||
|
||||
// This field is likely to be modified in com.earth2me.essentials.Settings when loading currency format.
|
||||
// This ensures that we can supply a constant formatting.
|
||||
static final NumberFormat PRETTY_FORMAT = NumberFormat.getInstance(Locale.US);
|
||||
private static NumberFormat PRETTY_FORMAT = NumberFormat.getInstance(Locale.US);
|
||||
|
||||
static {
|
||||
twoDPlaces.setRoundingMode(RoundingMode.HALF_UP);
|
||||
@ -30,6 +30,11 @@ public class NumberUtil {
|
||||
PRETTY_FORMAT.setMaximumFractionDigits(2);
|
||||
}
|
||||
|
||||
// this method should only be called by Essentials
|
||||
public static void internalSetPrettyFormat(NumberFormat prettyFormat) {
|
||||
PRETTY_FORMAT = prettyFormat;
|
||||
}
|
||||
|
||||
public static String shortCurrency(final BigDecimal value, final IEssentials ess) {
|
||||
return ess.getSettings().getCurrencySymbol() + formatAsCurrency(value);
|
||||
}
|
||||
|
142
Essentials/src/com/earth2me/essentials/utils/VersionUtil.java
Normal file
142
Essentials/src/com/earth2me/essentials/utils/VersionUtil.java
Normal file
@ -0,0 +1,142 @@
|
||||
package com.earth2me.essentials.utils;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class VersionUtil {
|
||||
|
||||
public static final BukkitVersion v1_8_8_R01 = BukkitVersion.fromString("1.8.8-R0.1-SNAPSHOT");
|
||||
public static final BukkitVersion v1_9_R01 = BukkitVersion.fromString("1.9-R0.1-SNAPSHOT");
|
||||
public static final BukkitVersion v1_9_4_R01 = BukkitVersion.fromString("1.9.4-R0.1-SNAPSHOT");
|
||||
public static final BukkitVersion v1_10_2_R01 = BukkitVersion.fromString("1.10.2-R0.1-SNAPSHOT");
|
||||
public static final BukkitVersion v1_11_2_R01 = BukkitVersion.fromString("1.11.2-R0.1-SNAPSHOT");
|
||||
public static final BukkitVersion v1_12_0_R01 = BukkitVersion.fromString("1.12.0-R0.1-SNAPSHOT");
|
||||
public static final BukkitVersion v1_12_2_R01 = BukkitVersion.fromString("1.12.2-R0.1-SNAPSHOT");
|
||||
public static final BukkitVersion v1_13_0_R01 = BukkitVersion.fromString("1.13.0-R0.1-SNAPSHOT");
|
||||
public static final BukkitVersion v1_13_2_R01 = BukkitVersion.fromString("1.13.2-R0.1-SNAPSHOT");
|
||||
|
||||
private static final Set<BukkitVersion> supportedVersions = ImmutableSet.of(v1_8_8_R01, v1_9_4_R01, v1_10_2_R01, v1_11_2_R01, v1_12_2_R01, v1_13_2_R01);
|
||||
|
||||
public static BukkitVersion getServerBukkitVersion() {
|
||||
return BukkitVersion.fromString(Bukkit.getServer().getBukkitVersion());
|
||||
}
|
||||
|
||||
public static boolean isServerSupported() {
|
||||
return supportedVersions.contains(getServerBukkitVersion());
|
||||
}
|
||||
|
||||
public static class BukkitVersion implements Comparable<BukkitVersion> {
|
||||
private static final Pattern VERSION_PATTERN = Pattern.compile("^(\\d+)\\.(\\d+)\\.?([0-9]*)-R([\\d.]+)(?:-SNAPSHOT)?");
|
||||
|
||||
private final int major;
|
||||
private final int minor;
|
||||
private final int patch;
|
||||
private final double revision;
|
||||
|
||||
public static BukkitVersion fromString(String string) {
|
||||
Preconditions.checkNotNull(string, "string cannot be null.");
|
||||
Matcher matcher = VERSION_PATTERN.matcher(string);
|
||||
if (!matcher.matches()) {
|
||||
if (!Bukkit.getName().equals("Essentials Fake Server")) {
|
||||
throw new IllegalArgumentException(string + " is not in valid version format. e.g. 1.8.8-R0.1");
|
||||
}
|
||||
matcher = VERSION_PATTERN.matcher(v1_13_2_R01.toString());
|
||||
Preconditions.checkArgument(matcher.matches(), string + " is not in valid version format. e.g. 1.8.8-R0.1");
|
||||
}
|
||||
return new BukkitVersion(Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2)), Integer.parseInt(matcher.group(3)), Double.parseDouble(matcher.group(4)));
|
||||
}
|
||||
|
||||
private BukkitVersion(int major, int minor, int patch, double revision) {
|
||||
this.major = major;
|
||||
this.minor = minor;
|
||||
this.patch = patch;
|
||||
this.revision = revision;
|
||||
}
|
||||
|
||||
public boolean isHigherThan(BukkitVersion o) {
|
||||
return compareTo(o) > 0;
|
||||
}
|
||||
|
||||
public boolean isHigherThanOrEqualTo(BukkitVersion o) {
|
||||
return compareTo(o) >= 0;
|
||||
}
|
||||
|
||||
public boolean isLowerThan(BukkitVersion o) {
|
||||
return compareTo(o) < 0;
|
||||
}
|
||||
|
||||
public boolean isLowerThanOrEqualTo(BukkitVersion o) {
|
||||
return compareTo(o) <= 0;
|
||||
}
|
||||
|
||||
public int getMajor() {
|
||||
return major;
|
||||
}
|
||||
|
||||
public int getMinor() {
|
||||
return minor;
|
||||
}
|
||||
|
||||
public int getPatch() {
|
||||
return patch;
|
||||
}
|
||||
|
||||
public double getRevision() {
|
||||
return revision;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
BukkitVersion that = (BukkitVersion) o;
|
||||
return major == that.major &&
|
||||
minor == that.minor &&
|
||||
patch == that.patch &&
|
||||
revision == that.revision;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hashCode(major, minor, patch, revision);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return major + "." + minor + "." + patch + "-R" + revision;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(BukkitVersion o) {
|
||||
if (major < o.major) {
|
||||
return -1;
|
||||
} else if (major > o.major) {
|
||||
return 1;
|
||||
} else { // equal major
|
||||
if (minor < o.minor) {
|
||||
return -1;
|
||||
} else if (minor > o.minor) {
|
||||
return 1;
|
||||
} else { // equal minor
|
||||
if (patch < o.patch) {
|
||||
return -1;
|
||||
} else if (patch > o.patch) {
|
||||
return 1;
|
||||
} else { // equal patch
|
||||
return Double.compare(revision, o.revision);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -36,6 +36,10 @@ max-nick-length: 15
|
||||
# ie: "&6Notch" has 7 characters (2 are part of a color code), a length of 5 is used when this option is set to true
|
||||
ignore-colors-in-max-nick-length: false
|
||||
|
||||
# When this option is enabled, display names for hidden users will not be shown. This prevents players from being
|
||||
# able to see that they are online while vanished.
|
||||
hide-displayname-in-vanish: true
|
||||
|
||||
# Disable this if you have any other plugin, that modifies the displayname of a user.
|
||||
change-displayname: true
|
||||
|
||||
@ -318,6 +322,11 @@ enabledSigns:
|
||||
# Lower numbers will reduce the possibility of lag, but may annoy players.
|
||||
sign-use-per-second: 4
|
||||
|
||||
# Allow item IDs on pre-existing signs on 1.13 and above.
|
||||
# You cannot use item IDs on new signs, but this will allow players to interact with signs that
|
||||
# were placed before 1.13.
|
||||
allow-old-id-signs: false
|
||||
|
||||
# List of sign names Essentials should not protect. This feature is especially useful when
|
||||
# another plugin provides a sign that EssentialsX provides, but Essentials overrides.
|
||||
# For example, if a plugin provides a [kit] sign, and you wish to use theirs instead of
|
||||
@ -817,20 +826,19 @@ protect:
|
||||
warn-on-build-disallow: true
|
||||
|
||||
# For which block types would you like to be alerted?
|
||||
# You can find a list of IDs in plugins/Essentials/items.csv after loading Essentials for the first time.
|
||||
# 10 = lava :: 11 = still lava :: 46 = TNT :: 327 = lava bucket
|
||||
# You can find a list of items at https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html.
|
||||
alert:
|
||||
on-placement: 10,11,46,327
|
||||
on-use: 327
|
||||
on-placement: LAVA,TNT,LAVA_BUCKET
|
||||
on-use: LAVA_BUCKET
|
||||
on-break:
|
||||
|
||||
blacklist:
|
||||
|
||||
# Which blocks should people be prevented from placing?
|
||||
placement: 10,11,46,327
|
||||
placement: LAVA,TNT,LAVA_BUCKET
|
||||
|
||||
# Which items should people be prevented from using?
|
||||
usage: 327
|
||||
usage: LAVA_BUCKET
|
||||
|
||||
# Which blocks should people be prevented from breaking?
|
||||
break:
|
||||
|
20758
Essentials/src/items.json
Normal file
20758
Essentials/src/items.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,9 @@
|
||||
# EssentialsX new Kit configuration.
|
||||
# EssentialsX kit configuration.
|
||||
# If you don't have any kits defined in this file, the plugin will try to copy them from the config.yml
|
||||
|
||||
# Note: All items MUST be followed by a quantity!
|
||||
# All kit names should be lower case, and will be treated as lower in permissions/costs.
|
||||
# Syntax: - itemID[:DataValue/Durability] Amount [Enchantment:Level].. [itemmeta:value]...
|
||||
# Syntax: - name[:durability] amount [enchantment:level]... [itemmeta:value]...
|
||||
# For Item Meta information visit http://wiki.ess3.net/wiki/Item_Meta
|
||||
# 'delay' refers to the cooldown between how often you can use each kit, measured in seconds.
|
||||
# Set delay to -1 for a one time kit.
|
||||
@ -12,28 +12,28 @@ kits:
|
||||
tools:
|
||||
delay: 10
|
||||
items:
|
||||
- 272 1
|
||||
- 273 1
|
||||
- 274 1
|
||||
- 275 1
|
||||
- stonesword 1
|
||||
- stoneshovel 1
|
||||
- stonepickaxe 1
|
||||
- stoneaxe 1
|
||||
dtools:
|
||||
delay: 600
|
||||
items:
|
||||
- 278 1 efficiency:1 durability:1 fortune:1 name:&4Gigadrill lore:The_drill_that_&npierces|the_heavens
|
||||
- 277 1 digspeed:3 name:Dwarf lore:Diggy|Diggy|Hole
|
||||
- 298 1 color:255,255,255 name:Top_Hat lore:Good_day,_Good_day
|
||||
- 279:780 1
|
||||
- dpickaxe 1 efficiency:1 durability:1 fortune:1 name:&4Gigadrill lore:The_drill_that_&npierces|the_heavens
|
||||
- dshovel 1 digspeed:3 name:Dwarf lore:Diggy|Diggy|Hole
|
||||
- lhelm 1 color:255,255,255 name:Top_Hat lore:Good_day,_Good_day
|
||||
- daxe:780 1
|
||||
notch:
|
||||
delay: 6000
|
||||
items:
|
||||
- 397:3 1 player:Notch
|
||||
- playerhead 1 player:Notch
|
||||
color:
|
||||
delay: 6000
|
||||
items:
|
||||
- 387 1 title:&4Book_&9o_&6Colors author:KHobbits lore:Ingame_color_codes book:Colors
|
||||
- writtenbook 1 title:&4Book_&9o_&6Colors author:KHobbits lore:Ingame_color_codes book:Colors
|
||||
firework:
|
||||
delay: 6000
|
||||
items:
|
||||
- 401 1 name:Angry_Creeper color:red fade:green type:creeper power:1
|
||||
- 401 1 name:Starry_Night color:yellow,orange fade:blue type:star effect:trail,twinkle power:1
|
||||
- 401 2 name:Solar_Wind color:yellow,orange fade:red shape:large effect:twinkle color:yellow,orange fade:red shape:ball effect:trail color:red,purple fade:pink shape:star effect:trail power:1
|
||||
- fireworkrocket 1 name:Angry_Creeper color:red fade:green type:creeper power:1
|
||||
- fireworkrocket 1 name:Starry_Night color:yellow,orange fade:blue type:star effect:trail,twinkle power:1
|
||||
- fireworkrocket 2 name:Solar_Wind color:yellow,orange fade:red shape:large effect:twinkle color:yellow,orange fade:red shape:ball effect:trail color:red,purple fade:pink shape:star effect:trail power:1
|
||||
|
@ -211,6 +211,7 @@ is=is
|
||||
isIpBanned=\u00a76IP \u00a7c{0} \u00a76is banned.
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemCannotBeSold=\u00a74That item cannot be sold to the server.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74Item must be traded in stacks. A quantity of 2s would be two stacks, etc.
|
||||
itemNames=\u00a76Item short names\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74You do not have enough of that item to sell.
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
|
||||
itemSold=\u00a7aSold for \u00a7c{0} \u00a7a({1} {2} at {3} each).
|
||||
itemSoldConsole=\u00a7a{0} \u00a7asold {1} for \u00a7a{2} \u00a7a({3} items at {4} each).
|
||||
itemSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1}
|
||||
itemType=\u00a76Item\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76Item\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74Person is already in jail\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a74You do the crime, you do the time.
|
||||
@ -467,6 +468,7 @@ sellBulkPermission=\u00a76You do not have permission to bulk sell.
|
||||
sellHandPermission=\u00a76You do not have permission to hand sell.
|
||||
serverFull=Server is full\!
|
||||
serverTotal=\u00a76Server Total\:\u00a7c {0}
|
||||
serverUnsupported=You are running an unsupported server version!
|
||||
setBal=\u00a7aYour balance was set to {0}.
|
||||
setBalOthers=\u00a7aYou set {0}\u00a7a''s balance to {1}.
|
||||
setSpawner=\u00a76Changed spawner type to\u00a7c {0}\u00a76.
|
||||
@ -569,6 +571,11 @@ userUnknown=\u00a74Warning\: The user ''\u00a7c{0}\u00a74'' has never joined thi
|
||||
usingTempFolderForTesting=Using temp folder for testing\:
|
||||
vanish=\u00a76Vanish for {0}\u00a76\: {1}
|
||||
vanished=\u00a76You are now completely invisible to normal users, and hidden from in-game commands.
|
||||
versionOutputVaultMissing=\u00a74Vault is not installed. Chat and permissions may not work.
|
||||
versionOutputFine=\u00a76{0} version: \u00a7a{1}
|
||||
versionOutputWarn=\u00a76{0} version: \u00a7c{1}
|
||||
versionOutputUnsupported=\u00a7d{0} \u00a76version: \u00a7d{1}
|
||||
versionOutputUnsupportedPlugins=\u00a76You are running \u00a7dunsupported plugins\u00a76!
|
||||
versionMismatch=\u00a74Version mismatch\! Please update {0} to the same version.
|
||||
versionMismatchAll=\u00a74Version mismatch\! Please update all Essentials jars to the same version.
|
||||
voiceSilenced=\u00a76Your voice has been silenced\!
|
||||
|
@ -211,6 +211,7 @@ is=je
|
||||
isIpBanned=\u00a76IP \u00a7c{0} \u00a76je zabanovana.
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemCannotBeSold=\u00a74Tento predmet nelze prodat serveru.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74Predmety musi byt vymeneny ve stacku.
|
||||
itemNames=\u00a76Zkracene nazvy predmetu\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74Nemas dostatek, aby jsi jej mohl prodat.
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74Nemas zadne predmety ktere lze prevest na bloky.
|
||||
itemSold=\u00a7aProdano za \u00a7c{0} \u00a7a({1} {2} za cenu {3} kus)
|
||||
itemSoldConsole=\u00a7a{0} \u00a7aProdano {1} za \u00a7a{2} \u00a7a({3} za cenu {4} kus).
|
||||
itemSpawn=\u00a76Davam\u00a7c {0}\u00a7c {1}
|
||||
itemType=\u00a76Predmet\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76Predmet\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74Tento hrace ja jiz uveznen\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a74Porusil jsi pravidla, ted si to odsedis\!
|
||||
|
@ -202,7 +202,7 @@ invalidSkull=\u00a74Hold venligst et spillerkranie.
|
||||
invalidWarpName=\u00a74Ugyldigt warp navn.
|
||||
invalidWorld=\u00a74Ugyldig verden.
|
||||
inventoryClearFail=\u00a74Spilleren {0} \u00a74har ikke\u00a7c {1} \u00a74af\u00a7c {2}\u00a74.
|
||||
inventoryClearingAllArmor=\u00a76Rydede alle inventar-elementer og armor fra{0}\u00a76.
|
||||
inventoryClearingAllArmor=\u00a76Rydede alle inventar-elementer og armor fra{0}\u00a76.
|
||||
inventoryClearingAllItems=\u00a76Ryddede alle inventar-elementer fra {0}\u00a76.
|
||||
inventoryClearingAllStack=\u00a76Ryddede alle\u00a7c {0} \u00a76fra {1}\u00a76.
|
||||
inventoryClearingFromAll=\u00a76Rydder alle spilleres inventar...
|
||||
@ -211,6 +211,7 @@ is=er
|
||||
isIpBanned=\u00a76IP \u00a7c{0} \u00a76er banlyst.
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemCannotBeSold=\u00a74Det element kan ikke s\u00e6lges til serveren.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74Elementet skal forhandles i form at stakke. En m\u00e6ngde af 2s vil v\u00e6re 2 stakke, osv.
|
||||
itemNames=\u00a76Elementforkortelser\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74Du har ikke nok af det element til at s\u00e6lge det.
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
|
||||
itemSold=\u00a7aSolgt for \u00a7c{0} \u00a7a({1} {2} for {3} hver).
|
||||
itemSoldConsole=\u00a7a{0} \u00a7asolgt {1} for \u00a7a{2} \u00a7a({3} elementer for {4} hver).
|
||||
itemSpawn=\u00a76Giver\u00a7c {0} \u00a76af\u00a7c {1}
|
||||
itemType=\u00a76Element\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76Element\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74Spilleren er allerede i f\u00e6ngsel\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a7cDu bryder reglerne, du tager straffen.
|
||||
|
@ -2,11 +2,11 @@
|
||||
#version: ${full.version}
|
||||
# Single quotes have to be doubled: ''
|
||||
# Translations start here
|
||||
# by:
|
||||
# Germantranslation by enterih and a lot of other guys. Feel free to donate EssentialsX.
|
||||
action=\u00a75* {0} \u00a75{1}
|
||||
addedToAccount=\u00a7a{0} wurde zu deinem Konto hinzugef\u00fcgt.
|
||||
addedToOthersAccount=\u00a7a{0} wurde dem Konto von {1} \u00a7agutgeschrieben. Aktueller Kontostand\: {2}
|
||||
adventure=Abenteuer
|
||||
addedToAccount=\u00a7c{0} \u00a7awurden deinem Konto hinzugef\u00fcgt.
|
||||
addedToOthersAccount=\u00a7aAuf \u00a76{1} \u00A7A´s Konto wurden \u00a7c{0} \u00A7agutgeschrieben. Neuer Kontostand\: \u00A76{2}
|
||||
adventure=Abenteuermodus
|
||||
alertBroke=zerst\u00f6rt\:
|
||||
alertFormat=\u00a73[{0}] \u00a7r {1} \u00a76 {2} bei\: {3}
|
||||
alertPlaced=platziert\:
|
||||
@ -18,38 +18,38 @@ antiBuildDrop=\u00a74Du darfst \u00a7c {0}\u00a74 nicht wegwerfen.
|
||||
antiBuildInteract=\u00a74Du darfst mit\u00a7c {0}\u00a74 nicht interagieren.
|
||||
antiBuildPlace=\u00a74Du darfst\u00a7c {0} \u00a74hier nicht platzieren.
|
||||
antiBuildUse=\u00a74Du darfst\u00a7c {0} \u00a74nicht benutzen.
|
||||
autoAfkKickReason=Du wurdest rausgeworfen, weil du f\u00fcr {0} Minuten inaktiv warst.
|
||||
backAfterDeath=\u00a76Benutze den Befehl /back um zu deinem Todespunkt zur\u00fcck zu kehren.
|
||||
autoAfkKickReason=Da du l\u00e4nger als {0} Minuten inaktiv bist, haben wir die Verbindung getrennt.
|
||||
backAfterDeath=\u00a76Verwende den Befehl \u00A7c/back\u00A76, um zu deinem Todespunkt zur\u00fcck zu kehren.
|
||||
backupDisabled=\u00a74Ein externes Backup-Skript wurde nicht konfiguriert.
|
||||
backupFinished=\u00a76Backup beendet.
|
||||
backupStarted=\u00a76Backup gestartet.
|
||||
backUsageMsg=\u00a76Kehre zur letzten Position zur\u00fcck.
|
||||
backUsageMsg=\u00a76Du kehrst zur letzten Position zur\u00fcck.
|
||||
balance=\u00a7aKontostand\:\u00a7c {0}
|
||||
balanceOther=\u00a7aKontostand von {0}\u00a7a\:\u00a7c {1}
|
||||
balanceTop=\u00a76Die h\u00f6chsten Kontost\u00e4nde ({0})
|
||||
banExempt=\u00a74Du kannst diesen Spieler nicht bannen.
|
||||
banExemptOffline=\u00a74Du darfst abgemeldete Spieler nicht verbannen.
|
||||
banExemptOffline=\u00a74Du darfst abgemeldete Spieler nicht bannen.
|
||||
banFormat=\u00a74Gebannt\: \u00a7r{0}
|
||||
banIpJoin=Deine IP-Adresse ist auf diesem Server gebannt. Grund: {0}
|
||||
banIpJoin=Deine IP-Adresse ist auf diesem Server gesperrt. Grund: {0}
|
||||
banJoin=Du bist von diesem Server gebannt. Grund: {0}
|
||||
bed=\u00a7oBett\u00a7r
|
||||
bedMissing=\u00a74Dein Bett ist entweder nicht gesetzt, fehlt oder ist blockiert.
|
||||
bedNull=\u00a7mBett\u00a7r
|
||||
bedSet=\u00a76Bett-Spawn gesetzt\!
|
||||
bigTreeFailure=\u00a74Fehler beim Pflanzen eines gro\u00dfen Baums. Versuch es auf Gras oder Dreck.
|
||||
bigTreeFailure=\u00a74Beim Pflanzen eines grossen Baumes ist ein Fehler aufgetreten. Versuch es auf Gras oder Dreck.
|
||||
bigTreeSuccess=\u00a76Gro\u00dfer Baum gepflanzt.
|
||||
blockList=\u00a76Essentials hat die folgenden Befehle an ein anderes Plugin weiter gegeben\:
|
||||
bookAuthorSet=\u00a76Autor des Buchs auf {0} ge\u00e4ndert.
|
||||
bookLocked=\u00a76Dieses Buch ist jetzt versiegelt.
|
||||
bookTitleSet=\u00a76Buchtitel auf {0} ge\u00e4ndert.
|
||||
broadcast=\u00a7r\u00a76[\u00a74Rundruf\u00a76]\u00a7a {0}
|
||||
buildAlert=\u00a74Du hast keine Rechte zum Bauen.
|
||||
buildAlert=\u00a74Du hast keine Bauberechtigung.
|
||||
bukkitFormatChanged=Bukkit-Versionsformat hat sich ge\u00e4ndert. Version nicht kontrolliert.
|
||||
burnMsg=\u00a76Du hast {0} f\u00fcr {1} Sekunden in Brand gesetzt.
|
||||
cannotStackMob=\u00a74Du hast nicht das Recht, mehrere Mobs zu stapeln.
|
||||
canTalkAgain=\u00a76Du kannst wieder sprechen.
|
||||
cannotStackMob=\u00a74Du bist nicht berechtigt, mehrere Mobs zu stapeln.
|
||||
canTalkAgain=\u00a76Du kannst wieder den Chat ruinieren.
|
||||
cantFindGeoIpDB=Kann GeoIP-Datenbank nicht finden\!
|
||||
cantGamemode=\u00a74Du hast keine Permission, um zum Spielmodus {0} zu wechseln.
|
||||
cantGamemode=\u00a74Du hast keine Berechtigung, um zum Spielmodus {0} zu wechseln.
|
||||
cantReadGeoIpDB=Fehler beim Einlesen der GeoIP-Datenbank\!
|
||||
cantSpawnItem=\u00a74Du darfst Gegenstand\u00a7c {0}\u00a74 nicht erzeugen.
|
||||
chatTypeAdmin=[A]
|
||||
@ -57,131 +57,131 @@ chatTypeLocal=[L]
|
||||
chatTypeSpy=[Spion]
|
||||
cleaned=Spielerdateien geleert.
|
||||
cleaning=S\u00e4ubere Spielerdateien.
|
||||
clearInventoryConfirmToggleOff=\u00a76You will no longer be prompted to confirm inventory clears.
|
||||
clearInventoryConfirmToggleOn=\u00a76You will now be prompted to confirm inventory clears.
|
||||
clearInventoryConfirmToggleOff=\u00a76Du musst ab jetzt nicht mehr best\u00c4tigen, ob du das Inventar leeren m\u00F6chtest.
|
||||
clearInventoryConfirmToggleOn=\u00a76Du musst ab jetzt best\u00c4tigen, ob du das Inventar leeren m\u00F6chtest.
|
||||
commandCooldown=\u00a7cDu kannst diesen Command nicht ausf\u00FChren f\u00FCr {0}.
|
||||
commandFailed=Befehl {0} scheiterte\:
|
||||
commandHelpFailedForPlugin=Fehler beim Abrufen der Hilfe f\u00fcr\: {0}
|
||||
commandFailed=Befehl {0} ist fehlgeschlagen\:
|
||||
commandHelpFailedForPlugin=Beim Abruf der Hilfe f\u00fcr\: {0} hat etwas nicht funktioniert.
|
||||
commandNotLoaded=\u00a74Befehl {0} ist nicht richtig geladen.
|
||||
compassBearing=\u00a76Peilung\: {0} ({1} Grad).
|
||||
configFileMoveError=Fehler beim Verschieben der config.yml in das Backupverzeichnis.
|
||||
configFileRenameError=Verschieben einer tempor\u00e4ren Datei nach config.yml gescheitert.
|
||||
confirmClear=\u00a77To \u00a7lCONFIRM\u00a77 inventory clear, please repeat command: \u00a76{0}
|
||||
confirmPayment=\u00a77Um die Zahlung in H\u00f6he von \u00a76{0}\u00a77 zu \u00a7lBEST\u00c4TIGEN\u00a77, wiederhole bitte den Befehl: \u00a76{1}
|
||||
configFileMoveError=Es ist ein Fehler beim Verschieben der config.yml in das Backupverzeichnis aufgetreten.
|
||||
configFileRenameError=Das Verschieben einer tempor\u00e4ren Datei nach config.yml gescheitert.
|
||||
confirmClear=\u00a77Um das Inventar zu leeren, musst du zuerst \u00a7lBEST\u00e4TIGEN\u00a77. Wiederhole daf\u00fcr bitte \u00a76{0}\u00a77.
|
||||
confirmPayment=\u00a77Um die Zahlung in der H\u00f6he von \u00a76{0}\u00a77 zu \u00a7lBEST\u00c4TIGEN\u00a77, wiederhole bitte den Befehl: \u00a76{1}
|
||||
connectedPlayers=\u00a76Verbundene Spieler\u00a7r
|
||||
connectionFailed=Fehler beim Verbindungsaufbau.
|
||||
connectionFailed=Beim Verbindungsaufbau ist ein Fehler aufgetreten.
|
||||
cooldownWithMessage=\u00a74Abklingzeit\: {0}
|
||||
coordsKeyword={0}, {1}, {2}
|
||||
corruptNodeInConfig=\u00a74Hinweis\: Deine Konfigurationsdatei hat eine ung\u00fcltige Node {0}.
|
||||
couldNotFindTemplate=\u00a74Vorlage {0} konnte nicht gefunden werden.
|
||||
createdKit=\u00a76Kit \u00a7c{0} \u00a76erstellt mit \u00a7c{1} \u00a76Eintr\u00E4gen und Verz\u00F6gerung \u00a7c{2}
|
||||
createdKit=\u00a76Das Kit \u00a7c{0} \u00a76wurde mit \u00a7c{1} \u00a76Eintr\u00E4gen und einer Verz\u00F6gerung von \u00a7c{2} \u00a76erstellt.
|
||||
createKitFailed=\u00a74Beim Erstellen des Kits ist ein Fehler aufgetreten {0}.
|
||||
createKitSeparator=\u00a7m-----------------------
|
||||
createKitSuccess=\u00a76Erstelltes Kit: \u00a7f{0}\n\u00a76Verz\u00F6gerung: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Kopiere Inhalte aus dem oben stehenden Link in deine kits.yml.
|
||||
creatingConfigFromTemplate=Erstelle Konfiguration aus Vorlage\: {0}
|
||||
creatingEmptyConfig=Erstelle leere Konfiguration\: {0}
|
||||
createKitSuccess=\u00a76Erstelltes Kit: \u00a7f{0}\n\u00a76Verz\u00F6gerung: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Es werden Inhalte aus dem oben stehenden Link in deine kits.yml kopiert.
|
||||
creatingConfigFromTemplate=Erstelle Konfiguration aus der Vorlage\: {0}
|
||||
creatingEmptyConfig=Erstelle eine leere Konfiguration\: {0}
|
||||
creative=Kreativmodus
|
||||
currency={0}{1}
|
||||
currentWorld=\u00a76Aktuelle Welt\:\u00a7c {0}
|
||||
day=Tag
|
||||
days=Tage
|
||||
defaultBanReason=Der Bann-Hammer hat gesprochen\!
|
||||
deleteFileError=Konnte Datei nicht l\u00f6schen\: {0}
|
||||
deleteHome=\u00a76Zuhause\u00a7c {0} \u00a76wurde gel\u00f6scht.
|
||||
deleteJail=\u00a76Gef\u00e4ngnis\u00a7c {0} \u00a76wurde gel\u00f6scht.
|
||||
deleteWarp=\u00a76Warp-Punkt \u00a7c{0} \u00a76wurde gel\u00f6scht.
|
||||
defaultBanReason=B\u00c4\u00c4m, Der Bann-Hammer hat gesprochen.\!
|
||||
deleteFileError=Die Datei {0} konnte nicht gel\u00f6scht werden.\
|
||||
deleteHome=\u00a76Die Heimat\u00a7c {0} \u00a76wurde gel\u00f6scht.
|
||||
deleteJail=\u00a76Das Gef\u00e4ngnis\u00a7c {0} \u00a76wurde gel\u00f6scht.
|
||||
deleteWarp=\u00a76Der Warp-Punkt \u00a7c{0} \u00a76wurde gel\u00f6scht.
|
||||
deniedAccessCommand=\u00a7c{0} \u00a74hat keinen Zugriff auf diesen Befehl.
|
||||
denyBookEdit=\u00a74Du kannst dieses Buch nicht entsiegeln.
|
||||
denyChangeAuthor=\u00a74Du kannst den Autor dieses Buches nicht \u00e4ndern.
|
||||
denyChangeTitle=\u00a74Du kannst den Titel dieses Buches nicht \u00e4ndern.
|
||||
depth=\u00a76Du bist auf Meeresh\u00f6he.
|
||||
depthAboveSea=\u00a76Du bist\u00a7c {0} \u00a76Bl\u00f6cke \u00fcber Meeresh\u00f6he.
|
||||
depthBelowSea=\u00a76Du bist\u00a7c {0} \u00a76Bl\u00f6cke unter Meeresh\u00f6he.
|
||||
destinationNotSet=Ziel nicht gesetzt\!
|
||||
depth=\u00a76Du bist auf derMeeresh\u00f6he.
|
||||
depthAboveSea=\u00a76Du bist\u00a7c {0} \u00a76Bl\u00f6cke \u00fcber Meer.
|
||||
depthBelowSea=\u00a76Du bist\u00a7c {0} \u00a76Bl\u00f6cke unter Meer.
|
||||
destinationNotSet=Das Ziel ist nicht gesetzt\!
|
||||
disabled=deaktiviert
|
||||
disabledToSpawnMob=\u00a74Das Spawnen dieses Mobs wurde in der Konfigurationsdatei deaktiviert.
|
||||
disableUnlimited=\u00a76Deaktiviere unbegrenztes Platzieren von\u00a7c {0} \u00a76f\u00fcr {1}.
|
||||
disabledToSpawnMob=\u00a74Das Spawnen dieses Mobs ist in der Konfigurationsdatei deaktiviert.
|
||||
disableUnlimited=\u00a76Das unbegrenzte Platzieren von\u00a7c {0} \u00a76f\u00fcr \u00a7c{1} \u00a76wurde deaktiviert.
|
||||
distance=\u00a76Entfernung\: {0}
|
||||
dontMoveMessage=\u00a76Teleportvorgang startet in {0}. Bewege dich nicht.
|
||||
downloadingGeoIp=Lade GeoIP-Datenbank ... dies kann etwas dauern (country\: 1.7 MB, city\: 30MB)
|
||||
dontMoveMessage=\u00a76Teleportvorgang startet in \u00a7c{0}\u00a76. Eine Bewegung bricht die Teleportation ab.
|
||||
downloadingGeoIp=GeoIP-Datenbank wird geladen... Das kann einen Moment in Anspruch nehmen. (country\: 1.7 MB, city\: 30MB)
|
||||
duplicatedUserdata=Doppelte Datei in userdata\: {0} und {1}.
|
||||
durability=\u00a76Dieses Werkzeug kann noch \u00a7c{0}\u00a76 mal benutzt werden.
|
||||
east=E
|
||||
editBookContents=\u00a7eDu darfst jetzt den Inhalt dieses Buches bearbeiten.
|
||||
east=O
|
||||
editBookContents=\u00a7eDu darfst den Inhalt dieses Buches jetzt bearbeiten.
|
||||
enabled=aktiviert
|
||||
enableUnlimited=\u00a76Gebe \u00a7c{1}\u00a76. unendlichen einen Stack\u00a7c {0} \u00a76.
|
||||
enableUnlimited=\u00a76Du gibst \u00a7c{1}\u00a76 eine unbegrenzte Menge an\u00a7c {0} \u00a76.
|
||||
enchantmentApplied=\u00a76Der Gegenstand in deiner Hand wurde mit\u00a7c {0} \u00a76verzaubert.
|
||||
enchantmentNotFound=\u00a74Verzauberung nicht gefunden\!
|
||||
enchantmentPerm=\u00a74Du hast keine Rechte f\u00fcr\u00a7c {0}\u00a74.
|
||||
enchantmentNotFound=\u00a74Diese Verzauberung konnte nicht gefunden werden\!
|
||||
enchantmentPerm=\u00a74Du bist f\u00fcr\u00a7c {0}\u00a74 nicht berechtigt.
|
||||
enchantmentRemoved=\u00a76Dem Gegenstand in deiner Hand wurde die Verzauberung\u00a7c {0} \u00a76entfernt.
|
||||
enchantments=\u00a76Verzauberungen\:\u00a7r {0}
|
||||
errorCallingCommand=Fehler beim Aufrufen des Befehls /{0}
|
||||
errorCallingCommand=Beim Aufrufen des Befehls {0} ist ein Fehler aufgetreten.
|
||||
errorWithMessage=\u00a7cFehler\:\u00a74 {0}
|
||||
essentialsHelp1=Die Datei ist besch\u00e4digt und Essentials kann sie nicht \u00f6ffnen. Essentials ist jetzt deaktiviert. Wenn du die Datei selbst nicht reparieren kannst, gehe auf http\://tiny.cc/EssentialsChat
|
||||
essentialsHelp2=Die Datei ist besch\u00e4digt und Essentials kann sie nicht \u00f6ffnen. Essentials ist jetzt deaktiviert. Wenn du die Datei selbst nicht reparieren kannst, versuche /essentialshelp oder gehe auf http\://tiny.cc/EssentialsChat
|
||||
essentialsReload=\u00a76Essentials neu geladen\u00a7c {0}.
|
||||
exp=\u00a7c{0} \u00a76hat\u00a7c {1} \u00a76Exp (Level\u00a7c {2}\u00a76) und braucht\u00a7c {3} \u00a76Punkte f\u00fcr den n\u00e4chsten Level.
|
||||
essentialsReload=\u00a76Essentials wurde neu geladen\u00a7c {0}.
|
||||
exp=\u00a7c{0} \u00a76hat\u00a7c {1} \u00a76Exp (Level\u00a7c {2}\u00a76) und braucht\u00a7c {3} \u00a76Punkte f\u00fcr das n\u00e4chste Level.
|
||||
expSet=\u00a7c{0} \u00a76hat jetzt\u00a7c {1} \u00a76Exp.
|
||||
extinguish=\u00a76Du hast dich selbst gel\u00f6scht.
|
||||
extinguishOthers=\u00a76Du hast {0}\u00a76 gel\u00f6scht.
|
||||
failedToCloseConfig=Fehler beim Schlie\u00dfen der Konfiguration {0}.
|
||||
failedToCreateConfig=Fehler beim Erstellen der Konfiguration {0}.
|
||||
failedToWriteConfig=Fehler beim Schreiben der Konfiguration {0}.
|
||||
false=\u00a74falsch\u00a7r
|
||||
failedToCloseConfig=Beim Schliessen der Config ist ein Fehler aufgetreten {0}.
|
||||
failedToCreateConfig=Beim Erstellen der Config ist ein Fehler aufgetreten {0}.
|
||||
failedToWriteConfig=Beim Schreiben der Config ist ein Fehler aufgetreten {0}.
|
||||
false=\u00a74Nein\u00a7r
|
||||
feed=\u00a76Dein Hunger wurde gestillt.
|
||||
feedOther=\u00a76Du hast dein Hunger von \u00a7c{0}\u00a76gestillt.
|
||||
fileRenameError=Umbenennen von {0} gescheitert\!
|
||||
fireworkColor=\u00a74Ung\u00fcltige Feuerwerksparameter angegeben, setze zuerst eine Farbe.
|
||||
fireworkEffectsCleared=\u00a76Alle Effekte vom Stapel in der Hand entfernt.
|
||||
fireworkSyntax=\u00a76Feuerwerk-Parameter\:\u00a7c color\:<Farbe> [fade\:<Farbe>] [shape\:<Form>] [effect\:<Effekt>]\n\u00a76Um mehrere Farben/Effekte zu benutzen, mit Komma trennen\: \u00a7cred,blue,pink\n\u00a76Formen\:\u00a7c star, ball, large, creeper, burst \u00a76Effekte\:\u00a7c trail, twinkle.
|
||||
feedOther=\u00a76Du hast den Hunger von \u00a7c{0}\u00a76gestillt.
|
||||
fileRenameError=\u00a7cDu konntest \u00a7e{0} \u00a7cnicht umbenennen.\!
|
||||
fireworkColor=\u00a74Ung\u00fcltige Feuerwerksparameter angegeben. Du musst zuerst eine Farbe festlegen.
|
||||
fireworkEffectsCleared=\u00a76Alle Effekte wurden vom Stapel, den du in der Hand hast, entfernt.
|
||||
fireworkSyntax=\u00a76Feuerwerk-Parameter\:\u00a7c color\:<Farbe> [fade\:<Farbe>] [shape\:<Form>] [effect\:<Effekt>]\n\u00a76Um mehrere Farben/Effekte zu benutzen, musst du sie mit Komma trennen\: \u00a7cred,blue,pink\n\u00a76Formen\:\u00a7c star, ball, large, creeper, burst \u00a76Effekte\:\u00a7c trail, twinkle.
|
||||
flying=fliegt
|
||||
flyMode=\u00a76Flugmodus\u00a7c {0} \u00a76f\u00fcr {1} \u00a76gesetzt.
|
||||
flyMode=\u00A76Du hast den Flugmodus bei \u00a7c{1} {0}\u00a76.
|
||||
foreverAlone=\u00a7cDu hast niemanden, dem du antworten kannst.
|
||||
fullStack=\u00a74Du hast bereits einen vollen Stapel.
|
||||
gameMode=\u00a76Spielmodus\u00a7c {0} \u00a76f\u00fcr {1} \u00a76gesetzt.
|
||||
gameModeInvalid=\u00a74Sie m\u00fcssen einen g\u00fcltigen Spieler/Modus angeben.
|
||||
gameMode=\u00a76Du hast \u00a7c{1}\u00a76 in den \u00a7c{0}\u00a76 versetzt.
|
||||
gameModeInvalid=\u00a74Du m\u00fcsst einen g\u00fcltigen Spieler/Modus angeben.
|
||||
gcfree=\u00a76Freier Speicher\:\u00a7c {0} MB
|
||||
gcmax=\u00a76Maximaler Speicher\:\u00a7c {0} MB
|
||||
gctotal=\u00a76Reservierter Speicher\:\u00a7c {0} MB
|
||||
gcWorld=\u00a76 {0} "\u00a7c {1} \u00a76"\: \u00a7c {2} \u00a76 Chunks, \u00a7c {3} \u00a76 Einheiten, \u00a7c {4} \u00a76 Tiles.
|
||||
geoipJoinFormat=\u00a76Spieler \u00a7c{0} \u00a76kommt aus \u00a7c{1}\u00a76.
|
||||
geoipJoinFormat=\u00a7c{0} \u00a76kommt aus \u00a7c{1}\u00a76.
|
||||
geoIpUrlEmpty=GeoIP Download-URL ist leer.
|
||||
geoIpUrlInvalid=GeoIP Download-URL ist ung\u00fcltig.
|
||||
givenSkull=\u00a76Dir wurde der Kopf von \u00a7c{0}\u00a76 gegeben.
|
||||
giveSpawn=\u00a76Gebe \u00a7c{2} {0}\u00a76x\u00a7c {1}\u00a76.
|
||||
giveSpawn=\u00a76Du gibst \u00a7c{2} {0}\u00a76x\u00a7c {1}\u00a76.
|
||||
giveSpawnFailure=\u00a74Nicht genug Platz, \u00a7c{0} \u00a7c{1} \u00a74verloren.
|
||||
godDisabledFor=\u00a7cdeaktiviert\u00a76 f\u00fcr\u00a7c {0}
|
||||
godEnabledFor=\u00a7aaktiviert\u00a76 f\u00fcr\u00a7c {0}
|
||||
godDisabledFor=\u00a76f\u00fcr\u00a7c {0}\u00a7cdeaktiviert\u00a76.
|
||||
godEnabledFor=\u00a76f\u00fcr\u00a7c {0} \u00a7aaktiviert\u00a76.
|
||||
godMode=\u00a76Unsterblichkeit\u00a7c {0}\u00a76.
|
||||
groupDoesNotExist=\u00a74Kein Mitglied dieser Gruppe ist online\!
|
||||
groupNumber=\u00a7c{0}\u00a7f online, f\u00fcr die ganze Liste\:\u00a7c /{1} {2}
|
||||
hatArmor=\u00a74Du kannst diesen Gegenstand nicht als Hut nutzen\!
|
||||
groupDoesNotExist=\u00a74Von dieser Gruppe ist kein Mitglied online\!
|
||||
groupNumber=\u00a7c{0}\u00a7f Online. F\u00fcr die ganze Liste\:\u00a7c /{1} {2}
|
||||
hatArmor=\u00a74Du kannst diesen Gegenstand nicht als Hut verwenden\!
|
||||
hatEmpty=\u00a74Du tr\u00e4gst keinen Hut.
|
||||
hatFail=\u00a74Du musst einen Gegenstand in der Hand halten.
|
||||
hatPlaced=\u00a76Viel Spa\u00df mit deinem neuen Hut\!
|
||||
hatRemoved=\u00a76Dein Hut wurde entfernt.
|
||||
haveBeenReleased=\u00a76Du wurdest frei gelassen.
|
||||
heal=\u00a76Du wurdest geheilt.
|
||||
healDead=\u00a74Du kannst Tote nicht heilen\!
|
||||
healOther=\u00a7c{0}\u00a76 geheilt.
|
||||
helpConsole=Um die Hilfe der Konsole zu sehen, schreibe ?.
|
||||
healDead=\u00a74Du kannst keine Toten heilen\!
|
||||
healOther=\u00a7c{0}\u00a76 wurde geheilt.
|
||||
helpConsole=Damit du die Hilfe der Konsole sehen kannst, muss du ? schreiben.
|
||||
helpFrom=\u00a76Befehle von {0}\:
|
||||
helpLine=\u00a76/{0}\u00a7r\: {1}
|
||||
helpMatching=\u00a76Befehle \u00e4hnlich zu "\u00a7c{0}\u00a76"\:
|
||||
helpMatching=\u00a76Befehle \u00e4hnlich wie "\u00a7c{0}\u00a76"\:
|
||||
helpOp=\u00a74[Hilfe]\u00a7r \u00a76{0}\:\u00a7r {1}
|
||||
helpPlugin=\u00a74{0}\u00a7r\: Plugin-Hilfe\: /help {1}
|
||||
holdBook=\u00a74Du hast kein beschreibbares Buch in deiner Hand.
|
||||
holdFirework=\u00a74Du musst Feuerwerk in deiner Hand halten um einen Effekt hinzuzuf\u00fcgen.
|
||||
holdPotion=\u00a74Du musst einen Trank in der Hand haben, um ihm Effekte zu geben.
|
||||
holeInFloor=\u00a74Loch im Boden\!
|
||||
homes=\u00a76Homes\:\u00a7r {0}
|
||||
homeSet=\u00a76Zuhause gesetzt.
|
||||
holdFirework=\u00a74Damit du einen Effekt hinzzuf\u00fcgen kannst, musst du ein Feuerwerk in deiner Hand halten.
|
||||
holdPotion=\u00a74Du du dem Trank einem Effekt geben kannst, musst du ihn zuerst in der Hand halten.
|
||||
holeInFloor=\u00a74Wooops... Da ist ein Loch im Boden\!
|
||||
homes=\u00a76Deine Heimaten\:\u00a7r {0}
|
||||
homeSet=\u00a76Heimat festgelegt
|
||||
hour=Stunde
|
||||
hours=Stunden
|
||||
ignoredList=\u00a76Ignoriert\:\u00a7r {0}
|
||||
ignoreExempt=\u00a74Du kannst diesen Spieler nicht ignorieren.
|
||||
ignorePlayer=\u00a76Du ignorierst ab jetzt Spieler\u00a7c {0}\u00a76.
|
||||
illegalDate=Ung\u00fcltiges Datumsformat.
|
||||
ignoreExempt=\u00a74Du kannst den Spieler nicht ignorieren.
|
||||
ignorePlayer=\u00a76Du ignorierst ab jetzt\u00a7c {0}\u00a76.
|
||||
illegalDate=Ung\u00fcltiges Datumformat.
|
||||
infoChapter=\u00a76Kapitel ausw\u00e4hlen\:
|
||||
infoChapterPages=\u00a7e---\u00a76 {0} \u00a7e--\u00a76 Seite \u00a7c{1}\u00a76 von \u00a7c{2} \u00a7e---
|
||||
infoPages=\u00a7e ---- \u00a76{2} \u00a7e--\u00a76 Seite \u00a7c{0}\u00a76/\u00a7c{1} \u00a7e----
|
||||
@ -190,9 +190,9 @@ insufficientFunds=\u00a74Nicht genug Guthaben.
|
||||
invalidBanner=\u00a74Ung\u00fcltige Banner-Syntax.
|
||||
invalidCharge=\u00a74Ung\u00fcltige Kosten.
|
||||
invalidFireworkFormat=\u00a76Die Option \u00a74{0} \u00a76ist kein g\u00fcltiger Wert f\u00fcr \u00a74{1}\u00a76.
|
||||
invalidHome=\u00a74Zuhause\u00a7c {0} \u00a74existiert nicht\!
|
||||
invalidHome=\u00a74Die Heimat\u00a7c {0} \u00a74existiert nicht\!
|
||||
invalidHomeName=\u00a74Ung\u00fcltiger Name\!
|
||||
invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74.
|
||||
invalidItemFlagMeta=\u00a74Ung\u00fcltige itemflag meta\: \u00a7c{0}\u00a74.
|
||||
invalidMob=\u00a74Unbekannter Mob-Typ.
|
||||
invalidNumber=Ung\u00fcltige Nummer.
|
||||
invalidPotion=\u00a74Ung\u00fcltiger Trank.
|
||||
@ -201,28 +201,29 @@ invalidSignLine=\u00a74Die Zeile\u00a7c {0} \u00a74auf dem Schild ist ung\u00fcl
|
||||
invalidSkull=\u00a74Bitte halte einen Spielerkopf in der Hand.
|
||||
invalidWarpName=\u00a74Ung\u00fcltiger Warp-Punkt-Name\!
|
||||
invalidWorld=\u00a74Ung\u00fcltige Welt.
|
||||
inventoryClearFail=\u00a74Spieler {0} \u00a74hat keine\u00a7c {1} {2}\u00a74.
|
||||
inventoryClearingAllArmor=\u00a76Alle Gegenst\u00e4nde im Inventar und R\u00fcstung von {0} \u00a76entfernt.
|
||||
inventoryClearingAllItems=\u00a76Alle Gegenst\u00e4nde im Inventar von {0} \u00a76entfernt.
|
||||
inventoryClearingAllStack=\u00a76Alle\u00a7c {0} \u00a76von {1} \u00a76entfernt.
|
||||
inventoryClearingFromAll=\u00a76Leere das Inventar aller Spieler...
|
||||
inventoryClearFail=\u00a74Der Spieler {0} \u00a74hat keine\u00a7c {1} {2}\u00a74.
|
||||
inventoryClearingAllArmor=\u00a76Es wurden alle Gegenst\u00e4nde im Inventar sowie die R\u00fcstung von \u00A7c{0} \u00a76entfernt.
|
||||
inventoryClearingAllItems=\u00a76Es wurden alle Gegenst\u00e4nde im Inventar von \u00A7c{0} \u00a76entfernt.
|
||||
inventoryClearingAllStack=\u00a76Es wurden alle\u00a7c {0} \u00a76von \u00A7c{1} \u00a76entfernt.
|
||||
inventoryClearingFromAll=\u00a76Die Inventare aller Spieler wurden geleert...
|
||||
inventoryClearingStack=\u00a7c {0} {1} \u00a76von {2} \u00a76entfernt.
|
||||
is=ist
|
||||
isIpBanned=\u00a76IP \u00a7c{0} \u00a76wurde gesperrt.
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
internalError=\u00a7cBeim ausf\u00fchren des Befehls ist ein interner Fehler aufgetreten.
|
||||
itemCannotBeSold=\u00a74Dieser Gegenstand kann nicht verkauft werden.
|
||||
itemMustBeStacked=\u00a74Gegenstand muss als Stapel verkauft werden. Eine Anzahl von 2s verkauft 2 Stapel, usw.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74Gegenstand muss als Stapel verkauft werden. Eine Anzahl von 2s verkauft 2 Stapel usw.
|
||||
itemNames=\u00a76Kurze Gegenstandsnamen\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74Du hast nicht genug Gegenst\u00e4nde zum Verkaufen.
|
||||
itemNotEnough2=\u00a76Wenn du alles von dieser Art verkaufen m\u00f6chtest, nutze /sell itemname.
|
||||
itemNotEnough3=\u00a76/sell itemname -1 verkauft alles bis auf eins, usw.
|
||||
itemsConverted=\u00a76Alle Items in Bl\u00f6cke konvertiert.
|
||||
itemsCsvNotLoaded=Konnte items.csv nicht laden\!
|
||||
itemSellAir=Du versuchst Luft zu verkaufen? Nimm einen Gegenstand in die Hand.
|
||||
itemsNotConverted=\u00a74Du hast keine Items die in Bl\u00f6cke konvertiert werden k\u00f6nnen.
|
||||
itemNotEnough1=\u00a74Du hast nicht genug Gegenst\u00e4nde zu verkaufen.
|
||||
itemNotEnough2=\u00a76Wenn du alles von dieser Art verkaufen m\u00f6chtest, solltest du /sell itemname nutzen.
|
||||
itemNotEnough3=\u00a76/sell itemname -1 verkauft alles bis auf eins usw.
|
||||
itemsConverted=\u00a76Alle Items wurden in Bl\u00f6cke konvertiert.
|
||||
itemsCsvNotLoaded=items.csv konnte nicht geladen werden\!
|
||||
itemSellAir=Du versuchst Luft zu verkaufen?! Nimm einen Gegenstand in die Hand.
|
||||
itemsNotConverted=\u00a74Du hast keine Items, die in Bl\u00f6cke konvertiert werden k\u00f6nnen.
|
||||
itemSold=\u00a7aVerkauft f\u00fcr \u00a7c{0}\u00a7a ({1} {2} Einheiten je {3})
|
||||
itemSoldConsole=\u00a7a{0} $averkauft {1} f\u00fcr \u00a7a{2} \u00a7a({3} Einheiten je {4})
|
||||
itemSpawn=\u00a76Gebe\u00a7c {0}\u00a76x\u00a7c {1}
|
||||
itemSpawn=\u00a76Du gibst dir\u00a7c {0}\u00a76x\u00a7c {1}
|
||||
itemType=\u00a76Gegenstand\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
jailAlreadyIncarcerated=\u00a74Spieler ist bereits im Gef\u00e4ngnis\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
@ -233,122 +234,122 @@ jailReleasedPlayerNotify=\u00a76Du wurdest freigelassen\!
|
||||
jailSentenceExtended=\u00a76Gef\u00e4ngniszeit erweitert auf\: {0}
|
||||
jailSet=\u00a76Gef\u00e4ngnis\u00a7c {0} \u00a76wurde erstellt.
|
||||
jumpError=\u00a74Das w\u00fcrde deinen Computer \u00fcberlasten.
|
||||
kickDefault=Vom Server geworfen.
|
||||
kickedAll=\u00a74Alle Spieler vom Server geworfen.
|
||||
kickDefault=Du wurdest vom Server geworfen.
|
||||
kickedAll=\u00a74Alle Spieler wurden vom Server geworfen.
|
||||
kickExempt=\u00a74Du kannst diesen Spieler nicht rauswerfen.
|
||||
kill=\u00a7c{0} \u00a76get\u00f6tet.
|
||||
killExempt=\u00a74Du kannst \u00a7c{0}\u00a74 nicht t\u00f6ten.
|
||||
kitContains=\u00a76Ausr\u00fcstung \u00a7c{0} \u00a76enth\u00e4lt:
|
||||
kitCost=\ \u00a77\u00a7o({0})\u00a7r
|
||||
kitDelay=\u00a7m{0}\u00a7r
|
||||
kitError=\u00a74Es gibt keine g\u00fcltigen Ausr\u00fcstungen.
|
||||
kitError2=\u00a74Diese Ausr\u00fcstung ist nicht korrekt definiert. Kontaktiere einen Administrator.
|
||||
kitGiveTo=\u00a76Gebe \u00a7c{1}\u00a76 \u00a7c{0}\u00a76-Ausr\u00fcstung.
|
||||
kitInvFull=\u00a74Dein Inventar ist voll, lege Ausr\u00fcstung auf den Boden.
|
||||
kitError=\u00a74Es gibt keine g\u00fcltigen Kits.
|
||||
kitError2=\u00a74Dieses Kit ist nicht korrekt definiert. Kontaktiere einen Administrator.
|
||||
kitGiveTo=\u00a76Du gibst \u00a7c{1}\u00a76 \u00a7c{0}\u00a76-Ausr\u00fcstung.
|
||||
kitInvFull=\u00a74Dein Inventar ist voll. Das Kit wird auf den Boden gelegt.
|
||||
kitItem=\u00a76- \u00a7f{0}
|
||||
kitNotFound=\u00a74Diese Ausr\u00fcstung gibt es nicht.
|
||||
kitOnce=\u00a74Du kannst diese Ausr\u00fcstung nicht nochmals bekommen.
|
||||
kitReceive=\u00a7c{0}\u00a76-Ausr\u00fcstung erhalten.
|
||||
kits=\u00a76Ausr\u00fcstungen\: \u00a7r{0}
|
||||
kitTimed=\u00a74Du kannst diese Ausr\u00fcstung nicht innerhalb von\u00a7c {0}\u00a74 anfordern.
|
||||
leatherSyntax=\u00a76Leder-Farbdefinition\: color\:<red>,<green>,<blue> z.B.\: color\:255,0,0.
|
||||
kitNotFound=\u00a74Dieses Kit gibt es nicht.
|
||||
kitOnce=\u00a74Du kannst diese Kit nicht nochmals bekommen.
|
||||
kitReceive=\u00a7c{0}\u00a76-Kit erhalten.
|
||||
kits=\u00a76Kits\: \u00a7r{0}
|
||||
kitTimed=\u00a74Du kannst dieses Kit nicht innerhalb von\u00a7c {0}\u00a74 anfordern.
|
||||
leatherSyntax=\u00a76Leder-Farberkl\u00e4rung\: color\:<red>,<green>,<blue> z.B.\: color\:255,0,0.
|
||||
lightningSmited=\u00a76Du wurdest gepeinigt.
|
||||
lightningUse=\u00a76Peinige {0}
|
||||
lightningUse=\u00a76Peinige \u00A7c{0}
|
||||
listAfkTag=\u00a77[Abwesend]\u00a7r
|
||||
listAmount=\u00a76Es sind \u00a7c{0}\u00a76 von maximal \u00a7c{1}\u00a76 Spielern online.
|
||||
listAmountHidden=\u00a76Es sind \u00a7c{0}\u00a76/{1}\u00a76 von maximal \u00a7c{2}\u00a76 Spielern online.
|
||||
listGroupTag=\u00a76{0}\u00a7r\: \u00a7r
|
||||
listHiddenTag=\u00a77[Versteckt]\u00a7r
|
||||
loadWarpError=\u00a74Fehler beim Laden von Warp-Punkt {0}.
|
||||
loadWarpError=\u00a74Beim Laden vom Warp-Punkt \u00A7c{0}\u00a76 ist ein Fehler aufgetreten.
|
||||
localFormat=[L]<{0}> {1}
|
||||
localNoOne=
|
||||
mailClear=\u00a76Um deine Nachrichten zu l\u00f6schen, schreibe\u00a7c /mail clear.
|
||||
mailCleared=\u00a76Nachrichten gel\u00f6scht\!
|
||||
mailCleared=\u00a76Nachrichten wurden gel\u00f6scht\!
|
||||
mailDelay=In der letzten Minute wurden zu viele Mails gesendet. Maximum\: {0}
|
||||
mailFormat=\u00a76[\u00a7r{0}\u00a76] \u00a7r{1}
|
||||
mailMessage={0}
|
||||
mailSent=\u00a76Nachricht gesendet\!
|
||||
mailSent=\u00a76Nachricht wurde gesendet\!
|
||||
mailSentTo=\u00a7c{0}\u00a76 wurde diese Mail gesendet\:
|
||||
mailTooLong=\u00a74Nachricht zu lang. Schreibe nicht mehr als 1000 Zeichen.
|
||||
markedAsAway=\u00a76Du wirst als abwesend angezeigt.
|
||||
mailTooLong=\u00a74Die Nachricht ist zu lang. Benutze weniger als 1000 Zeichen.
|
||||
markedAsAway=\u00a76Du wirst jetzt als abwesend angezeigt.
|
||||
markedAsNotAway=\u00a76Du wirst nicht mehr als abwesend angezeigt.
|
||||
markMailAsRead=\u00a76Um deine Nachrichten zu l\u00f6schen, schreibe\u00a7c /mail clear.
|
||||
matchingIPAddress=\u00a76Die folgenden Spieler haben sich vorher schonmal mit der IP-Adresse eingeloggt\:
|
||||
maxHomes=\u00a74Du kannst nicht mehr als\u00a7c {0} \u00a74Homes setzen.
|
||||
maxHomes=\u00a74Du kannst nicht mehr als\u00a7c {0} \u00a74Heimaten setzen.
|
||||
maxMoney=\u00a74Diese \u00dcberweisung \u00fcberschreitet das Limit des Empf\u00e4ngers.
|
||||
mayNotJail=\u00a74Du kannst diese Person nicht einsperren.
|
||||
mayNotJailOffline=\u00a74Du darfst abgemeldete Spieler nicht einsperren.
|
||||
me=Du
|
||||
minimumPayAmount=\u00a7cThe minimum amount you can pay is {0}.
|
||||
minimumPayAmount=\u00a7c{0}\u00a74 ist der Mindestbetrag, den du f\u00fcr eine \u00fcberweisung aufbringen musst.
|
||||
minute=Minute
|
||||
minutes=Minuten
|
||||
missingItems=\u00a74Du hast nicht \u00a7c{0}x {1}\u00a74.
|
||||
mobDataList=\u00a76G\u00fcltige Mob Daten\:\u00a7r {0}
|
||||
mobsAvailable=\u00a76Mobs\:\u00a7r {0}
|
||||
mobSpawnError=\u00a74Fehler beim \u00c4ndern des Monster-Spawner.
|
||||
mobSpawnLimit=Anzahl an Monster auf Serverlimit beschr\u00e4nkt.
|
||||
mobSpawnError=\u00a74Beim \u00c4ndern des Monster-Spawners ist ein Fehler aufgetreten.
|
||||
mobSpawnLimit=Die Anzahl an Monstern wurde auf das festgelegte Limit beschr\u00e4nkt.
|
||||
mobSpawnTarget=\u00a74Zielblock muss ein Monster-Spawner sein.
|
||||
moneyRecievedFrom=\u00a7a{1} \u00a7ahat dir {0} gegeben.
|
||||
moneySentTo=\u00a7aDu hast {1}\u00a7a {0} gegeben.
|
||||
moneySentTo=\u00a7aDu hast \u00a76{1} {0} \u00A7agegeben.
|
||||
month=Monat
|
||||
months=Monate
|
||||
moreThanZero=\u00a74Anzahl muss gr\u00f6\u00dfer als 0 sein.
|
||||
moveSpeed=\u00a76Setze {0}-Geschwindigkeit f\u00fcr \u00a7c{2} \u00a76auf \u00a7c{1}.
|
||||
msgDisabled=\u00a76Receiving messages \u00a7cdisabled\u00a76.
|
||||
msgDisabledFor=\u00a76Receiving messages \u00a7cdisabled \u00a76for \u00a7c{0}\u00a76.
|
||||
msgEnabled=\u00a76Receiving messages \u00a7cenabled\u00a76.
|
||||
msgEnabledFor=\u00a76Receiving messages \u00a7cenabled \u00a76for \u00a7c{0}\u00a76.
|
||||
msgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a7r{2}
|
||||
msgIgnore=\u00a7c{0} \u00a74has messages disabled.
|
||||
moveSpeed=\u00a76Die {0}-Geschwindigkeit f\u00fcr \u00a7c{2} \u00a76wurde auf \u00a7c{1} \u00a76gesetzt.
|
||||
msgDisabled=\u00a76Das Empfangen von Nachrichten wurde \u00a7cdeaktiviert\u00a76.
|
||||
msgDisabledFor=\u00a76Das Empfangen von Nachrichten wurde f\u00fcr \u00a7a{0} \u00a7cdeaktiviert\u00a76.
|
||||
msgEnabled=\u00a76Das Empfangen von Nachrichten wurde \u00a7caktiviert\u00a76.
|
||||
msgEnabledFor=\u00a76Das Empfangen von Nachrichten wurden \u00fcr\u00a7a{0} \u00a7aktiviert\u00a76.
|
||||
msgFormat=\u00a76[\u00a7c{0}\u00a76 --> \u00a7c{1}\u00a76] \u00a7r{2}
|
||||
msgIgnore=\u00a7c{0} \u00a74hat Benachrichtigungen deaktiviert.
|
||||
multipleCharges=\u00a74Du kannst einem Feuerwerk nur einen Feuerwerksstern geben.
|
||||
multiplePotionEffects=\u00a74Du kannst diesem Trank nur einen Effekt geben.
|
||||
mutedPlayer=\u00a76Spieler\u00a7c {0}\u00a76 ist nicht mehr stumm.
|
||||
mutedPlayerFor=\u00a76Spieler\u00a7c {0} \u00a76ist nun stumm f\u00fcr\u00a7c {1} \u00a76.
|
||||
mutedUserSpeaks={0} versuchte zu sprechen, aber ist stumm geschaltet.
|
||||
muteExempt=\u00a74Du darfst diesen Spieler nicht muten.
|
||||
muteExempt=\u00a74Du darfst diesen Spieler nicht stumm schalten.
|
||||
muteExemptOffline=\u00a74Du darfst abgemeldete Spieler nicht stummschalten.
|
||||
muteNotify=\u00a7c{0} \u00a76hat Spieler \u00a7c{1}\u00a76 stumm geschaltet.
|
||||
muteNotifyFor=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76.
|
||||
muteNotifyFor=\u00a7c{0} \u00a76hat den Spieler \u00a7c{1}\u00a76 f\u00fcr\u00a7c {2}\u00a76stumm geschaltet.
|
||||
nearbyPlayers=\u00a76Spieler in der N\u00e4he\:\u00a7r {0}
|
||||
negativeBalanceError=\u00a74Spieler darf keine Schulden machen.
|
||||
negativeBalanceError=\u00a74Spieler d\u00fcrfen keine Schulden machen.
|
||||
nickChanged=\u00a76Spitzname ge\u00e4ndert.
|
||||
nickDisplayName=\u00a74Du musst change-displayname in der Essentials-Konfiguration aktivieren.
|
||||
nickInUse=\u00a74Dieser Name wird bereits verwendet.
|
||||
nickNamesAlpha=\u00a74Nicknamen d\u00fcrfen nur alphanumerische Zeichen enthalten.
|
||||
nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colors changed.
|
||||
nickNamesOnlyColorChanges=\u00a74Beim Spitznamen darf nur die Farbe ge\u00e4ndert werden.
|
||||
nickNoMore=\u00a76Du hast keinen Spitznamen mehr.
|
||||
nickSet=\u00a76Dein Spitzname ist nun \u00a7c{0}.
|
||||
nickSet=\u00a76Dein Spitzname lautet nun \u00a7c{0}.
|
||||
nickTooLong=\u00a74Dieser Spitzname ist zu lang.
|
||||
noAccessCommand=\u00a74Du hast keinen Zugriff auf diesen Befehl.
|
||||
noAccessPermission=\u00a74Du hast keine Rechte, um dies zu betreten \u00a7c{0}\u00a74.
|
||||
noAccessCommand=\u00a74Dir ist es nicht erlaubt, den Befehl zu verwenden.
|
||||
noAccessPermission=\u00a74Dir ist es nicht erlaubt, das zu betreten. \u00a7c{0}\u00a74.
|
||||
noBreakBedrock=\u00a74Du darfst Grundgestein nicht zerst\u00f6ren.
|
||||
noDestroyPermission=\u00a74Du hast keine Rechte, um dies zu zerst\u00f6ren \u00a7c{0}\u00a74.
|
||||
noDestroyPermission=\u00a74Du bist nicht berechtigt, um dies zu zerst\u00f6ren \u00a7c{0}\u00a74.
|
||||
noDurability=\u00a74Dieser Gegenstand hat keine Haltbarkeit.
|
||||
northEast=NE
|
||||
northEast=NO
|
||||
north=N
|
||||
northWest=NW
|
||||
noGodWorldWarning=\u00a74Warnung\! Unsterblichkeitsmodus ist in dieser Welt deaktiviert.
|
||||
noHelpFound=\u00a74Keine \u00fcbereinstimmenden Befehle.
|
||||
noHomeSetPlayer=\u00a76Spieler hat kein Zuhause gesetzt.
|
||||
noHomeSetPlayer=\u00a76Der Spieler hat keine Heimat festgelegt.
|
||||
noIgnored=\u00a76Du ignorierst niemanden.
|
||||
noJailsDefined=\u00a76No jails defined.
|
||||
noKitGroup=\u00a74Du hast auf diese Ausr\u00fcstung keinen Zugriff.
|
||||
noKitPermission=\u00a74Du brauchst die Berechtigung \u00a7c{0}\u00a74 um diese Ausr\u00fcstung anzufordern.
|
||||
noKits=\u00a76Es sind keine Ausr\u00fcstungen verf\u00fcgbar.
|
||||
noLocationFound=\u00a74Keine g\u00fcltige Position gefunden.
|
||||
noJailsDefined=\u00a76Es ist kein Gef\u00c4ngnis erstellt.
|
||||
noKitGroup=\u00a74Du hast auf dieses Kit keinen Zugriff.
|
||||
noKitPermission=\u00a74Du brauchst die Berechtigung \u00a7c{0}\u00a74 um dieses Kit anzufordern.
|
||||
noKits=\u00a76Es sind keine Kits verf\u00fcgbar.
|
||||
noLocationFound=\u00a74Es wurde keine g\u00fcltige Position gefunden.
|
||||
noMail=\u00a76Du hast keine Nachrichten.
|
||||
noMatchingPlayers=\u00a76Keine \u00fcbereinstimmenden Spieler gefunden.
|
||||
noMetaFirework=\u00a74Du darfst keine Berechtigung Feuerwerk-Metadaten zu bearbeiten.
|
||||
noMetaFirework=\u00a74Du hast keine Berechtigung Feuerwerk-Metadaten zu bearbeiten.
|
||||
noMetaJson=JSON MetaDaten werden in dieser Bukkit-Version nicht unterst\u00fctzt.
|
||||
noMetaPerm=\u00a74Du darfst dem Gegenstand \u00a7c{0}\u00a74 keine Metadaten geben.
|
||||
none=keine
|
||||
noNewMail=\u00a76Du hast keine neue Nachrichten.
|
||||
noPendingRequest=\u00a74Du hast keine Teleportierungsanfragen.
|
||||
noPerm=\u00a74Du hast die Berechtigung \u00a7c{0}\u00a74 nicht.
|
||||
noPermissionSkull=$4Du hast nicht die Berechtigung diesen Kopf zu \u00e4ndern.
|
||||
noPermissionSkull=$4Du bist nicht berechtigt, diesen Kopf zu \u00e4ndern.
|
||||
noPermToAFKMessage=\u00a74Du bist nicht berechtigt eine AFK-Nachricht zu setzen.
|
||||
noPermToSpawnMob=\u00a74Du bist nicht berechtigt diesen Mob zu spawnen.
|
||||
noPlacePermission=\u00a7cDu hast keine Rechte einen Block in der N\u00e4he des Schildes zu platzieren.
|
||||
noPlacePermission=\u00a7cDu bist nicht berechtigt, einen Block in der N\u00e4he des Schildes zu platzieren.
|
||||
noPotionEffectPerm=\u00a74Du darfst den Zaubertrankeffekt \u00a7c{0} \u00a74diesem Trank nicht hinzuf\u00fcgen.
|
||||
noPowerTools=\u00a76Du hast keine Powertools zugewiesen.
|
||||
notAcceptingPay=\u00a74{0} \u00a74akzeptiert keine Zahlungen.
|
||||
@ -361,37 +362,37 @@ nothingInHand=\u00a74Du hast nichts in der Hand.
|
||||
notRecommendedBukkit=\u00a74* \! * Die verwendete Bukkit-Version ist nicht f\u00fcr Essentials empfohlen.
|
||||
notSupportedYet=Noch nicht verf\u00fcgbar.
|
||||
now=jetzt
|
||||
noWarpsDefined=\u00a76Keine Warp-Punkte erstellt.
|
||||
nuke=\u00a75M\u00f6ge der Tod auf Euch hernieder prasseln\!
|
||||
numberRequired=Ein Zahl wird ben\u00f6tigt.
|
||||
noWarpsDefined=\u00a76Es sind keine Warp-Punkte erstellt.
|
||||
nuke=\u00a75M\u00f6ge der Tod auf Euch hernieder prasseln und euch vernichten :>\!
|
||||
numberRequired=Du musst eine Zahl angeben.
|
||||
onlyDayNight=/time unterst\u00fctzt nur day und night.
|
||||
onlyPlayers=\u00a74Nur Ingame-Spieler k\u00f6nnen \u00a7c{0} \u00a74benutzen.
|
||||
onlyPlayerSkulls=\u00a74Du kannst nur den Besitzer von Spielerk\u00f6pfen (\u00a7c397\:3\u00a74) \u00e4ndern.
|
||||
onlySunStorm=\u00a74/weather unterst\u00fctzt nur sun und storm.
|
||||
openingDisposal=\u00a76Opening disposal menu...
|
||||
openingDisposal=\u00a76\u00f6ffne das Entsorgungsmen\u00fc...
|
||||
orderBalances=\u00a76Ordne die Kontost\u00e4nde von\u00a7c {0} \u00a76Benutzern, bitte warten ...
|
||||
oversizedTempban=\u00a74Du darfst einen Spieler nicht f\u00fcr so eine lange Zeit bannen.
|
||||
payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments.
|
||||
payConfirmToggleOn=\u00a76You will now be prompted to confirm payments.
|
||||
payConfirmToggleOff=\u00a76Du wirst nicht l\u00c4nger aufgefordert, Zahlungen zu best\u00e4tigen.
|
||||
payConfirmToggleOn=\u00a76Du wirst ab jetzt aufgefordert, Zahlungen zu best\u00e4tigen.
|
||||
payMustBePositive=\u00a74Du kannst nur positive Betr\u00e4ge \u00FCberweisen.
|
||||
payToggleOff=\u00a76Du akzeptierst keine Zahlungen mehr.
|
||||
payToggleOn=\u00a76Du akzeptierst nun Zahlungen.
|
||||
pendingTeleportCancelled=\u00a74Laufende Teleportation abgebrochen.
|
||||
pendingTeleportCancelled=\u00a74Die laufende Teleportation wurde abgebrochen.
|
||||
playerBanIpAddress=\u00a76Spieler\u00a7c {0} \u00a76hat die IP-Adresse\u00a7c {1} \u00a76f\u00fcr\: \u00a7c{2} \u00a76gesperrt.
|
||||
playerBanned=\u00a76Spieler\u00a7c {0} \u00a76bannte\u00a7c {1} \u00a76wegen\: \u00a7c{2}\u00a76.
|
||||
playerInJail=\u00a74Spieler ist bereits in Gef\u00e4ngnis\u00a7c {0}\u00a76.
|
||||
playerBanned=\u00a76Spieler\u00a7c {0} \u00a76hat\u00a7c {1} \u00a76wegen\: \u00a7c{2}\u00a76 gebannt.
|
||||
playerInJail=\u00a74Spieler ist bereits im Gef\u00e4ngnis\u00a7c {0}\u00a76.
|
||||
playerJailed=\u00a76Spieler\u00a7c {0} \u00a76eingesperrt.
|
||||
playerJailedFor=\u00a76Spieler\u00a7c {0} \u00a76eingesperrt f\u00fcr {1}.
|
||||
playerKicked=\u00a76Spieler\u00a7c {0} \u00a76hat\u00a7c {1} \u00a76für \u00a7c {2} \u00a76rausgeworfen.
|
||||
playerJailedFor=\u00a76Spieler\u00a7c {0} \u00a76wurde f\u00fcr {1} eingesperrt.
|
||||
playerKicked=\u00a76Spieler\u00a7c {0} \u00a76hat\u00a7c {1} \u00a76f\u00fcr \u00a7c {2} \u00a76rausgeworfen.
|
||||
playerMuted=\u00a76Du bist jetzt stumm\!
|
||||
playerMutedFor=\u00a76Du bist jetzt stumm f\u00fcr\u00a7c {0}.
|
||||
playerMutedFor=\u00a76Du bist jetzt f\u00fcr\u00a7c {0} \u00a76stumm.
|
||||
playerNeverOnServer=\u00a74Spieler\u00a7c {0} \u00a74war niemals auf diesem Server.
|
||||
playerNotFound=\u00a74Spieler nicht gefunden.
|
||||
playerTempBanned=\u00a76Spieler \u00a7c{0}\u00a76 hat \u00a7c{1}\u00a76 f\u00fcr \u00a7c{2} \u00a76 gebannt wegen: \u00a7c{3}\u00a76.
|
||||
playerTempBanned=\u00a76Spieler \u00a7c{0}\u00a76 hat \u00a7c{1}\u00a76 f\u00fcr \u00a7c{2} \u00a76 gebannt. Grund: \u00a7c{3}\u00a76.
|
||||
playerUnbanIpAddress=\u00a76Spieler\u00a7c {0} \u00a76hat die IP-Adresse {1} \u00a76entsperrt.
|
||||
playerUnbanned=\u00a76Spieler\u00a7c {0} \u00a76hat {1}\u00a76 entbannt.
|
||||
playerUnmuted=\u00a76Du bist nicht mehr stumm.
|
||||
pong=Pong\!
|
||||
pong=\u00A7b..::\u00a74Pông\u00A7b::..\!
|
||||
posPitch=\u00a76Pitch\: {0} (Neigewinkel)
|
||||
possibleWorlds=\u00a76M\u00f6gliche Welten sind die Nummern \u00a7c0\u00a76 bis \u00a7c{0}\u00a76.
|
||||
posX=\u00a76X\: {0} (+Ost <-> -West)
|
||||
@ -401,35 +402,35 @@ posZ=\u00a76Z\: {0} (+S\u00fcd <-> -Nord)
|
||||
potions=\u00a76Zaubertr\u00e4nke\:\u00a7r {0}\u00a76.
|
||||
powerToolAir=\u00a74Befehl kann nicht mit Luft verbunden werden.
|
||||
powerToolAlreadySet=\u00a74Der Befehl \u00a7c{0}\u00a74 ist bereits \u00a7c{c{1}\u00a74 zugewiesen.
|
||||
powerToolAttach=\u00a76Befehl \u00a7c{0}\u00a7f erfolgreich an {1} gebunden.
|
||||
powerToolAttach=\u00a76Befehl \u00a7c{0}\u00a7f wurde erfolgreich an {1} gebunden.
|
||||
powerToolClearAll=\u00a76Alle Powertoolbefehle wurden entfernt.
|
||||
powerToolList=\u00a76Gegenstand \u00a7c{1} \u00a76hat die folgenden Befehle\: \u00a7c{0}\u00a76.
|
||||
powerToolListEmpty=\u00a74Gegenstand \u00a7c{0} $4hat keinen Befehl.
|
||||
powerToolNoSuchCommandAssigned=\u00a74Der Befehl \u00a7c{0}\u00a74 wurde nicht \u00a7c{1}\u00a74 zugewiesen.
|
||||
powerToolRemove=\u00a76Der Befehl \u00a7c{0}\u00a76 wurde von \u00a7c{1}\u00a76 entfernt.
|
||||
powerToolRemoveAll=\u00a76Alle Befehle von \u00a7c{0}\u00a76 entfernt.
|
||||
powerToolsDisabled=\u00a76Alle deine Powertools wurden deaktiviert.
|
||||
powerToolsEnabled=\u00a76Alle deine Powertools wurden aktiviert.
|
||||
powerToolRemoveAll=\u00a76Alle Befehle von \u00a7c{0}\u00a76 wurden entfernt.
|
||||
powerToolsDisabled=\u00a76All deine Powertools wurden deaktiviert.
|
||||
powerToolsEnabled=\u00a76All deine Powertools wurden aktiviert.
|
||||
pTimeCurrent=\u00a76Die Zeit f\u00fcr\u00a7c {0} \u00a76ist\u00a7c {1}\u00a76.
|
||||
pTimeCurrentFixed=\u00a76Die Zeit f\u00fcr \u00a7c{0}\u00a76 wurde auf \u00a7c{1}\u00a76 gesetzt.
|
||||
pTimeNormal=\u00a76Die Zeit f\u00fcr \u00a7c{0}\u00a76 ist normal und entspricht der Serverzeit.
|
||||
pTimeOthersPermission=\u00a74Du hast keine Berechtigung die Zeit von anderen Spielern zu \u00e4ndern.
|
||||
pTimePlayers=\u00a76Diese Spieler haben ihre eigene Zeit\:\u00a7r
|
||||
pTimeReset=\u00a76Zeit wurde zur\u00fcckgesetzt f\u00fcr\: \u00a7c{0}
|
||||
pTimeSet=\u00a76Zeit wurde f\u00fcr \u00a7c{1}\u00a76 auf \u00a7c{0}\u00a76 gesetzt.
|
||||
pTimeSetFixed=\u00a76Spielerzeit ist festgesetzt auf \u00a7c{0}\u00a76 f\u00fcr\: \u00a7c{1}
|
||||
pTimeReset=\u00a76Die Zeit wurde f\u00fcr \u00a7c{0} \u00a76zur\u00fcckgesetzt.
|
||||
pTimeSet=\u00a76DieZeit wurde f\u00fcr \u00a7c{1}\u00a76 auf \u00a7c{0}\u00a76 gesetzt.
|
||||
pTimeSetFixed=\u00a76Spielerzeit ist f\u00fcr\: \u00a7c{1} auf \u00a7c{0}\u00a76 fixiert.
|
||||
pWeatherCurrent=\u00a76Das Wetter von\u00a7c {0} \u00a76ist\u00a7c {1}\u00a76.
|
||||
pWeatherInvalidAlias=\u00a74Ung\u00fcltiger Wettertyp
|
||||
pWeatherNormal=\u00a7cDas Wetter von \u00a7c{0}\u00a76 ist normal, wie auf dem Server.
|
||||
pWeatherOthersPermission=\u00a74Du darfst keinem Spieler das Wetter ver\u00e4ndern.
|
||||
pWeatherNormal=\u00a7cDas Wetter von \u00a7c{0}\u00a76 ist normal. (Entspricht dem Wetter auf dem Server).
|
||||
pWeatherOthersPermission=\u00a74Du darfst das Wetter bei Spielern nicht ver\u00e4ndern.
|
||||
pWeatherPlayers=\u00a76Diese Spieler haben ihr eigenes Wetter\:\u00a7r
|
||||
pWeatherReset=\u00a76Das Spielerwetter wurde zur\u00fcckgesetzt f\u00fcr\: \u00a7c{0}
|
||||
pWeatherSet=\u00a76Spielerwetter gesetzt auf \u00a7c{0}\u00a76 f\u00fcr\: \u00a7c{1}.
|
||||
pWeatherReset=\u00a76Das Spielerwetter wurde f\u00fcr\: \u00a7c{0}\u00a76 zur\u00fcckgesetzt.
|
||||
pWeatherSet=\u00a76Spielerwetter f\u00fcr\: \u00a7c{1}\u00a76 wurde auf \u00a7c{0}\u00a76 gesetzt.
|
||||
questionFormat=\u00a72[Frage]\u00a7r {0}
|
||||
radiusTooBig=\u00a74Radius ist zu gro\u00df\! Maximaler Radius ist {0}.
|
||||
radiusTooBig=\u00a74Der Radius ist zu gro\u00df\! Maximaler Radius ist {0}.
|
||||
readNextPage=\u00a76Tippe\u00a7c /{0} {1} \u00a76f\u00fcr die n\u00e4chste Seite.
|
||||
realName=\u00a7f{0}\u00a7r\u00a76 ist \u00a7f{1}
|
||||
recentlyForeverAlone=\u00a74{0} ging vor Kurzem offline.
|
||||
recentlyForeverAlone=\u00a74{0} ging vor kurzem Offline.
|
||||
recipe=\u00a76Rezept f\u00fcr \u00a7c{0}\u00a75 (\u00a7c{1}\u00a76 von \u00a7c{2}\u00a76)
|
||||
recipeBadIndex=Es gibt kein Rezept mit dieser Nummer.
|
||||
recipeFurnace=\u00a76Schmelzen\: \u00a7c{0}\u00a76.
|
||||
@ -446,120 +447,121 @@ repairAlreadyFixed=\u00a74Dieser Gegenstand ben\u00f6tigt keine Reparatur.
|
||||
repairEnchanted=\u00a74Du darfst keine verzauberten Gegenst\u00e4nde reparieren.
|
||||
repairInvalidType=\u00a74Dieser Gegenstand kann nicht repariert werden.
|
||||
repairNone=\u00a74Es sind keine Gegenst\u00e4nde vorhanden, die repariert werden k\u00f6nnen.
|
||||
requestAccepted=\u00a77Teleportierungsanfrage akzeptiert.
|
||||
requestAccepted=\u00a77Du hast die Teleportierungsanfrage \u00a7aangenommen.
|
||||
requestAcceptedFrom=\u00a7c{0} \u00a76hat deine Teleportierungsanfrage angenommen.
|
||||
requestDenied=\u00a76Teleportierungsanfrage verweigert.
|
||||
requestDenied=\u00a76Du hast die Teleportierungsanfrage \u00a7cabgelehnt.
|
||||
requestDeniedFrom=\u00a7c{0} \u00a76hat deine Teleportierungsanfrage abgelehnt.
|
||||
requestSent=\u00a76Anfrage gesendet an\u00a7c {0}\u00a76.
|
||||
requestSent=\u00a76Eine Anfrage wurde an\u00a7c {0}\u00a76 gesendet.
|
||||
requestSentAlready=\u00a74Du hast {0}\u00a74 bereits eine Teleportierungsanfrage gesendet.
|
||||
requestTimedOut=\u00a74Teleportierungsanfrage ist abgelaufen.
|
||||
requestTimedOut=\u00a74Die Teleportierungsanfrage ist abgelaufen.
|
||||
requiredBukkit=\u00a76* \! * Du brauchst mindestens CraftBukkit Build \#{0}, lade es von http\://dl.bukkit.org/downloads/craftbukkit/
|
||||
resetBal=\u00a76Kontostand aller Spieler auf dem Server auf \u00a7a{0} \u00a76gesetzt.
|
||||
resetBal=\u00a76Du hast den Kontostand aller Spieler auf \u00a7a{0} \u00a76gesetzt.
|
||||
resetBalAll=\u00a76Guthaben wurde f\u00fcr alle Spieler auf \u00a7c{0} zur\u00fcckgesetzt.
|
||||
returnPlayerToJailError=\u00a74Fehler beim zur\u00fccksetzen von\u00a7c {0} \u00a74in Gef\u00e4ngis\: {1}\!
|
||||
returnPlayerToJailError=\u00a74Fehler beim zur\u00fccksetzen von\u00a7c {0} \u00a74im Gef\u00e4ngis\: {1}\!
|
||||
runningPlayerMatch=\u00a76Suche nach Spielern mit ''\u00a7c{0}\u00a76'' im Namen (das kann etwas dauern)
|
||||
second=Sekunde
|
||||
seconds=Sekunden
|
||||
seenAccounts=\u00a76Spieler ist auch bekannt als\:\u00a7c {0}
|
||||
seenOffline=\u00a76Spieler\u00a7c {0} \u00a76ist \u00a74offline\u00a76 seit \u00a7c{1}\u00a76.
|
||||
seenOffline=\u00a76Spieler\u00a7c {0} \u00a76ist seit \u00a7c{1}\u00a74 offline\u00a76.
|
||||
seenOnline=\u00a76Spieler\u00a7c {0} \u00a76ist seit \u00a7c{1}\u00a7a online.
|
||||
sellBulkPermission=\u00a76Du hast keine Permission, in Massen zu verkaufen.
|
||||
sellHandPermission=\u00a76Du hast keine Permission, einzeln zu verkaufen.
|
||||
sellBulkPermission=\u00a76Du hast keine Berechtigung, in Massen zu verkaufen.
|
||||
sellHandPermission=\u00a76Du hast keine Berechtigung, einzeln zu verkaufen.
|
||||
serverFull=Server ist voll
|
||||
serverTotal=\u00a76Server insgesamt\:\u00a7c {0}
|
||||
setBal=\u00a7aDein Kontostand wurde auf {0} gesetzt.
|
||||
setBalOthers=\u00a7aDu hast den Kontostand von {0}\u00a7a auf {1} gesetzt.
|
||||
setSpawner=\u00a76Mob-Spawner-Typ zu \u00a7c{0}\u00a76 ge\u00e4ndert.
|
||||
serverUnsupported=\u00a7cDu verwendest eine Serverversion, die nicht unterst\u00fctzt wird!
|
||||
setBal=\u00a7aDein Kontostand wurde auf \u00a7c{0} \u00a7agesetzt.
|
||||
setBalOthers=\u00a7aDu hast den Kontostand von \u00A76{0}\u00a7a auf \u00A7c{1} \u00a7a gesetzt.
|
||||
setSpawner=\u00a76Mob-Spawner-Typ ge\u00e4ndert zu \u00a7c{0}\u00a76.
|
||||
sheepMalformedColor=\u00a74Ung\u00fcltige Farbe.
|
||||
shoutFormat=\u00a76[Schrei]\u00a7r {0}
|
||||
signFormatFail=\u00a74[{0}]
|
||||
signFormatSuccess=\u00a71[{0}]
|
||||
signFormatTemplate=[{0}]
|
||||
signProtectInvalidLocation=\u00a74Du hast keine Rechte ein Schild hier zu setzen.
|
||||
signProtectInvalidLocation=\u00a74Du hast keine Berechtigung hier ein Schild zu platzieren.
|
||||
similarWarpExist=\u00a74Ein Warp-Punkt mit einem \u00e4hnlichen Namen existiert bereits.
|
||||
southEast=SE
|
||||
southEast=SO
|
||||
south=S
|
||||
southWest=SW
|
||||
skullChanged=\u00a76Kopf zu \u00a7c{0} \u00a76ge\u00e4ndert.
|
||||
slimeMalformedSize=\u00a74Ung\u00fcltige Gr\u00f6\u00dfe.
|
||||
socialSpy=\u00a76SocialSpy f\u00fcr \u00a7c{0}\u00a76\ \u00a7c{1}\u00a76.
|
||||
socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2}
|
||||
socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 --> \u00a7c{1}\u00a76] \u00a77{2}
|
||||
socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r
|
||||
socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r
|
||||
soloMob=\u00a74Das Monster m\u00f6chte allein sein.
|
||||
spawned=erzeugt
|
||||
spawnSet=\u00a76Spawn-Punkt gesetzt f\u00fcr Gruppe \u00a7c{0}\u00a76.
|
||||
spectator=Zuschauer
|
||||
sudoExempt=\u00a74Du kannst f\u00fcr diesen Spieler kein sudo-Kommando ausf\u00fchren.
|
||||
spawnSet=\u00a76Du hast denSpawn-Punkt f\u00fcr die Gruppe \u00a7c{0}\u00a76 gesetzt.
|
||||
spectator=Zuschauermodus
|
||||
sudoExempt=\u00a74Du kannst f\u00fcr diesen Spieler keine Sudo-Befehle ausf\u00fchren.
|
||||
sudoRun=\u00a7c {0} \u00a76 wurde gezwungen \u00a7r /{1} \u00a76auszuf\u00fchren
|
||||
suicideMessage=\u00a76Ad\u00e9, du schn\u00f6de Welt...
|
||||
suicideSuccess=\u00a76{0} \u00a76hat sich das Leben genommen.
|
||||
suicideSuccess=\u00a76{0} \u00a76ist von uns gegangen. Rest in Peace :-(
|
||||
survival=\u00dcberleben
|
||||
takenFromAccount=\u00a7a{0} wurden von deinem Konto abgezogen.
|
||||
takenFromOthersAccount=\u00a7a{0} genommen von {1}\u00a7a. Neuer Kontostand\: {2}.
|
||||
teleportAAll=\u00a76Teleportierungsanfrage zu allen Spielern gesendet...
|
||||
teleportAll=\u00a76Teleportiere alle Spieler...
|
||||
takenFromAccount=\u00a7aVon deinem Konto wurden \u00a7c{0} \u00a7aabgezogen.
|
||||
takenFromOthersAccount=\u00A7aDu hast\u00a76 {1} \u00a7c{0} \u00a7aweggenommen. Neuer Kontostand\: \u00a7c{2}.
|
||||
teleportAAll=\u00a76Du hast an allen Spielern eine Teleportationsanfrage geschickt.
|
||||
teleportAll=\u00a76Teleportation l\u00e4uft f\u00fcr alle Spieler...
|
||||
teleportationCommencing=\u00a76Teleportation gestartet...
|
||||
teleportationDisabled=\u00a76Teleportation \u00a7cdeaktiviert\u00a76.
|
||||
teleportationDisabledFor=\u00a76Teleportation f\u00fcr \u00a7c{0} deaktiviert\u00a76.
|
||||
teleportationEnabled=\u00a76Teleportation \u00a7caktiviert\u00a76.
|
||||
teleportationEnabledFor=\u00a76Teleportation f\u00fcr \u00a7c{0} aktiviert\u00a76.
|
||||
teleportAtoB=\u00a7c{0}\u00a76 teleportiert dich zu {1}\u00a76.
|
||||
teleportDisabled=\u00a7c{0} \u00a74verweigert die Teleportierung.
|
||||
teleportHereRequest=\u00a7c{0}\u00a76 fragt, ob du dich zu ihm teleportierst.
|
||||
teleporting=\u00a76Teleportiere...
|
||||
teleportDisabled=\u00a7c{0} \u00a74verweigert die Teleportation.
|
||||
teleportHereRequest=\u00a7c{0}\u00a76 fragt, ob du dich zu ihm teleportieren m\u00f6chtest.
|
||||
teleporting=\u00a76Teleportation l\u00e4uft...
|
||||
teleportInvalidLocation=Der Wert der angegebenen Koordinaten darf nicht \u00fcber 30000000 sein
|
||||
teleportNewPlayerError=\u00a74Fehler beim Teleportieren eines neuen Spielers\!
|
||||
teleportRequest=\u00a7c{0}\u00a76 fragt, ob er sich zu dir teleportieren darf.
|
||||
teleportRequestAllCancelled=\u00a76Alle ausstehenden Teleportationsanfragen wurden abgebrochen.
|
||||
teleportRequestSpecificCancelled=\u00a76Ausstehende Teleportationsanfrage mit {0} wurde abgebrochen.
|
||||
teleportRequestTimeoutInfo=\u00a76Diese Anfrage wird nach\u00a7c {0} Sekunden\u00a76 ung\u00fcltig.
|
||||
teleportTop=\u00a76Teleportiere nach oben.
|
||||
teleportToPlayer=\u00a76teleportieren zu \u00a7c{0}\u00a76.
|
||||
teleportRequestSpecificCancelled=\u00a76Ausstehende Teleportationsanfrage mit \u00a7c{0}\u00a76 wurde abgebrochen.
|
||||
teleportRequestTimeoutInfo=\u00a76Diese Anfrage wird nach\u00a7c {0} Sekunden\u00a76 ung\u00fcltig sein.
|
||||
teleportTop=\u00a76Zum h\u00f6chsten Punkt teleportieren.
|
||||
teleportToPlayer=\u00a76Du teleportierst dich zu \u00a7c{0}\u00a76.
|
||||
tempbanExempt=\u00a74Du kannst diesen Spieler nicht zeitlich bannen.
|
||||
tempbanExemptOffline=\u00a74Du darfst abgemeldete Spieler nicht tempor\u00e4r verbannen.
|
||||
tempbanJoin=You are banned from this server for {0}. Reason: {1}
|
||||
tempBanned=\u00a7cDu wurdest f\u00fcr {0} verbannt\:\n\u00a7r{2}
|
||||
thunder=\u00a76Es donnert nun in deiner Welt \u00a7c{0}\u00a76.
|
||||
thunderDuration=\u00a76Es donnert nun f\u00fcr\u00a7c {1} \u00a76Sekunden in deiner Welt\u00a7c {0}\u00a76.
|
||||
tempbanExemptOffline=\u00a74Du darfst abgemeldete Spieler nicht zeitlich sperren.
|
||||
tempbanJoin=\u00a74Du bist auf diesem Server gabennt. \nDauer: {0} \nGrund: {1}
|
||||
tempBanned=\u00a7cDu wurdest f\u00fcr {0} gebannt. \:\n\u00a7r{2}
|
||||
thunder=\u00a76Es donnert jetzt in deiner Welt \u00a7c{0}\u00a76.
|
||||
thunderDuration=\u00a76Es donnert jetzt f\u00fcr\u00a7c {1} \u00a76Sekunden in der Welt\u00a7c {0}\u00a76.
|
||||
timeBeforeHeal=\u00a74Zeit bis zur n\u00e4chsten Heilung\:\u00a7c {0}\u00a76.
|
||||
timeBeforeTeleport=\u00a74Zeit bis zum n\u00e4chsten Teleport\:\u00a7c {0}
|
||||
timeFormat=\u00a7c{0}\u00a76 oder \u00a7c{1}\u00a76 oder \u00a7c{2}\u00a76
|
||||
timeSetPermission=\u00a74Du hast keine Berechtigung die Zeit zu \u00e4ndern.
|
||||
timeSetWorldPermission=\u00a74You are not authorized to set the time in world ''{0}''.
|
||||
timeSetWorldPermission=\u00a74Du bist nicht berechtigt in der Welt \u00a7c''{0}''\u00a74 die Zeit zu \u00e4ndern.
|
||||
timeWorldCurrent=\u00a76Die aktuelle Zeit in\u00a7c {0} \u00a76ist \u00a7c{1}
|
||||
timeWorldSet=\u00a76Die Zeit in \u00a7c{1}\u00a76 wurde zu \u00a7c{0} \u00a76gesetzt.
|
||||
timeWorldSet=\u00a76Die Zeit in \u00a7c{1}\u00a76 wurde auf \u00a7c{0} \u00a76gesetzt.
|
||||
totalSellableAll=\u00a7aDer Gesamtwert von allen Bl\u00f6cken und Items ist \u00a7c{1}\u00a7a.
|
||||
totalSellableBlocks=\u00a7aDer Gesamtwert der verkaufbaren Bl\u00f6cke ist \u00a7c{1}\u00a7a.
|
||||
totalWorthAll=\u00a7aAlle Gegenst\u00e4nde und Bl\u00f6cke f\u00fcr einen Gesamtwert von \u00a7c{1}\u00a7a verkauft.
|
||||
totalWorthBlocks=\u00a7aAlle Bl\u00f6cke f\u00fcr einen Gesamtwert von \u00a7c{1}\u00a7a verkauft.
|
||||
totalWorthAll=\u00a7aDu hast alle Gegenst\u00e4nde und Bl\u00f6cke f\u00fcr einen Gesamtwert von \u00a7c{1}\u00a7a verkauft.
|
||||
totalWorthBlocks=\u00a7aDu hast alle Bl\u00f6cke f\u00fcr einen Gesamtwert von \u00a7c{1}\u00a7a verkauft.
|
||||
tps=\u00a76Aktuelle TPS \= {0}
|
||||
tradeSignEmpty=Der Bestand des Trade-Schild ist aufgebraucht.
|
||||
tradeSignEmptyOwner=Es gibt nichts mehr zu Sammeln von diesem Trade-Schild.
|
||||
tradeSignEmptyOwner=Es gibt nichts mehr von diesem Trade-Schild zu sammeln.
|
||||
treeFailure=\u00a74Baumpflanzung gescheitert. Versuche es nochmal auf Gras oder Erde.
|
||||
treeSpawned=\u00a76Baum gepflanzt.
|
||||
treeSpawned=\u00a76Baum wurde gepflanzt.
|
||||
true=\u00a7aja\u00a7r
|
||||
typeTpacancel=\u00a76To cancel this request, type \u00a7c/tpacancel\u00a76.
|
||||
typeTpaccept=\u00a76Um zu teleportieren, schreibe \u00a7c/tpaccept\u00a76.
|
||||
typeTpdeny=\u00a76Um diese Anfrage abzulehnen, schreibe \u00a7c/tpdeny\u00a76.
|
||||
typeTpacancel=\u00a76Du kannst die Anfrage mit \u00a7c/tpacancel\u00a76 ablehnen.
|
||||
typeTpaccept=\u00a76Du kannst die Teleportationsanfrage mit \u00a7c/tpaccept\u00a76 annehmen.
|
||||
typeTpdeny=\u00a76Du kannst diese Anfrage mit \u00a7c/tpdeny\u00a76 ablehnen.
|
||||
typeWorldName=\u00a76Du kannst auch den Namen der Welt eingeben.
|
||||
unableToSpawnItem=\u00a74Kann nicht \u00a7c{0}\u00a74 spawnen, es ist ein nicht spawnbares Item.
|
||||
unableToSpawnMob=\u00a74Fehler beim Erzeugen des Monsters.
|
||||
unignorePlayer=\u00a76Du ignorierst Spieler\u00a7c {0} \u00a76nicht mehr.
|
||||
unableToSpawnItem=\u00a7c{0}\u00a74 Kann nicht gespawnt werde, da es ein nicht spawnbares Item ist.
|
||||
unableToSpawnMob=\u00a74Beim Erschaffen des Monsters ist ein Fehler aufgetreten.
|
||||
unignorePlayer=\u00a76Du ignorierst \u00a7c {0} \u00a76nicht mehr.
|
||||
unknownItemId=\u00a74Unbekannte Gegenstandsnummer\:\u00a7r {0}\u00a74.
|
||||
unknownItemInList=\u00a74Unbekannter Gegenstand {0} in Liste {1}.
|
||||
unknownItemInList=\u00a74Unbekannter Gegenstand {0} in der Liste {1}.
|
||||
unknownItemName=\u00a74Unbekannter Gegenstand\: {0}.
|
||||
unlimitedItemPermission=\u00a74Keine Permission f\u00fcr unendlich Items \u00a7c{0}\u00a74.
|
||||
unlimitedItemPermission=\u00a74Keine Berechtigung f\u00fcr unendliche Items \u00a7c{0}\u00a74.
|
||||
unlimitedItems=\u00a76Unbegrenzte Objekte\:\u00a7r
|
||||
unmutedPlayer=\u00a76Spieler\u00a7c {0}\u00a76 ist nicht mehr stumm.
|
||||
unsafeTeleportDestination=\u00a74Das Teleport-Ziel ist nicht sicher und der Teleportschutz ist nicht aktiv.
|
||||
unvanishedReload=\u00a74Ein Neuladen des Servers hat dich sichtbar gemacht.
|
||||
unvanishedReload=\u00a74Das Neuladen des Servers hat dich sichtbar gemacht.
|
||||
upgradingFilesError=Fehler beim Aktualisieren der Dateien
|
||||
uptime=\u00a76Laufzeit\:\u00a7c {0}
|
||||
userAFK=\u00a77{0} \u00a75ist gerade nicht da und antwortet wahrscheinlich nicht.
|
||||
userAFKWithMessage=\u00a77{0} \u00a75ist gerade nicht da und antwortet wahrscheinlich nicht. Grund: {1}
|
||||
userdataMoveBackError=Verschieben von userdata/{0}.tmp nach userdata/{1} gescheitert.
|
||||
userdataMoveError=Verschieben von userdata/{0} nach userdata/{1}.tmp gescheitert.
|
||||
userdataMoveBackError=Verschieben von userdata/{0}.tmp nach userdata/{1} ist gescheitert.
|
||||
userdataMoveError=Verschieben von userdata/{0} nach userdata/{1}.tmp ist gescheitert.
|
||||
userDoesNotExist=\u00a74Spieler\u00a7c {0} \u00a74existiert nicht.
|
||||
userIsAway=\u00a77* {0} \u00a77ist nun abwesend.
|
||||
userIsAwayWithMessage=\u00a77* {0} \u00a77ist nun abwesend.
|
||||
@ -569,25 +571,30 @@ userUnknown=\u00a74Warnung\: Der Spieler ''\u00a7c{0}\u00a74'' war nie auf diese
|
||||
usingTempFolderForTesting=Benutze tempor\u00e4ren Ordner zum Testen\:
|
||||
vanish=\u00a76Unsichtbar f\u00fcr {0} \u00a76\: {1}
|
||||
vanished=\u00a76Du bist nun vollst\u00e4ndig unsichtbar f\u00fcr normale Benutzer und ihre Befehle.
|
||||
versionMismatch=\u00a74Versionen nicht identisch\! Bitte aktualisiere {0}.
|
||||
versionMismatchAll=\u00a74Versionen ungleich\! Bitte aktualisiere alle Essentials jar-Dateien auf die gleiche Version.
|
||||
voiceSilenced=\u00a76Du bist nun stumm\!
|
||||
versionOutputVaultMissing=\u00a74Vault ist nicht installiert. Der Chat und die Permission k\u00F6nnten nicht funktionieren.
|
||||
versionOutputFine=\u00a76{0} Version: \u00a7a{1}
|
||||
versionOutputWarn=\u00a76{0} Version: \u00a7c{1}
|
||||
versionOutputUnsupported=\u00a7d{0} \u00a76Version: \u00a7d{1}
|
||||
versionOutputUnsupportedPlugins=\u00a76Du verwendest Plugins, die \u00A7dnicht \u00a76unterst\u00fctzt werden!
|
||||
versionMismatch=\u00a74Versionen sind nicht gleich\! Bitte aktualisiere {0}.
|
||||
versionMismatchAll=\u00a74Versionen sind nicht gleich\! Bitte aktualisiere alle Essentials jar-Dateien auf die gleiche Version.
|
||||
voiceSilenced=\u00a76Du bist nun stummgeschaltet\!
|
||||
walking=gehend
|
||||
warpDeleteError=\u00a74Fehler beim L\u00f6schen der Warp-Datei.
|
||||
warpingTo=\u00a76Teleportiere zu Warp-Punkt\u00a7c {0}\u00a76.
|
||||
warpDeleteError=\u00a74Beim L\u00f6schen der Warp-Datei ist ein Fehler aufgetreten.
|
||||
warpingTo=\u00a76Du teleportierst dich nach\u00a7c {0}\u00a76.
|
||||
warpList={0}
|
||||
warpListPermission=\u00a74Du hast keine Berechtigung, die Warp-Punkte anzuzeigen.
|
||||
warpListPermission=\u00a74Du hast keine Berechtigung die Warp-Punkte anzuzeigen.
|
||||
warpNotExist=\u00a74Warp-Punkt existiert nicht.
|
||||
warpOverwrite=\u00a74Du kannst diesen Warp-Punkt nicht ersetzen.
|
||||
warps=\u00a76Warp-Punkte\:\u00a7r {0}
|
||||
warpsCount=\u00a76Es existieren\u00a7c {0} \u00a76Warps. Zeige \u00a7c{1} \u00a76von \u00a7c{2}\u00a76.
|
||||
warpsCount=\u00a76Es existieren\u00a7c {0} \u00a76Warps. Zeige \u00a7c{1} \u00a76von \u00a7c{2}\u00a76 an.
|
||||
warpSet=\u00a76Warp-Punkt\u00a7c {0} \u00a76wurde erstellt.
|
||||
warpUsePermission=\u00a74Du hast keinen Zugriff f\u00fcr diesen Warp-Punkt.
|
||||
weatherInvalidWorld=Welt mit dem Namen {0} wurde nicht gefunden\!
|
||||
weatherStorm=\u00a76In \u00a7c{0} \u00a76st\u00fcrmt es nun.
|
||||
weatherStormFor=\u00a76In \u00a7c{0} \u00a76st\u00fcrmt es nun f\u00fcr {1} Sekunden.
|
||||
weatherSun=\u00a76In \u00a7c{0}\u00a76 scheint nun die \u00a7cSonne\u00a76.
|
||||
weatherSunFor=\u00a76In \u00a7c{0} \u00a76scheint nun f\u00fcr {1} Sekunden die \u00a7cSonne\u00a76.
|
||||
warpUsePermission=\u00a74Du bist f\u00fcr diesen Warp-Punkt nicht berechtigt.
|
||||
weatherInvalidWorld=Die Welt mit dem Namen {0} wurde nicht gefunden\!
|
||||
weatherStorm=\u00a76In \u00a7c{0} \u00a76st\u00fcrmt es jetzt.
|
||||
weatherStormFor=\u00a76In \u00a7c{0} \u00a76st\u00fcrmt es jetzt f\u00fcr {1} Sekunden.
|
||||
weatherSun=\u00a76In \u00a7c{0}\u00a76 scheint jetzt die \u00a7cSonne\u00a76.
|
||||
weatherSunFor=\u00a76In \u00a7c{0} \u00a76scheint jetzt f\u00fcr {1} Sekunden die \u00a7cSonne\u00a76.
|
||||
west=W
|
||||
whoisAFK=\u00a76 - Abwesend\:\u00a7r {0}
|
||||
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Seit {1})
|
||||
@ -606,14 +613,14 @@ whoisMoney=\u00a76 - Kontostand\:\u00a7r {0}
|
||||
whoisMuted=\u00a76 - Stumm\:\u00a7r {0}
|
||||
whoisNick=\u00a76 - Spitzname\:\u00a7r {0}
|
||||
whoisOp=\u00a76 - OP\:\u00a7r {0}
|
||||
whoisPlaytime=\u00a76 - Playtime\:\u00a7r {0}
|
||||
whoisPlaytime=\u00a76 - Spielzeit\:\u00a7r {0}
|
||||
whoisTempBanned=\u00a76 - Bann endet:\u00a7r {0}
|
||||
whoisTop=\u00a76 \=\=\=\=\=\= WhoIs\:\u00a7c {0} \u00a76\=\=\=\=\=\=
|
||||
whoisUuid=\u00a76 - UUID\:\u00a7r {0}
|
||||
worth=\u00a7aEin Stapel {0} ist \u00a7c{1}\u00a7a wert ({2} Einheiten je {3})
|
||||
worthMeta=\u00a7aEin Stapel von {0} mit Metadaten {1} ist \u00a7c{2}\u00a7a wert. ({3} Einheiten je {4})
|
||||
worth=\u00a7aEin Stapel {0} ist \u00a7c{1}\u00a7a wert. ({2} St\u00fcck je {3})
|
||||
worthMeta=\u00a7aEin Stapel von {0} mit Metadaten {1} ist \u00a7c{2}\u00a7a wert. ({3} St\u00fcck je {4})
|
||||
worthSet=\u00a76Wert des Gegenstands gesetzt.
|
||||
year=Jahr
|
||||
years=Jahre
|
||||
youAreHealed=\u00a76Du wurdest geheilt.
|
||||
youHaveNewMail=\u00a76Du hast \u00a7c{0} \u00a76Nachrichten\! Schreibe \u00a7c/mail read\u00a76 um deine Nachrichten anzuzeigen.
|
||||
youHaveNewMail=\u00a76Du hast \u00a7c{0} \u00a76Nachrichten\! Schreibe \u00a7c/mail read\u00a76 damit du deine Nachrichten lesen kannst.
|
||||
|
@ -211,6 +211,7 @@ is=is
|
||||
isIpBanned=\u00a76IP \u00a7c{0} \u00a76is banned.
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemCannotBeSold=\u00a74That item cannot be sold to the server.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74Item must be traded in stacks. A quantity of 2s would be two stacks, etc.
|
||||
itemNames=\u00a76Item short names\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74You do not have enough of that item to sell.
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
|
||||
itemSold=\u00a7aSold for \u00a7c{0} \u00a7a({1} {2} at {3} each).
|
||||
itemSoldConsole=\u00a7a{0} \u00a7asold {1} for \u00a7a{2} \u00a7a({3} items at {4} each).
|
||||
itemSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1}
|
||||
itemType=\u00a76Item\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76Item\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74Person is already in jail\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a74You do the crime, you do the time.
|
||||
@ -251,7 +252,7 @@ kitOnce=\u00a74You can''t use that kit again.
|
||||
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
|
||||
kits=\u00a76Kits\:\u00a7r {0}
|
||||
kitTimed=\u00a74You can''t use that kit again for another\u00a7c {0}\u00a74.
|
||||
leatherSyntax=\u00a76Leather color syntax\: color\:<red>,<green>,<blue> eg\: color\:255,0,0.
|
||||
leatherSyntax=\u00a76Leather color syntax\: color\:<red>,<green>,<blue> eg\: color\:255,0,0 OR color\:<rgb int> eg\: color\:16777011
|
||||
lightningSmited=\u00a76Thou hast been smitten\!
|
||||
lightningUse=\u00a76Smiting\u00a7c {0}
|
||||
listAfkTag=\u00a77[AFK]\u00a7r
|
||||
@ -262,7 +263,7 @@ listHiddenTag=\u00a77[HIDDEN]\u00a7r
|
||||
loadWarpError=\u00a74Failed to load warp {0}.
|
||||
localFormat=[L]<{0}> {1}
|
||||
localNoOne=
|
||||
mailClear=\u00a76To mark your mail as read, type\u00a7c /mail clear\u00a76.
|
||||
mailClear=\u00a76To clear your mail, type\u00a7c /mail clear\u00a76.
|
||||
mailCleared=\u00a76Mail cleared\!
|
||||
mailDelay=Too many mails have been sent within the last minute. Maximum\: {0}
|
||||
mailFormat=\u00a76[\u00a7r{0}\u00a76] \u00a7r{1}
|
||||
@ -304,7 +305,7 @@ multipleCharges=\u00a74You cannot apply more than one charge to this firework.
|
||||
multiplePotionEffects=\u00a74You cannot apply more than one effect to this potion.
|
||||
mutedPlayer=\u00a76Player\u00a7c {0} \u00a76muted.
|
||||
mutedPlayerFor=\u00a76Player\u00a7c {0} \u00a76muted for\u00a7c {1}\u00a76.
|
||||
mutedUserSpeaks={0} tried to speak, but is muted.
|
||||
mutedUserSpeaks={0} tried to speak, but is muted: {1}
|
||||
muteExempt=\u00a74You may not mute that player.
|
||||
muteExemptOffline=\u00a74You may not mute offline players.
|
||||
muteNotify=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76.
|
||||
@ -467,6 +468,7 @@ sellBulkPermission=\u00a76You do not have permission to bulk sell.
|
||||
sellHandPermission=\u00a76You do not have permission to hand sell.
|
||||
serverFull=Server is full\!
|
||||
serverTotal=\u00a76Server Total\:\u00a7c {0}
|
||||
serverUnsupported=You are running an unsupported server version!
|
||||
setBal=\u00a7aYour balance was set to {0}.
|
||||
setBalOthers=\u00a7aYou set {0}\u00a7a''s balance to {1}.
|
||||
setSpawner=\u00a76Changed spawner type to\u00a7c {0}\u00a76.
|
||||
@ -490,7 +492,7 @@ soloMob=\u00a74That mob likes to be alone.
|
||||
spawned=spawned
|
||||
spawnSet=\u00a76Spawn location set for group\u00a7c {0}\u00a76.
|
||||
spectator=spectator
|
||||
sudoExempt=\u00a74You cannot sudo this user.
|
||||
sudoExempt=\u00a74You cannot sudo \u00a7c{0}.
|
||||
sudoRun=\u00a76Forcing\u00a7c {0} \u00a76to run\:\u00a7r /{1}
|
||||
suicideMessage=\u00a76Goodbye cruel world...
|
||||
suicideSuccess=\u00a76Player \u00a7c{0} \u00a76took their own life.
|
||||
@ -569,6 +571,11 @@ userUnknown=\u00a74Warning\: The user ''\u00a7c{0}\u00a74'' has never joined thi
|
||||
usingTempFolderForTesting=Using temp folder for testing\:
|
||||
vanish=\u00a76Vanish for {0}\u00a76\: {1}
|
||||
vanished=\u00a76You are now completely invisible to normal users, and hidden from in-game commands.
|
||||
versionOutputVaultMissing=\u00a74Vault is not installed. Chat and permissions may not work.
|
||||
versionOutputFine=\u00a76{0} version: \u00a7a{1}
|
||||
versionOutputWarn=\u00a76{0} version: \u00a7c{1}
|
||||
versionOutputUnsupported=\u00a7d{0} \u00a76version: \u00a7d{1}
|
||||
versionOutputUnsupportedPlugins=\u00a76You are running \u00a7dunsupported plugins\u00a76!
|
||||
versionMismatch=\u00a74Version mismatch\! Please update {0} to the same version.
|
||||
versionMismatchAll=\u00a74Version mismatch\! Please update all Essentials jars to the same version.
|
||||
voiceSilenced=\u00a76Your voice has been silenced\!
|
||||
|
620
Essentials/src/messages_en_GB.properties
Normal file
620
Essentials/src/messages_en_GB.properties
Normal file
@ -0,0 +1,620 @@
|
||||
#X-Generator: crowdin.net
|
||||
#version: ${full.version}
|
||||
# Single quotes have to be doubled: ''
|
||||
# Translations start here
|
||||
# by:
|
||||
action=\u00a75* {0} \u00a75{1}
|
||||
addedToAccount=\u00a7a{0} has been added to your account.
|
||||
addedToOthersAccount=\u00a7a{0} added to {1}\u00a7a account. New balance\: {2}
|
||||
adventure=adventure
|
||||
alertBroke=broke\:
|
||||
alertFormat=\u00a73[{0}] \u00a7r {1} \u00a76 {2} at\: {3}
|
||||
alertPlaced=placed\:
|
||||
alertUsed=used\:
|
||||
alphaNames=\u00a74Player names can only contain letters, numbers and underscores.
|
||||
antiBuildBreak=\u00a74You are not permitted to break\u00a7c {0} \u00a74blocks here.
|
||||
antiBuildCraft=\u00a74You are not permitted to create\u00a7c {0}\u00a74.
|
||||
antiBuildDrop=\u00a74You are not permitted to drop\u00a7c {0}\u00a74.
|
||||
antiBuildInteract=\u00a74You are not permitted to interact with\u00a7c {0}\u00a74.
|
||||
antiBuildPlace=\u00a74You are not permitted to place\u00a7c {0} \u00a74here.
|
||||
antiBuildUse=\u00a74You are not permitted to use\u00a7c {0}\u00a74.
|
||||
autoAfkKickReason=You have been kicked for idling more than {0} minutes.
|
||||
backAfterDeath=\u00a76Use the /back command to return to your death point.
|
||||
backupDisabled=\u00a74An external backup script has not been configured.
|
||||
backupFinished=\u00a76Backup finished.
|
||||
backupStarted=\u00a76Backup started.
|
||||
backUsageMsg=\u00a76Returning to previous location.
|
||||
balance=\u00a7aBalance\:\u00a7c {0}
|
||||
balanceOther=\u00a7aBalance of {0}\u00a7a\:\u00a7c {1}
|
||||
balanceTop=\u00a76Top balances ({0})
|
||||
banExempt=\u00a74You cannot ban that player.
|
||||
banExemptOffline=\u00a74You may not ban offline players.
|
||||
banFormat=\u00a7cYou have been banned\:\n\u00a7r{0}
|
||||
banIpJoin=Your IP address is banned from this server. Reason: {0}
|
||||
banJoin=You are banned from this server. Reason: {0}
|
||||
bed=\u00a7obed\u00a7r
|
||||
bedMissing=\u00a74Your bed is either unset, missing or blocked.
|
||||
bedNull=\u00a7mbed\u00a7r
|
||||
bedSet=\u00a76Bed spawn set\!
|
||||
bigTreeFailure=\u00a74Big tree generation failure. Try again on grass or dirt.
|
||||
bigTreeSuccess=\u00a76Big tree spawned.
|
||||
blockList=\u00a76Essentials relayed the following commands to another plugin\:
|
||||
bookAuthorSet=\u00a76Author of the book set to {0}.
|
||||
bookLocked=\u00a76This book is now locked.
|
||||
bookTitleSet=\u00a76Title of the book set to {0}.
|
||||
broadcast=\u00a7r\u00a76[\u00a74Broadcast\u00a76]\u00a7a {0}
|
||||
buildAlert=\u00a74You are not permitted to build.
|
||||
bukkitFormatChanged=Bukkit version format changed. Version not checked.
|
||||
burnMsg=\u00a76You set\u00a7c {0} \u00a76on fire for\u00a7c {1} seconds\u00a76.
|
||||
cannotStackMob=\u00a74You do not have permission to stack multiple mobs.
|
||||
canTalkAgain=\u00a76You can now talk again.
|
||||
cantFindGeoIpDB=Can''t find GeoIP database\!
|
||||
cantGamemode=\u00a74You do not have permission to change to gamemode {0}
|
||||
cantReadGeoIpDB=Failed to read GeoIP database\!
|
||||
cantSpawnItem=\u00a74You are not allowed to spawn the item\u00a7c {0}\u00a74.
|
||||
chatTypeAdmin=[A]
|
||||
chatTypeLocal=[L]
|
||||
chatTypeSpy=[Spy]
|
||||
cleaned=Userfiles Cleaned.
|
||||
cleaning=Cleaning userfiles.
|
||||
clearInventoryConfirmToggleOff=\u00a76You will no longer be prompted to confirm inventory clears.
|
||||
clearInventoryConfirmToggleOn=\u00a76You will now be prompted to confirm inventory clears.
|
||||
commandCooldown=\u00a7cYou cannot type that command for {0}.
|
||||
commandFailed=Command {0} failed\:
|
||||
commandHelpFailedForPlugin=Error getting help for plugin\: {0}
|
||||
commandNotLoaded=\u00a74Command {0} is improperly loaded.
|
||||
compassBearing=\u00a76Bearing\: {0} ({1} degrees).
|
||||
configFileMoveError=Failed to move config.yml to backup location.
|
||||
configFileRenameError=Failed to rename temp file to config.yml.
|
||||
confirmClear=\u00a77To \u00a7lCONFIRM\u00a77 inventory clear, please repeat command: \u00a76{0}
|
||||
confirmPayment=\u00a77To \u00a7lCONFIRM\u00a77 payment of \u00a76{0}\u00a77, please repeat command: \u00a76{1}
|
||||
connectedPlayers=\u00a76Connected players\u00a7r
|
||||
connectionFailed=Failed to open connection.
|
||||
cooldownWithMessage=\u00a74Cooldown\: {0}
|
||||
coordsKeyword={0}, {1}, {2}
|
||||
corruptNodeInConfig=\u00a74Notice\: Your configuration file has a corrupt {0} node.
|
||||
couldNotFindTemplate=\u00a74Could not find template {0}
|
||||
createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2}
|
||||
createKitFailed=\u00a74Error occurred whilst creating kit {0}.
|
||||
createKitSeparator=\u00a7m-----------------------
|
||||
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your kits.yml.
|
||||
creatingConfigFromTemplate=Creating config from template\: {0}
|
||||
creatingEmptyConfig=Creating empty config\: {0}
|
||||
creative=creative
|
||||
currency={0}{1}
|
||||
currentWorld=\u00a76Current World\:\u00a7c {0}
|
||||
day=day
|
||||
days=days
|
||||
defaultBanReason=The Ban Hammer has spoken\!
|
||||
deleteFileError=Could not delete file\: {0}
|
||||
deleteHome=\u00a76Home\u00a7c {0} \u00a76has been removed.
|
||||
deleteJail=\u00a76Jail\u00a7c {0} \u00a76has been removed.
|
||||
deleteWarp=\u00a76Warp\u00a7c {0} \u00a76has been removed.
|
||||
deniedAccessCommand=\u00a7c{0} \u00a74was denied access to command.
|
||||
denyBookEdit=\u00a74You cannot unlock this book.
|
||||
denyChangeAuthor=\u00a74You cannot change the author of this book.
|
||||
denyChangeTitle=\u00a74You cannot change the title of this book.
|
||||
depth=\u00a76You are at sea level.
|
||||
depthAboveSea=\u00a76You are\u00a7c {0} \u00a76block(s) above sea level.
|
||||
depthBelowSea=\u00a76You are\u00a7c {0} \u00a76block(s) below sea level.
|
||||
destinationNotSet=Destination not set\!
|
||||
disabled=disabled
|
||||
disabledToSpawnMob=\u00a74Spawning this mob was disabled in the config file.
|
||||
disableUnlimited=\u00a76Disabled unlimited placing of\u00a7c {0} \u00a76for {1}.
|
||||
distance=\u00a76Distance\: {0}
|
||||
dontMoveMessage=\u00a76Teleportation will commence in\u00a7c {0}\u00a76. Don''t move.
|
||||
downloadingGeoIp=Downloading GeoIP database... this might take a while (country\: 1.7 MB, city\: 30MB)
|
||||
duplicatedUserdata=Duplicated userdata\: {0} and {1}.
|
||||
durability=\u00a76This tool has \u00a7c{0}\u00a76 uses left.
|
||||
east=E
|
||||
editBookContents=\u00a7eYou may now edit the contents of this book.
|
||||
enabled=enabled
|
||||
enableUnlimited=\u00a76Giving unlimited amount of\u00a7c {0} \u00a76to \u00a7c{1}\u00a76.
|
||||
enchantmentApplied=\u00a76The enchantment\u00a7c {0} \u00a76has been applied to your item in hand.
|
||||
enchantmentNotFound=\u00a74Enchantment not found\!
|
||||
enchantmentPerm=\u00a74You do not have the permission for\u00a7c {0}\u00a74.
|
||||
enchantmentRemoved=\u00a76The enchantment\u00a7c {0} \u00a76has been removed from your item in hand.
|
||||
enchantments=\u00a76Enchantments\:\u00a7r {0}
|
||||
errorCallingCommand=Error calling the command /{0}
|
||||
errorWithMessage=\u00a7cError\:\u00a74 {0}
|
||||
essentialsHelp1=The file is broken and Essentials can''t open it. Essentials is now disabled. If you can''t fix the file yourself, go to http\://tiny.cc/EssentialsChat
|
||||
essentialsHelp2=The file is broken and Essentials can''t open it. Essentials is now disabled. If you can''t fix the file yourself, either type /essentialshelp in game or go to http\://tiny.cc/EssentialsChat
|
||||
essentialsReload=\u00a76Essentials reloaded\u00a7c {0}.
|
||||
exp=\u00a7c{0} \u00a76has\u00a7c {1} \u00a76exp (level\u00a7c {2}\u00a76) and needs\u00a7c {3} \u00a76more exp to level up.
|
||||
expSet=\u00a7c{0} \u00a76now has\u00a7c {1} \u00a76exp.
|
||||
extinguish=\u00a76You extinguished yourself.
|
||||
extinguishOthers=\u00a76You extinguished {0}\u00a76.
|
||||
failedToCloseConfig=Failed to close config {0}.
|
||||
failedToCreateConfig=Failed to create config {0}.
|
||||
failedToWriteConfig=Failed to write config {0}.
|
||||
false=\u00a74false\u00a7r
|
||||
feed=\u00a76Your appetite was sated.
|
||||
feedOther=\u00a76You satiated the appetite of \u00a7c{0}\u00a76.
|
||||
fileRenameError=Renaming file {0} failed\!
|
||||
fireworkColor=\u00a74Invalid firework charge parameters inserted, must set a colour first.
|
||||
fireworkEffectsCleared=\u00a76Removed all effects from held stack.
|
||||
fireworkSyntax=\u00a76Firework parameters\:\u00a7c color\:<colour> [fade\:<colour>] [shape\:<shape>] [effect\:<effect>]\n\u00a76To use multiple colours/effects, separate values with commas\: \u00a7cred,blue,pink\n\u00a76Shapes\:\u00a7c star, ball, large, creeper, burst \u00a76Effects\:\u00a7c trail, twinkle.
|
||||
flying=flying
|
||||
flyMode=\u00a76Set fly mode\u00a7c {0} \u00a76for {1}\u00a76.
|
||||
foreverAlone=\u00a74You have nobody to whom you can reply.
|
||||
fullStack=\u00a74You already have a full stack.
|
||||
gameMode=\u00a76Set game mode\u00a7c {0} \u00a76for \u00a7c{1}\u00a76.
|
||||
gameModeInvalid=\u00a74You need to specify a valid player/mode.
|
||||
gcfree=\u00a76Free memory\:\u00a7c {0} MB.
|
||||
gcmax=\u00a76Maximum memory\:\u00a7c {0} MB.
|
||||
gctotal=\u00a76Allocated memory\:\u00a7c {0} MB.
|
||||
gcWorld=\u00a76{0} "\u00a7c{1}\u00a76"\: \u00a7c{2}\u00a76 chunks, \u00a7c{3}\u00a76 entities, \u00a7c{4}\u00a76 tiles.
|
||||
geoipJoinFormat=\u00a76Player \u00a7c{0} \u00a76comes from \u00a7c{1}\u00a76.
|
||||
geoIpUrlEmpty=GeoIP download url is empty.
|
||||
geoIpUrlInvalid=GeoIP download url is invalid.
|
||||
givenSkull=\u00a76You have been given the skull of \u00a7c{0}\u00a76.
|
||||
giveSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1} to\u00a7c {2}\u00a76.
|
||||
giveSpawnFailure=\u00a74Not enough space, \u00a7c{0} \u00a7c{1} \u00a74was lost.
|
||||
godDisabledFor=\u00a7cdisabled\u00a76 for\u00a7c {0}
|
||||
godEnabledFor=\u00a7aenabled\u00a76 for\u00a7c {0}
|
||||
godMode=\u00a76God mode\u00a7c {0}\u00a76.
|
||||
groupDoesNotExist=\u00a74There''s no one online in this group\!
|
||||
groupNumber=\u00a7c{0}\u00a7f online, for the full list\:\u00a7c /{1} {2}
|
||||
hatArmor=\u00a74You cannot use this item as a hat\!
|
||||
hatEmpty=\u00a74You are not wearing a hat.
|
||||
hatFail=\u00a74You must have something to wear in your hand.
|
||||
hatPlaced=\u00a76Enjoy your new hat\!
|
||||
hatRemoved=\u00a76Your hat has been removed.
|
||||
haveBeenReleased=\u00a76You have been released.
|
||||
heal=\u00a76You have been healed.
|
||||
healDead=\u00a74You cannot heal someone who is dead\!
|
||||
healOther=\u00a76Healed\u00a7c {0}\u00a76.
|
||||
helpConsole=To view help from the console, type ?.
|
||||
helpFrom=\u00a76Commands from {0}\:
|
||||
helpLine=\u00a76/{0}\u00a7r\: {1}
|
||||
helpMatching=\u00a76Commands matching "\u00a7c{0}\u00a76"\:
|
||||
helpOp=\u00a74[HelpOp]\u00a7r \u00a76{0}\:\u00a7r {1}
|
||||
helpPlugin=\u00a74{0}\u00a7r\: Plugin Help\: /help {1}
|
||||
holdBook=\u00a74You are not holding a writable book.
|
||||
holdFirework=\u00a74You must be holding a firework to add effects.
|
||||
holdPotion=\u00a74You must be holding a potion to apply effects to it.
|
||||
holeInFloor=\u00a74Hole in floor\!
|
||||
homes=\u00a76Homes\:\u00a7r {0}
|
||||
homeSet=\u00a76Home set to current location.
|
||||
hour=hour
|
||||
hours=hours
|
||||
ignoredList=\u00a76Ignored\:\u00a7r {0}
|
||||
ignoreExempt=\u00a74You may not ignore that player.
|
||||
ignorePlayer=\u00a76You ignore player\u00a7c {0} \u00a76from now on.
|
||||
illegalDate=Illegal date format.
|
||||
infoChapter=\u00a76Select chapter\:
|
||||
infoChapterPages=\u00a7e ---- \u00a76{0} \u00a7e--\u00a76 Page \u00a7c{1}\u00a76 of \u00a7c{2} \u00a7e----
|
||||
infoPages=\u00a7e ---- \u00a76{2} \u00a7e--\u00a76 Page \u00a7c{0}\u00a76/\u00a7c{1} \u00a7e----
|
||||
infoUnknownChapter=\u00a74Unknown chapter.
|
||||
insufficientFunds=\u00a74Insufficient funds available.
|
||||
invalidBanner=\u00a74Invalid banner syntax.
|
||||
invalidCharge=\u00a74Invalid charge.
|
||||
invalidFireworkFormat=\u00a74The option \u00a7c{0} \u00a74is not a valid value for \u00a7c{1}\u00a74.
|
||||
invalidHome=\u00a74Home\u00a7c {0} \u00a74doesn''t exist\!
|
||||
invalidHomeName=\u00a74Invalid home name\!
|
||||
invalidItemFlagMeta=\u00a74Invalid itemflag meta\: \u00a7c{0}\u00a74.
|
||||
invalidMob=\u00a74Invalid mob type.
|
||||
invalidNumber=Invalid Number.
|
||||
invalidPotion=\u00a74Invalid Potion.
|
||||
invalidPotionMeta=\u00a74Invalid potion meta\: \u00a7c{0}\u00a74.
|
||||
invalidSignLine=\u00a74Line\u00a7c {0} \u00a74on sign is invalid.
|
||||
invalidSkull=\u00a74Please hold a player skull.
|
||||
invalidWarpName=\u00a74Invalid warp name\!
|
||||
invalidWorld=\u00a74Invalid world.
|
||||
inventoryClearFail=\u00a74Player {0} \u00a74does not have\u00a7c {1} \u00a74of\u00a7c {2}\u00a74.
|
||||
inventoryClearingAllArmor=\u00a76Cleared all inventory items and armour from {0}\u00a76.
|
||||
inventoryClearingAllItems=\u00a76Cleared all inventory items from {0}\u00a76.
|
||||
inventoryClearingAllStack=\u00a76Cleared all\u00a7c {0} \u00a76from {1}\u00a76.
|
||||
inventoryClearingFromAll=\u00a76Clearing the inventory of all users...
|
||||
inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76from {2}\u00a76.
|
||||
is=is
|
||||
isIpBanned=\u00a76IP \u00a7c{0} \u00a76is banned.
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemCannotBeSold=\u00a74That item cannot be sold to the server.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74Item must be traded in stacks. A quantity of 2s would be two stacks, etc.
|
||||
itemNames=\u00a76Item short names\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74You do not have enough of that item to sell.
|
||||
itemNotEnough2=\u00a76If you meant to sell all of your items of that type, use /sell itemname.
|
||||
itemNotEnough3=\u00a76/sell itemname -1 will sell all but one item, etc.
|
||||
itemsConverted=\u00a76Converted all items into blocks.
|
||||
itemsCsvNotLoaded=Could not load items.csv\!
|
||||
itemSellAir=You really tried to sell Air? Put an item in your hand.
|
||||
itemsNotConverted=\u00a74You have no items that can be converted into blocks.
|
||||
itemSold=\u00a7aSold for \u00a7c{0} \u00a7a({1} {2} at {3} each).
|
||||
itemSoldConsole=\u00a7a{0} \u00a7asold {1} for \u00a7a{2} \u00a7a({3} items at {4} each).
|
||||
itemSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1}
|
||||
itemType=\u00a76Item\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
jailAlreadyIncarcerated=\u00a74Person is already in jail\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a74You do the crime, you do the time.
|
||||
jailNotExist=\u00a74That jail does not exist.
|
||||
jailReleased=\u00a76Player \u00a7c{0}\u00a76 unjailed.
|
||||
jailReleasedPlayerNotify=\u00a76You have been released\!
|
||||
jailSentenceExtended=\u00a76Jail time extended to \u00a7c{0}\u00a76.
|
||||
jailSet=\u00a76Jail\u00a7c {0} \u00a76has been set.
|
||||
jumpError=\u00a74That would hurt your computer''s brain.
|
||||
kickDefault=Kicked from server.
|
||||
kickedAll=\u00a74Kicked all players from server.
|
||||
kickExempt=\u00a74You cannot kick that person.
|
||||
kill=\u00a76Killed\u00a7c {0}\u00a76.
|
||||
killExempt=\u00a74You cannot kill \u00a7c{0}\u00a74.
|
||||
kitContains=\u00a76Kit \u00a7c{0} \u00a76contains:
|
||||
kitCost=\ \u00a77\u00a7o({0})\u00a7r
|
||||
kitDelay=\u00a7m{0}\u00a7r
|
||||
kitError=\u00a74There are no valid kits.
|
||||
kitError2=\u00a74That kit is improperly defined. Contact an administrator.
|
||||
kitGiveTo=\u00a76Giving kit\u00a7c {0}\u00a76 to \u00a7c{1}\u00a76.
|
||||
kitInvFull=\u00a74Your inventory was full, placing kit on the floor.
|
||||
kitItem=\u00a76- \u00a7f{0}
|
||||
kitNotFound=\u00a74That kit does not exist.
|
||||
kitOnce=\u00a74You can''t use that kit again.
|
||||
kitReceive=\u00a76Received kit\u00a7c {0}\u00a76.
|
||||
kits=\u00a76Kits\:\u00a7r {0}
|
||||
kitTimed=\u00a74You can''t use that kit again for another\u00a7c {0}\u00a74.
|
||||
leatherSyntax=\u00a76Leather colour syntax\: color\:<red>,<green>,<blue> eg\: color\:255,0,0.
|
||||
lightningSmited=\u00a76Thou hast been smitten\!
|
||||
lightningUse=\u00a76Smiting\u00a7c {0}
|
||||
listAfkTag=\u00a77[AFK]\u00a7r
|
||||
listAmount=\u00a76There are \u00a7c{0}\u00a76 out of maximum \u00a7c{1}\u00a76 players online.
|
||||
listAmountHidden=\u00a76There are \u00a7c{0}\u00a76/{1}\u00a76 out of maximum \u00a7c{2}\u00a76 players online.
|
||||
listGroupTag=\u00a76{0}\u00a7r\: \u00a7r
|
||||
listHiddenTag=\u00a77[HIDDEN]\u00a7r
|
||||
loadWarpError=\u00a74Failed to load warp {0}.
|
||||
localFormat=[L]<{0}> {1}
|
||||
localNoOne=
|
||||
mailClear=\u00a76To mark your mail as read, type\u00a7c /mail clear\u00a76.
|
||||
mailCleared=\u00a76Mail cleared\!
|
||||
mailDelay=Too many mails have been sent within the last minute. Maximum\: {0}
|
||||
mailFormat=\u00a76[\u00a7r{0}\u00a76] \u00a7r{1}
|
||||
mailMessage={0}
|
||||
mailSent=\u00a76Mail sent\!
|
||||
mailSentTo=\u00a7c{0}\u00a76 has been sent the following mail\:
|
||||
mailTooLong=\u00a74Mail message too long. Try to keep it below 1000 characters.
|
||||
markedAsAway=\u00a76You are now marked as away.
|
||||
markedAsNotAway=\u00a76You are no longer marked as away.
|
||||
markMailAsRead=\u00a76To mark your mail as read, type\u00a7c /mail clear\u00a76.
|
||||
matchingIPAddress=\u00a76The following players previously logged in from that IP address\:
|
||||
maxHomes=\u00a74You cannot set more than\u00a7c {0} \u00a74homes.
|
||||
maxMoney=\u00a74This transaction would exceed the balance limit for this account.
|
||||
mayNotJail=\u00a74You may not jail that person\!
|
||||
mayNotJailOffline=\u00a74You may not jail offline players.
|
||||
me=me
|
||||
minimumPayAmount=\u00a7cThe minimum amount you can pay is {0}.
|
||||
minute=minute
|
||||
minutes=minutes
|
||||
missingItems=\u00a74You do not have \u00a7c{0}x {1}\u00a74.
|
||||
mobDataList=\u00a76Valid mob data\:\u00a7r {0}
|
||||
mobsAvailable=\u00a76Mobs\:\u00a7r {0}
|
||||
mobSpawnError=\u00a74Error while changing mob spawner.
|
||||
mobSpawnLimit=Mob quantity limited to server limit.
|
||||
mobSpawnTarget=\u00a74Target block must be a mob spawner.
|
||||
moneyRecievedFrom=\u00a7a{0} has been received from {1}.
|
||||
moneySentTo=\u00a7a{0} has been sent to {1}.
|
||||
month=month
|
||||
months=months
|
||||
moreThanZero=\u00a74Quantities must be greater than 0.
|
||||
moveSpeed=\u00a76Set {0} speed to\u00a7c {1} \u00a76for \u00a7c{2}\u00a76.
|
||||
msgDisabled=\u00a76Receiving messages \u00a7cdisabled\u00a76.
|
||||
msgDisabledFor=\u00a76Receiving messages \u00a7cdisabled \u00a76for \u00a7c{0}\u00a76.
|
||||
msgEnabled=\u00a76Receiving messages \u00a7cenabled\u00a76.
|
||||
msgEnabledFor=\u00a76Receiving messages \u00a7cenabled \u00a76for \u00a7c{0}\u00a76.
|
||||
msgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a7r{2}
|
||||
msgIgnore=\u00a7c{0} \u00a74has messages disabled.
|
||||
multipleCharges=\u00a74You cannot apply more than one charge to this firework.
|
||||
multiplePotionEffects=\u00a74You cannot apply more than one effect to this potion.
|
||||
mutedPlayer=\u00a76Player\u00a7c {0} \u00a76muted.
|
||||
mutedPlayerFor=\u00a76Player\u00a7c {0} \u00a76muted for\u00a7c {1}\u00a76.
|
||||
mutedUserSpeaks={0} tried to speak, but is muted.
|
||||
muteExempt=\u00a74You may not mute that player.
|
||||
muteExemptOffline=\u00a74You may not mute offline players.
|
||||
muteNotify=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76.
|
||||
muteNotifyFor=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76.
|
||||
nearbyPlayers=\u00a76Players nearby\:\u00a7r {0}
|
||||
negativeBalanceError=\u00a74User is not allowed to have a negative balance.
|
||||
nickChanged=\u00a76Nickname changed.
|
||||
nickDisplayName=\u00a74You have to enable change-displayname in Essentials config.
|
||||
nickInUse=\u00a74That name is already in use.
|
||||
nickNamesAlpha=\u00a74Nicknames must be alphanumeric.
|
||||
nickNamesOnlyColorChanges=\u00a74Nicknames can only have their colours changed.
|
||||
nickNoMore=\u00a76You no longer have a nickname.
|
||||
nickSet=\u00a76Your nickname is now \u00a7c{0}\u00a76.
|
||||
nickTooLong=\u00a74That nickname is too long.
|
||||
noAccessCommand=\u00a74You do not have access to that command.
|
||||
noAccessPermission=\u00a74You do not have permission to access that \u00a7c{0}\u00a74.
|
||||
noBreakBedrock=\u00a74You are not allowed to destroy bedrock.
|
||||
noDestroyPermission=\u00a74You do not have permission to destroy that \u00a7c{0}\u00a74.
|
||||
noDurability=\u00a74This item does not have a durability.
|
||||
northEast=NE
|
||||
north=N
|
||||
northWest=NW
|
||||
noGodWorldWarning=\u00a74Warning\! God mode in this world disabled.
|
||||
noHelpFound=\u00a74No matching commands.
|
||||
noHomeSetPlayer=\u00a76Player has not set a home.
|
||||
noIgnored=\u00a76You are not ignoring anyone.
|
||||
noJailsDefined=\u00a76No jails defined.
|
||||
noKitGroup=\u00a74You do not have access to this kit.
|
||||
noKitPermission=\u00a74You need the \u00a7c{0}\u00a74 permission to use that kit.
|
||||
noKits=\u00a76There are no kits available yet.
|
||||
noLocationFound=\u00a74No valid location found.
|
||||
noMail=\u00a76You do not have any mail.
|
||||
noMatchingPlayers=\u00a76No matching players found.
|
||||
noMetaFirework=\u00a74You do not have permission to apply firework meta.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit.
|
||||
noMetaPerm=\u00a74You do not have permission to apply \u00a7c{0}\u00a74 meta to this item.
|
||||
none=none
|
||||
noNewMail=\u00a76You have no new mail.
|
||||
noPendingRequest=\u00a74You do not have a pending request.
|
||||
noPerm=\u00a74You do not have the \u00a7c{0}\u00a74 permission.
|
||||
noPermissionSkull=\u00a74You do not have permission to modify that skull.
|
||||
noPermToAFKMessage=\u00a74You don''t have permission to set an AFK message.
|
||||
noPermToSpawnMob=\u00a74You don''t have permission to spawn this mob.
|
||||
noPlacePermission=\u00a74You do not have permission to place a block near that sign.
|
||||
noPotionEffectPerm=\u00a74You do not have permission to apply potion effect \u00a7c{0} \u00a74to this potion.
|
||||
noPowerTools=\u00a76You have no power tools assigned.
|
||||
notAcceptingPay=\u00a74{0} \u00a74is not accepting payment.
|
||||
notAllowedToQuestion=\u00a74You are not authorised to use question.
|
||||
notAllowedToShout=\u00a74You are not authorised to shout.
|
||||
notEnoughExperience=\u00a74You do not have enough experience.
|
||||
notEnoughMoney=\u00a74You do not have sufficient funds.
|
||||
notFlying=not flying
|
||||
nothingInHand=\u00a74You have nothing in your hand.
|
||||
notRecommendedBukkit=\u00a74* \! * Bukkit version is not the recommended build for Essentials.
|
||||
notSupportedYet=Not supported yet.
|
||||
now=now
|
||||
noWarpsDefined=\u00a76No warps defined.
|
||||
nuke=\u00a75May death rain upon them.
|
||||
numberRequired=A number goes there, silly.
|
||||
onlyDayNight=/time only supports day/night.
|
||||
onlyPlayers=\u00a74Only in-game players can use \u00a7c{0}\u00a74.
|
||||
onlyPlayerSkulls=\u00a74You can only set the owner of player skulls (\u00a7c397\:3\u00a74).
|
||||
onlySunStorm=\u00a74/weather only supports sun/storm.
|
||||
openingDisposal=\u00a76Opening disposal menu...
|
||||
orderBalances=\u00a76Ordering balances of\u00a7c {0} \u00a76users, please wait...
|
||||
oversizedTempban=\u00a74You may not ban a player for this period of time.
|
||||
payConfirmToggleOff=\u00a76You will no longer be prompted to confirm payments.
|
||||
payConfirmToggleOn=\u00a76You will now be prompted to confirm payments.
|
||||
payMustBePositive=\u00a74Amount to pay must be positive.
|
||||
payToggleOff=\u00a76You are no longer accepting payments.
|
||||
payToggleOn=\u00a76You are now accepting payments.
|
||||
pendingTeleportCancelled=\u00a74Pending teleportation request cancelled.
|
||||
playerBanIpAddress=\u00a76Player\u00a7c {0} \u00a76banned IP address\u00a7c {1} \u00a76for\: \u00a7c{2}\u00a76.
|
||||
playerBanned=\u00a76Player\u00a7c {0} \u00a76banned\u00a7c {1} \u00a76for\: \u00a7c{2}\u00a76.
|
||||
playerInJail=\u00a74Player is already in jail\u00a7c {0}\u00a74.
|
||||
playerJailed=\u00a76Player\u00a7c {0} \u00a76jailed.
|
||||
playerJailedFor=\u00a76Player\u00a7c {0} \u00a76jailed for {1}.
|
||||
playerKicked=\u00a76Player\u00a7c {0} \u00a76kicked {1} for {2}.
|
||||
playerMuted=\u00a76You have been muted\!
|
||||
playerMutedFor=\u00a76You have been muted for\u00a7c {0}.
|
||||
playerNeverOnServer=\u00a74Player\u00a7c {0} \u00a74was never on this server.
|
||||
playerNotFound=\u00a74Player not found.
|
||||
playerTempBanned=\u00a76Player \u00a7c{0}\u00a76 temporarily banned \u00a7c{1}\u00a76 for \u00a7c{2}\u00a76: \u00a7c{3}\u00a76.
|
||||
playerUnbanIpAddress=\u00a76Player\u00a7c {0} \u00a76unbanned IP\: {1}.
|
||||
playerUnbanned=\u00a76Player\u00a7c {0} \u00a76unbanned\u00a7c {1}.
|
||||
playerUnmuted=\u00a76You have been unmuted.
|
||||
pong=Pong\!
|
||||
posPitch=\u00a76Pitch\: {0} (Head angle)
|
||||
possibleWorlds=\u00a76Possible worlds are the numbers \u00a7c0\u00a76 through \u00a7c{0}\u00a76.
|
||||
posX=\u00a76X\: {0} (+East <-> -West)
|
||||
posY=\u00a76Y\: {0} (+Up <-> -Down)
|
||||
posYaw=\u00a76Yaw\: {0} (Rotation)
|
||||
posZ=\u00a76Z\: {0} (+South <-> -North)
|
||||
potions=\u00a76Potions\:\u00a7r {0}\u00a76.
|
||||
powerToolAir=\u00a74Command can''t be attached to air.
|
||||
powerToolAlreadySet=\u00a74Command \u00a7c{0}\u00a74 is already assigned to \u00a7c{1}\u00a74.
|
||||
powerToolAttach=\u00a7c{0}\u00a76 command assigned to {1}.
|
||||
powerToolClearAll=\u00a76All powertool commands have been cleared.
|
||||
powerToolList=\u00a76Item \u00a7c{1} \u00a76has the following commands\: \u00a7c{0}\u00a76.
|
||||
powerToolListEmpty=\u00a74Item \u00a7c{0} \u00a74has no commands assigned.
|
||||
powerToolNoSuchCommandAssigned=\u00a74Command \u00a7c{0}\u00a74 has not been assigned to \u00a7c{1}\u00a74.
|
||||
powerToolRemove=\u00a76Command \u00a7c{0}\u00a76 removed from \u00a7c{1}\u00a76.
|
||||
powerToolRemoveAll=\u00a76All commands removed from \u00a7c{0}\u00a76.
|
||||
powerToolsDisabled=\u00a76All of your power tools have been disabled.
|
||||
powerToolsEnabled=\u00a76All of your power tools have been enabled.
|
||||
pTimeCurrent=\u00a7c{0}\u00a76''s time is\u00a7c {1}\u00a76.
|
||||
pTimeCurrentFixed=\u00a7c{0}\u00a76''s time is fixed to\u00a7c {1}\u00a76.
|
||||
pTimeNormal=\u00a7c{0}\u00a76''s time is normal and matches the server.
|
||||
pTimeOthersPermission=\u00a74You are not authorised to set other players'' time.
|
||||
pTimePlayers=\u00a76These players have their own time\:\u00a7r
|
||||
pTimeReset=\u00a76Player time has been reset for\: \u00a7c{0}
|
||||
pTimeSet=\u00a76Player time is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}.
|
||||
pTimeSetFixed=\u00a76Player time is fixed to \u00a7c{0}\u00a76 for\: \u00a7c{1}.
|
||||
pWeatherCurrent=\u00a7c{0}\u00a76''s weather is\u00a7c {1}\u00a76.
|
||||
pWeatherInvalidAlias=\u00a74Invalid weather type
|
||||
pWeatherNormal=\u00a7c{0}\u00a76''s weather is normal and matches the server.
|
||||
pWeatherOthersPermission=\u00a74You are not authorised to set other players'' weather.
|
||||
pWeatherPlayers=\u00a76These players have their own weather\:\u00a7r
|
||||
pWeatherReset=\u00a76Player weather has been reset for\: \u00a7c{0}
|
||||
pWeatherSet=\u00a76Player weather is set to \u00a7c{0}\u00a76 for\: \u00a7c{1}.
|
||||
questionFormat=\u00a72[Question]\u00a7r {0}
|
||||
radiusTooBig=\u00a74Radius is too big\! Maximum radius is {0}.
|
||||
readNextPage=\u00a76Type\u00a7c /{0} {1} \u00a76to read the next page.
|
||||
realName=\u00a7f{0}\u00a7r\u00a76 is \u00a7f{1}
|
||||
recentlyForeverAlone=\u00a74{0} recently went offline.
|
||||
recipe=\u00a76Recipe for \u00a7c{0}\u00a76 (\u00a7c{1}\u00a76 of \u00a7c{2}\u00a76)
|
||||
recipeBadIndex=There is no recipe by that number.
|
||||
recipeFurnace=\u00a76Smelt\: \u00a7c{0}\u00a76.
|
||||
recipeGrid=\u00a7c{0}X \u00a76| \u00a7{1}X \u00a76| \u00a7{2}X
|
||||
recipeGridItem=\u00a7c{0}X \u00a76is \u00a7c{1}
|
||||
recipeMore=\u00a76Type /{0} \u00a7c{1}\u00a76 <number> to see other recipes for \u00a7c{2}\u00a76.
|
||||
recipeNone=No recipes exist for {0}.
|
||||
recipeNothing=nothing
|
||||
recipeShapeless=\u00a76Combine \u00a7c{0}
|
||||
recipeWhere=\u00a76Where\: {0}
|
||||
removed=\u00a76Removed\u00a7c {0} \u00a76entities.
|
||||
repair=\u00a76You have successfully repaired your\: \u00a7c{0}\u00a76.
|
||||
repairAlreadyFixed=\u00a74This item does not need repairing.
|
||||
repairEnchanted=\u00a74You are not allowed to repair enchanted items.
|
||||
repairInvalidType=\u00a74This item cannot be repaired.
|
||||
repairNone=\u00a74There were no items that needed repairing.
|
||||
requestAccepted=\u00a76Teleport request accepted.
|
||||
requestAcceptedFrom=\u00a7c{0} \u00a76accepted your teleport request.
|
||||
requestDenied=\u00a76Teleport request denied.
|
||||
requestDeniedFrom=\u00a7c{0} \u00a76denied your teleport request.
|
||||
requestSent=\u00a76Request sent to\u00a7c {0}\u00a76.
|
||||
requestSentAlready=\u00a74You have already sent {0}\u00a74 a teleport request.
|
||||
requestTimedOut=\u00a74Teleport request has timed out.
|
||||
requiredBukkit=\u00a76* \! * You need at least build {0} of CraftBukkit, download it from http\://dl.bukkit.org/downloads/craftbukkit/
|
||||
resetBal=\u00a76Balance has been reset to \u00a7c{0} \u00a76for all online players.
|
||||
resetBalAll=\u00a76Balance has been reset to \u00a7c{0} \u00a76for all players.
|
||||
returnPlayerToJailError=\u00a74Error occurred when trying to return player\u00a7c {0} \u00a74to jail\: \u00a7c{1}\u00a74\!
|
||||
runningPlayerMatch=\u00a76Running search for players matching ''\u00a7c{0}\u00a76'' (this could take a little while).
|
||||
second=second
|
||||
seconds=seconds
|
||||
seenAccounts=\u00a76Player has also been known as\:\u00a7c {0}
|
||||
seenOffline=\u00a76Player\u00a7c {0} \u00a76has been \u00a74offline\u00a76 since \u00a7c{1}\u00a76.
|
||||
seenOnline=\u00a76Player\u00a7c {0} \u00a76has been \u00a7aonline\u00a76 since \u00a7c{1}\u00a76.
|
||||
sellBulkPermission=\u00a76You do not have permission to bulk sell.
|
||||
sellHandPermission=\u00a76You do not have permission to hand sell.
|
||||
serverFull=Server is full\!
|
||||
serverTotal=\u00a76Server Total\:\u00a7c {0}
|
||||
setBal=\u00a7aYour balance was set to {0}.
|
||||
setBalOthers=\u00a7aYou set {0}\u00a7a''s balance to {1}.
|
||||
setSpawner=\u00a76Changed spawner type to\u00a7c {0}\u00a76.
|
||||
sheepMalformedColor=\u00a74Malformed colour.
|
||||
shoutFormat=\u00a76[Shout]\u00a7r {0}
|
||||
signFormatFail=\u00a74[{0}]
|
||||
signFormatSuccess=\u00a71[{0}]
|
||||
signFormatTemplate=[{0}]
|
||||
signProtectInvalidLocation=\u00a74You are not allowed to create sign here.
|
||||
similarWarpExist=\u00a74A warp with a similar name already exists.
|
||||
southEast=SE
|
||||
south=S
|
||||
southWest=SW
|
||||
skullChanged=\u00a76Skull changed to \u00a7c{0}\u00a76.
|
||||
slimeMalformedSize=\u00a74Malformed size.
|
||||
socialSpy=\u00a76SocialSpy for \u00a7c{0}\u00a76\: \u00a7c{1}
|
||||
socialSpyMsgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a77{2}
|
||||
socialSpyMutedPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a77(muted) \u00a7r
|
||||
socialSpyPrefix=\u00a7f[\u00a76SS\u00a7f] \u00a7r
|
||||
soloMob=\u00a74That mob likes to be alone.
|
||||
spawned=spawned
|
||||
spawnSet=\u00a76Spawn location set for group\u00a7c {0}\u00a76.
|
||||
spectator=spectator
|
||||
sudoExempt=\u00a74You cannot sudo this user.
|
||||
sudoRun=\u00a76Forcing\u00a7c {0} \u00a76to run\:\u00a7r /{1}
|
||||
suicideMessage=\u00a76Goodbye cruel world...
|
||||
suicideSuccess=\u00a76Player \u00a7c{0} \u00a76took their own life.
|
||||
survival=survival
|
||||
takenFromAccount=\u00a7a{0} has been taken from your account.
|
||||
takenFromOthersAccount=\u00a7a{0} taken from {1}\u00a7a account. New balance\: {2}.
|
||||
teleportAAll=\u00a76Teleport request sent to all players...
|
||||
teleportAll=\u00a76Teleporting all players...
|
||||
teleportationCommencing=\u00a76Teleportation commencing...
|
||||
teleportationDisabled=\u00a76Teleportation \u00a7cdisabled\u00a76.
|
||||
teleportationDisabledFor=\u00a76Teleportation \u00a7cdisabled \u00a76for \u00a7c{0}\u00a76.
|
||||
teleportationEnabled=\u00a76Teleportation \u00a7cenabled\u00a76.
|
||||
teleportationEnabledFor=\u00a76Teleportation \u00a7cenabled \u00a76for \u00a7c{0}\u00a76.
|
||||
teleportAtoB=\u00a7c{0}\u00a76 teleported you to \u00a7c{1}\u00a76.
|
||||
teleportDisabled=\u00a7c{0} \u00a74has teleportation disabled.
|
||||
teleportHereRequest=\u00a7c{0}\u00a76 has requested that you teleport to them.
|
||||
teleporting=\u00a76Teleporting...
|
||||
teleportInvalidLocation=Value of coordinates cannot be over 30000000
|
||||
teleportNewPlayerError=\u00a74Failed to teleport new player\!
|
||||
teleportRequest=\u00a7c{0}\u00a76 has requested to teleport to you.
|
||||
teleportRequestAllCancelled=\u00a76All outstanding teleport requests cancelled.
|
||||
teleportRequestSpecificCancelled=\u00a76Outstanding teleport request with {0} cancelled.
|
||||
teleportRequestTimeoutInfo=\u00a76This request will timeout after\u00a7c {0} seconds\u00a76.
|
||||
teleportTop=\u00a76Teleporting to top.
|
||||
teleportToPlayer=\u00a76Teleporting to \u00a7c{0}\u00a76.
|
||||
tempbanExempt=\u00a74You may not tempban that player.
|
||||
tempbanExemptOffline=\u00a74You may not tempban offline players.
|
||||
tempbanJoin=You are banned from this server for {0}. Reason: {1}
|
||||
tempBanned=\u00a7cYou have been temporarily banned for {0}\:\n\u00a7r{2}
|
||||
thunder=\u00a76You\u00a7c {0} \u00a76thunder in your world.
|
||||
thunderDuration=\u00a76You\u00a7c {0} \u00a76thunder in your world for\u00a7c {1} \u00a76seconds.
|
||||
timeBeforeHeal=\u00a74Time before next heal\:\u00a7c {0}\u00a76.
|
||||
timeBeforeTeleport=\u00a74Time before next teleport\:\u00a7c {0}\u00a76.
|
||||
timeFormat=\u00a7c{0}\u00a76 or \u00a7c{1}\u00a76 or \u00a7c{2}\u00a76
|
||||
timeSetPermission=\u00a74You are not authorised to set the time.
|
||||
timeSetWorldPermission=\u00a74You are not authorised to set the time in world ''{0}''.
|
||||
timeWorldCurrent=\u00a76The current time in\u00a7c {0} \u00a76is \u00a7c{1}\u00a76.
|
||||
timeWorldSet=\u00a76The time was set to\u00a7c {0} \u00a76in\: \u00a7c{1}\u00a76.
|
||||
totalSellableAll=\u00a7aThe total worth of all sellable items and blocks is \u00a7c{1}\u00a7a.
|
||||
totalSellableBlocks=\u00a7aThe total worth of all sellable blocks is \u00a7c{1}\u00a7a.
|
||||
totalWorthAll=\u00a7aSold all items and blocks for a total worth of \u00a7c{1}\u00a7a.
|
||||
totalWorthBlocks=\u00a7aSold all blocks for a total worth of \u00a7c{1}\u00a7a.
|
||||
tps=\u00a76Current TPS \= {0}
|
||||
tradeSignEmpty=\u00a74The trade sign has nothing available for you.
|
||||
tradeSignEmptyOwner=\u00a74There is nothing to collect from this trade sign.
|
||||
treeFailure=\u00a74Tree generation failure. Try again on grass or dirt.
|
||||
treeSpawned=\u00a76Tree spawned.
|
||||
true=\u00a7atrue\u00a7r
|
||||
typeTpacancel=\u00a76To cancel this request, type \u00a7c/tpacancel\u00a76.
|
||||
typeTpaccept=\u00a76To teleport, type \u00a7c/tpaccept\u00a76.
|
||||
typeTpdeny=\u00a76To deny this request, type \u00a7c/tpdeny\u00a76.
|
||||
typeWorldName=\u00a76You can also type the name of a specific world.
|
||||
unableToSpawnItem=\u00a74Cannot spawn \u00a7c{0}\u00a74, this is not a spawnable item.
|
||||
unableToSpawnMob=\u00a74Unable to spawn mob.
|
||||
unignorePlayer=\u00a76You are not ignoring player\u00a7c {0} \u00a76anymore.
|
||||
unknownItemId=\u00a74Unknown item id\:\u00a7r {0}\u00a74.
|
||||
unknownItemInList=\u00a74Unknown item {0} in {1} list.
|
||||
unknownItemName=\u00a74Unknown item name\: {0}.
|
||||
unlimitedItemPermission=\u00a74No permission for unlimited item \u00a7c{0}\u00a74.
|
||||
unlimitedItems=\u00a76Unlimited items\:\u00a7r
|
||||
unmutedPlayer=\u00a76Player\u00a7c {0} \u00a76unmuted.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
unvanishedReload=\u00a74A reload has forced you to become visible.
|
||||
upgradingFilesError=Error while upgrading the files.
|
||||
uptime=\u00a76Uptime\:\u00a7c {0}
|
||||
userAFK=\u00a77{0} \u00a75is currently AFK and may not respond.
|
||||
userAFKWithMessage=\u00a77{0} \u00a75is currently AFK and may not respond: {1}
|
||||
userdataMoveBackError=Failed to move userdata/{0}.tmp to userdata/{1}\!
|
||||
userdataMoveError=Failed to move userdata/{0} to userdata/{1}.tmp\!
|
||||
userDoesNotExist=\u00a74The user\u00a7c {0} \u00a74does not exist.
|
||||
userIsAway=\u00a77* {0} \u00a77is now AFK.
|
||||
userIsAwayWithMessage=\u00a77* {0} \u00a77is now AFK.
|
||||
userIsNotAway=\u00a77* {0} \u00a77is no longer AFK.
|
||||
userJailed=\u00a76You have been jailed\!
|
||||
userUnknown=\u00a74Warning\: The user ''\u00a7c{0}\u00a74'' has never joined this server.
|
||||
usingTempFolderForTesting=Using temp folder for testing\:
|
||||
vanish=\u00a76Vanish for {0}\u00a76\: {1}
|
||||
vanished=\u00a76You are now completely invisible to normal users, and hidden from in-game commands.
|
||||
versionMismatch=\u00a74Version mismatch\! Please update {0} to the same version.
|
||||
versionMismatchAll=\u00a74Version mismatch\! Please update all Essentials jars to the same version.
|
||||
voiceSilenced=\u00a76Your voice has been silenced\!
|
||||
walking=walking
|
||||
warpDeleteError=\u00a74Problem deleting the warp file.
|
||||
warpingTo=\u00a76Warping to\u00a7c {0}\u00a76.
|
||||
warpList={0}
|
||||
warpListPermission=\u00a74You do not have permission to list warps.
|
||||
warpNotExist=\u00a74That warp does not exist.
|
||||
warpOverwrite=\u00a74You cannot overwrite that warp.
|
||||
warps=\u00a76Warps\:\u00a7r {0}
|
||||
warpsCount=\u00a76There are\u00a7c {0} \u00a76warps. Showing page \u00a7c{1} \u00a76of \u00a7c{2}\u00a76.
|
||||
warpSet=\u00a76Warp\u00a7c {0} \u00a76set.
|
||||
warpUsePermission=\u00a74You do not have permission to use that warp.
|
||||
weatherInvalidWorld=World named {0} not found\!
|
||||
weatherStorm=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0}\u00a76.
|
||||
weatherStormFor=\u00a76You set the weather to \u00a7cstorm\u00a76 in\u00a7c {0} \u00a76for {1} seconds.
|
||||
weatherSun=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0}\u00a76.
|
||||
weatherSunFor=\u00a76You set the weather to \u00a7csun\u00a76 in\u00a7c {0} \u00a76for {1} seconds.
|
||||
west=W
|
||||
whoisAFK=\u00a76 - AFK\:\u00a7r {0}
|
||||
whoisAFKSince=\u00a76 - AFK\:\u00a7r {0} (Since {1})
|
||||
whoisBanned=\u00a76 - Banned\:\u00a7r {0}
|
||||
whoisExp=\u00a76 - Exp\:\u00a7r {0} (Level {1})
|
||||
whoisFly=\u00a76 - Fly mode\:\u00a7r {0} ({1})
|
||||
whoisGamemode=\u00a76 - Gamemode\:\u00a7r {0}
|
||||
whoisGeoLocation=\u00a76 - Location\:\u00a7r {0}
|
||||
whoisGod=\u00a76 - God mode\:\u00a7r {0}
|
||||
whoisHealth=\u00a76 - Health\:\u00a7r {0}/20
|
||||
whoisHunger=\u00a76 - Hunger\:\u00a7r {0}/20 (+{1} saturation)
|
||||
whoisIPAddress=\u00a76 - IP Address\:\u00a7r {0}
|
||||
whoisJail=\u00a76 - Jail\:\u00a7r {0}
|
||||
whoisLocation=\u00a76 - Location\:\u00a7r ({0}, {1}, {2}, {3})
|
||||
whoisMoney=\u00a76 - Money\:\u00a7r {0}
|
||||
whoisMuted=\u00a76 - Muted\:\u00a7r {0}
|
||||
whoisNick=\u00a76 - Nick\:\u00a7r {0}
|
||||
whoisOp=\u00a76 - OP\:\u00a7r {0}
|
||||
whoisPlaytime=\u00a76 - Playtime\:\u00a7r {0}
|
||||
whoisTempBanned=\u00a76 - Ban expires:\u00a7r {0}
|
||||
whoisTop=\u00a76 \=\=\=\=\=\= WhoIs\:\u00a7c {0} \u00a76\=\=\=\=\=\=
|
||||
whoisUuid=\u00a76 - UUID\:\u00a7r {0}
|
||||
worth=\u00a7aStack of {0} worth \u00a7c{1}\u00a7a ({2} item(s) at {3} each)
|
||||
worthMeta=\u00a7aStack of {0} with metadata of {1} worth \u00a7c{2}\u00a7a ({3} item(s) at {4} each)
|
||||
worthSet=\u00a76Worth value set
|
||||
year=year
|
||||
years=years
|
||||
youAreHealed=\u00a76You have been healed.
|
||||
youHaveNewMail=\u00a76You have\u00a7c {0} \u00a76messages\! Type \u00a7c/mail read\u00a76 to view your mail.
|
@ -202,7 +202,7 @@ invalidSkull=\u00a74Por favor sost\u00e9n un cr\u00e1neo de un jugador.
|
||||
invalidWarpName=\u00a74\u00a1Nombre del Warp no reconocido\!
|
||||
invalidWorld=\u00a74Mundo erroneo o no cargado.
|
||||
inventoryClearFail=\u00a74El jugador {0} \u00a74no tiene\u00a7c {1} \u00a74de\u00a7c {2}\u00a74.
|
||||
inventoryClearingAllArmor=\u00a7eLimpiado objetos y armaduras de\u00a7a {0}\u00a7e.
|
||||
inventoryClearingAllArmor=\u00a7eLimpiado objetos y armaduras de\u00a7a {0}\u00a7e.
|
||||
inventoryClearingAllItems=\u00a76Limpiado todos los objetos del inventario a\u00a76 {0}.
|
||||
inventoryClearingAllStack=\u00a76Inventario limpiado completamente a \u00a7c {0} \u00a76de {1}\u00a76.
|
||||
inventoryClearingFromAll=\u00a77Limpiando el inventario de todos los usuarios...
|
||||
@ -210,6 +210,7 @@ inventoryClearingStack=\u00a76Eliminado\u00a7c {0} \u00a76de\u00a7c {1} \u00a76d
|
||||
is=es
|
||||
isIpBanned=\u00a76IP \u00a7c{0} \u00a76est\u00e1 baneada.
|
||||
itemCannotBeSold=\u00a74\u00a1Ese objeto no puede ser vendido al servidor\!
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemMustBeStacked=El objeto tiene que ser intercambiado en montones. Una cantidad de 2s ser\u00edan dos montones, etc.
|
||||
itemNames=\u00a76Nombre corto del \u00edtem\:\u00a7r {0}
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74No tienes items que puedan ser convertidos a bloques.
|
||||
itemSold=\u00a77Vendido por \u00a7c {0} \u00a77 ({1} {2} a {3} cada uno).
|
||||
itemSoldConsole={0} Vendio {1} por\u00a77 {2} \u00a77({3} objetos a {4} cada uno)
|
||||
itemSpawn=\u00a76Dando {0} de {1}
|
||||
itemType=\u00a76Objeto\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76Objeto\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74Ese jugador ya est\u00e1 en la c\u00e1rcel\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a7c\u00a1Por el crimen hacer, a la c\u00e1rcel ir\u00e1s\!
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -162,7 +162,7 @@ hatPlaced=\u00a7eNauti uudesta hatustasi\!
|
||||
hatRemoved=\u00a76Hattusi on poistettu.
|
||||
haveBeenReleased=\u00a77Sinut on vapautettu
|
||||
heal=\u00a77Sinut on parannettu.
|
||||
healDead=\u00a74Et voi parantaa pelaajaa, joka on kuollut\!
|
||||
healDead=\u00a74Et voi parantaa pelaajaa, joka on kuollut\!
|
||||
healOther=\u00a77Paransit pelaajan {0}.
|
||||
helpConsole=Katsoaksesi apua konsolista, kirjoita ?.
|
||||
helpFrom=\u00a77Komennot {0}\:
|
||||
@ -210,6 +210,7 @@ inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76fro
|
||||
is=on
|
||||
isIpBanned=\u00a76IP \u00a7c {0} \u00a76On karkoitettu.
|
||||
itemCannotBeSold=Tuota tavaraa ei voi myyd\u00e4 t\u00e4ll\u00e4 palvelimella.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemMustBeStacked=Tavara pit\u00e4\u00e4 vaihtaa pakattuina. M\u00e4\u00e4r\u00e4 2s olisi kaksi pakettia, jne.
|
||||
itemNames=\u00a76Item short names\:\u00a7r {0}
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
|
||||
itemSold=\u00a77Myy \u00a7c{0} \u00a77({1} {2} hintaan {3} kpl)
|
||||
itemSoldConsole={0} sold {1} for \u00a77{2} \u00a77({3} items at {4} each)
|
||||
itemSpawn=\u00a77Annetaan {0} kpl {1}
|
||||
itemType=\u00a76Item\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76Item\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a7cPelaaja on jo vankilassa\: {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a7cSin\u00e4 teet rikoksen, istut my\u00f6s sen mukaan.
|
||||
|
@ -202,7 +202,7 @@ invalidSkull=\u00a74Vous devez tenir une t\u00eate de joueur.
|
||||
invalidWarpName=\u00a74Nom de warp invalide.
|
||||
invalidWorld=\u00a7cMonde invalide.
|
||||
inventoryClearFail=\u00a74Le joueur {0} \u00a74n''a pas\u00a7c {1}\u00a7c {2}\u00a74 sur lui.
|
||||
inventoryClearingAllArmor=\u00a76Tous les items de l''inventaire et l''armure de {0}\u00a76 ont \u00e9t\u00e9 supprim\u00e9s.
|
||||
inventoryClearingAllArmor=\u00a76Tous les items de l''inventaire et l''armure de {0}\u00a76 ont \u00e9t\u00e9 supprim\u00e9s.
|
||||
inventoryClearingAllItems=\u00a76Tous les items de l''inventaire de {0}\u00a76 ont \u00e9t\u00e9 supprim\u00e9s.
|
||||
inventoryClearingAllStack=\u00a76Tous les\u00a7c {0} \u00a76de l''inventaire de {1}\u00a76 ont \u00e9t\u00e9 supprim\u00e9s.
|
||||
inventoryClearingFromAll=\u00a76Tous les inventaires sont en train d''\u00ea vid\u00e9s...
|
||||
@ -211,6 +211,7 @@ is=est
|
||||
isIpBanned=\u00a76L''IP \u00a7c{0} \u00a76est bannie.
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemCannotBeSold=Cet objet ne peut \u00eatre vendu au serveur.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=Cet objet doit \u00eatre vendu par 64. Une quantit\u00e9 de 2 serait deux fois 64.
|
||||
itemNames=Noms d''item courts \: {0}
|
||||
itemNotEnough1=\u00a7cVous n''avez pas assez de cet objet pour le vendre.
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74Vous n''avez pas d''items pouvant \u00eatre convertis e
|
||||
itemSold=\u00a77Vendu pour \u00a7c{0} \u00a77({1} {2} \u00e0 {3} chacun)
|
||||
itemSoldConsole={0} vendu {1} pour \u00a77{2} \u00a77({3} objet(s) \u00e0 {4} chacun)
|
||||
itemSpawn=\u00a77Donne {0} de {1}
|
||||
itemType=\u00a76Item \:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76Item \:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a7cJoueur d\u00e9j\u00e0 emprisonn\u00e9 \: {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a7cVous avez commis un crime, vous en payez le prix.
|
||||
|
@ -211,6 +211,7 @@ is=van
|
||||
isIpBanned=\u00a76IP \u00a7c{0} \u00a76m\u00e1r ki van tiltva.
|
||||
internalError=\u00a7cBels\u00f5 hiba t\u00f6rt\u00e9nt a parancs v\u00e9grehajt\u00e1sa k\u00f6zben.
|
||||
itemCannotBeSold=\u00a74Ezt nem adhatod el a szerveren.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74A t\u00e1rgyat k\u00f6tegben kell \u00e9rt\u00e9kes\u00edteni. A 2s mennyis\u00e9ge k\u00e9t stack lenne, stb.
|
||||
itemNames=\u00a76T\u00e1rgy r\u00f6vid nevei\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74Nincs el\u00e9g eladni val\u00f3 t\u00e1rgyad.
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74Nincs olyan elem, amely blokk\u00e1 alak\u00edthat\u00f
|
||||
itemSold=\u00a7aEladva \u00a7c{0} \u00a7a({1} {2} {3} minden).
|
||||
itemSoldConsole=\u00a7a{0} \u00a7aeladva {1} \u00a7a{2} \u00a7a({3} elem {4} minden).
|
||||
itemSpawn=\u00a76Lek\u00e9rt\u00e9l\u00a7c {0} \u00a76db \u00a7c {1}-t
|
||||
itemType=\u00a76T\u00e1rgy\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76T\u00e1rgy\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74A szem\u00e9ly m\u00e1r b\u00f6rt\u00f6nben van\:\u00a7c {0}
|
||||
jailList=\u00a76B\u00f6rt\u00f6n\u00f6k\:\u00a7r {0}
|
||||
jailMessage=\u00a74A b\u0171ncselekm\u00e9nyt megteszed, akkor itt az id\u0151.
|
||||
@ -257,7 +258,7 @@ lightningUse=\u00a76Vill\u00e1m lesujt\u00e1sa\u00a7c {0}\u00a76-ra/re.
|
||||
listAfkTag=\u00a77[AFK]\u00a7r
|
||||
listAmount=\u00a76Jelenleg \u00a7c{0}\u00a76 j\u00e1t\u00e9kos van fent a maxim\u00e1lis \u00a7c{1}\u00a76 j\u00e1t\u00e9kosb\u00f3l.
|
||||
listAmountHidden=\u00a76Jelenleg \u00a7c{0}\u00a76/{1}\u00a76 j\u00e1t\u00e9kos van fent a maxim\u00e1lis \u00a7c{2}\u00a76 j\u00e1t\u00e9kosb\u00f3l.
|
||||
listGroupTag={0}\u00a7r\:
|
||||
listGroupTag={0}\u00a7r\:
|
||||
listHiddenTag=\u00a77[REJTETT]\u00a7r
|
||||
loadWarpError=\u00a74Nem siker\u00fclt a warp bet\u00f6lt\u00e9se {0}.
|
||||
localFormat=[H]<{0}> {1}
|
||||
|
@ -211,6 +211,7 @@ is=\u00E8
|
||||
isIpBanned=\u00a76L''IP \u00a7c{0} \u00a76\u00e8 bannato.
|
||||
internalError=\u00a7cSi \u00e8 verificato un errore durante l''esecuzione di questo comando.
|
||||
itemCannotBeSold=\u00a74Quell''oggetto non pu\u00F2 essere venduto al server.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74L''oggetto deve essere scambiato in stack. Una quantit\u00E0 di 2 sarebbero due stack, etc.
|
||||
itemNames=\u00a76Nomi corti oggetti\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74Non hai abbastanza di quell''oggetto per venderlo.
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74Non hai oggetti che possono essere convertiti in blocch
|
||||
itemSold=\u00a7aVenduto per \u00a7c{0} \u00a7a({1} {2} a {3} l''uno).
|
||||
itemSoldConsole=\u00a7a{0} \u00a7aha venduto {1} per \u00a7a{2} \u00a7a({3} oggetti a {4} l''uno).
|
||||
itemSpawn=\u00a76Dati\u00a7c {0} \u00a76di\u00a7c {1}
|
||||
itemType=\u00a76Oggetto\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76Oggetto\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74Giocatore gi\u00E0 in prigione\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a74Avrai tempo per riflettere... in prigione.
|
||||
|
@ -21,7 +21,7 @@ antiBuildUse=\u00a74\ub2f9\uc2e0\uc740 \u00a7c {0}\u00a74\uc744 \uc0ac\uc6a9\ud5
|
||||
autoAfkKickReason={0}\ubd84 \uc774\uc0c1\uc758 \uc720\ud734\uc0c1\ud0dc\ub85c \uc788\uc5c8\uae30\uc5d0 \ucd94\ubc29\ub2f9\ud558\uc168\uc2b5\ub2c8\ub2e4.
|
||||
backAfterDeath=\u00a7c/back \u00a76\uba85\ub839\uc5b4\ub85c \uc0ac\ub9dd\ud55c \uc9c0\uc810\uc73c\ub85c \ud154\ub808\ud3ec\ud2b8 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
|
||||
backupDisabled=\u00a74\uc678\ubd80 \ubc31\uc5c5 \uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc124\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
|
||||
backupFinished=\u00a76\ubc31\uc5c5\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
backupFinished=\u00a76\ubc31\uc5c5\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
backupStarted=\u00a76\ubc31\uc5c5\uc744 \uc2dc\uc791\ud569\ub2c8\ub2e4.
|
||||
backUsageMsg=\u00a76\uc774\uc804 \uc7a5\uc18c\ub85c \ub3cc\uc544\uac00\ub294\uc911..
|
||||
balance=\u00a76\uc794\uace0\:\u00a7c {0}
|
||||
@ -37,7 +37,7 @@ bedMissing=\u00a74\ub2f9\uc2e0\uc758 \uce68\ub300\uac00 \ub193\uc5ec\uc9c0\uc9c0
|
||||
bedNull=\u00a7m\uce68\ub300\u00a7r
|
||||
bedSet=\u00a76\uce68\ub300 \uc2a4\ud3f0\uc9c0\uc810\uc774 \uc124\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4\!
|
||||
bigTreeFailure=\u00a7c\ud070 \ub098\ubb34 \uc0dd\uc131\uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4. \uc794\ub514\ub098 \ud759\uc5d0\uc11c \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc138\uc694.
|
||||
bigTreeSuccess=\u00a76\ud070 \ub098\ubb34\ub97c \uc131\uacf5\uc801\uc73c\ub85c \uc0dd\uc131\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||
bigTreeSuccess=\u00a76\ud070 \ub098\ubb34\ub97c \uc131\uacf5\uc801\uc73c\ub85c \uc0dd\uc131\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||
blockList=\u00a76\uc5d0\uc13c\uc15c\uc740 \ub2e4\uc74c \ud50c\ub7ec\uadf8\uc778\uc5d0 \uc758\ud574 \ucee4\ub9e8\ub4dc\uac00 \uad50\uccb4\ub429\ub2c8\ub2e4\:
|
||||
bookAuthorSet=\u00a76\ucc45\uc758 \uc800\uc790\ub97c \u00a7c{0}\u00a76\uc73c\ub85c \uc124\uc815\ud569\ub2c8\ub2e4.
|
||||
bookLocked=\u00a76\uc774 \ucc45\uc740 \uc7a0\uae34\uc0c1\ud0dc\ub85c \uc804\ud658\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
@ -72,7 +72,7 @@ connectedPlayers=\u00a76\uc811\uc18d \uc911\uc778 \ud50c\ub808\uc774\uc5b4\u00a7
|
||||
connectionFailed=\uc5f0\uacb0\uc5d0 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||
cooldownWithMessage=\u00a7c\uc7ac\uc0ac\uc6a9 \ub300\uae30\: {0}
|
||||
coordsKeyword={0}, {1}, {2}
|
||||
corruptNodeInConfig=\u00a7c\uc624\ub958\: \u00a74config.yml \ub0b4 {0} \ub178\ub4dc\uc5d0 \uc624\ub958\uac00 \uc788\uc2b5\ub2c8\ub2e4.
|
||||
corruptNodeInConfig=\u00a7c\uc624\ub958\: \u00a74config.yml \ub0b4 {0} \ub178\ub4dc\uc5d0 \uc624\ub958\uac00 \uc788\uc2b5\ub2c8\ub2e4.
|
||||
couldNotFindTemplate=\ud15c\ud50c\ub9bf {0}\ub97c \ucc3e\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4.
|
||||
createdKit=\u00a76Created kit \u00a7c{0} \u00a76with \u00a7c{1} \u00a76entries and delay \u00a7c{2}
|
||||
createKitFailed=\u00a74Error occurred whilst creating kit {0}.
|
||||
@ -89,14 +89,14 @@ defaultBanReason=\ub2f9\uc2e0\uc740 \uad00\ub9ac\uc790\uc5d0 \uc758\ud574 \uc11c
|
||||
deleteFileError={0} \ud30c\uc77c\uc774 \uc0ad\uc81c\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
|
||||
deleteHome=\u00a76\uc9d1\u00a7c {0} \uc774 \uc81c\uac70\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
deleteJail=\u00a77{0} \uac10\uc625\uc774 \uc81c\uac70\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
deleteWarp=\u00a76\uc6cc\ud504 {0}\ub294(\uc740) \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
deleteWarp=\u00a76\uc6cc\ud504 {0}\ub294(\uc740) \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
deniedAccessCommand=\u00a7c{0}\ub2d8\uc740 \ud574\ub2f9 \uba85\ub839\uc5b4\uc5d0 \uc811\uadfc\ud560 \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||
denyBookEdit=\u00a74\ub2f9\uc2e0\uc740 \uc774 \ucc45\uc758 \uc7a0\uae08\uc744 \ud574\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||
denyChangeAuthor=\u00a74\ub2f9\uc2e0\uc740 \uc774 \ucc45\uc758 \uc800\uc790\ub97c \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||
denyChangeTitle=\u00a74\ub2f9\uc2e0\uc740 \uc774 \ucc45\uc758 \uc81c\ubaa9\uc744 \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||
depth=\u00a77\ub2f9\uc2e0\uc740 \ud574\uc218\uba74\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.
|
||||
depthAboveSea=\u00a76\ub2f9\uc2e0\uc740 \ud574\uc218\uba74 {0} \u00a76\ube14\ub85d \uc704\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.
|
||||
depthBelowSea=\u00a76\ub2f9\uc2e0\uc740 \ud574\uc218\uba74 {0} \u00a76\ube14\ub85d \uc544\ub798\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.
|
||||
depthBelowSea=\u00a76\ub2f9\uc2e0\uc740 \ud574\uc218\uba74 {0} \u00a76\ube14\ub85d \uc544\ub798\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.
|
||||
destinationNotSet=\ubaa9\uc801\uc9c0\uac00 \uc124\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
|
||||
disabled=\ube44\ud65c\uc131\ud654\ub428
|
||||
disabledToSpawnMob=\u00a74\uc774 \ubaac\uc2a4\ud130\uc758 \uc2a4\ud3f0\uc740 \uc124\uc815 \ud30c\uc77c\uc5d0\uc11c \ud574\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
@ -210,6 +210,7 @@ inventoryClearingStack=\u00a76Removed\u00a7c {0} \u00a76of\u00a7c {1} \u00a76fro
|
||||
is=\uc740/\ub294
|
||||
isIpBanned=\u00a76IP \u00a7c{0} \u00a76\ub294 \ucc28\ub2e8 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
itemCannotBeSold=\uadf8 \uc544\uc774\ud15c\uc740 \uc11c\ubc84\uc5d0 \ud314 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemMustBeStacked=\uc544\uc774\ud15c\uc744 \uac70\ub798\ud558\uae30 \uc704\ud574\uc11c 2\uac1c \uc774\uc0c1\uc758 \uac19\uc740\uc544\uc774\ud15c\uc744 \uac00\uc9c0\uace0\uc788\uc5b4\uc57c\ud569\ub2c8\ub2e4.
|
||||
itemNames=\u00a76\uc9e7\uc740 \uc544\uc774\ud15c \uc774\ub984\:\u00a7r {0}
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
|
||||
itemSold=\u00a77 \u00a7c {0} \u00a77 {{1} \uc640 {2} \uc758 \uc544\uc774\ud15c\uc774 \ud314\ub9ac\ub2e4.)
|
||||
itemSoldConsole={0} \ud310\ub9e4 {1} \uc758 \u00a77 {2} \u00a77 ({3} \uc544\uc774\ud15c\uc758 \ud56d\ubaa9 {4} \uac01\uac01\uc758)
|
||||
itemSpawn=\u00a77\uc544\uc774\ud15c {1}\uc744/\ub97c {0}\uac1c \uc90d\ub2c8\ub2e4.
|
||||
itemType=\u00a76\uc544\uc774\ud15c\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76\uc544\uc774\ud15c\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74\uc0ac\ub78c\uc774 \uc774\ubbf8 \uac10\uc625\uc5d0 \uc788\uc74c\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a7c\ub2f9\uc2e0\uc740 \ubc94\uc8c4\ub97c \uc800\uc9c0\ub974\uace0\uc788\uc2b5\ub2c8\ub2e4, \ub2f9\uc2e0\uc740 \uc2dc\uac04\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.
|
||||
@ -379,7 +380,7 @@ payToggleOn=\u00a76You are now accepting payments.
|
||||
pendingTeleportCancelled=\u00a74\uc21c\uac04\uc774\ub3d9 \uc694\uccad\uc774 \ucde8\uc18c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
playerBanIpAddress=\u00a76Player\u00a7c {0} \u00a76banned IP address\u00a7c {1} \u00a76for\: \u00a7c{2}\u00a76.
|
||||
playerBanned=\u00a76\ud50c\ub808\uc774\uc5b4\u00a7c {0} \u00a76\ub2d8\uc774\u00a7c {1} \u00a76\ub2d8\uc744 \ubca4\ud558\uc600\uc2b5\ub2c8\ub2e4. \uc0ac\uc720\: \u00a7c{2}\u00a76.
|
||||
playerInJail=\u00a74\uadf8 \ud50c\ub808\uc774\uc5b4\ub294 \uc774\ubbf8 {0}\u00a74 \uac10\uc625\uc5d0 \uc218\uac10\ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4.
|
||||
playerInJail=\u00a74\uadf8 \ud50c\ub808\uc774\uc5b4\ub294 \uc774\ubbf8 {0}\u00a74 \uac10\uc625\uc5d0 \uc218\uac10\ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4.
|
||||
playerJailed=\u00a76{0} \ud50c\ub808\uc774\uc5b4\uac00 \uac10\uae08\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
playerJailedFor=\u00a76\ud50c\ub808\uc774\uc5b4 {0}\uc740 {1}\uc5d0 \uac10\uae08\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
playerKicked=\u00a76Player\u00a7c {0} \u00a76kicked {1} for {2}.
|
||||
@ -498,7 +499,7 @@ survival=\uc11c\ubc14\uc774\ubc8c
|
||||
takenFromAccount=\u00a7c{0} \ub9cc\ud07c \uc9c0\ubd88\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||
takenFromOthersAccount=\u00a7a{1}\u00a7a\uc758 \uacc4\uc815\uc5d0\uc11c {0}\u00a7a\uc744 \uac00\uc838\uc640 \uc794\uace0\uac00 {2}\u00a7a\uc774 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
teleportAAll=\u00a76\ubaa8\ub4e0 \ud50c\ub808\uc774\uc5b4\uc5d0\uac8c \ud154\ub808\ud3ec\ud2b8 \uc694\uccad\uc744 \ubcf4\ub0c8\uc2b5\ub2c8\ub2e4...
|
||||
teleportAll=\u00a76\ubaa8\ub4e0 \ud50c\ub808\uc774\uc5b4\ub97c \ud154\ub808\ud3ec\ud2b8 \ud558\ub294\uc911..
|
||||
teleportAll=\u00a76\ubaa8\ub4e0 \ud50c\ub808\uc774\uc5b4\ub97c \ud154\ub808\ud3ec\ud2b8 \ud558\ub294\uc911..
|
||||
teleportationCommencing=\u00a76\ud154\ub808\ud3ec\ud2b8 \uc911...
|
||||
teleportationDisabled=\u00a76\ud154\ub808\ud3ec\ud2b8\uac00 \u00a7c\ube44\ud65c\uc131\ud654\u00a76\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
teleportationDisabledFor=\u00a7c{0}\u00a76 \uc5d0 \ub300\ud55c \uc774\ub3d9\uc774 \uc81c\ud55c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
|
||||
@ -554,7 +555,7 @@ unlimitedItems=\ubb34\uc81c\ud55c \uc544\uc774\ud15c \ubaa9\ub85d\:
|
||||
unmutedPlayer=\ud50c\ub808\uc774\uc5b4 \u00a7c{0}\u00a76\ub294 \uc774\uc81c \ub9d0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
|
||||
unsafeTeleportDestination=\u00a74\ud154\ub808\ud3ec\ud2b8 \ub300\uc0c1\uc774 \uc548\uc804\ud558\uace0 \ud154\ub808\ud3ec\ud2b8\uac00 \uc548\uc804 \ube44\ud65c\uc131\ud654 \ub429\ub2c8\ub2e4.
|
||||
unvanishedReload=\u00a74A reload has forced you to become visible.
|
||||
upgradingFilesError=\ud30c\uc77c\uc744 \uc5c5\uadf8\ub808\uc774\ub4dc \ud558\ub358 \ub3c4\uc911, \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||
upgradingFilesError=\ud30c\uc77c\uc744 \uc5c5\uadf8\ub808\uc774\ub4dc \ud558\ub358 \ub3c4\uc911, \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4.
|
||||
uptime=\u00a76\uac00\ub3d9 \uc2dc\uac04\:\u00a7c {0}
|
||||
userAFK=\u00a77{0} \u00a75\uc740 \ud604\uc7ac \uc7a0\uc218 \uc0c1\ud0dc\uc774\ubbc0\ub85c \uc751\ub2f5\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
|
||||
userAFKWithMessage=\u00a77{0} \u00a75\uc740 \ud604\uc7ac \uc7a0\uc218 \uc0c1\ud0dc\uc774\ubbc0\ub85c \uc751\ub2f5\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. {1}
|
||||
@ -570,7 +571,7 @@ usingTempFolderForTesting=\ud14c\uc2a4\ud2b8\ub97c \uc704\ud574 temp \ud3f4\ub35
|
||||
vanish=\u00a76{0}\u00a76\ub2d8\uc758 \uc0ac\ub77c\uc9c0\uae30\uac00 {1}.
|
||||
vanished=\u00a76\ub2f9\uc2e0\uc740 \uc774\uc81c \uc77c\ubc18 \ud50c\ub808\uc774\uc5b4\uc5d0\uac8c \ubcf4\uc774\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4, \uadf8\ub9ac\uace0 \uac8c\uc784 \ub0b4 \uba85\ub839\uc5b4\ub85c\ubd80\ud130 \uc228\uaca8\uc9d1\ub2c8\ub2e4.
|
||||
versionMismatch=\u00a74\ubc84\uc804 \ubd88\uc77c\uce58\! {0}\uc744 \ub3d9\uc77c\ud55c \ubc84\uc804\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8 \ud574 \uc8fc\uc138\uc694
|
||||
versionMismatchAll=\ubc84\uc804\uc774 \ubd88\uc77c\uce58\ud569\ub2c8\ub2e4\! \ubaa8\ub4e0 Essentials jar \ud30c\uc77c\ub4e4\uc758 \ubc84\uc804\uc744 \uac19\uc740 \ubc84\uc804\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8 \ud574 \uc8fc\uc138\uc694.
|
||||
versionMismatchAll=\ubc84\uc804\uc774 \ubd88\uc77c\uce58\ud569\ub2c8\ub2e4\! \ubaa8\ub4e0 Essentials jar \ud30c\uc77c\ub4e4\uc758 \ubc84\uc804\uc744 \uac19\uc740 \ubc84\uc804\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8 \ud574 \uc8fc\uc138\uc694.
|
||||
voiceSilenced=\u00a76\ub2f9\uc2e0\uc758 \ubaa9\uc18c\ub9ac\uac00 \uce68\ubb35\ub418\uc5c8\uc2b5\ub2c8\ub2e4
|
||||
walking=\uac77\uae30
|
||||
warpDeleteError=\u00a74\uc6cc\ud504 \ud30c\uc77c \uc0ad\uc81c\uc911 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
|
||||
|
@ -211,6 +211,7 @@ is=is
|
||||
isIpBanned=\u00a76IP \u00a7c{0} \u00a76yra u\u017eblokuotas.
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemCannotBeSold=\u00a74\u0160is daiktas negali b\u016bti parduotas serveryje.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74Daiktas turi buti parduotas po 1 stack.
|
||||
itemNames=\u00a76Daikt\u0173 trumpi pavadinimai\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74Tu neturi pakankamai daiktu pardavimui.
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
|
||||
itemSold=\u00a7aParduota po \u00a7c{0} \u00a7a({1} {2} uz {3} kiekviena).
|
||||
itemSoldConsole=\u00a7a{0} \u00a7asold {1} for \u00a7a{2} \u00a7a({3} items at {4} each).
|
||||
itemSpawn=\u00a76Giving\u00a7c {0} \u00a76of\u00a7c {1}
|
||||
itemType=\u00a76Item\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76Item\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74\u017daid\u0117jas jau yra kal\u0117jime\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a74Padarei nusikaltim\u0105, laikas atpirkti nuod\u0117mes.
|
||||
|
@ -2,10 +2,10 @@
|
||||
#version: ${full.version}
|
||||
# Single quotes have to be doubled: ''
|
||||
# Translations start here
|
||||
# by:
|
||||
# by: DutchUser
|
||||
action=\u00a75* {0} \u00a75{1}
|
||||
addedToAccount=\u00a7a{0} is gestort op uw rekening.
|
||||
addedToOthersAccount=\u00a7a{0} toegevoegd aan {1}\u00a7a zijn rekening. Nieuw saldo\: {2}
|
||||
addedToOthersAccount=\u00a7a{0} is toegevoegd aan {1}\u00a7a zijn rekening. Nieuw saldo\: {2}
|
||||
adventure=avontuur
|
||||
alertBroke=gebroken\:
|
||||
alertFormat=\u00a73[{0}] \u00a7f {1} \u00a76 {2} bij\: {3}
|
||||
@ -77,7 +77,7 @@ couldNotFindTemplate=Het sjabloon kon niet worden gevonden {0}.
|
||||
createdKit=\u00a76Kit \u00a7c{0} \u00a76gemaakt met \u00a7c{1} \u00a76items en met \u00a7c{2} \u00a76seconden afkoeltijd.
|
||||
createKitFailed=\u00a74Fout opgetreden tijdens het maken van kit {0}.
|
||||
createKitSeparator=\u00a7m-----------------------
|
||||
createKitSuccess=\u00a76Created Kit: \u00a7f{0}\n\u00a76Delay: \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Copy contents in the link above into your config.yml.
|
||||
createKitSuccess=\u00a76Gemaakte Kit: \u00a7f{0}\n\u00a76Vertraging \u00a7f{1}\n\u00a76Link: \u00a7f{2}\n\u00a76Kopieer wat in de link staat in de kits.yml
|
||||
creatingConfigFromTemplate=Bezig met aanmaken van een config vanaf sjabloon\: {0}
|
||||
creatingEmptyConfig=Bezig met het aanmaken van een lege configuratie\: {0}
|
||||
creative=creatief
|
||||
@ -139,7 +139,7 @@ flyMode=\u00a77Zet vliegen {0} voor {1}.
|
||||
foreverAlone=\u00a7cU heeft niemand naar wie u kan reageren.
|
||||
fullStack=\u00a74U heeft al een volledige stapel.
|
||||
gameMode=De gamemodus van {1} is veranderd naar {0}.
|
||||
gameModeInvalid=\u00a74U moet een geldige speler/mode opgeven.
|
||||
gameModeInvalid=\u00a74U moet een geldige speler/gamemodus opgeven.
|
||||
gcfree=Vrij geheugen\: {0} MB
|
||||
gcmax=Maximaal geheugen\: {0} MB
|
||||
gctotal=Toegewezen geheugen\: {0} MB
|
||||
@ -202,7 +202,7 @@ invalidSkull=\u00a74Houd alstublieft een schedel vast.
|
||||
invalidWarpName=\u00a74Ongeldige warp naam.
|
||||
invalidWorld=\u00a7cOngeldige wereld.
|
||||
inventoryClearFail=\u00a74Player {0} \u00a74heeft geen\u00a7c {1} \u00a74stuks\u00a7c {2}\u00a74.
|
||||
inventoryClearingAllArmor=\u00a76Alle inventaris voorwerpen en het harnas van {0}\u00a76 zijn verwijderd.
|
||||
inventoryClearingAllArmor=\u00a76Alle inventaris voorwerpen en het harnas van {0}\u00a76 zijn verwijderd.
|
||||
inventoryClearingAllItems=\u00a76Alle inventaris voorwerpen van {0}\u00a76 zijn verwijderd.
|
||||
inventoryClearingAllStack=\u00a76Alle\u00a7c {0} \u00a76van {1}\u00a76 is verwijderd.
|
||||
inventoryClearingFromAll=\u00a76Inventarissen van alle gebruikers leegmaken....
|
||||
@ -210,6 +210,7 @@ inventoryClearingStack=\u00a76\u00a7c {0} \u00a76stuks\u00a7c {1} \u00a76zijn ve
|
||||
is=is
|
||||
isIpBanned=\u00a76IP \u00a7c {0} \u00a76is verbannen.
|
||||
itemCannotBeSold=Dat voorwerp kan niet aan de server worden verkocht.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemMustBeStacked=Voorwerp moet geruild worden als stapel. Een hoeveelheid van 2 moet dus geruild worden als twee stapels, etc.
|
||||
itemNames=Kortere namen voor het item\: {0}
|
||||
@ -223,9 +224,9 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
|
||||
itemSold=\u00a77Verkocht voor \u00a7c{0} \u00a77({1} {2} voorwerpen voor {3} per stuk)
|
||||
itemSoldConsole={0} verkocht {1} voor \u00a77{2} \u00a77({3} voorwerpen voor {4} per stuk)
|
||||
itemSpawn=\u00a77Geeft {0} {1}
|
||||
itemType=\u00a76Voorwerp\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76Voorwerp\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74Deze persoon zit al in de gevangenis\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailList=\u00a76Gevangenissen\:\u00a7r {0}
|
||||
jailMessage=\u00a74U begaat een misdrijf, U zit uw tijd uit.
|
||||
jailNotExist=\u00a74Die gevangenis bestaat niet.
|
||||
jailReleased=\u00a76Speler \u00a7c{0}\u00a76 vrijgelaten.
|
||||
@ -238,13 +239,13 @@ kickedAll=\u00a74Alle spelers van de server afgeschopt.
|
||||
kickExempt=\u00a74U kunt die speler niet van de server afschoppen.
|
||||
kill=\u00a76U vermoorde\u00a7c {0}\u00a76.
|
||||
killExempt=\u00a74Je kan niet vermoorden\u00a7c{0}\u00a74.\n
|
||||
kitContains=\u00a76Kit \u00a7c{0} \u00a76contains:
|
||||
kitContains=\u00a76Kit \u00a7c{0} \u00a76bevat:
|
||||
kitCost=\ \u00a77\u00a7o({0})\u00a7r
|
||||
kitDelay=\u00a7m{0}\u00a7r
|
||||
kitError=\u00a74Er zijn geen geldige kits.
|
||||
kitError2=\u00a74Die kit is niet goed ingesteld. Neem contact op met een administrator.
|
||||
kitGiveTo=\u00a76Geeft kit\u00a7c {0}\u00a76 aan \u00a7c{1}\u00a76.\n
|
||||
kitInvFull=\u00a74Uw inventaris was vol, de kit wordt op de grond geplaatst.
|
||||
kitInvFull=\u00a74Uw inventaris is vol, de kit wordt op de grond geplaatst.
|
||||
kitItem=\u00a76- \u00a7f{0}
|
||||
kitNotFound=\u00a74Deze kit bestaat niet.
|
||||
kitOnce=\u00a74U kunt deze kit niet opnieuw gebruiken.
|
||||
@ -263,11 +264,11 @@ loadWarpError=\u00a74Fout bij het laden van warp {0}.
|
||||
localFormat=[L]<{0}> {1}
|
||||
localNoOne=
|
||||
mailClear=\u00a76Om je mail te markeren als gelezen, typ\u00a7c /mail clear\u00a76.\n
|
||||
mailCleared=\u00a76Berichten verwijderd\!
|
||||
mailDelay=Er zijn teveel mails verzonden in een minuut. Het maximale aantal berichten\: {0}
|
||||
mailCleared=\u00a76Mails verwijderd\!
|
||||
mailDelay=Er zijn teveel mails verzonden in een minuut. Het maximale aantal mails\: {0}
|
||||
mailFormat=\u00a76[\u00a7r{0}\u00a76] \u00a7r{1}
|
||||
mailMessage={0}
|
||||
mailSent=\u00a76Bericht verzonden\!
|
||||
mailSent=\u00a76Mail verzonden\!
|
||||
mailSentTo=\u00a7c{0}\u00a76 is de volgende mail gestuurd\:
|
||||
mailTooLong=\u00a74Mail bericht te lang. Probeer om het onder 1000 tekens te houden.
|
||||
markedAsAway=\u00a76U staat nu als afwezig gemarkeerd.
|
||||
@ -299,7 +300,7 @@ msgDisabledFor=\u00a76Berichten ontvangen \u00a7cuitgeschakelt \u00a76voor \u00a
|
||||
msgEnabled=\u00a76Berichten ontvangen \u00a7caingeschakelt\u00a76.
|
||||
msgEnabledFor=\u00a76Berichten ontvangen \u00a7cingeschakelt \u00a76voor \u00a7c{0}\u00a76.
|
||||
msgFormat=\u00a76[\u00a7c{0}\u00a76 -> \u00a7c{1}\u00a76] \u00a7r{2}
|
||||
msgIgnore=\u00a7c{0} \u00a74heeft berichten uitstaan.
|
||||
msgIgnore=\u00a7c{0} \u00a74heeft u genegeerd.
|
||||
multipleCharges=\u00a74U kunt niet meer dan \u00e9\u00e9n lading aan dit vuurwerk toevoegen.
|
||||
multiplePotionEffects=\u00a74U kunt niet meer dan \u00e9\u00e9n effect aan dit toverdrankje toevoegen.
|
||||
mutedPlayer=\u00a76Speler\u00a7c {0} \u00a76gedempt.
|
||||
@ -308,7 +309,7 @@ mutedUserSpeaks={0} probeerde te praten, maar is gedempt.
|
||||
muteExempt=\u00a74U kunt deze speler niet dempen.
|
||||
muteExemptOffline=\u00a74U mag spelers die offline zijn niet dempen.
|
||||
muteNotify=\u00a7c{0} \u00a76heeft \u00a7c{1} \u00a76gedempt.
|
||||
muteNotifyFor=\u00a7c{0} \u00a76has muted player \u00a7c{1}\u00a76 for\u00a7c {2}\u00a76.
|
||||
muteNotifyFor=\u00a7c{0} \u00a76heeft speler \u00a7c{1}\u00a76 gedempt voor\u00a7c {2}\u00a76.
|
||||
nearbyPlayers=\u00a76Spelers dichtbij\:\u00a7r {0}
|
||||
negativeBalanceError=Het is voor deze gebruiker niet toegestaan om een negatief saldo te hebben.
|
||||
nickChanged=Bijnaam veranderd.
|
||||
@ -331,7 +332,7 @@ north=N
|
||||
northWest=NW
|
||||
noHomeSetPlayer=Speler heeft geen home.
|
||||
noIgnored=\u00a76U negeert niemand.
|
||||
noJailsDefined=\u00a76No jails defined.
|
||||
noJailsDefined=\u00a76Geen gevangenis gedefinieerd.
|
||||
noKitGroup=\u00a74U heeft geen toestemming om deze kit te gebruiken.
|
||||
noKitPermission=\u00a74U heeft de \u00a7c{0}\u00a74 toestemming nodig om die kit te gebruiken.
|
||||
noKits=\u00a77Er zijn nog geen kits beschikbaar.
|
||||
@ -377,7 +378,7 @@ payMustBePositive=\u00a74De aantal wat je wilt betalen moet positief zijn.
|
||||
payToggleOff=\u00a76Je accepteert niet langer betalingen.
|
||||
payToggleOn=\u00a76Je accepteert betalen weer.
|
||||
pendingTeleportCancelled=\u00a74Afwachtende teleportatie afgelast.
|
||||
playerBanIpAddress=\u00a76Player\u00a7c {0} \u00a76banned IP address\u00a7c {1} \u00a76for\: \u00a7c{2}\u00a76.
|
||||
playerBanIpAddress=\u00a76Speler\u00a7c {0} \u00a76heeft IP\u00a7c {1} \u00a76verbannen voor\: \u00a7c{2}\u00a76.
|
||||
playerBanned=\u00a74Speler \u00a7c{0} \u00a74is verbannen voor {2}
|
||||
playerInJail=\u00a74De speler is al in de gevangenis \u00a7c{0}\u00a74.
|
||||
playerJailed=\u00a76Speler\u00a7c {0} \u00a76is in de gevangenis gezet.
|
||||
@ -457,7 +458,7 @@ requiredBukkit=\u00a76* \! * U heeft op zijn minst build {0} van CraftBukkit nod
|
||||
resetBal=\u00a76Balans is gereset naar \u00a7c{0} \u00a76voor alle online spelers.
|
||||
resetBalAll=\u00a76Saldo is gereset naar \u00a7c{0} \u00a76voor alle spelers.
|
||||
returnPlayerToJailError=\u00a74Een error is verschenen tijdens het proberen om het terugsturen van speler\u00a7c {0} \u00a74naar gevangenis\: \u00a7c{1}\u00a74\!
|
||||
runningPlayerMatch=\u00a76Zoeken naar spelers die ''\u00a7c{0}\u00a76'' matchen (Dit kan even duren)
|
||||
runningPlayerMatch=\u00a76Zoeken naar spelers die ''\u00a7c{0}\u00a76'' matchen (Dit kan even duren)
|
||||
second=seconde
|
||||
seconds=seconden
|
||||
seenAccounts=\u00a76Speler is ook bekend als\:\u00a7c {0}
|
||||
@ -468,7 +469,7 @@ sellHandPermission=\u00a76You do not have permission to hand sell.
|
||||
serverFull=Server is vol.
|
||||
serverTotal=\u00a76Server Totaal\:\u00a7c {0}
|
||||
setBal=\u00a7aUw saldo is ingesteld op {0}.
|
||||
setBalOthers=\u00a7aU heeft het saldo van {0} \u00a7aingesteld op {1}.
|
||||
setBalOthers=\u00a7aU heeft het saldo van {0} \u00a7aingesteld op {1}.
|
||||
setSpawner=\u00a76Veranderde oproeper type naar\u00a7c {0}\u00a76.
|
||||
sheepMalformedColor=\u00a74Misvormde kleur.
|
||||
shoutFormat=\u00a76[Schreeuw]\u00a7r {0}
|
||||
@ -511,8 +512,8 @@ teleporting=\u00a76Bezig met teleporteren...
|
||||
teleportInvalidLocation=De waarde van co\u00f6rdinaten kan niet hoger dan 30000000 zijn
|
||||
teleportNewPlayerError=\u00a74Fout bij het teleporteren van nieuwe speler\!
|
||||
teleportRequest=\u00a7c{0}\u00a76 vraagt of hij naar u kan teleporteren.
|
||||
teleportRequestAllCancelled=\u00a76All outstanding teleport requests cancelled.
|
||||
teleportRequestSpecificCancelled=\u00a76Outstanding teleport request with {0} cancelled.
|
||||
teleportRequestAllCancelled=\u00a76Alle openstaaande teleport verzoeken zijn geannuleerd.
|
||||
teleportRequestSpecificCancelled=\u00a76Openstaande teleport verzoeken van {0} zijn geannuleerd.
|
||||
teleportRequestTimeoutInfo=\u00a76Dit verzoekt verloopt na\u00a7c {0} seconde(n)\u00a76.
|
||||
teleportTop=\u00a77Bezig met teleporteren naar het hoogste punt.
|
||||
teleportToPlayer=\u00a76Teleporteren naar \u00a7c{0}\u00a76.
|
||||
|
@ -211,6 +211,7 @@ is=jest
|
||||
isIpBanned=\u00a77IP \u00a7c{0} \u00a77jest zbanowany.
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemCannotBeSold=\u00a7rNie mo\u017Cesz sprzeda\u0107 tego przedmiotu serwerowi.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74Przedmiotem handluje si\u0119 w stackach. Wielko\u015B\u0107 2s to dwa stacki itd.
|
||||
itemNames=\u00a77Kr\u00F3tka nazwa\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74Masz za ma\u0142o tego przedmiotu, aby go sprzeda\u0107.
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74Nie znaleziono przedmiot\u00F3w kt\u00F3re mo\u017Cna z
|
||||
itemSold=\u00a7aSprzedano za \u00a7c{0} \u00a7a({1} {2} po {3} ka\u017Cdy)
|
||||
itemSoldConsole=\u00a7a{0} \u00a7aSprzedano {1} za \u00a7a{2} \u00a7a({3} sztuki po {4} kazda)
|
||||
itemSpawn=\u00a77Otrzymano\u00a7c {0} \u00a77z\u00a7c {1}
|
||||
itemType=\u00a77Przedmiot\:\u00a7c {0} \u00a77-\u00a7c {1}
|
||||
itemType=\u00a77Przedmiot\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74Ten gracz jest ju\u017C w wi\u0119zieniu \u00a7c{0} \u00a74.
|
||||
jailList=\u00a76Wi\u0119zienia\:\u00a7r {0}
|
||||
jailMessage=\u00a74Za ka\u017Cde przewinienie czeka Ci\u0119 kara.
|
||||
|
@ -210,6 +210,7 @@ inventoryClearingStack=\u00A76Removido\u00A7c {0} \u00A76de\u00A7c {1} \u00A76de
|
||||
is=\u00E9
|
||||
isIpBanned=\u00A76IP \u00A7c{0} \u00A76 est\u00E1 banido.
|
||||
itemCannotBeSold=\u00A74Esse item n\u00E3o pode ser vendido ao servidor.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemMustBeStacked=\u00A74O item tem de ser trocado em stacks. A quantidade de 2 deveria ser 2 stacks, etc.
|
||||
itemNames=\u00A76Nomes pequenos para o itens:\u00A7r {0}
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00A74N\u00E3o tens itens que possam ser transformado em bloc
|
||||
itemSold=\u00A7aVendido por \u00A7c{0} \u00A7a({1} {2} a {3} cada).
|
||||
itemSoldConsole=\u00A7a{0} \u00A7avendeu {1} por \u00A7a{2} \u00A7a({3} itens a {4} cada).
|
||||
itemSpawn=\u00A76A dar\u00A7c {0}\u00A7c {1}
|
||||
itemType=\u00A76Itens:\u00A7c {0} \u00A76-\u00A7c {1}
|
||||
itemType=\u00A76Itens:\u00A7c {0}
|
||||
jailAlreadyIncarcerated=\u00A74Esse jogador j\u00E1 est\u00E1 na pris\u00E3o:\u00A7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00A74Foste condenado. Pensa bem antes de voltares a fazer o que fizeste.
|
||||
|
@ -210,6 +210,7 @@ inventoryClearingStack=\u00A76Removido\u00A7c {0} \u00A76de\u00A7c {1} \u00A76de
|
||||
is=\u00E9
|
||||
isIpBanned=\u00A76IP \u00A7c{0} \u00A76 est\u00E1 banido.
|
||||
itemCannotBeSold=\u00A74Esse item n\u00E3o pode ser vendido para o servidor.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemMustBeStacked=\u00A74O item deve ser trocado em packs. A quantidade de 2 deveria ser 2 packs, etc.
|
||||
itemNames=\u00A76Nomes pequenos para o item\:\u00A7r {0}
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00A74Voc\u00EA n\u00E3o tem itens que possam virar blocos.
|
||||
itemSold=\u00A7aVendido por \u00A7c{0} \u00A7a({1} {2} a {3} cada).
|
||||
itemSoldConsole=\u00A7a{0} \u00A7avendeu {1} por \u00A7a{2} \u00A7a({3} itens a {4} cada).
|
||||
itemSpawn=\u00A76Dando\u00A7c {0}\u00A7c {1}
|
||||
itemType=\u00A76Item\:\u00A7c {0} \u00A76-\u00A7c {1}
|
||||
itemType=\u00A76Item\:\u00A7c {0}
|
||||
jailAlreadyIncarcerated=\u00A74Essa pessoa j\u00E1 est\u00E1 na cadeia\:\u00A7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00A74Voc\u00EA foi condenado. Pense bem antes de fazer o que fez.
|
||||
|
@ -202,7 +202,7 @@ invalidSkull=\u00a74Te rog tine un craniu al unui player.
|
||||
invalidWarpName=\u00a74Numele teleportarei este invalida\!
|
||||
invalidWorld=\u00a74Lume invalida.
|
||||
inventoryClearFail=\u00a74Jucatorul {0} \u00a74nu are\u00a7c {1} \u00a74de\u00a7c {2} \u00a74.
|
||||
inventoryClearingAllArmor=\u00a76Se curata tot inventarul lui {0} \u00a76.
|
||||
inventoryClearingAllArmor=\u00a76Se curata tot inventarul lui {0} \u00a76.
|
||||
inventoryClearingAllItems=\u00a76Se curata inventarul lui {0} \u00a76.
|
||||
inventoryClearingAllStack=\u00a76Se curata\u00a7c {0} \u00a76ale lui {1} \u00a76.
|
||||
inventoryClearingFromAll=\u00a76Se curata inventarul tuturor jucatorilor...
|
||||
@ -211,6 +211,7 @@ is=este
|
||||
isIpBanned=\u00a76IP-ul \u00a7c {0} \u00a76este interzis.
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemCannotBeSold=\u00a74Acest obiect nu poate fi vandut pe server.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74Obiectul trebuie comercializat in stacuri. O cantitate de 2s ar trebuie sa fie 2 stacuri, s.a.m.d.
|
||||
itemNames=\u00a76Numele scurte ale obiectului\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74YNu ai destul din acest obiect pentru a-l putea vinde.
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
|
||||
itemSold=\u00a7aVandut pentru \u00a7c{0} \u00a7a({1} {2} la {3} fiecare).
|
||||
itemSoldConsole=\u00a7a{0} \u00a7aa vandut {1} pentru \u00a7a{2} \u00a7a({3} obiecte la {4} fiecare).
|
||||
itemSpawn=\u00a76Ai primit\u00a7c {0} \u00a76bucata(ti) de\u00a7c {1}
|
||||
itemType=\u00a76Obiect\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76Obiect\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74Acest jucator este deja in inchisoare\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a74Incalci reguli, trebuie sa platesti.
|
||||
|
@ -211,6 +211,7 @@ is=\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f
|
||||
isIpBanned=\u00a76IP \u00a7c{0} \u00a76\u0437\u0430\u0431\u0430\u043d\u0435\u043d.
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemCannotBeSold=\u00a74\u042d\u0442\u043e\u0442 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0434\u0430\u043d.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74\u041f\u0440\u0435\u0434\u043c\u0435\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432 \u0441\u0442\u0430\u043a\u0435. A quantity of 2s would be two stacks, etc.
|
||||
itemNames=\u00a76\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74\u0423 \u0412\u0430\u0441 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u0436\u0438.
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
|
||||
itemSold=\u00a7a\u041f\u0440\u043e\u0434\u0430\u043d\u043e \u0437\u0430 \u00a7c{0} \u00a7a({1} {2} \u043f\u043e {3} \u043a\u0430\u0436\u0434\u044b\u0439).
|
||||
itemSoldConsole=\u00a7a{0} \u00a7a\u043f\u0440\u043e\u0434\u0430\u043b {1} \u0437\u0430 \u00a7a{2} \u00a7a({3} \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432 \u0437\u0430 {4} \u043a\u0430\u0436\u0434\u044b\u0439).
|
||||
itemSpawn=\u00a76\u0412\u044b\u0434\u0430\u043d\u043e\u00a7c {0} \u00a76\u0448\u0442\u0443\u043a\u00a7c {1}
|
||||
itemType=\u00a76\u041f\u0440\u0435\u0434\u043c\u0435\u0442\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76\u041f\u0440\u0435\u0434\u043c\u0435\u0442\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74\u0438\u0433\u0440\u043e\u043a \u0443\u0436\u0435 \u0432 \u0442\u044e\u0440\u044c\u043c\u0435\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a74\u0412\u044b \u043f\u043e\u043f\u0430\u043b\u0438 \u0432 \u0442\u044e\u0440\u044c\u043c\u0443. \u041f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u0434\u044b\u0445\u0430\!
|
||||
|
@ -109,7 +109,7 @@ durability=\u00a77Det h\u00e4r verktyget har \u00a7c{0}\u00a77 anv\u00e4ndningar
|
||||
east=E
|
||||
editBookContents=\u00a7eDu kan nu \u00e4ndra inneh\u00e5llet i denna bok.
|
||||
enabled=aktiverad
|
||||
enableUnlimited=Ger o\u00e4ndligt med pengar till
|
||||
enableUnlimited=Ger o\u00e4ndligt med pengar till
|
||||
enchantmentApplied=\u00a77F\u00f6rtrollningen {0} har blivit till\u00e4mpad p\u00e5 saken du har i handen.
|
||||
enchantmentNotFound=\u00a7cF\u00f6rtrollningen hittades inte
|
||||
enchantmentPerm=\u00a7cDu har inte beh\u00f6righet att {0}
|
||||
@ -202,7 +202,7 @@ invalidSkull=\u00a74Sn\u00e4lla h\u00e5ll i ett spelar Huvud.
|
||||
invalidWarpName=\u00a74Ogiltigt warpnamn
|
||||
invalidWorld=\u00a7cOgiltig v\u00e4rld.
|
||||
inventoryClearFail=\u00a74Spelaren {0} \u00a74har inte \u00a7c {1} \u00a74av\u00a7c {2}\u00a74.
|
||||
inventoryClearingAllArmor=\u00a76Rensade alla inventory objekt och rustning fr\u00e5n {0}\u00a76.
|
||||
inventoryClearingAllArmor=\u00a76Rensade alla inventory objekt och rustning fr\u00e5n {0}\u00a76.
|
||||
inventoryClearingAllItems=\u00a76Rensade alla inventory saker fr\u00e5n {0}\u00a76.
|
||||
inventoryClearingAllStack=\u00a76Rensade alla\u00a7c {0} \u00a76fr\u00e5n {1}\u00a76.
|
||||
inventoryClearingFromAll=\u00a76Rensar inventoriet f\u00f6r alla spelare...
|
||||
@ -210,6 +210,7 @@ inventoryClearingStack=\u00a76Tog bort \u00a7c {0} \u00a76av\u00a7c {1} \u00a76f
|
||||
is=\u00e4r
|
||||
isIpBanned=\u00a76IP \u00a7c {0} \u00a76\u00e4r bannad.
|
||||
itemCannotBeSold=Det objektet kan inte s\u00e4ljas till servern.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemMustBeStacked=Objektet m\u00e5ste k\u00f6pas i staplar. En m\u00e4ngd av 2s kommer bli 2 staplar, etc.
|
||||
itemNames=F\u00f6rkortning p\u00e5 objekt\: {0}
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
|
||||
itemSold=\u00a77S\u00e5lde f\u00f6r \u00a7c{0} \u00a77({1} {2} f\u00f6r {3} styck)
|
||||
itemSoldConsole={0} s\u00e5lde {1} f\u00f6r \u00a77{2} \u00a77({3} saker f\u00f6r {4} styck)
|
||||
itemSpawn=\u00a77Ger {0} stycken {1}
|
||||
itemType=Objekt\: {0} - {1}
|
||||
itemType=Objekt\: {0}
|
||||
jailAlreadyIncarcerated=\u00a7cPersonen \u00e4r redan i f\u00e4ngelse\: {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a7cBryter du mot reglerna, f\u00e5r du st\u00e5 ditt kast.
|
||||
|
@ -210,6 +210,7 @@ inventoryClearingStack=\u00a76Silindi\u00a7c {0} \u00a76of\u00a7c {1} \u00a76Tar
|
||||
is=olan
|
||||
isIpBanned=\u00a76IP \u00a7c{0} \u00a76yasaklandi.
|
||||
itemCannotBeSold=\u00a74Bu Esyayi Sunucuya Satamazsiniz\!
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemMustBeStacked=\u00a74Esya Takasi Icin Elindeki Esyanin Bir Stack(Dolu 64) Olmasi Gerekir.
|
||||
itemNames=\u00a76Esya Kisaltmalari\:\u00a7r {0}
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
|
||||
itemSold=\u00a7aSatilan Esya \u00a7c{0} \u00a7a({1} {2} , {3}).
|
||||
itemSoldConsole=\u00a7a{0} \u00a7aSatildi {1} , \u00a7a{2} \u00a7a({3} , {4}).
|
||||
itemSpawn=\u00a76Verilmekte\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76Esya ve Araclar\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76Esya ve Araclar\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74Bu Oyuncu Zaten Hapse Mahkum\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a74Cezalandirildin Lutfen Kurallara Dikkat Et\!
|
||||
@ -257,7 +258,7 @@ lightningUse=\u00a76Bu Kisi Simsek Atiyor\u00a7c {0}
|
||||
listAfkTag=\u00a77[UzaktaAFK]\u00a7r
|
||||
listAmount=\u00a76Oyuncu Kapasitesi \u00a7c{0}\u00a76 Acik Olan \u00a7c{1}\u00a76.
|
||||
listAmountHidden=\u00a76Suan \u00a7c{0}\u00a76/{1}\u00a76 Sunucudaki \u00a7c{2}\u00a76 oyuncu cevrimici.
|
||||
listGroupTag={0}\u00a7f\:
|
||||
listGroupTag={0}\u00a7f\:
|
||||
listHiddenTag=\u00a77[Gizlenmis]\u00a7r
|
||||
loadWarpError=\u00a74Is\u0131nlanma Noktasi Yuklenemedi {0}.
|
||||
localFormat=[L]<{0}> {1}
|
||||
|
@ -188,6 +188,7 @@ invalidWarpName=\u00a74\u0054\u00ea\u006e \u006b\u0068\u0075 \u0076\u1ef1\u0063
|
||||
invalidWorld=\u00a74\u0054\u0068\u1ebf \u0067\u0069\u1edb\u0069 \u006b\u0068\u00f4\u006e\u0067 \u0068\u1ee3\u0070 \u006c\u1ec7.
|
||||
is=\u006c\u01b0\u0075 \u0067\u0069\u1eef
|
||||
itemCannotBeSold=\u00a74\u0056\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u006e\u00e0\u0079 \u006b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0062\u00e1\u006e \u0074\u0072\u00ea\u006e \u006d\u00e1\u0079 \u0063\u0068\u1ee7.
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74\u0056\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0111\u1ed5\u0069 \u0111\u01b0\u1ee3\u0063 \u0070\u0068\u1ea3\u0069 \u0111\u1ea7\u0079\u002e \u004d\u1ed9\u0074 \u0073\u1ed1 \u006c\u01b0\u1ee3\u006e\u0067 \u0111\u1ea7\u0079 \u0068\u01a1\u006e \u006e\u00f3 \u0073\u1ebd \u0074\u0068\u00e0\u006e\u0068 \u0068\u0061\u0069\u002c \u0076\u002e\u0076\u002e\u002e\u002e.
|
||||
itemNames=\u00a76\u0054\u00ea\u006e \u0074\u0068\u0075 \u0067\u1ecd\u006e\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74\u0042\u1ea1\u006e \u006b\u0068\u00f4\u006e\u0067 \u0063\u00f3 \u0111\u1ee7 \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0111\u1ec3 \u0062\u00e1\u006e.
|
||||
@ -198,7 +199,7 @@ itemSellAir=\u0042\u1ea1\u006e \u0111\u0061\u006e\u0067 \u0063\u1ed1 \u0067\u1ea
|
||||
itemSold=\u00a7a\u0110\u00e3 \u0062\u00e1\u006e \u0111\u01b0\u1ee3\u0063 \u00a7c{0} \u00a7a({1} {2} \u0076\u1edb\u0069 {3} \u006d\u1ed7\u0069 \u0063\u00e1\u0069).
|
||||
itemSoldConsole=\u00a7a{0} \u00a7a\u0111\u00e3 \u0062\u00e1\u006e {1} \u0076\u00e0 \u006e\u0068\u1ead\u006e \u0111\u01b0\u1ee3\u0063 \u00a7a{2} \u00a7a({3} \u0076\u1ead\u0074 \u0070\u0068\u1ea9\u006d \u0076\u1edb\u0069 {4} \u006d\u1ed7\u0069 \u0063\u00e1\u0069).
|
||||
itemSpawn=\u00a76\u0043\u0068\u006f\u00a7c {0} \u00a76\u0063\u00e1\u0069\u00a7c {1}
|
||||
itemType=\u00a76\u0056\u1ead\u0074 \u0070\u0068\u1ea9\u006d\:\u00a7c {0} \u00a76-\u00a7c {1}
|
||||
itemType=\u00a76\u0056\u1ead\u0074 \u0070\u0068\u1ea9\u006d\:\u00a7c {0}
|
||||
itemsCsvNotLoaded=\u004b\u0068\u00f4\u006e\u0067 \u0074\u0068\u1ec3 \u0074\u1ea3\u0069 \u0074\u1ec7\u0070 items.csv\!
|
||||
jailAlreadyIncarcerated=\u00a74\u004e\u0067\u01b0\u1edd\u0069 \u006e\u00e0\u0079 \u0111\u00e3 \u0062\u1ecb \u0067\u0069\u0061\u006d\:\u00a7c {0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
|
@ -210,6 +210,7 @@ inventoryClearingStack=\u00a76\u79fb\u9664\u00a7c {0} \u00a76\u4e2a\u00a7c {1} \
|
||||
is=\u662f
|
||||
isIpBanned=\u00a76IP\u5730\u5740 \u00a7c{0} \u00a76\u5df2\u88ab\u5c01\u7981.
|
||||
itemCannotBeSold=\u00a74\u8be5\u7269\u54c1\u65e0\u6cd5\u5356\u7ed9\u670d\u52a1\u5668
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemMustBeStacked=\u00a74\u7269\u54c1\u5fc5\u987b\u6210\u7ec4\u7684\u8fdb\u884c\u4ea4\u6613,2s\u4ee3\u8868\u7684\u6570\u91cf\u662f2\u7ec4\u7269\u54c1,\u4ee5\u6b64\u7c7b\u63a8
|
||||
itemNames=\u00a76\u7269\u54c1\u7b80\u6613\u540d\u79f0\:\u00a7r {0}
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74\u4f60\u6ca1\u6709\u8db3\u591f\u7684\u7269\u54c1\u6765\
|
||||
itemSold=\u00a7a\u83b7\u5f97 \u00a7c {0} \u00a7a \uff08{1} \u5355\u4f4d{2},\u6bcf\u4e2a\u4ef7\u503c {3}\uff09
|
||||
itemSoldConsole=\u00a7c{0} \u00a76\u5356\u51fa\u4e86 {1},\u83b7\u5f97\u4e86\u00a76 {2} \u00a76 \uff08{3} \u5355\u4f4d\u7269\u54c1,\u6bcf\u4e2a\u4ef7\u503c {4}\uff09
|
||||
itemSpawn=\u00a76\u751f\u6210 {0} \u4e2a {1}
|
||||
itemType=\u00a76\u7269\u54c1\:\u00a7c {0} \u00a76-\u00a74 {1}
|
||||
itemType=\u00a76\u7269\u54c1\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74\u5df2\u5728\u76d1\u72f1\u4e2d\u7684\u73a9\u5bb6\:{0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a74\u8bf7\u5728\u76d1\u72f1\u4e2d\u9762\u58c1\u601d\u8fc7\uff01
|
||||
|
@ -211,6 +211,7 @@ is=\u662f
|
||||
isIpBanned=\u00a76IP \u00a7c{0} \u00a76\u5df2\u88ab\u5c01\u9396\u3002
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemCannotBeSold=\u00a74\u8a72\u7269\u54c1\u7121\u6cd5\u8ce3\u7d66\u670d\u52d9\u5668
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74\u7269\u54c1\u5fc5\u9808\u6210\u7d44\u4ea4\u6613,2s\u7684\u6578\u91cf\u662f2\u7d44,\u4ee5\u6b64\u985e\u63a8
|
||||
itemNames=\u00a76\u7269\u54c1\u7c21\u6613\u540d\u7a31\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74\u4f60\u6c92\u6709\u8db3\u5920\u7684\u8a72\u7269\u54c1\u4f86\u8ce3\u51fa
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
|
||||
itemSold=\u00a7a\u7372\u5f97 \u00a7c {0} \u00a7a \uff08{1} \u55ae\u4f4d{2},\u6bcf\u500b\u50f9\u503c {3}\uff09
|
||||
itemSoldConsole=\u00a7c{0} \u00a76\u8ce3\u51fa\u4e86 {1},\u7372\u5f97\u4e86\u00a76 {2} \u00a76 \uff08{3} \u55ae\u4f4d\u7269\u54c1,\u6bcf\u500b\u50f9\u503c {4}\uff09
|
||||
itemSpawn=\u00a76\u751f\u6210 {0} \u500b {1}
|
||||
itemType=\u00a76\u7269\u54c1\:\u00a7c {0} \u00a76-\u00a74 {1}
|
||||
itemType=\u00a76\u7269\u54c1\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74\u5df2\u5728\u76e3\u7344\u4e2d\u7684\u73a9\u5bb6\:{0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a74\u8acb\u5728\u76e3\u7344\u4e2d\u9762\u58c1\u601d\u904e\uff01
|
||||
|
@ -211,6 +211,7 @@ is=\u662f
|
||||
isIpBanned=\u00a76IP \u00a7c{0} \u00a76\u5df2\u88ab\u5c01\u9396\u3002
|
||||
internalError=\u00a7cAn internal error occurred while attempting to perform this command.
|
||||
itemCannotBeSold=\u00a74\u8a72\u7269\u54c1\u7121\u6cd5\u8ce3\u7d66\u4f3a\u670d\u5668
|
||||
itemId=\u00a76ID\:\u00a7c {0}
|
||||
itemMustBeStacked=\u00a74\u7269\u54c1\u5fc5\u9808\u6210\u7d44\u4ea4\u6613,2s\u7684\u6578\u91cf\u662f2\u7d44,\u4ee5\u6b64\u985e\u63a8
|
||||
itemNames=\u00a76\u7269\u54c1\u7c21\u6613\u540d\u7a31\:\u00a7r {0}
|
||||
itemNotEnough1=\u00a74\u4f60\u6c92\u6709\u8db3\u5920\u7684\u8a72\u7269\u54c1\u4f86\u8ce3\u51fa
|
||||
@ -223,7 +224,7 @@ itemsNotConverted=\u00a74You have no items that can be converted into blocks.
|
||||
itemSold=\u00a7a\u7372\u5f97 \u00a7c {0} \u00a7a \uff08{1} \u55ae\u4f4d{2},\u6bcf\u500b\u50f9\u503c {3}\uff09
|
||||
itemSoldConsole=\u00a7c{0} \u00a76\u8ce3\u51fa\u4e86 {1},\u7372\u5f97\u4e86\u00a76 {2} \u00a76 \uff08{3} \u55ae\u4f4d\u7269\u54c1,\u6bcf\u500b\u50f9\u503c {4}\uff09
|
||||
itemSpawn=\u00a76\u751f\u6210 {0} \u500b {1}
|
||||
itemType=\u00a76\u7269\u54c1\:\u00a7c {0} \u00a76-\u00a74 {1}
|
||||
itemType=\u00a76\u7269\u54c1\:\u00a7c {0}
|
||||
jailAlreadyIncarcerated=\u00a74\u5df2\u5728\u76e3\u7344\u4e2d\u7684\u73a9\u5bb6\:{0}
|
||||
jailList=\u00a76Jails\:\u00a7r {0}
|
||||
jailMessage=\u00a74\u8acb\u5728\u76e3\u7344\u4e2d\u9762\u58c1\u601d\u904e\uff01
|
||||
|
65
Essentials/src/net/ess3/api/events/UserWarpEvent.java
Normal file
65
Essentials/src/net/ess3/api/events/UserWarpEvent.java
Normal file
@ -0,0 +1,65 @@
|
||||
package net.ess3.api.events;
|
||||
|
||||
import com.earth2me.essentials.Trade;
|
||||
import net.ess3.api.IUser;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
/**
|
||||
* Called when the player use the command /warp
|
||||
*/
|
||||
public class UserWarpEvent extends Event implements Cancellable {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
|
||||
private IUser user;
|
||||
private String warp;
|
||||
private Trade trade;
|
||||
private boolean cancelled = false;
|
||||
|
||||
|
||||
public UserWarpEvent(IUser user, String warp, Trade trade){
|
||||
this.user = user;
|
||||
this.warp = warp;
|
||||
this.trade = trade;
|
||||
}
|
||||
|
||||
public IUser getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
public String getWarp() {
|
||||
return warp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getting payment handling information
|
||||
* @return The payment handling class
|
||||
*/
|
||||
public Trade getTrade() {
|
||||
return trade;
|
||||
}
|
||||
|
||||
public void setWarp(String warp) {
|
||||
this.warp = warp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCancelled() {
|
||||
return cancelled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCancelled(boolean b) {
|
||||
cancelled = b;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
}
|
@ -7,6 +7,7 @@ website: http://tiny.cc/EssentialsCommands
|
||||
description: Provides an essential, core set of commands for Bukkit.
|
||||
softdepend: [Vault]
|
||||
authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits, md_5, Iaccidentally, drtshock, vemacs, SupaHam, md678685]
|
||||
api-version: 1.13
|
||||
commands:
|
||||
afk:
|
||||
description: Marks you as away-from-keyboard.
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user