1
0
mirror of https://github.com/Zrips/Jobs.git synced 2024-11-29 05:55:27 +01:00

Merge branch 'master' into fixjobeditorchat

This commit is contained in:
montlikadani 2018-08-20 13:09:28 +02:00 committed by GitHub
commit 4cf74665cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 4236 additions and 828 deletions

View File

@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>Jobs</groupId>
<artifactId>jobs</artifactId>
<version>4.7.1</version>
<version>4.7.2</version>
<name>Jobs</name>
<url>http://maven.apache.org</url>
<properties>

View File

@ -18,6 +18,7 @@ import org.bukkit.inventory.Recipe;
import org.bukkit.inventory.meta.SkullMeta;
import com.gamingmesh.jobs.Jobs;
import com.gamingmesh.jobs.stuff.Debug;
import com.gamingmesh.jobs.stuff.VersionChecker.Version;
public class ItemManager {
@ -26,10 +27,10 @@ public class ItemManager {
static HashMap<String, CMIItemStack> byBukkitName = new HashMap<String, CMIItemStack>();
static HashMap<String, CMIItemStack> byMojangName = new HashMap<String, CMIItemStack>();
static HashMap<CMIMaterial, CMIItemStack> byMaterial = new HashMap<CMIMaterial, CMIItemStack>();
static Version version;
static final Version version = Jobs.getVersionCheckManager().getVersion();
public static void load() {
version = Jobs.getVersionCheckManager().getVersion();
for (CMIMaterial one : CMIMaterial.values()) {
if (one == null)
continue;
@ -596,7 +597,7 @@ public class ItemManager {
}
}
public enum CMIMaterial {
public static enum CMIMaterial {
NONE(-1, -1, -1, "None"),
ACACIA_BOAT(447, 0, 27326, "Acacia Boat", "BOAT_ACACIA"),
ACACIA_BUTTON(-1, -1, 13993, "Acacia Button", ""),
@ -755,7 +756,7 @@ public class ItemManager {
COBWEB(30, 0, 9469, "Cobweb", "WEB"),
COCOA(127, 0, 29709, "Cocoa", ""),
COCOA_BEANS(351, 3, 27381, "Coco Beans", "INK_SACK"),
COD(349, 0, 24691, "Raw Fish", "RAW_FISH"),
COD(349, 0, 24691, "Raw Cod", "RAW_FISH"),
COD_BUCKET(-1, -1, 28601, "Bucket of Cod", ""),
COD_SPAWN_EGG(-1, -1, 27248, "Cod Spawn Egg", ""),
COMMAND_BLOCK(137, 0, 4355, "Command Block", "COMMAND"),
@ -776,7 +777,7 @@ public class ItemManager {
CRAFTING_TABLE(58, 0, 20706, "Crafting Table", "WORKBENCH"),
CREEPER_HEAD(397, 4, 29146, "Mob Head (Creeper)", "Creeper Head"),
CREEPER_SPAWN_EGG(383, 50, 9653, "Spawn Creeper", "Creeper Spawn Egg"),
CREEPER_WALL_HEAD(397, 0, 30123, "Creeper Wall Head", ""),
CREEPER_WALL_HEAD(144, 4, 30123, "Creeper Wall Head", ""),
CUT_RED_SANDSTONE(-1, -1, 26842, "Cut Red Sandstone", ""),
CUT_SANDSTONE(-1, -1, 6118, "Cut Sandstone", ""),
CYAN_BANNER(425, 6, 9839, "Cyan Banner", ""),
@ -852,7 +853,7 @@ public class ItemManager {
DRAGON_BREATH(437, 0, 20154, "Dragon's Breath", ""),
DRAGON_EGG(122, 0, 29946, "Dragon Egg", "DRAGON_EGG"),
DRAGON_HEAD(397, 5, 20084, "Dragon Head", ""),
DRAGON_WALL_HEAD(-1, -1, 19818, "Dragon Wall Head", ""),
DRAGON_WALL_HEAD(144, 5, 19818, "Dragon Wall Head", ""),
DRIED_KELP(-1, -1, 21042, "Dried Kelp", ""),
DRIED_KELP_BLOCK(-1, -1, 12966, "Dried Kelp Block", ""),
DROPPER(158, 0, 31273, "Dropper", "DROPPER"),
@ -1187,7 +1188,7 @@ public class ItemManager {
PISTON(33, 0, 21130, "Piston", "PISTON_BASE"),
PISTON_HEAD(34, 0, 30226, "Piston Head", "PISTON_EXTENSION"),
PLAYER_HEAD(397, 3, 21174, "Mob Head (Human)", "Player Head"),
PLAYER_WALL_HEAD(-1, -1, 13164, "Player Wall Head", ""),
PLAYER_WALL_HEAD(144, 3, 13164, "Player Wall Head", ""),
PODZOL(3, 2, 24068, "Podzol", ""),
POISONOUS_POTATO(394, 0, 32640, "Poisonous Potato", ""),
POLAR_BEAR_SPAWN_EGG(383, 102, 17015, "Spawn Polar Bear", "Polar Bear Spawn Egg"),
@ -1320,7 +1321,7 @@ public class ItemManager {
SKELETON_HORSE_SPAWN_EGG(383, 28, 21356, "Spawn Skeleton Horse", "Skeleton Horse Spawn Egg"),
SKELETON_SKULL(397, 0, 13270, "Mob Head (Skeleton)", "Skeleton Skull"),
SKELETON_SPAWN_EGG(383, 51, 15261, "Spawn Skeleton", "Skeleton Spawn Egg"),
SKELETON_WALL_SKULL(397, 0, 31650, "Skeleton Wall Skull", ""),
SKELETON_WALL_SKULL(144, 0, 31650, "Skeleton Wall Skull", ""),
SLIME_BALL(341, 0, 5242, "Slimeball", ""),
SLIME_BLOCK(165, 0, 31892, "Slime Block", "SLIME_BLOCK"),
SLIME_SPAWN_EGG(383, 55, 6550, "Spawn Slime", "Slime Spawn Egg"),
@ -1398,7 +1399,7 @@ public class ItemManager {
TRIDENT(-1, -1, 7534, "Trident", ""),
TRIPWIRE(132, 0, 8810, "Tripwire", ""),
TRIPWIRE_HOOK(131, 0, 8130, "Tripwire Hook", ""),
TROPICAL_FISH(-1, -1, 12795, "Tropical Fish", ""),
TROPICAL_FISH(349, 2, 12795, "Tropical Fish", ""),
TROPICAL_FISH_BUCKET(-1, -1, 30390, "Bucket of Tropical Fish", ""),
TROPICAL_FISH_SPAWN_EGG(-1, -1, 19713, "Tropical Fish Spawn Egg", ""),
TUBE_CORAL(-1, -1, 23048, "Tube Coral", ""),
@ -1436,7 +1437,7 @@ public class ItemManager {
WITCH_SPAWN_EGG(383, 66, 11837, "Spawn Witch", "Witch Spawn Egg"),
WITHER_SKELETON_SKULL(397, 1, 31487, "Mob Head (Wither Skeleton)", "Wither Skeleton Skull"),
WITHER_SKELETON_SPAWN_EGG(383, 5, 10073, "Spawn Wither Skeleton", "Wither Skeleton Spawn Egg"),
WITHER_SKELETON_WALL_SKULL(397, 1, 9326, "Wither Skeleton Wall Skull", ""),
WITHER_SKELETON_WALL_SKULL(144, 1, 9326, "Wither Skeleton Wall Skull", ""),
WOLF_SPAWN_EGG(383, 95, 21692, "Spawn Wolf", "Wolf Spawn Egg"),
WOODEN_AXE(271, 0, 6292, "Wooden Axe", "Wood Axe"),
WOODEN_HOE(290, 0, 16043, "Wooden Hoe", "Wood Hoe"),
@ -1462,16 +1463,17 @@ public class ItemManager {
ZOMBIE_PIGMAN_SPAWN_EGG(383, 57, 11531, "Spawn Zombie Pigman", "Zombie Pigman Spawn Egg"),
ZOMBIE_SPAWN_EGG(383, 54, 5814, "Spawn Zombie", "Zombie Spawn Egg"),
ZOMBIE_VILLAGER_SPAWN_EGG(383, 27, 10311, "Spawn Zombie Villager", "Zombie Villager Spawn Egg"),
ZOMBIE_WALL_HEAD(397, 2, 16296, "Zombie Wall Head", ""),
ZOMBIE_WALL_HEAD(144, 2, 16296, "Zombie Wall Head", ""),
// Legacy
LEGACY_STATIONARY_WATER(9, 0, -1, "Stationary Water", ""),
LEGACY_STATIONARY_LAVA(11, 0, -1, "Stationary Lava", ""),
LEGACY_BURNING_FURNACE(62, 0, -1, "Burning Furnace", ""),
// LEGACY_SIGN_POST(63, -1, -1, "Sign Post", ""),
LEGACY_WOODEN_DOOR_BLOCK(64, 0, -1, "LEGACY_WOODEN_DOOR", ""),
LEGACY_IRON_DOOR_BLOCK(71, 0, -1, "LEGACY_IRON_DOOR_BLOCK", ""),
LEGACY_GLOWING_REDSTON_ORE(74, 0, -1, "Glowing Redstone Ore", "");
LEGACY_GLOWING_REDSTON_ORE(74, 0, -1, "Glowing Redstone Ore", ""),
LEGACY_RAW_FISH(349, 0, -1, "Raw Fish", ""),
LEGACY_SKULL(144, 0, -1, "Skull", "");
private int legacyId;
private int legacyData;
@ -2186,13 +2188,17 @@ public class ItemManager {
}
public static boolean isDye(Material mat) {
Debug.D("ss1");
CMIMaterial m = CMIMaterial.get(mat);
Debug.D("ss2");
if (m == null)
return false;
Debug.D("ss3");
return m.isDye();
}
public boolean isDye() {
Debug.D("ss4");
switch (this) {
case INK_SAC:
case ROSE_RED:
@ -2253,70 +2259,7 @@ public class ItemManager {
}
public static SlabType getSlabType(Block block) {
if (!isSlab(block.getType()))
return SlabType.NOTSLAB;
if (Jobs.getVersionCheckManager().getVersion().isEqualOrHigher(Version.v1_10_R1.v1_13_R1)) {
if (block.getBlockData() instanceof org.bukkit.block.data.type.Slab) {
org.bukkit.block.data.type.Slab slab = (org.bukkit.block.data.type.Slab) block.getBlockData();
switch (slab.getType()) {
case TOP:
return SlabType.TOP;
case BOTTOM:
return SlabType.BOTTOM;
case DOUBLE:
return SlabType.DOUBLE;
}
}
return SlabType.NOTSLAB;
}
s: if (block.getType().name().contains("STEP")) {
switch (CMIMaterial.get(block).getLegacyId()) {
case 44:
switch (block.getData()) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
return SlabType.BOTTOM;
default:
return SlabType.DOUBLE;
}
case 126:
switch (block.getData()) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
return SlabType.BOTTOM;
default:
return SlabType.DOUBLE;
}
case 182:
switch (block.getData()) {
case 0:
return SlabType.BOTTOM;
default:
return SlabType.DOUBLE;
}
case 205:
switch (block.getData()) {
case 0:
return SlabType.BOTTOM;
default:
return SlabType.DOUBLE;
}
}
}
return SlabType.NOTSLAB;
return checkSlab(block);
}
public boolean equals(Material mat) {
@ -2354,6 +2297,71 @@ public class ItemManager {
}
}
private static SlabType checkSlab(Block block) throws NoClassDefFoundError {
if (!CMIMaterial.isSlab(block.getType()))
return SlabType.NOTSLAB;
if (version.isEqualOrHigher(Version.v1_13_R1)) {
if (block.getBlockData() instanceof org.bukkit.block.data.type.Slab) {
org.bukkit.block.data.type.Slab slab = (org.bukkit.block.data.type.Slab) block.getBlockData();
org.bukkit.block.data.type.Slab.Type t = slab.getType();
if (t.equals(org.bukkit.block.data.type.Slab.Type.TOP))
return SlabType.TOP;
if (t.equals(org.bukkit.block.data.type.Slab.Type.BOTTOM))
return SlabType.BOTTOM;
if (t.equals(org.bukkit.block.data.type.Slab.Type.DOUBLE))
return SlabType.DOUBLE;
}
return SlabType.NOTSLAB;
}
if (block.getType().name().contains("STEP")) {
switch (CMIMaterial.get(block).getLegacyId()) {
case 44:
switch (block.getData()) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
return SlabType.BOTTOM;
default:
return SlabType.DOUBLE;
}
case 126:
switch (block.getData()) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
return SlabType.BOTTOM;
default:
return SlabType.DOUBLE;
}
case 182:
switch (block.getData()) {
case 0:
return SlabType.BOTTOM;
default:
return SlabType.DOUBLE;
}
case 205:
switch (block.getData()) {
case 0:
return SlabType.BOTTOM;
default:
return SlabType.DOUBLE;
}
}
}
return SlabType.NOTSLAB;
}
public enum SlabType {
TOP,
BOTTOM,

View File

@ -4,6 +4,7 @@
package com.gamingmesh.jobs.CMILib;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import org.bukkit.Bukkit;
@ -67,6 +68,22 @@ public class ItemReflection {
}
public static String getItemMinecraftName(ItemStack item) {
try {
Object nmsStack = asNMSCopy(item);
Field field = Item.getField("REGISTRY");
Object reg = field.get(field);
Method meth = reg.getClass().getMethod("b", Object.class);
meth.setAccessible(true);
Method secmeth = nmsStack.getClass().getMethod("getItem");
Object res2 = secmeth.invoke(nmsStack);
Object res = meth.invoke(reg, res2);
return res.toString();
} catch (Exception e) {
return null;
}
}
public static String getItemRealName(ItemStack item) {
try {
Object nmsStack = asNMSCopy(item);
Method itemMeth = Item.getMethod("getById", int.class);

View File

@ -137,7 +137,7 @@ public class Jobs extends JavaPlugin {
private static ConfigManager configManager;
private static GeneralConfigManager GconfigManager;
private static Reflections reflections;
private static Logger pLogger;
@ -248,7 +248,7 @@ public class Jobs extends JavaPlugin {
reflections = new Reflections(instance);
return reflections;
}
public static JobsManager getDBManager() {
if (DBManager == null)
DBManager = new JobsManager(instance);
@ -754,7 +754,7 @@ public class Jobs extends JavaPlugin {
this.setEnabled(true);
versionCheckManager = new VersionChecker(this);
ItemManager.load();
version = versionCheckManager.getVersion().getShortVersion();
@ -875,9 +875,14 @@ public class Jobs extends JavaPlugin {
this.setEnabled(false);
}
@Deprecated
private static void checkDailyQuests(JobsPlayer jPlayer, JobProgression prog, ActionInfo info) {
if (!prog.getJob().getQuests().isEmpty()) {
List<QuestProgression> q = jPlayer.getQuestProgressions(prog.getJob(), info.getType());
checkDailyQuests(jPlayer, prog.getJob(), info);
}
private static void checkDailyQuests(JobsPlayer jPlayer, Job job, ActionInfo info) {
if (!job.getQuests().isEmpty()) {
List<QuestProgression> q = jPlayer.getQuestProgressions(job, info.getType());
for (QuestProgression one : q) {
if (one != null) {
one.processQuest(jPlayer, info);
@ -929,6 +934,8 @@ public class Jobs extends JavaPlugin {
return;
JobInfo jobinfo = noneJob.getJobInfo(info, 1);
checkDailyQuests(jPlayer, noneJob, info);
if (jobinfo == null)
return;
@ -996,13 +1003,14 @@ public class Jobs extends JavaPlugin {
} else {
for (JobProgression prog : progression) {
int level = prog.getLevel();
JobInfo jobinfo = prog.getJob().getJobInfo(info, level);
checkDailyQuests(jPlayer, prog.getJob(), info);
if (jobinfo == null)
continue;
checkDailyQuests(jPlayer, prog, info);
Double income = jobinfo.getIncome(level, numjobs);
Double pointAmount = jobinfo.getPoints(level, numjobs);
Double expAmount = jobinfo.getExperience(level, numjobs);

View File

@ -906,7 +906,7 @@ public class ConfigManager {
}
// END HACK
type = material.toString();
type = material.getMaterial().toString();
id = material.getId();
} else if (actionType == ActionType.KILL || actionType == ActionType.TAME || actionType == ActionType.BREED || actionType == ActionType.MILK) {

View File

@ -889,8 +889,13 @@ public class GeneralConfigManager {
"This is update for same job signs, to avoid huge lag if you have bunch of same type signs. Keep it from 1 to as many sec you want");
InfoUpdateInterval = c.get("Signs.InfoUpdateInterval", 5);
c.getW().addComment("Scoreboard.ShowToplist", "This will enables to show top list in scoreboard instead of chat");
ShowToplistInScoreboard = c.get("Scoreboard.ShowToplist", true);
if (Version.isCurrentEqualOrHigher(Version.v1_13_R1)) {
ShowToplistInScoreboard = false;
} else {
c.getW().addComment("Scoreboard.ShowToplist", "This will enables to show top list in scoreboard instead of chat");
ShowToplistInScoreboard = c.get("Scoreboard.ShowToplist", true);
}
c.getW().addComment("Scoreboard.interval", "For how long to show scoreboard");
ToplistInScoreboardInterval = c.get("Scoreboard.interval", 10);

View File

@ -26,6 +26,7 @@ public enum ActionType {
MMKILL("MMKill"),
FISH("Fish"),
CRAFT("Craft"),
VTRADE("VTrade"),
SMELT("Smelt"),
BREW("Brew"),
ENCHANT("Enchant"),

View File

@ -226,7 +226,6 @@ public class Job {
}
public JobInfo getJobInfo(ActionInfo action, int level) {
for (JobInfo info : getJobInfo(action.getType())) {
if (info.getName().equalsIgnoreCase(action.getName()) || info.getName().equalsIgnoreCase(action.getNameWithSub())) {
if (!info.isInLevelRange(level))

View File

@ -113,6 +113,94 @@ public class JobsPaymentListener implements Listener {
this.plugin = plugin;
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void villagerTradeInventoryClick(InventoryClickEvent event) {
//disabling plugin in world
if (event.getWhoClicked() != null && !Jobs.getGCManager().canPerformActionInWorld(event.getWhoClicked().getWorld()))
return;
// make sure plugin is enabled
if (!this.plugin.isEnabled())
return;
if (event.isCancelled())
return;
// If event is nothing or place, do nothing
switch (event.getAction()) {
case NOTHING:
case PLACE_ONE:
case PLACE_ALL:
case PLACE_SOME:
return;
default:
break;
}
if (event.getInventory().getType() != InventoryType.MERCHANT)
return;
if (event.getSlot() != 2)
return;
if (!event.getSlotType().equals(SlotType.RESULT))
return;
ItemStack resultStack = event.getClickedInventory().getItem(2);
if (resultStack == null)
return;
if (!(event.getWhoClicked() instanceof Player))
return;
Player player = (Player) event.getWhoClicked();
//Check if inventory is full and using shift click, possible money dupping fix
if (player.getInventory().firstEmpty() == -1 && event.isShiftClick()) {
player.sendMessage(ChatColor.RED + Jobs.getLanguage().getMessage("message.crafting.fullinventory"));
return;
}
if (!Jobs.getPermissionHandler().hasWorldPermission(player, player.getLocation().getWorld().getName()))
return;
if (!event.isLeftClick() && !event.isRightClick())
return;
// check if in creative
if (player.getGameMode().equals(GameMode.CREATIVE) && !Jobs.getGCManager().payInCreative())
return;
JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(player);
if (jPlayer == null)
return;
// Checking how much player traded
ItemStack toCraft = event.getCurrentItem();
ItemStack toStore = event.getCursor();
// Make sure we are actually traded anything
if (hasItems(toCraft))
if (event.isShiftClick()) {
schedulePostDetection(player, toCraft.clone(), jPlayer, resultStack.clone(), ActionType.VTRADE);
} else {
// The items are stored in the cursor. Make sure there's enough space.
if (isStackSumLegal(toCraft, toStore)) {
int newItemsCount = toCraft.getAmount();
while (newItemsCount >= 1) {
newItemsCount--;
if (resultStack.hasItemMeta() && resultStack.getItemMeta().hasDisplayName())
Jobs.action(jPlayer, new ItemNameActionInfo(ChatColor.stripColor(resultStack.getItemMeta().getDisplayName()), ActionType.VTRADE));
else
Jobs.action(jPlayer, new ItemActionInfo(resultStack, ActionType.VTRADE));
}
}
}
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onCowMilking(PlayerInteractEntityEvent event) {
//disabling plugin in world
@ -249,7 +337,7 @@ public class JobsPaymentListener implements Listener {
Player player = jPlayer.getPlayer();
if (!Jobs.getPermissionHandler().hasWorldPermission(player, player.getLocation().getWorld().getName()))
return;
return;
ItemStack contents = event.getContents().getIngredient();
@ -258,7 +346,7 @@ public class JobsPaymentListener implements Listener {
Jobs.action(jPlayer, new ItemActionInfo(contents, ActionType.BREW));
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBlockBreak(BlockBreakEvent event) {
//disabling plugin in world
@ -279,7 +367,7 @@ public class JobsPaymentListener implements Listener {
return;
// check if in creative
if (player.getGameMode() == GameMode.CREATIVE && !Jobs.getGCManager().payInCreative())
if (player.getGameMode() == GameMode.CREATIVE && !Jobs.getGCManager().payInCreative())
return;
if (!Jobs.getPermissionHandler().hasWorldPermission(player, player.getLocation().getWorld().getName()))
@ -421,7 +509,7 @@ public class JobsPaymentListener implements Listener {
}
@SuppressWarnings("deprecation")
@SuppressWarnings({ "deprecation", "incomplete-switch" })
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onInventoryCraft(CraftItemEvent event) {
//disabling plugin in world
@ -485,10 +573,13 @@ public class JobsPaymentListener implements Listener {
for (int i = 0; i < sourceItems.length; i++) {
if (sourceItems[i] == null)
continue;
Debug.D("ss");
if (CMIMaterial.isDye(sourceItems[i].getType()))
DyeStack.add(sourceItems[i]);
int id = sourceItems[i].getType().getId();
if (id > 0) {
if (id == 351)
DyeStack.add(sourceItems[i]);
y++;
if (y == 0)
first = id;
@ -498,14 +589,13 @@ public class JobsPaymentListener implements Listener {
third = id;
}
if (id == 299)
leather = true;
if (id == 300)
leather = true;
if (id == 301)
leather = true;
if (id == 298)
switch (CMIMaterial.get(sourceItems[i])) {
case LEATHER_BOOTS:
case LEATHER_CHESTPLATE:
case LEATHER_HELMET:
case LEATHER_LEGGINGS:
leather = true;
}
}
if (jPlayer == null)
@ -520,7 +610,7 @@ public class JobsPaymentListener implements Listener {
// Check Dyes
if (y >= 2) {
if ((third == 351 || second == 351) && leather) {
if ((CMIMaterial.get(third).isDye() || CMIMaterial.get(second).isDye()) && leather) {
Jobs.action(jPlayer, new ItemActionInfo(sourceItems[0], ActionType.DYE));
for (ItemStack OneDye : DyeStack) {
Jobs.action(jPlayer, new ItemActionInfo(OneDye, ActionType.DYE));
@ -544,7 +634,7 @@ public class JobsPaymentListener implements Listener {
// Make sure we are actually crafting anything
if (hasItems(toCraft))
if (event.isShiftClick())
schedulePostDetection(player, toCraft.clone(), jPlayer, resultStack.clone());
schedulePostDetection(player, toCraft.clone(), jPlayer, resultStack.clone(), ActionType.CRAFT);
else {
// The items are stored in the cursor. Make sure there's enough space.
if (isStackSumLegal(toCraft, toStore)) {
@ -561,9 +651,14 @@ public class JobsPaymentListener implements Listener {
}
@Deprecated
private Integer schedulePostDetection(final HumanEntity player, final ItemStack compareItem, final JobsPlayer jPlayer, final ItemStack resultStack) {
return schedulePostDetection(player, compareItem, jPlayer, resultStack, ActionType.CRAFT);
}
// HACK! The API doesn't allow us to easily determine the resulting number of
// crafted items, so we're forced to compare the inventory before and after.
private Integer schedulePostDetection(final HumanEntity player, final ItemStack compareItem, final JobsPlayer jPlayer, final ItemStack resultStack) {
private Integer schedulePostDetection(final HumanEntity player, final ItemStack compareItem, final JobsPlayer jPlayer, final ItemStack resultStack, final ActionType type) {
final ItemStack[] preInv = player.getInventory().getContents();
// Clone the array. The content may (was for me) be mutable.
for (int i = 0; i < preInv.length; i++) {
@ -587,7 +682,7 @@ public class JobsPaymentListener implements Listener {
if (newItemsCount > 0) {
while (newItemsCount >= 1) {
newItemsCount--;
Jobs.action(jPlayer, new ItemActionInfo(resultStack, ActionType.CRAFT));
Jobs.action(jPlayer, new ItemActionInfo(resultStack, type));
}
}
return;
@ -929,7 +1024,11 @@ public class JobsPaymentListener implements Listener {
// mob spawner, no payment or experience
if (lVictim.hasMetadata(Jobs.getPlayerManager().getMobSpawnerMetadata()) && !Jobs.getGCManager().payNearSpawner()) {
//lVictim.removeMetadata(mobSpawnerMetadata, plugin);
try {
// So lets remove meta in case some plugin removes entity in wrong way.
lVictim.removeMetadata(Jobs.getPlayerManager().getMobSpawnerMetadata(), plugin);
} catch (Exception ex) {
}
return;
}

View File

@ -6,8 +6,8 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;
import java.util.Map.Entry;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import org.bukkit.Bukkit;
@ -19,6 +19,7 @@ import org.bukkit.scoreboard.Scoreboard;
import com.gamingmesh.jobs.Jobs;
import com.gamingmesh.jobs.container.ScoreboardInfo;
import com.gamingmesh.jobs.stuff.VersionChecker.Version;
public class CMIScoreboardManager {
@ -74,17 +75,37 @@ public class CMIScoreboardManager {
Class<?> boardClass = getNMSClass("Scoreboard");
Object boards = boardClass.getConstructor().newInstance();
Method m = boards.getClass().getMethod("registerObjective", String.class, getNMSClass("IScoreboardCriteria"));
if (Version.isCurrentEqualOrHigher(Version.v1_13_R1)) {
Class<?> IScoreboardCriterias = getNMSClass("ScoreboardBaseCriteria");
Constructor<?> IScoreboardCriteriasConst = IScoreboardCriterias.getConstructor(String.class);
Object IScoreboardCriteria = IScoreboardCriteriasConst.newInstance("JobsDummy");
// Class<?> enums = getNMSClass("IScoreboardCriteria$EnumScoreboardHealthDisplay");
// Class<?> chatbase = getNMSClass("IChatBaseComponent$ChatSerializer");
//// Class<?> ser = getNMSClass("IChatBaseComponent$ChatSerializer");
// Method mm = chatbase.getMethod("a", String.class);
// Object serealized = mm.invoke(chatbase, "{\"text\": \"" + ChatColor.translateAlternateColorCodes('&', "JobsDummy") + "\"}");
// Object e = enums.getEnumConstants()[0];
// Class<?> IScoreboardCriterias = getNMSClass("ScoreboardBaseCriteria");
// Constructor<?> IScoreboardCriteriasConst = IScoreboardCriterias.getConstructor(String.class);
// Object IScoreboardCriteria = IScoreboardCriteriasConst.newInstance("JobsDummy");
// Method m = boards.getClass().getMethod("registerNewObjective", String.class, getNMSClass("IScoreboardCriteria"), chatbase, enums);
// Object obj = m.invoke(boards, objName, "JobsDummy", IScoreboardCriteria, serealized, e);
//
// Class<?> p1 = getNMSClass("PacketPlayOutScoreboardObjective");
// Constructor<?> p11 = p1.getConstructor(obj.getClass(), int.class);
// Object pp1 = p11.newInstance(obj, 1);
// sendPacket(player, pp1);
} else {
Method m = boards.getClass().getMethod("registerObjective", String.class, getNMSClass("IScoreboardCriteria"));
Object obj = m.invoke(boards, objName, IScoreboardCriteria);
Class<?> p1 = getNMSClass("PacketPlayOutScoreboardObjective");
Constructor<?> p11 = p1.getConstructor(obj.getClass(), int.class);
Object pp1 = p11.newInstance(obj, 1);
sendPacket(player, pp1);
Class<?> IScoreboardCriterias = getNMSClass("ScoreboardBaseCriteria");
Constructor<?> IScoreboardCriteriasConst = IScoreboardCriterias.getConstructor(String.class);
Object IScoreboardCriteria = IScoreboardCriteriasConst.newInstance("JobsDummy");
Object obj = m.invoke(boards, objName, IScoreboardCriteria);
Class<?> p1 = getNMSClass("PacketPlayOutScoreboardObjective");
Constructor<?> p11 = p1.getConstructor(obj.getClass(), int.class);
Object pp1 = p11.newInstance(obj, 1);
sendPacket(player, pp1);
}
} catch (ClassNotFoundException | NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
e.printStackTrace();
}
@ -95,50 +116,105 @@ public class CMIScoreboardManager {
try {
Class<?> boardClass = getNMSClass("Scoreboard");
Object boards = boardClass.getConstructor().newInstance();
if (Version.isCurrentEqualOrHigher(Version.v1_13_R1)) {
//
// Class<?> enums = getNMSClass("IScoreboardCriteria$EnumScoreboardHealthDisplay");
//
// Class<?> chatbase = getNMSClass("IChatBaseComponent$ChatSerializer");
//// Class<?> ser = getNMSClass("IChatBaseComponent$ChatSerializer");
// Method mm2 = chatbase.getMethod("a", String.class);
// Object serealized = mm2.invoke(chatbase, "{\"text\": \"" + ChatColor.translateAlternateColorCodes('&', "JobsDummy") + "\"}");
// Object e = enums.getEnumConstants()[0];
// Class<?> IScoreboardCriterias = getNMSClass("ScoreboardBaseCriteria");
// Constructor<?> IScoreboardCriteriasConst = IScoreboardCriterias.getConstructor(String.class);
// Object IScoreboardCriteria = IScoreboardCriteriasConst.newInstance("JobsDummy");
// Method m = boards.getClass().getMethod("registerNewObjective", String.class, getNMSClass("IScoreboardCriteria"), chatbase, enums);
// Object obj = m.invoke(boards, objName, "JobsDummy", IScoreboardCriteria, serealized, e);
//
//
// Method mm = obj.getClass().getMethod("setDisplayName", String.class);
// mm.invoke(obj, ChatColor.translateAlternateColorCodes('&', displayName));
//
// Class<?> p1 = getNMSClass("PacketPlayOutScoreboardObjective");
// Constructor<?> p11 = p1.getConstructor(obj.getClass(), int.class);
// Object pp1 = p11.newInstance(obj, 1);
// sendPacket(player, pp1);
//
// Class<?> p2 = getNMSClass("PacketPlayOutScoreboardObjective");
// Constructor<?> p12 = p2.getConstructor(obj.getClass(), int.class);
// Object pp2 = p12.newInstance(obj, 0);
// sendPacket(player, pp2);
//
// Class<?> packetClass = getNMSClass("PacketPlayOutScoreboardDisplayObjective");
// Constructor<?> packetConstructor = packetClass.getConstructor(int.class, getNMSClass("ScoreboardObjective"));
// Object packet = packetConstructor.newInstance(1, obj);
// sendPacket(player, packet);
//
// for (int i = 0; i < 15; i++) {
// if (i >= lines.size())
// break;
//
// String ln = ChatColor.translateAlternateColorCodes('&', lines.get(i));
// Class<?> ScoreboardScoreClass = getNMSClass("ScoreboardScore");
// Constructor<?> packetConstructor2 = ScoreboardScoreClass.getConstructor(getNMSClass("Scoreboard"), getNMSClass("ScoreboardObjective"), String.class);
// Object packet2 = packetConstructor2.newInstance(boards, obj, ln);
// Method mc = packet2.getClass().getMethod("setScore", int.class);
// mc.invoke(packet2, 15 - i);
//
// Class<?> PacketPlayOutScoreboardScoreClass = getNMSClass("PacketPlayOutScoreboardScore");
// Constructor<?> PacketPlayOutScoreboardScoreConstructor = PacketPlayOutScoreboardScoreClass.getConstructor(getNMSClass("ScoreboardScore"));
// Object PacketPlayOutScoreboardScore = PacketPlayOutScoreboardScoreConstructor.newInstance(packet2);
//
// sendPacket(player, PacketPlayOutScoreboardScore);
//
// }
Method m = boards.getClass().getMethod("registerObjective", String.class, getNMSClass("IScoreboardCriteria"));
} else {
Class<?> IScoreboardCriterias = getNMSClass("ScoreboardBaseCriteria");
Constructor<?> IScoreboardCriteriasConst = IScoreboardCriterias.getConstructor(String.class);
Object IScoreboardCriteria = IScoreboardCriteriasConst.newInstance("JobsDummy");
Method m = boards.getClass().getMethod("registerObjective", String.class, getNMSClass("IScoreboardCriteria"));
Object obj = m.invoke(boards, objName, IScoreboardCriteria);
Class<?> IScoreboardCriterias = getNMSClass("ScoreboardBaseCriteria");
Constructor<?> IScoreboardCriteriasConst = IScoreboardCriterias.getConstructor(String.class);
Object IScoreboardCriteria = IScoreboardCriteriasConst.newInstance("JobsDummy");
Method mm = obj.getClass().getMethod("setDisplayName", String.class);
mm.invoke(obj, ChatColor.translateAlternateColorCodes('&', displayName));
Object obj = m.invoke(boards, objName, IScoreboardCriteria);
Class<?> p1 = getNMSClass("PacketPlayOutScoreboardObjective");
Constructor<?> p11 = p1.getConstructor(obj.getClass(), int.class);
Object pp1 = p11.newInstance(obj, 1);
sendPacket(player, pp1);
Method mm = obj.getClass().getMethod("setDisplayName", String.class);
mm.invoke(obj, ChatColor.translateAlternateColorCodes('&', displayName));
Class<?> p2 = getNMSClass("PacketPlayOutScoreboardObjective");
Constructor<?> p12 = p2.getConstructor(obj.getClass(), int.class);
Object pp2 = p12.newInstance(obj, 0);
sendPacket(player, pp2);
Class<?> p1 = getNMSClass("PacketPlayOutScoreboardObjective");
Constructor<?> p11 = p1.getConstructor(obj.getClass(), int.class);
Object pp1 = p11.newInstance(obj, 1);
sendPacket(player, pp1);
Class<?> packetClass = getNMSClass("PacketPlayOutScoreboardDisplayObjective");
Constructor<?> packetConstructor = packetClass.getConstructor(int.class, getNMSClass("ScoreboardObjective"));
Object packet = packetConstructor.newInstance(1, obj);
sendPacket(player, packet);
Class<?> p2 = getNMSClass("PacketPlayOutScoreboardObjective");
Constructor<?> p12 = p2.getConstructor(obj.getClass(), int.class);
Object pp2 = p12.newInstance(obj, 0);
sendPacket(player, pp2);
for (int i = 0; i < 15; i++) {
if (i >= lines.size())
break;
Class<?> packetClass = getNMSClass("PacketPlayOutScoreboardDisplayObjective");
Constructor<?> packetConstructor = packetClass.getConstructor(int.class, getNMSClass("ScoreboardObjective"));
Object packet = packetConstructor.newInstance(1, obj);
sendPacket(player, packet);
String ln = ChatColor.translateAlternateColorCodes('&', lines.get(i));
Class<?> ScoreboardScoreClass = getNMSClass("ScoreboardScore");
Constructor<?> packetConstructor2 = ScoreboardScoreClass.getConstructor(getNMSClass("Scoreboard"), getNMSClass("ScoreboardObjective"), String.class);
Object packet2 = packetConstructor2.newInstance(boards, obj, ln);
Method mc = packet2.getClass().getMethod("setScore", int.class);
mc.invoke(packet2, 15 - i);
for (int i = 0; i < 15; i++) {
if (i >= lines.size())
break;
Class<?> PacketPlayOutScoreboardScoreClass = getNMSClass("PacketPlayOutScoreboardScore");
Constructor<?> PacketPlayOutScoreboardScoreConstructor = PacketPlayOutScoreboardScoreClass.getConstructor(getNMSClass("ScoreboardScore"));
Object PacketPlayOutScoreboardScore = PacketPlayOutScoreboardScoreConstructor.newInstance(packet2);
String ln = ChatColor.translateAlternateColorCodes('&', lines.get(i));
Class<?> ScoreboardScoreClass = getNMSClass("ScoreboardScore");
Constructor<?> packetConstructor2 = ScoreboardScoreClass.getConstructor(getNMSClass("Scoreboard"), getNMSClass("ScoreboardObjective"), String.class);
Object packet2 = packetConstructor2.newInstance(boards, obj, ln);
Method mc = packet2.getClass().getMethod("setScore", int.class);
mc.invoke(packet2, 15 - i);
sendPacket(player, PacketPlayOutScoreboardScore);
Class<?> PacketPlayOutScoreboardScoreClass = getNMSClass("PacketPlayOutScoreboardScore");
Constructor<?> PacketPlayOutScoreboardScoreConstructor = PacketPlayOutScoreboardScoreClass.getConstructor(getNMSClass("ScoreboardScore"));
Object PacketPlayOutScoreboardScore = PacketPlayOutScoreboardScoreConstructor.newInstance(packet2);
sendPacket(player, PacketPlayOutScoreboardScore);
}
}
} catch (ClassNotFoundException | NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
e.printStackTrace();

View File

@ -22,7 +22,7 @@ public class VersionChecker {
version = getCurrent();
}
private Version version = Version.v1_11_R1;
private static Version version = Version.v1_11_R1;
public Version getVersion() {
return version;
@ -91,6 +91,10 @@ public class VersionChecker {
public boolean isEqualOrHigher(Version version) {
return getValue() >= version.getValue();
}
public static boolean isCurrentEqualOrHigher(Version v) {
return version.getValue() >= v.getValue();
}
}
public static Version getCurrent() {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,439 +1,600 @@
economy:
error:
nomoney: Nedostatek financi!
nomoney: '&cOmlouvame se, ale nemate dostatek financi, pro vykonani teto akce!'
limitedItem:
error:
levelup: '&cMusite ziskat dalsi level v praci [jobname] pro pouziti toho predmetu!'
levelup: '&cMusite ziskat vetsi level v praci [jobname] pro pouziti toho itemu!'
general:
Spawner: '&r[type] Spawner'
info:
toplineseparator: '&7*********************** &6%playername% &7***********************'
separator: '&7*******************************************************'
time:
days: '&e%days% &6dni '
hours: '&e%hours% &6hodin '
mins: '&e%mins% &6min '
secs: '&e%secs% &6sek '
invalidPage: '&cNeplatna stranka'
admin:
error: '&cDoslo k chybe v prikazu.'
success: '&eVas prikaz byl proveden.'
error: '&cPrikaz nebylo mozne dokoncit, nastala chyba!'
success: '&2Vas prikaz byl proveden.'
error:
notNumber: '&ePouzijte cisla!'
job: '&cPrace, kterou jste vybrali neexistuje!'
permission: '&cNemate dostatecna opravneni, na provedeni tohoto prikazu!'
noinfo: '&cNebyly nalezeny zadne informace!'
noinfoByPlayer: '&cNabyly nalezeny zadne informace o hraci [%playername%]!'
ingame: '&cTento prikaz lze pouzivat pouze ve hre!'
fromconsole: '&cTento prikaz lze pouzivat pouze z konzole serveru!'
worldisdisabled: '&cTento prikaz nelze pouzit v tomto svete!'
noHelpPage: '&cNebyla nelezena zadna stranka napovedy, odpovidajici tomuto cislu!'
notNumber: '&cProsim pouzijte cisla!'
job: '&cPrace, kterou jste si vybrali, nebyla nelezena!'
noCommand: '&cPrikaz, ktery jste zadali neexistuje!'
permission: '&cNemate dostatecna opravneni na provedeni teto akce!'
noinfo: '&cNebyly nelezeny zadne informace!'
noinfoByPlayer: '&cNabyly nalezeny zadne informace o hraci jmenem [%playername%]!'
ingame: '&cTento prikaz lze vykokonat pouze jako hrac!'
fromconsole: '&cTento prikaz lze spustit pouze z konzole!'
worldisdisabled: '&cTento prikaz nelze pouzit v aktualnim svete!'
newFurnaceRegistration: '&eRegistrovano nove vlastnictvi pece &7[current]&e/&f[max]'
newBrewingRegistration: '&eRegistrovano nove vlastnictvi Brewing standu &7[current]&e/&f[max]'
noFurnaceRegistration: '&cPrekrocili jste limit maximalniho poctu registraci pro Furnace!'
noBrewingRegistration: '&cPrekrocili jste limit maximalniho poctu registraci pro Brewing Stand!'
command:
help:
output:
info: Typ /jobs [cmd] ? pro vice informaci informaci o prikazech.
cmdUsage: '&2Pouziti: &7[command]'
label: jobs
cmdInfoFormat: '[command] &f- &2[description]'
cmdFormat: '&7/[command]&f[arguments]'
helpPageDescription: '&2* [description]'
title: '&e-------&e ======= &6Prace &e======= &e-------'
page: '&e-----&e ====== Stranka &6[1] &ez &6[2] &e====== &e-----'
fliperSimbols: '&e----------'
prevPage: '&2----<< &6Predchozi stranka '
prevPageOff: '&7----<< Predchozi stranka '
nextPage: '&6 Dalsi stranka &2>>----'
nextPageOff: '&7 Dalsi stranka >>----'
pageCount: '&2[current]/[total]'
moneyboost:
help:
info: Zvysuje zisk penez pro vsechny hrace
info: Zvysuje penezni zisk pro vsechny hrace
args: '[jobname] [rate]'
output:
allreset: Vsechny zvysene zisky na prace budou vypnuty
jobsboostreset: Money boost for %jobname% was turned off
nothingtoreset: Nothing to reset
boostalladded: Money boost of %boost% added for all jobs!
boostadded: Money boost of &e%boost% &aadded for &e%jobname%!
infostats: '&c-----> &aMoney rate x%boost% enabled&c <-------'
allreset: Vsechny boosty na penize byly resetovany
jobsboostreset: Penezni boost pro %jobname% byl deaktivovan
nothingtoreset: Nic, co by bylo mozne resetovat
boostalladded: Penezni boost %boost% byl pridan na vsechny dostupne prace!
boostadded: Penezni boost &e%boost% &abyl pridan na praci &e%jobname%!
infostats: '&c-----> &aPenezni boost x%boost% aktivovan&c <-------'
pointboost:
help:
info: Boosts points gain for all players
info: Zvysuje bodovy zisk pro vsechny hrace
args: '[jobname] [rate]'
output:
allreset: Vsechny body boost vypnout
jobsboostreset: Points boost for %jobname% was turned off
nothingtoreset: Nothing to reset
boostalladded: Points boost of %boost% added for all jobs!
boostadded: Points boost of &e%boost% &aadded for &e%jobname%!
infostats: '&c-----> &aPoints rate x%boost% enabled&c <-------'
allreset: Vsechny boosty na body byly resetovany
jobsboostreset: Bodovy boost pro %jobname% byl deaktivovan
nothingtoreset: Nic, co by bylo mozne resetovat
boostalladded: Bodovy boost %boost% byl pridan na vsechny dostupne prace!
boostadded: Bodovy boost &e%boost% &abyl pridan na praci &e%jobname%!
infostats: '&c-----> &aBodovy boost x%boost% aktivovan&c <-------'
expboost:
help:
info: Boosts Exp gain for all players
info: Zvysuje exp zisk pro vsechny hrace
args: '[jobname] [rate]'
output:
allreset: All exp boost turned off
jobsboostreset: Exp boost for %jobname% was turned off
nothingtoreset: Nothing to reset
boostalladded: Exp boost of %boost% added for all jobs!
boostadded: Exp boost of &e%boost% &aadded for &e%jobname%!
infostats: '&c-----> &aZvyseni xp x%boost% povoleno&c <-------'
allreset: Vsechny boosty na exp byly resetovany
jobsboostreset: Exp boost pro %jobname% byl deaktivovan
nothingtoreset: Nic, co by bylo mozne resetovat
boostalladded: Exp boost %boost% byl pridan na vsechny dostupne prace!
boostadded: Exp boost &e%boost% &abyl pridan na praci &e%jobname%!
infostats: '&c-----> &aExp boost x%boost% aktivovan&c <-------'
itembonus:
help:
info: Zkontrolujte bonusove itemy
args: ''
output:
list: '&e[jobname]: %money% %points% %exp%'
edititembonus:
help:
info: Upravit bonus zvysujici itemy
args: '[list/add/remove] [jobsName] [itemBoostName]'
bonus:
help:
info: Show job bonuses
info: Zobrazte bonusy pro praci
args: '[jobname]'
output:
topline: '&7**************** &2[money] &6[points] &e[exp] &7****************'
permission: ' &ePermission bonus: %money% %points% %exp%'
permission: ' &eBonus z opravneni: %money% %points% %exp%'
item: ' &eItem bonus: %money% %points% %exp%'
global: ' &eGlobal bonus: %money% %points% %exp%'
dynamic: ' &eDynamicky platebni bonus: %money% %points% %exp%'
global: ' &eGlobalni bonus: %money% %points% %exp%'
dynamic: ' &eDynamicky bonus: %money% %points% %exp%'
nearspawner: ' &eSpawner bonus: %money% %points% %exp%'
petpay: ' &ePetPay bonus: %money% %points% %exp%'
area: ' &eOblast bonus: %money% %points% %exp%'
final: ' &eFinalni bonus: %money% %points% %exp%'
mcmmo: ' &eMcMMO bonus: %money% %points% %exp%'
final: ' &eCelkovy bonus: %money% %points% %exp%'
finalExplanation: ' &eNezahrnuje bonus Petpay a Blizky spawner bonus'
convert:
help:
info: Prevede data z jednoho zpusobu databaze na jiny. Pokud prave pouzivate SQLite, bude preveden na MySQL a naopak.
args: ''
limit:
help:
info: Vypise limit vydelku praci.
info: Zobrazi limity penez
args: ''
output:
lefttime: '&eZbyvajici cas do resetovani limitu vydelku: &2%hour% &ehodin &2%min%
&eminut &2%sec% &esekund'
moneylimit: '&eLimit vydelku: &2%money%&e/&2%totalmoney%'
leftexptime: '&eZbyvajici cas do resetovani limitu xp: &2%hour% &ehodin &2%min% &eminut
&2%sec% &esekund'
explimit: '&eLimit xp: &2%exp%&e/&2%totalexp%'
leftpointtime: '&eZbyvajici cas do resetovani limitu bodu &2%hour% &ehodin &2%min%
&eminut &2%sec% &esekund'
pointlimit: '&eBodovy limit: &2%current%&e/&2%total%'
reachedlimit: '&4Dosahl/a jsi limitu vydelku v danem case!'
reachedlimit2: '&eLimit zjistis prikazem &2/jobs limit'
reachedExplimit: '&4Dostahli jste limitu xp v danem casu!'
reachedExplimit2: '&eMuzete zkontrolovat svuj limit pomoci prikazu &2/jobs limit'
reachedPointlimit: '&4Dostahli jste limitu exp v danem case!'
reachedPointlimit2: '&eMuzete zkontrolovat svuj limit pomoci prikazu &2/jobs limit'
notenabled: '&eLimit vydelku neni zapnuty.'
help:
moneytime: '&eZbyvajici cas dokud se neobnovi limit penez: &2%time%'
moneyLimit: '&eLimit penez: &2%current%&e/&2%total%'
exptime: '&eZbyvajici cas dokud: &2%time%'
expLimit: '&eExp limit: &2%current%&e/&2%total%'
pointstime: '&eZbyvajici cas dokud se neobnovi limit bodů: &2%time%'
pointsLimit: '&eLimit bodů: &2%current%&e/&2%total%'
reachedmoneylimit: '&4Dosahli jste limitu penez!'
reachedmoneylimit2: '&eLimit můzete zkontrolovat pomoci &2/jobs limit &eprikazu'
reachedexplimit: '&4Dosahli jste limitu exp!'
reachedexplimit2: '&eLimit můzete zkontrolovat pomoci &2/jobs limit &eprikazu'
reachedpointslimit: '&4Dosahli jste limitu bodů!'
reachedpointslimit2: '&eLimit můzete zkontrolovat pomoci &2/jobs limit &eprikazu'
notenabled: '&ePenezni limit neni aktivni'
resetlimit:
help:
info: Resetovat limit hrace
args: '[playername]'
output:
info: Napis /jobs nebo /prace [prikaz] ? pro vice informaci.
usage: 'Pouziti: %usage%'
title: '&e-------&e ======= &6Prace &e======= &e-------'
page: '&e-----&e ====== Strana &6[1] &ez &6[2] &e====== &e-----'
prev: '&e--- <<<<< &6Predchozi strana &e|'
next: '&e|&6 Dalsi strana &e>>>> ---'
reseted: '&eResetovali jste limit penez hraci: &2%playername%'
points:
help:
info: Shows how much points player have.
info: Zobrazi kolik ma hrac bodů.
args: '[playername]'
currentpoints: ' &eAktualni vlastnite: &6%currentpoints% &ebodu'
totalpoints: ' &eCelkove mnozstvi nasbiranych bodu az doposud: &6%totalpoints%'
currentpoints: ' &eAktualni pocet bodů hrace je: &6%currentpoints%'
totalpoints: ' &eCelkove hrac nazbyral uz: &6%totalpoints%'
editpoints:
help:
info: Edit players points.
info: Upravit body hrace.
args: '[set/add/take] [playername] [amount]'
output:
set: '&eHrac(&6%playername%&e) body byly stanooveny na castku &6%amount%'
add: '&eHrac (&6%playername%&e) ziskal dodatecne &6%amount% &ebodu. Aktualne ma
set: '&eHracovy (&6%playername%&e) body nastaveny na &6%amount%'
add: '&eHrac (&6%playername%&e) ziskal(a) &6%amount% &epoints. Nyni ma
&6%total%'
take: '&eHrac (&6%playername%&e) ztratil &6%amount% &ebudu. Aktualne ma &6%total%'
take: '&eHrac (&6%playername%&e) priesel o &6%amount% &ebodů. Nyni ma &6%total%'
editjobs:
help:
info: Upravit praci.
args: ''
list:
job: '&ePrace:'
jobs: ' -> [&e%jobname%&r]'
actions: ' -> [&e%actionname%&r]'
material: ' -> [&e%materialname%&r] '
materialRemove: '&c[X]'
materialAdd: ' -> &e[&2+&e]'
money: ' -> &ePenez: &6%amount%'
exp: ' -> &eExp: &6%amount%'
points: ' -> &eBodů: &6%amount%'
modify:
newValue: '&eZadejte novou hodnotu'
enter: '&eZadejte novy nazev nebo stisknete '
hand: '&6MUSiTE DRzET V RUCE '
handHover: '&6Pouzijte pro ziskani informaci z itemu v ruce'
or: '&enebo '
look: '&6MUSiTE KOUKAT'
lookHover: '&6Pouzijte pro ziskani informaci z bloku, ktery hledate'
blockinfo:
help:
info: Zobrazuje informace o bloku, na ktery se divate.
args: ''
output:
name: ' &eJmeno bloku: &6%blockname%'
id: ' &eID bloku: &6%blockid%'
data: ' &eData bloku: &6%blockdata%'
usage: ' &ePouziti: &6%first% &enebo &6%second%'
iteminfo:
help:
info: Zobrazuje inforamce o itemu, ktery drzite v ruce.
args: ''
output:
name: ' &eJmeno itemu: &6%itemname%'
id: ' &eID itemu: &6%itemid%'
data: ' &eData itemu: &6%itemdata%'
usage: ' &ePouziti: &6%first% &enebo &6%second%'
entitylist:
help:
info: Ukaze, vsechny mozne entity mohou byt pouzity s pluginem.
args: ''
stats:
help:
info: Vypise level v pracech, ve kterych jsi zamestnany(a).
args: '[JmenoHrace]'
info: Zobraza úroveň, kterou mate v kazde praci, ktere jste soucasti.
args: '[playername]'
error:
nojob: Nejdrive se prihlas do nejake prace.
output: 'lvl%joblevel% %jobname% : %jobxp%/%jobmaxxp% xp'
nojob: Nejprve se musite zamestnat (/jobs join)
output: ' lvl%joblevel% %jobname% : %jobxp%/%jobmaxxp% xp'
shop:
help:
info: Opens special jobs shop.
info: Otevre specialni shop.
args: ''
info:
title: '&e------- &8Prace obchod &e-------'
title: '&e------- &8Obchod praci &e-------'
currentPoints: '&eMate: &6%currentpoints%'
price: '&eCena: &6%price%'
reqJobs: '&ePozadovana prace:'
reqJobs: '&ePozadovane prace:'
reqJobsList: ' &6%jobsname%&e: &e%level% lvl'
NoPermForItem: '&cNemate potrebna opravneni pro tuto polozku!'
NoPermToBuy: '&cNemate dostatecna opravneni ke koupi tohoto predmetu'
NoJobReqForitem: '&cNemate pozadovanoi level prace (&6%jobname%&e) pozadovano
(&6%joblevel%&e) level'
NoPoints: '&cNemate dostatecny pocet bodu'
Paid: '&eZaplatili jste &6%amount% &eza tuto polozku'
reqTotalLevel: '&6Pozadovana celkova úroveň: &e%totalLevel%'
cantOpen: '&cNelze otevrit tuto stranku'
NoPermForItem: '&cNemate dostatecne opravneni pro tento item!'
NoPermToBuy: '&cNemate dostatecna opravneni pro zakoupeni tohoto itemu'
NoJobReqForitem: '&cNemate pozadovanou praci (&6%jobname%&e) nebo pozadovanou úroveň
(&6%joblevel%&e)'
NoPoints: '&cNemate dostatek bodů'
NoTotalLevel: '&cVase celkova úroveň praci je prilis nizka (%totalLevel%)'
Paid: '&eZaplatili jste &6%amount% &eza item'
archive:
help:
info: Vypise vsechny prace ulozene v archivu podle uzivatele.
args: '[JmenoHrace]'
info: Zobrazuje vsechny prace ulozene v archivu hrace.
args: '[playername]'
error:
nojob: Nejsou zadne ulozene prace.
output: lvl %joblevel% (%getbackjoblevel%) %jobname%
nojob: zadne prace nejsou ulozeny.
give:
help:
info: Da item podle nazvu prace a nazvu kategorie. Jmeno Hrace neni povinny udaj.
args: '[JmenoHrace] [JmenoPrace] [JmenoItemu]'
info: Givne hraci item podle nazvu prace a nazvu kategorie itemu. Nazev hrace je nepovinny
args: '[playername] [jobname] [itemname]'
output:
notonline: '&4Hrac [%playername%] neni online!'
noitem: '&4Nelze najit item s timto jmenem!'
notonline: '&4Hrac [%playername%] neni pripojen!'
noitem: '&4Nepodarilo se vyhledat zadny item s timto jmenem!'
info:
help:
title: '&2*** &ePrace&2 ***'
info: Vypise vysi vydelku prace k dane akci.
penalty: '&eTato prace ma &c[penalty]% &epenale z duvodu velkeho poctu zamestanich hracu.'
bonus: '&eTato prace ma &2[bonus]% &eprotoze neni zamestano dostatek hracu.'
args: '[JmenoPrace] [akce]'
actions: '&ePlatne akce jsou: &f%actions%'
max: ' - &emaximalni level:&f '
info: Ukaze, kolik je v kazdem zamestnani vyplaceno a za co.
penalty: '&eTato prace ma &c[penalty]% &epenale protoze je v ni zamestnano prilis mnoho hraců.'
bonus: '&eTato prace obsahuje &2[bonus]% &ebonus protoze je v ni zamestnano prilis malo hraců.'
args: '[jobname] [action]'
actions: '&ePlatne akce: &f%actions%'
max: ' - &emax level:&f '
newMax: ' &eMax level: &f[max]'
material: '&7%material%'
levelRange: ' &a(&e%levelFrom% &a- &e%levelUntil% &alevelu)'
levelFrom: ' &a(od &e%levelFrom% &alevelu)'
levelUntil: ' &a(az do &e%levelUntil% &alevelu)'
levelRange: ' &a(&e%levelFrom% &a- &e%levelUntil% &alevels)'
levelFrom: ' &a(od &e%levelFrom% &alevel)'
levelUntil: ' &a(az do &e%levelUntil% &alevel)'
money: ' &2%money%$'
points: ' &6%points%pts'
exp: ' &e%exp%xp'
gui:
pickjob: '&eVyber jsi praci!'
jobinfo: '&e[jobname] info!'
actions: '&eNeplatna akce, seznam akci:'
leftClick: '&eLeve tlacitko mysi pro vice info'
rightClick: '&eKliknete pravym tlacitkem mysi spojit praci'
leftClick: '&eLevym tlacitkem zobrazite vice info'
rightClick: '&ePravym tlacitkem se pripojite do prace'
leftSlots: '&eLeve sloty:&f '
working: '&2&nAktualne jsi zamestat v teto praci'
max: '&eMaximalni level:&f '
working: '&2&nAktualne jste jiz zamestnani v teto praci'
max: '&eMax level:&f '
back: '&e<<< Zpet'
output:
break:
info: Breaknuti
none: '%jobname% vydelava penize za breaknuti bloku.'
info: Niceni bloků
none: '%jobname% nedostava penize z niceni bloků.'
tntbreak:
info: TNTBreak
none: '%jobname% nedostava penize za niceni bloku pomoci tnt.'
info: Niceni pomoci TNT
none: '%jobname% nedostava penize z niceni bloků za pomoci TNT.'
place:
info: Polozeni
none: '%jobname% vydelava penize za polozeni bloku.'
info: Pokladani bloků
none: '%jobname% nedostava penize z pokladani bloků.'
kill:
info: Zabijeni
none: '%jobname% vydelava penize za zabijeni monster.'
info: Zabijeni priser
none: '%jobname% nedostava penize ze zabijeni priser a zvirat.'
mmkill:
info: MMKill
none: '%jobname% nedostane penize za zabiti mysticke prisery (pouze s pluginem MythicMobs).'
none: '%jobname% nedostava penize ze zabijeni Mystickych priser.'
fish:
info: Rybareni
none: '%jobname% vydelava penize za rybareni.'
none: '%jobname% nedostava penize z rybareni.'
craft:
info: Craft
none: '%jobname% vydelava penize za crafteni veci.'
info: Vyroba
none: '%jobname% nedostava penize z vyroby nastrojů a ostatnich itemů.'
smelt:
info: Peceni
none: '%jobname% vydelava penize za peceni v peci.'
info: Pouziti pece
none: '%jobname% nedostava penize z pouziti pece.'
brew:
info: Vareni
none: '%jobname% vydelava penize za vareni lektvaru.'
info: Alchymie
none: '%jobname% nedostava penize z alchymie (vyroba lektvarů).'
eat:
info: Eat
none: '%jobname% nedostava penize za jezeni.'
info: Jezeni
none: '%jobname% nedostava penize z jezeni jidla.'
dye:
info: Dye
none: '%jobname% nedostava penize za umrti.'
info: Barveni
none: '%jobname% nedostava penize z barveni.'
enchant:
info: Ocarovani
none: '%jobname% vydelava penize za ocarovavin/enchant itemu.'
info: Ocarovavani nastrojů
none: '%jobname% nedostava penize z ocarovavani nastrojů a brneni.'
repair:
info: Opravovani
none: '%jobname% vydelava penize za opravovani predmetu.'
none: '%jobname% nedostava penize z opravy itemů.'
breed:
info: Farmareni
none: '%jobname% vydelava penize za farmareni.'
info: Pestovani
none: '%jobname% nedostava penize z pestovani.'
tame:
info: Ochocovani
none: '%jobname% vydelava penize za ochocovani zvirat.'
info: Obchocovani
none: '%jobname% nedostava penize z ochocovani zvirat.'
milk:
info: Milk
info: Dojeni krav
none: '%jobname% nedostava penize z dojeni krav.'
shear:
info: Shear
info: Strihani ovci
none: '%jobname% nedostava penize ze strihani ovci.'
explore:
info: Explore
none: '%jobname% nedostava penize z prozkoumovani.'
info: Průzkum mapy
none: '%jobname% nedostava penize z průzkumu mapy.'
custom-kill:
info: Custom kill
none: '%jobname% nedostava penize z vlastniho zabijeni hracu.'
info: Vlastni zabijeni
none: '%jobname% nedostava z vlastniho zabijeni hraců.'
playerinfo:
help:
info: Vypise vysi vydelku prace k dane akci urciteho hrace.
args: '[JmenoHrace] [JmenoPrace] [akce]'
info: Zobrazi vysi vydelku prace k dane akci urciteho hrace.
args: '[playername] [jobname] [action]'
join:
help:
info: Zamestnas se do prace.
args: '[JmenoPrace]'
info: Zamestnat se do prace.
args: '[jobname]'
error:
alreadyin: Uz pracujes jako %jobname%.
fullslots: Nemuzes se zamestnat do prace %jobname%, nejsou zde zadna volna mista.
maxjobs: Dosahl/a jsi maxima povolenych praci.
success: Zamestnal/a ses jako %jobname%.
alreadyin: Jiz jste zamestnani jako %jobname%.
fullslots: Nelze se zamestnat do prace %jobname%, nejsou zde zadna volna mista.
maxjobs: Nemůzete se zamestnat do prace, prekrocili jste stanoveny limit.
rejoin: '&cOpetovne pripojeni do vybrane prace bude mozne az za [time]'
success: Gratulujeme, zamestnali jste se jako %jobname%.
confirm: '&2Kliknete pro potvrzeni akce pro &7[jobname] &2praci.'
leave:
help:
info: Opustis danou praci.
args: '[JmenoPrace]'
success: Opustil/a jsi praci %jobname%.
info: Opustit vybranou praci..
args: '[oldplayerjob]'
success: Opustili jste praci %jobname%.
leaveall:
help:
info: Opustis vsechny svoje prace
info: Opustit vsechny prace.
error:
nojobs: Nemas zadne prace, ktere by jsi mohl/a opustit.
success: Opustil/a jsi vsechny sve prace.
nojobs: Nemate zadne prace, ktere je mozne opustit!
success: Opustlili jste vsechny vase prace.
explored:
help:
info: Zkontrolovat, kdo navstivil tento chunk
error:
noexplore: Nikdo navstivil tento chunk
list: '&e%place%. %playername%'
browse:
help:
info: Seznam dostupnych praci
info: Vypise seznam dostupnych praci.
error:
nojobs: Nejsou zadne prace, ve kterych by jsi mohl/a byt zamestnan/a.
nojobs: Neexistuji zadne prace, do kterych se můzete pripojit.
output:
header: 'Mas povoleni na zamestnani v techto pracech:'
footer: Pro vice info napis /jobs info [JmenoPrace]
totalWorkers: ' &7Prave je zamestano: &e[amount]'
penalty: ' &4Penalty: &c[amount]%'
header: 'Mate opravneni zamestnat se do techto praci:'
footer: Pro vice informaci pouzijte /jobs info [JobName]
totalWorkers: ' &7V teto praci je zamestano: &e[amount] &7hraců'
penalty: ' &4Trest: &c[amount]%'
bonus: ' &2Bonus: &a[amount]%'
newHeader: '&2========== [amount] Dostupne prace ========='
list: ' &8[place]. &7[jobname]'
click: '&bKlepnutim na praci ziskate ziskate vice informaci!'
detailed: '&bKliknutim zobrazite vice informaci o akcich praci'
jobHeader: '&2========== [jobname] ========='
chooseJob: '&7&n&oVybrat tuto praci'
chooseJobHover: '&7Kliknete pro pripojeni do teto prace'
clearownership:
help:
info: Smazat vlastnictvi bloků
args: (playername)
output:
cleared: '&2Smazali jste &7[furnaces] &2peci a &7[brewing] &2brewing standů'
quests:
help:
info: List dostupnych úkolů
args: (playername)
error:
noquests: '&cNeexistuji zadne dostupne úkoly'
toplineseparator: '&7*********************** &6[playerName]&2(&f[questsDone]&2)
&7***********************'
output:
completed: '&2 !Dokonceno!&r '
questLine: '[progress] &7[questName] &f[done]&7/&8[required]'
hover:
- '&f[jobName]'
- '[desc]'
- '&7Dalsi úkol za: [time]'
fire:
help:
info: Vykopne hrace z dane prace.
args: '[JmenoHrace] [JmenoPrace]'
info: Vyhodit hrace z prace.
args: '[playername] [jobname]'
error:
nojob: Hrac neni zamestnan jako %jobname%.
nojob: Hrac neni zamestnat jako %jobname%.
output:
target: Byl/a jsi vyhozen/a z prace %jobname%.
target: Byli jste vyhozeni z prace %jobname%.
fireall:
help:
info: Vykopne hrace ze vsech praci.
args: '[JmenoHrace]'
info: Vyhodit hrace ze vsech praci.
args: '[playername]'
error:
nojobs: Hrac nema zadne prace, ze kterych by mohl byt vykopnut.
nojobs: Hrac neni zamestnan v zadne praci!
output:
target: Byl/a jsi vykopnut/a ze vsech praci.
target: Byli jste vyhozeni ze vsech praci.
employ:
help:
info: Zamestna hrace do prace.
args: '[JmenoHrace] [JmenoPrace]'
info: Zamestnat hrace do prace.
args: '[playername] [jobname]'
error:
alreadyin: Hrac uz pracuje jako %jobname%.
alreadyin: Hrac je jiz zamestnan jako %jobname%.
output:
target: Byl/a jsi zamestnan/a jako %jobname%.
target: Byli jste zamestnani jako %jobname%.
top:
help:
info: '&eZobrazi &aTop 10 &ehracu dle praci.'
args: '[JmenoPrace]'
info: Zobrazit top 15 hraců podle vybrane prace.
args: '[jobname]'
error:
nojob: Nelze najit zadnou praci s timto jmenem.
nojob: Nepodarilo se vyhledat praci s timto nazvem.
output:
topline: '&aTop&e 10 &ehracu pro praci &6%jobname%'
list: '&e%number%&a. &e%playername% &alvl &e%level% &as&e %exp% &aexp'
prev: '&e<<<<< Predchozi strana &2|'
next: '&2|&e Dalsi strana >>>>'
show: '&2Zobrazit z &e[from] &2az do &e[until] &2top listu'
topline: '&aTop&e 15 &ahraců pro praci &e%jobname%'
list: '&e%number%&a. &e%playername% &alvl &e%level% &awith&e %exp% &aexp'
prev: '&e<<<<< Predchozi stranka &2|'
next: '&2|&e Dalsi stranka >>>>'
show: '&2Zobrazit od &e[from] &2az po &e[until] &2top listu'
gtop:
help:
info: Zobrazit top 15 hracu globalni urovne praci.
info: Zobrazit globalnich top 15 hraců.
args: ''
error:
nojob:Nelze vyhledat zadne informace.
nojob: Nedopodarilo se vyhledat dostatecne informace.
output:
topline: '&aTop&e 15 &ahracu globalni urovne'
list: '&e%number%&a. &e%playername% &alvl &e%level% &as&e %exp% &aexp'
prev: '&e<<<<< Predchozi strana &2|'
next: '&2|&e Dalsi strana >>>>'
show: '&2Zobrazit z &e[from] &2az do &e[until] &2globalniho top listu'
topline: '&aTop&e 15 &ahraců podle globalniho top levelu'
list: '&e%number%&a. &e%playername% &alvl &e%level% &awith&e %exp% &aexp'
prev: '&e<<<<< Predchozi stranka &2|'
next: '&2|&e Dalsi stranka >>>>'
show: '&2Zobrazit &e[from] &2az po &e[until] &2globalni top list'
area:
help:
info: Upravit vyhrazene oblasti.
args: add/remove/info/list
addUsage: '&ePouziti: &6/Jobs area add [areaName/wg:worldGuardAreaName] [bonus]'
removeUsage: '&ePouziti: &6/Jobs area remove [areaName]'
output:
addedNew: '&ePridana nova vyhrazene oblast s bonusem &6%bonus%'
removed: '&eOdestranena vyhrazena oblast s nazvem &6%name%'
list: '&e%number%&a. &e%areaname% &e%worldname% (&a%x1%:%y1%:%z1%/&e%x2%:%y2%:%z2%)
&6%bonus%'
wgList: '&e%number%&a. WorldGuard: &e%areaname% &6%bonus%'
noAreas: '&eNeexistuji zadne ulozene vyhrazene oblasti'
noAreasByLoc: '&eThere is no restricted areas in this location'
areaList: '&eVyhrazene oblastni podle vasi polohy: &6%list%'
selected1: '&eVybran prvni bod: &6%x%:%y%:%z%'
selected2: '&eVybran druhy bod: &6%x%:%y%:%z%'
select: '&eVyberte 2 body pomoci (%tool%)'
exist: '&eVyhrazena oblast s timto nazvem jiz existuje'
dontExist: '&eVyhrazena oblast s timto nazvem neexistuje'
wgDontExist: '&eWorldGuard region s timto nazvem neexistuje'
log:
help:
info: Shows statistics.
info: Zobrazit statistiky.
args: '[playername]'
output:
topline: '&7************************* &6%playername% &7*************************'
list: '&7* &6%number%. &3%action%: &6%item% &emnozsti: %qty% &6penez: %money% &eexpu:
%exp%'
ls: '&7* &6%number%. &3%action%: &6%item% &eqty: %qty% %money%%exp%%points%'
money: '&6Stav konta: %amount% '
exp: '&eExp: %amount% '
points: '&6Bodů: %amount%'
bottomline: '&7***********************************************************'
prev: '&e<<<<< Predchozi strana &2|'
next: '&2|&e Dalsi strana >>>>'
prev: '&e<<<<< Predchozi stranka &2|'
next: '&2|&e Dalsi stranka >>>>'
nodata: '&cData nebyla nalezena'
glog:
help:
info: Shows global statistics.
info: Zobrazit globalni statistiky.
args: ''
output:
topline: '&7*********************** &6Global statistiky &7***********************'
list: '&7* &6%number%. &3%username% &e%action%: &6%item% &mnozstvi: %qty% &6penez:
%money% &eexp: %expu%'
ls: '&7* &6%number%. &3%action%: &6%item% &eqty: %qty% %money%%exp%%points%'
money: '&6Stav konta: %amount% '
exp: '&eExp: %amount% '
points: '&6Bodů: %amount%'
bottomline: '&7**************************************************************'
nodata: '&cData nebyla nalezena'
transfer:
help:
info: Prevede danou praci hrace ze stare prace do nove.
args: '[JmenoHrace] [StaraPrace] [NovaPrace]'
info: Preneste data hrace ze stare prace na novou praci.
args: '[playername] [oldjob] [newjob]'
output:
target: Byl/a jsi presunut/a z prace %oldjobname% do %newjobname%.
target: Byl(a) jste preveden(a) z %oldjobname% na %newjobname%.
promote:
help:
info: Prida hraci levely do dane prace.
args: '[JmenoHrace] [JmenoPrace] [levely]'
info: Propagujte úrovne X hrace v praci.
args: '[playername] [jobname] [levels]'
output:
target: Bylo ti pridano %levelsgained% levelu v praci %jobname%.
target: Byl jste povyseni o %levelsgained% levelů v praci %jobname%.
exp:
help:
info: Navyste exp. Hraci pro praci.
args: '[playername] [jobname] [set/add/take] [amount]'
output:
target: '&eVas exp level byl zmenen v praci %jobname% &enyni mate &6%level%lvl
&es &6%exp%exp.'
demote:
help:
info: Odebere hraci levely z dane prace.
args: '[JmenoHrace] [JmenoPrace] [levely]'
info: Snizte exp. Hraci v praci.
args: '[playername] [jobname] [levels]'
output:
target: Bylo ti odebrano %levelslost% levelu v praci %jobname%.
target: Vas exp lebel zmenen v praci %levelslost% nyni mate %jobname%lvl.
grantxp:
help:
info: Prida hraci zkusenosti do dane prace.
args: '[JmenoHrace] [JmenoPrace] [xp]'
info: Udelte zkusenosti hraci v praci.
args: '[playername] [jobname] [xp]'
output:
target: Dostal/a jsi %xpgained% zkusenosti v praci %jobname%.
target: Bylo vam udeleno %xpgained% zkusenosti v praci %jobname%.
removexp:
help:
info: Odstrani hraci zkusenosti z dane prace.
args: '[JmenoHrace] [JmenoPrace] [xp]'
info: Odeberte hraci zkusenosti v praci.
args: '[playername] [jobname] [xp]'
output:
target: Ztratil/a jsi %xplost% zkusenosti v praci %jobname%.
target: Bylo vam odebrano %xplost% zkusenosti v praci %jobname%.
signupdate:
help:
info: Manualy updates sign by its name
info: Manualni aktulizace cedulek
args: '[jobname]'
reload:
bp:
help:
info: Reloadne konfiguraci.
toggle:
help:
info: Zapina/Vypina vypis vydelku na panelu akci.
info: Zobrazi ochranu kolem vas v 10 polomeru bloků
args: ''
output:
turnedoff: '&4This feature are turned off!'
found: '&eNalezeno &6%amount% &eokolo vas'
notFound: '&eV okoli nejsou zadne chranene bloky'
reload:
help:
info: Znovu nacte konfiguraci pluginu.
toggle:
help:
info: Vypne/Zapne ukazovani akci v actionbaru a bossbaru.
args: '[actionbar/bossbar]'
output:
turnedoff: '&4Tato funkce je jiz vypnuta!'
paid:
main: '&aMate:'
main: '&aZiskal(a) jsi:'
money: '&e[amount] penez'
exp: '&7[exp] exp'
points: '&6[points] bodu'
'on': '&aVypis: &aZAPNUTO'
'off': '&aVypis: &cVYPNUTO'
points: '&6[points] bodů'
'on': '&aPrepnuto na: &aZAP'
'off': '&aPrepnuto na: &4VYP'
message:
skillup:
broadcast: '%playername% byl/a povysen/a na %titlename% %jobname%.'
nobroadcast: Gratulujeme, byl/a jsi povysen/a na %titlename% %jobname%.
broadcast: '%playername% byl povysen na %titlename% %jobname%.'
nobroadcast: Gratulujeme, byli jste povyseni na %titlename% %jobname%.
levelup:
broadcast: '%playername% dosahl/a levelu %joblevel% v praci %jobname%.'
nobroadcast: Dosahl/a jsi levelu %joblevel% v praci %jobname%.
cowtimer: '&eMusite pockat &6%time% &esekund pro zyskani vyplaty za tuto praci.'
blocktimer: '&eBudete muset pockat: &3[time] &esekund pro ziskani vyplaty!'
placeblocktimer: '&eNemuzete pokladat bloky tak rychle pockejte &6[time] &esekund pred polozenim!'
taxes: '&3[amount] &edane pro server byly prevedeny na tento ucet'
boostStarted: '&eProcovni boost byly aktivovany!'
boostStoped: '&ePracovani boost byl deaktivovan!'
broadcast: '%playername% ma nyni %joblevel% úroven v praci %jobname%.'
nobroadcast: Nyni mate %joblevel% úroven v praci %jobname%.
cowtimer: '&eMusite pockat &6%time% &epro ziskani dalsi finacni odmeny v praci.'
blocktimer: '&eMusite pockat: &3[time] &epro ziskani dalsi financni odmeny!'
placeblocktimer: '&eBloky nelze umistit rychleji nez &6[time] &esec intervalu na stejne misto!'
taxes: '&3[amount] &eserverove dane byly prevedeny na tento úcet'
boostStarted: '&eBoost praci byl zapnut!'
boostStoped: '&eBoost praci byl vypnut!'
crafting:
fullinventory: Mas plny inventar!
fullinventory: Vas inventar je plny!
signs:
List: '&0[number].&8[player]&7:&4[level]'
SpecialList:
'1':
'1': '&b** &8Prvni&b**'
'2': '&9[player]'
'3': '&8[level] level'
'4': '&b************'
'2':
'1': '&b** &8Druhy &b**'
'2': '&9[player]'
'3': '&8[level] level'
'4': '&b************'
'3':
'1': '&b** &8Treti &b**'
'2': '&9[player]'
'3': '&8[level] level'
'4': '&b************'
cantcreate: '&4Nemuzes vytvorit tuto cedulku!'
cantdestroy: '&4You can''t destroy this sign!'
topline: '&e[Prace]'
p1: '&b** &8Prvni &b**'
p2: '&b** &8Druhy &b**'
p3: '&b** &8Treti &b**'
p4: '&b** &8ctvrty &b**'
p5: '&b** &8Paty &b**'
p6: '&b** &8sesty &b**'
p7: '&b** &8Sedmy &b**'
p8: '&b** &8Osmy &b**'
p9: '&b** &8Devaty &b**'
p10: '&b** &8Desaty &b**'
name: '&9[player]'
level: '&8[level] level'
bottom: '&b************'
cantcreate: '&4Nemate opravneni k vytvoreni teto cedulky!'
cantdestroy: '&4Nemůze znicit tuto cedulku!'
topline: '&0[Jobs]'
secondline:
join: '&2Pripojit'
leave: '&4Odpojit'
toggle: '&eSkryt'
top: '&eTop'
browse: '&eVyhledat'
stats: '&eStatistiky'
limit: '&eLimit'
info: '&eInfo'
archive: '&eArchiv'
join: '&0Zamestnat'
leave: '&0Odejit'
toggle: '&0Prepnout'
top: '&0Top'
browse: '&0Seznam praci'
stats: '&0Staty'
limit: '&0Limity'
info: '&0Info'
archive: '&0Archiv'
scoreboard:
topline: '&2Top &e%jobname%'
gtopline: '&2Globalni top list'
lines: '&2%number%. &e%playername%'
line: '&2%number%. &e%playername% (&6%level%&e)'

View File

@ -17,31 +17,31 @@ general:
invalidPage: '&cÉrvénytelen oldal'
admin:
error: '&cHiba történt a parancsban.'
success: "&eA parancs végrehajtásra került."
success: '&eA parancs végrehajtásra került.'
error:
noHelpPage: "&cNincs több segítség oldal szám!"
notNumber: '&eKérlek, használjon számokat!'
job: "&cEz a munka nem létezik!"
noHelpPage: '&cNincs több segítség oldal szám!'
notNumber: '&eKérlek, használj számokat!'
job: '&cEz a munka nem létezik!'
noCommand: '&cNincs ilyen varázslat ezzel a névvel!'
permission: "&cNincs jogosultságod a használatára!"
noinfo: "&cNincs információ!"
permission: '&cNincs jogosultságod a használatára!'
noinfo: '&cNincs információ a játékosról!'
noinfoByPlayer: '&cNincs információ [%playername%] játékosról!'
ingame: '&cEz a parancs csak a játékban használható!'
fromconsole: '&cEz a parancs csak a konzolon használható!'
worldisdisabled: '&cNem tudsz használni parancsot ebben a világban!'
newFurnaceRegistration: '&eA sütő új tulajdonosát regisztrálták &7[current]&e/&f[max]'
newBrewingRegistration: '&eA Potions Support új tulajdonosát regisztrálták &7[current]&e/&f[max]'
newFurnaceRegistration: '&eA kemence új tulajdonosa regisztrálva &7[current]&e/&f[max]'
newBrewingRegistration: '&eA Potions Support új tulajdonosa regisztrálva &7[current]&e/&f[max]'
noFurnaceRegistration: '&cElérted a kemencék maximális számát!'
noBrewingRegistration: '&cElérted a bájital főzés maximális számát!'
command:
help:
output:
info: Típus /jobs [command] ? további információ a varázslatról.
info: 'Típus /jobs [command] ? további információ a varázslatról.'
cmdUsage: '&2Használat: &7[command]'
cmdInfoFormat: '[command] &f- &2[description]'
cmdFormat: '&7/[command]&f[arguments]'
helpPageDescription: '&2* [description]'
title: '&e-------&e ======= &6SZAKMÁK &e======= &e-------'
title: '&e-------&e ======= &6MUNKÁK &e======= &e-------'
page: '&e-----&e ====== Oldal &6[1] &6[2]&e-ból/-ből &e====== &e-----'
fliperSimbols: '&e----------'
prevPage: '&2----<< &6Előző '
@ -49,6 +49,7 @@ command:
nextPage: '&6 Következő &2>>----'
nextPageOff: '&7 Következő >>----'
pageCount: '&2[current]/[total]'
label: 'Jobs'
moneyboost:
help:
info: 'Növeli a pénzszerzést minden játékos számára'
@ -69,26 +70,26 @@ command:
jobsboostreset: 'Pontok lendületet adnak %jobname% kikapcsolva'
nothingtoreset: 'Semmi nem állítható vissza'
boostalladded: 'A pontok növelése %boost% minden munkához hozzáadva!'
boostadded: 'A pontok növelése &e%boost% &ahozzáadva a(z) &e%jobname% &amunkához!
boostadded: 'A pontok növelése &e%boost% &ahozzáadva a(z) &e%jobname% &amunkához!'
infostats: '&c-----> &aPontszám x%boost% engedélyezve&c <-------'
expboost:
help:
info: 'Növeli az összes játékos nyereségét'
args: '[munkanév] [arány]'
output:
allreset: 'Minden exp boost kikapcsolva'
jobsboostreset: 'Exp lendületet a(z) %jobname% munkánál kikapcsolva'
allreset: 'Minden tapasztalat növelés kikapcsolva'
jobsboostreset: 'Tapasztalat lendület a(z) %jobname% munkánál kikapcsolva'
nothingtoreset: 'Semmi nem állítható vissza'
boostalladded: 'Exp növelése %boost% minden munkához hozzáadva!'
boostadded: 'Exp növelése &e%boost% &ahozzáadva &e%jobname% &amunkához!'
infostats: '&c-----> &aExp arány x%boost% engedélyezve&c <-------'
boostalladded: 'Tapasztalat növelése %boost% minden munkához hozzáadva!'
boostadded: 'Tapasztalat növelése &e%boost% &ahozzáadva &e%jobname% &amunkához!'
infostats: '&c-----> &aTapasztalat arány x%boost% engedélyezve&c <-------'
bonus:
help:
info: "A munkabónuszok megjelenítése"
args: "[munkanév]"
info: 'A munkabónuszok megjelenítése'
args: '[munkanév]'
output:
topline: '&7**************** &2[pénz] &6[pontok] &e[exp] &7****************'
permission: ' &ePerm bónusz: %money% %points% %exp%'
permission: ' &eJog bónusz: %money% %points% %exp%'
item: ' &eTárgy bónusz: %money% %points% %exp%'
global: ' &eGlobális bónusz: %money% %points% %exp%'
dynamic: ' &eDinamikus bónusz: %money% %points% %exp%'
@ -97,14 +98,14 @@ command:
area: ' &eTerület bónusz: %money% %points% %exp%'
mcmmo: ' &eMcMMO bónusz: %money% %points% %exp%'
final: ' &eVégső bónusz: %money% %points% %exp%'
finalExplanation: ' &eNem tartalmazza a Petpay és az idéző bónusz/penaltyFinal bónusz'
finalExplanation: ' &eNem tartalmazza a Petpay és az idéző bónusz/penaltyFinal bónuszt'
convert:
help:
info: 'Adatbázis-rendszert alakít át egyik rendszerről a másikra. Ha jelenleg sqlite fut, ez átalakul MySQL-hez és vise versa.'
args: ''
limit:
help:
info: "Megmutatja a fizetési határértékeket a munkahelyekért."
info: 'Megmutatja a fizetési határértékeket a munkahelyekért.'
args: ''
output:
moneytime: '&eAz idő marad, amíg a pénzkorlát visszaáll: &2%time%'
@ -116,10 +117,10 @@ command:
reachedmoneylimit: '&4Elérted a pénzkorlátot az adott időben!'
reachedmoneylimit2: '&eA korlátot ellenőrizheti &2/jobs limit &eparanccsal'
reachedexplimit: '&4Elérted a határidőt a meghatározott időben!'
reachedexplimit2: '&eA korlátot ellenőrizheti &2/jobs limit &eparanccsal'
reachedexplimit2: '&eA korlátot ellenőrizheted &2/jobs limit &eparanccsal'
reachedpointslimit: '&4Elérted a határidőt a meghatározott időben!'
reachedpointslimit2: '&eA korlátot ellenőrizheti &2/jobs limit &eparanccsal'
notenabled: "&cA pénzkorlát nem engedélyezett."
notenabled: '&cA pénzkorlát nem engedélyezett.'
resetlimit:
help:
info: 'A játékosok fizetési limitjeinek visszaállítása'
@ -128,18 +129,18 @@ command:
reseted: '&eA fizetési határértékek alaphelyzetbe álltak: &2%playername%'
help:
output:
info: "/jobs - A további lehetőségekért."
usage: "Használat: %usage%"
title: "&8&m-------&7 &8&m=======&6 Munkák &8&m=======&7 &8&m-------"
info: '/jobs - A további lehetőségekért.'
usage: 'Használat: %usage%'
title: '&8&m-------&7 &8&m=======&6 Munkák &8&m=======&7 &8&m-------'
page: '&8&m-----&7 &8&m======&e Oldal &6[1]&7/&6[2] &8&m======&7 &8&m-----'
prev: "&8&m---&c <<< &6Előző oldal &e|"
next: "&e|&6 Következő oldal &c>>> &8&m---"
prev: '&8&m---&c <<< &6Előző oldal &e|'
next: '&e|&6 Következő oldal &c>>> &8&m---'
points:
help:
info: "Megmutatja, hogy mennyi pontot kapott a játékos."
args: "[játékos]"
info: 'Megmutatja, hogy mennyi pontot kapott a játékos.'
args: '[játékos]'
currentpoints: ' &eJelenlegi pontod: &6%currentpoints%'
totalpoints: " &eAz összegyűjtött pontok összege eddig: &6%totalpoints%"
totalpoints: ' &eAz összegyűjtött pontok összege eddig: &6%totalpoints%'
editpoints:
help:
info: 'Játékos pontok szerkesztése.'
@ -150,7 +151,7 @@ command:
take: '&e(&6%playername%&e) játékos vesztett &6%amount% &epontot. Most van &6%total%'
editjobs:
help:
info: 'Módosítsa az aktuális munkát.'
info: 'Módosítja az aktuális munkát.'
args: ''
list:
job: '&eMunkák:'
@ -184,10 +185,10 @@ command:
info: 'Megmutatja az általad tárolt tárgy információkat.'
args: ''
output:
name: " &eTárgy név: &6%itemname%"
id: " &eTárgy ID: &6%itemid%"
data: " &eTárgy adat: &6%itemdata%"
usage: " &eHasználat: &6%first% &evagy &6%second%"
name: ' &eTárgy név: &6%itemname%'
id: ' &eTárgy ID: &6%itemid%'
data: ' &eTárgy adat: &6%itemdata%'
usage: ' &eHasználat: &6%first% &evagy &6%second%'
entitylist:
help:
info: 'Megmutatja, hogy minden lehetséges entitás használható a pluginnal.'
@ -226,20 +227,20 @@ command:
output: 'lvl %joblevel% (%getbackjoblevel%) %jobname%'
give:
help:
info: 'A tárgyakat a feladatok neve és az elemek kategóriája alapján adja meg. A játékos neve opcionális'
info: 'A tárgyakat a feladatok neve és az elemek kategóriája alapján adja meg. A játékos neve opcionális.'
args: '[játékos] [munkanév] [tárgynév]'
output:
notonline: '&4[%playername%] nem elérhető!'
noitem: '&4Nem találhat meg egyetlen tárgyat, sem adott névvel!'
noitem: '&4Nincs találhat sem egy tárgyat, sem egy adott névvel!'
info:
help:
title: '&2*** &eJobs&2 ***'
info: 'Megmutatja, hogy mennyi minden munkát fizet, és miért.'
penalty: '&eEz a munka &c[penalty]% &ebüntetés miatt túl sok játékos dolgozik benne.'
bonus: '&eEz a minka &2[bonus]% &ebónusz, mert nem elég játékos dolgozik benne.'
args: '[jobname] [action]'
args: '[munkanév] [akció]'
actions: '&eAz érvényes cselekvések: &f%actions%'
max: ' - &eMax szint:&f '
max: ' - &eMax. szint:&f '
newMax: '&eMaximális szint: &f[max]'
material: '&7%material%'
levelRange: ' &a(&e%levelFrom% &a- &e%levelUntil% &aszintek)'
@ -273,7 +274,7 @@ command:
none: '%jobname% nem kap pénzt, ha szörnyet gyilkol.'
mmkill:
info: 'MMKill'
none: '%jobname% nem kap pénzt, ha a Mythic szörnyeket gyilkol.'
none: '%jobname% nem kap pénzt, ha Mythic szörnyeket gyilkol.'
fish:
info: 'Horgász'
none: '%jobname% nem kap pénzt, ha horgászik.'
@ -293,7 +294,7 @@ command:
info: 'Festék'
none: '%jobname% nem kap pénzt, ha fest.'
enchant:
info: 'Enchant'
info: 'Varázs'
none: '%jobname% nem kap pénzt, ha varázsól.'
repair:
info: 'Javít'
@ -315,10 +316,10 @@ command:
none: '%jobname% nem kap pénzt felfedezni.'
custom-kill:
info: 'Egyéni gyilkolás'
none: '%jobname% nem kap pénzt, ha a játékost gyilkol.'
none: '%jobname% nem kap pénzt, ha játékost gyilkol.'
playerinfo:
help:
info: 'Megmutassa, hogy mennyi minden munkát fizet és mi van egy másik játékosnál.'
info: 'Megmutassa, hogy mennyi minden munkát fizet, és mi van egy másik játékosnál.'
args: '[játékos] [munkanév] [akció]'
join:
help:
@ -332,18 +333,18 @@ command:
confirm: '&2Kattints ide, hogy a &7[jobname]&2 munkát megerősítse.'
leave:
help:
info: 'Elhadja a megadott munkát.'
info: 'Elhagyja a megadott munkát.'
args: '[munkanév]'
success: '&cSikeresen elhagytad a(z)&7 %jobname%&c munkát!'
leaveall:
help:
info: 'Elhagya az összes jelenlegi munkát.'
info: 'Elhagyja az összes jelenlegi munkát.'
error:
nojobs: '&cNincs egyetlen munkád sem!'
success: '&cElhagytad az összes munkát!'
explored:
help:
info: 'Ellenőrizd, ki látogatta meg ezt a darabot'
info: 'Ellenőrzi, ki látogatta meg ezt a darabot'
error:
noexplore: 'Senki nem látogatta meg ezt a darabot'
list: '&e%place%. %playername%'
@ -351,30 +352,30 @@ command:
help:
info: 'Kilistázza a jelenleg elérhető munkákat.'
error:
nojobs: 'Nincsenek olyan munkák, amelyekhez csatlakozhat.'
nojobs: 'Nincsenek olyan munkák, amelyekhez csatlakozhatsz.'
output:
header: 'A következő munkákhoz csatlakozhatsz:'
footer: 'További információkért a&7 /jobs info [munkanév]&f paranccsal.'
totalWorkers: ' &7Dolgozók: &e[amount]'
penalty: ' &4Büntetés: &c[amount]%'
bonus: ' &2Bónusz: &a[amount]%'
newHeader: '&2========== [amount] ELÉRHETŐ PROFESSZCIÓK ========='
newHeader: '&2========== [amount] ELÉRHETŐ MUNKÁK ========='
list: ' &8[place]. &7[jobname]'
click: '&bTovábbi információkért kattints a munkára!'
detailed: '&bKattints ide a munka részleteinek bemutatásához.'
detailed: '&bKattints ide a munka részleteinek mutatásához.'
jobHeader: '&2========== [jobname] ========='
chooseJob: '&7&n&oMunka ebben a szakmában'
chooseJobHover: '&7Kattints ide a szakmában való munkához'
chooseJobHover: '&7Kattints ide a munkához való csatlakozáshoz.'
clearownership:
help:
info: 'Vedd le a tulajdonosokat.'
args: '(playername)'
info: 'Tulajdonjog törlése.'
args: '(játékosnév)'
output:
cleared: '&2Elvéve &7[furnaces] &2kemence &7[brewing] &2főzet'
cleared: '&2Eltávolítva &7[furnaces] &2kemence &7[brewing] &2főzet'
quests:
help:
info: 'Lásd a rendelkezésre álló küldetések listáját.'
args: '(playername)'
args: '(játékosnév)'
error:
noquests: 'Nincsenek küldetések.'
toplineseparator: '&7*********************** &6[playerName]&2(&f[questsDone]&2)
@ -388,7 +389,7 @@ command:
- '&7Új küldetés: [time]'
fire:
help:
info: 'Tűz a játékos a munkából.'
info: 'Játékos kirúgása a munkából.'
args: '[játékos] [munkanév]'
error:
nojob: 'A játékosnak nincs munkája %jobname%.'
@ -404,12 +405,12 @@ command:
target: 'Minden munkából kirúgtak.'
employ:
help:
info: 'Megfogja a játékost a munkában.'
info: 'Megfogja a játékost, hogy a megadott munkához csatlakozzon.'
args: '[játékos] [munkanév]'
error:
alreadyin: 'A játékos már dolgozik %jobname% munkánál.'
output:
target: 'Már foglalkozik %jobname% munkával.'
target: 'Most már a(z) %jobname% munkánál dolgozik.'
top:
help:
info: 'Top 15 játékosok a ranglistán.'
@ -418,19 +419,19 @@ command:
nojob: 'Nem találok semmilyen munkát ezzel a névvel.'
output:
topline: '&aA top&e 15 &ajátékosok a(z) &e%jobname% &amunkából'
list: '&e%number%&a. &e%playername% &alvl &e%level% &e %exp% &eexp'
list: '&e%number%&a. &e%playername% &alvl &e%level% %exp% exp'
prev: '&e<<< Előző oldal &2|'
next: '&2|&e Következő oldal >>>'
show: '&2Megjelenítés innen &e[from]&2, amíg &e[until] &2top lista'
gtop:
help:
info: 'A top 15 legnagyobb játékosát mutatja a globális munkahelyek szintje.'
info: 'A top 15 legjobb játékosokat mutatja a globális munkákon.'
args: ''
error:
nojob: 'Nem találok semmilyen információt.'
output:
topline: '&aTop&e 15 &ajátékosok a globális munkahelyi szinten'
list: '&e%number%&a. &e%playername% &alvl &e%level% &e %exp% &aexp'
topline: '&aTop&e 15 &ajátékosok a globális munkahelyi szinten.'
list: '&e%number%&a. &e%playername% &alvl &e%level%&e %exp% &aexp'
prev: '&e<<< Előző oldal &2|'
next: '&2|&e Következő oldal >>>'
show: '&2Megjelenítés innen &e[from]&2, amíg &e[until] &2a globális top lista'
@ -493,17 +494,16 @@ command:
target: 'Előléptettek %levelsgained% szintet a(z) %jobname% munkában.'
exp:
help:
info: 'Módosítsa a játékos exp feladatát.'
info: 'Módosítsa a játékos tapasztalat feladatát.'
args: '[játékos] [munkanév] [set/add/take] [mennyiség]'
output:
target: '&eAz exp változott %jobname% &eés most itt vagy &6%level%lvl
&eés &6%exp%exp.'
target: '&eA tapasztalat változott %jobname% &eés most itt vagy &6%level%lvl &eés &6%exp%exp.'
demote:
help:
info: 'Eldobja a játékos X szintjét a munkában.'
args: '[játékos] [munkanév] [szintek]'
output:
target: 'Lemerült %levelslost% szintet a(z) %jobname% munkában.
target: 'Lemerült %levelslost% szintet a(z) %jobname% munkában.'
grantxp:
help:
info: 'Megadja a játékosnak az X munkát.'
@ -512,10 +512,10 @@ command:
target: 'Megadták %xpgained% tapasztalatot a(z) %jobname% munkában.'
removexp:
help:
info: 'Eltávolítsa az X tapasztalatot a játékostól a munkában.
info: 'Eltávolítsa az X tapasztalatot a játékostól a munkában.'
args: '[játékos] [munkanév] [xp]'
output:
target: 'Vesztettél %xplost% tapasztalatot a(z) %jobname% munkában.
target: 'Vesztettél %xplost% tapasztalatot a(z) %jobname% munkában.'
signupdate:
help:
info: 'Manuálisan frissíti a táblát a nevével'
@ -535,27 +535,37 @@ command:
info: 'A fizetős kimenet a cselekvési sávon (actionbar) vagy a bossbar-on.'
args: '<actionbar/bossbar>'
output:
turnedoff: "&4Ez a funkció ki van kapcsolva!"
turnedoff: '&4Ez a funkció ki van kapcsolva!'
paid:
main: "&aKaptál:"
money: "&e[amount]$ pénzt,"
main: '&aKaptál:'
money: '&e[amount]$ pénzt,'
exp: '&7[exp] xp-t'
points: '&6[points] pontot,'
'on': "&aEngedélyezve: &aIgen"
'off': "&aEngedélyezve: &4Nem"
'on': '&aEngedélyezve: &aIgen'
'off': '&aEngedélyezve: &4Nem'
itembonus:
help:
info: 'Ellenőrzi a bónuszt.'
args: ''
output:
list: '&e[jobname]: %money% %points% %exp%'
edititembonus:
help:
info: 'Elembónusz bónuszának szerkesztése'
args: '[list/add/remove] [munka név] [itemBoostName]'
message:
skillup:
broadcast: '%playername% játékost előléptették a %titlename% %jobname% munkában.'
nobroadcast: 'Gratulálok, a(z) %titlename% %jobname% munkába.'
levelup:
broadcast: '%playername% most egy szint %joblevel% %jobname% munkában.'
broadcast: '%playername% %joblevel% szintet lépett a(z) %jobname% munkában.'
nobroadcast: '&aSzintet léptél a(z) %jobname% &amunkában! Szint:&6 %joblevel%&a.'
cowtimer: '&eMég várnod kell &6%time% &emásodpercet, hogy fizetni kell ezt a munkát.'
blocktimer: '&eKérlek, várj &3[time] &emásodpercet, hogy újra küldjön pénzt!'
placeblocktimer: '&eNem lehet gyorsabban lerakni blokkokat &6[time] &esec intervallumot ugyanazon a helyen!'
taxes: '&3[amount] &eszerver adókat, amennyiben átutalták erre a fiókra'
boostStarted: '&eMegkezdődött a munkahely növelése!'
boostStoped: '&eA munkahely növelési ideje befejeződött!'
boostStarted: '&eMegkezdődött a munka növelése!'
boostStoped: '&eA munka növelési ideje befejeződött!'
crafting:
fullinventory: 'Az eszköztárad megtelt!'
signs:
@ -574,7 +584,7 @@ signs:
name: '&9[player]'
level: '&8[level] szint'
bottom: '&b************'
cantcreate: "&4Nincs jogod készíteni egy táblát!"
cantcreate: '&4Nincs jogod készíteni egy táblát!'
cantdestroy: '&4Nem törheted ki ezt a táblát!'
topline: '&0[Jobs]'
secondline:

View File

@ -5,9 +5,16 @@ limitedItem:
error:
levelup: '&cВам нужно повысить свой уровень в работе под именем [jobname], чтобы использовать эту вещь!'
general:
Spawner: '&r[type] Спавнер'
info:
toplineseparator: '&7*********************** &6%playername% &7***********************'
separator: '&7*******************************************************'
time:
days: '&e%days% &6дней '
hours: '&e%hours% &6часов '
mins: '&e%mins% &6мин '
secs: '&e%secs% &6сек '
invalidPage: '&cНеверная страница'
admin:
error: '&cОшибка в этой команде.'
success: '&eВаша команда была выполнена успешно.'
@ -15,13 +22,34 @@ general:
noHelpPage: '&cНет страницы справочника с этим номером!'
notNumber: '&eПожалуйста, используйте целые числа!'
job: '&cРаботы, что вы выбрали, не существует!'
noCommand: '&cТакой команды не существует!'
permission: '&cУ вас нет прав на совершение этого дествия!'
noinfo: '&cИнформация не найдена!'
noinfoByPlayer: '&cИнформация не найдена связанная с игроком [%playername%]!'
ingame: '&cВы можете использовать эту команду только в игре!'
fromconsole: '&cВы можете использовать эту команду только в консоле!'
worldisdisabled: '&cВы не можете использовать эту команду в этом мире!'
newFurnaceRegistration: '&eЗарегистрирован новый владелец печи &7[current]&e/&f[max]'
newBrewingRegistration: '&eЗарегистрирован новый владелец варочной стойки &7[current]&e/&f[max]'
noFurnaceRegistration: '&cВы достигли лимита действующих печей!'
noBrewingRegistration: '&cВы достигли лимита варочных стоек!'
command:
help:
output:
info: Используйте /jobs [cmd] ? Для более точной информации.
cmdUsage: '&2Использование: &7[command]'
label: Работы
cmdInfoFormat: '[command] &f- &2[description]'
cmdFormat: '&7/[command]&f[arguments]'
helpPageDescription: '&2* [description]'
title: '&e-------&e ======= &6Работы &e======= &e-------'
page: '&e-----&e ====== Страница &6[1] &eиз &6[2] &e====== &e-----'
fliperSimbols: '&e----------'
prevPage: '&2----<< &6Предыдущая страница '
prevPageOff: '&7----<< Предыдущая страница '
nextPage: '&6 Следующая страница &2>>----'
nextPageOff: '&7 Следующая страница >>----'
pageCount: '&2[current]/[total]'
moneyboost:
help:
info: Ускоряет получение денег для всех игроков
@ -55,18 +83,32 @@ command:
boostalladded: Ускорение получения опыта %boost% было добавлено для всех работ!
boostadded: Ускорение получения опыта &e%boost% &aдобавлено к &e%jobname%!
infostats: '&c-----> &aУскорение получения опыта x%boost% включено&c <-------'
itembonus:
help:
info: Проверить бонусы.
args: ''
output:
list: '&e[jobname]: %money% %points% %exp%'
edititembonus:
help:
info: Редактировать бонусы работ.
args: '[list/add/remove] [jobsName] [itemBoostName]'
bonus:
help:
info: Показывает бонусы работ.
args: '[jobname]'
output:
topline: '&7**************** &2[money] &6[points] &e[exp] &7****************'
permission: ' &eНа основе привелегий: %money% %points% %exp%'
item: ' &eItem bonus: %money% %points% %exp%'
permission: ' &eНа основе привилегий: %money% %points% %exp%'
item: ' &eБонус на предмет: %money% %points% %exp%'
global: ' &eГлобальный: %money% %points% %exp%'
dynamic: ' &eDynamic payment bonus: %money% %points% %exp%'
dynamic: ' &eДинамический бонус: %money% %points% %exp%'
nearspawner: ' &eБонус спавнера: %money% %points% %exp%'
petpay: ' &ePetPay бонус: %money% %points% %exp%'
area: ' &eНа основе местности: %money% %points% %exp%'
mcmmo: ' &eMcMMO бонус: %money% %points% %exp%'
final: ' &eИтого: %money% %points% %exp%'
finalExplanation: ' &eНе включает бонусы/пенальти Petpay и Спавнеров'
convert:
help:
info: Конвертирует данные из одного вида БД в другой. Если сейчас все работает под SQLite, то команда конвертирует все данные в MySQL или наоборот.
@ -76,30 +118,25 @@ command:
info: Показывает лимит оплаты для работы.
args: ''
output:
lefttime: '&eДо сброса лимита: &2%hour% &ehour &2%min% &emin
&2%sec% &esec'
moneylimit: '&eЛимит денег: &2%money%&e/&2%totalmoney%'
leftexptime: '&eДо сброса XP лимита: &2%hour% &ehour &2%min%
&emin &2%sec% &esec'
explimit: '&eЛимит опыта: &2%exp%&e/&2%totalexp%'
leftpointtime: '&eДо сброса лимита очков: &2%hour% &ehour &2%min%
&emin &2%sec% &esec'
pointlimit: '&eЛимит очков: &2%current%&e/&2%total%'
reachedlimit: '&4Вы достигли предела денег, которые можно получить!'
reachedlimit2: '&eВы можете проверить лимит командой &2/jobs limit'
reachedExplimit: '&4Вы достигли предела опыта, которые можно получить!'
reachedExplimit2: '&eВы можете проверить лимит командой &2/jobs limit'
reachedPointlimit: '&4Вы достигли предела очков, которые можно получить!'
reachedPointlimit2: '&eВы можете проверить лимит командой &2/jobs limit'
moneytime: '&eДо сброса лимита: &2%time%'
moneyLimit: '&eЛимит денег: &2%current%&e/&2%total%'
exptime: '&eДо сброса XP лимита: &2%time%'
expLimit: '&eЛимит опыта: &2%current%&e/&2%total%'
pointstime: '&eДо сброса лимита очков: &2%time%'
pointsLimit: '&eЛимит очков: &2%current%&e/&2%total%'
reachedmoneylimit: '&4Вы достигли предела денег, которые можно получить!'
reachedmoneylimit2: '&eВы можете проверить лимит командой &2/jobs limit'
reachedexplimit: '&4Вы достигли предела опыта, которые можно получить!'
reachedexplimit2: '&eВы можете проверить лимит командой &2/jobs limit'
reachedpointslimit: '&4Вы достигли предела очков, которые можно получить!'
reachedpointslimit2: '&eВы можете проверить лимит командой &2/jobs limit'
notenabled: '&eЛимит денег выключен'
help:
resetlimit:
help:
info: Сбрасывает установленные лимиты игроков
args: '[playername]'
output:
info: Используйте /jobs [cmd] ? Для более точной информации.
usage: 'Использование: %usage%'
title: '&e-------&e ======= &6Работы &e======= &e-------'
page: '&e-----&e ====== Страница &6[1] &eиз &6[2] &e====== &e-----'
prev: '&e--- <<<<< &6Предыдущая страница &e|'
next: '&e|&6 Следующая страница &e>>>> ---'
reseted: '&eУспешно сброшен лимит игрока: &2%playername%'
points:
help:
info: Выводит кол-во очков у игрока.
@ -114,47 +151,85 @@ command:
set: '&eКоличество очков игрока &6%playername%&e приведены к &6%amount% ед.'
add: '&eИгрок &6%playername%&e получил дополнительные &6%amount% &eочков. Сейчас у него всего &6%total%'
take: '&eИгрок &6%playername%&e потерял &6%amount% &eочков. Сейчас у него всего &6%total%'
editjobs:
help:
info: Редактировать существующие работы.
args: ''
list:
job: '&eРаботы:'
jobs: ' -> [&e%jobname%&r]'
actions: ' -> [&e%actionname%&r]'
material: ' -> [&e%materialname%&r] '
materialRemove: '&c[X]'
materialAdd: ' -> &e[&2+&e]'
money: ' -> &eДеньги: &6%amount%'
exp: ' -> &eОпыт: &6%amount%'
points: ' -> &eОчки: &6%amount%'
modify:
newValue: '&eВведите новое значение'
enter: '&eУкажите новое название или нажмите '
hand: '&6РУКА '
handHover: '&6Нажмите, чтобы получить информацию о предмете в вашей руке'
or: '&eor '
look: '&6СМОТРЕТЬ НА'
lookHover: '&6Нажмите, чтобы получить информацию о блоке, на который вы смотрите'
blockinfo:
help:
info: Показывает информацию о блоке, на который Вы смотрите.
info: Показывает информацию о блоке, на который вы смотрите.
args: ''
output:
name: ' &eИмя блока: &6%blockname%'
name: ' &eНазвание блока: &6%blockname%'
id: ' &eID блока: &6%blockid%'
data: ' &eДанные блока: &6%blockdata%'
usage: ' &eИспользование: &6%first% &eили &6%second%'
iteminfo:
help:
info: Отображает информацию о предмете, который вы держите.
args: ''
output:
name: ' &eНазвание предмета: &6%itemname%'
id: ' &eID предмета: &6%itemid%'
data: ' &eДанные предмета: &6%itemdata%'
usage: ' &eИспользование: &6%first% &eor &6%second%'
entitylist:
help:
info: Показывает все возможные сущности, которые могут быть задействованы плагином.
args: ''
stats:
help:
info: Показывет Ваш уровень работы.
info: Показывет Ваш уровень по отдельным работам.
args: '[playername]'
error:
nojob: Сперва устройтесь работу.
nojob: Сперва устройтесь на работу.
output: 'Уровень%joblevel% %jobname% : %jobxp%/%jobmaxxp% опыта'
shop:
help:
info: Открывает специальный список работ.
info: Открывает специальный магазин за бонусные очки.
args: ''
info:
title: '&e------- &8Список работ &e-------'
title: '&e--- &8Магазин спецтоваров &e----'
currentPoints: '&eКол-во очков, которые у вас: &6%currentpoints%'
price: '&eЦена: &6%price%'
reqJobs: '&eТребуемые работы:'
reqJobsList: ' &6%jobsname%&e: &e%level% lvl'
NoPermForItem: '&cУ вас нет прав на совершение этого дествия!'
NoPermToBuy: '&cУ вас нет прав на совершение этого дествия!'
NoJobReqForitem: '&cВы, &6%jobname&c, нам не подходите!'
NoPoints: '&cУ вас недостаточно очков'
Paid: '&eВы заплатили &6%amount% &e за эту вещь'
reqTotalLevel: '&6Требуется совокупный уровень: &e%totalLevel%'
cantOpen: '&cНе могу открыть эту страницу'
NoPermForItem: '&cУ Вас нет прав на совершение этого действия!'
NoPermToBuy: '&cУ Вас нет прав на покупку этого товара!'
NoJobReqForitem: '&cВы не работаете &6(%jobname%), &eлибо не достигли
&6(%joblevel%) &eуровня'
NoPoints: '&cУ Вас недостаточно очков'
NoTotalLevel: '&cУ Вас недостаточный совокупный уровень работ. Требуется (%totalLevel%)'
Paid: '&eВы заплатили &6%amount% &eза эту вещь'
archive:
help:
info: Показывает все работы, сохраненные в архиве пользователем.
args: '[playername]'
error:
nojob: Нет сохранёных работ.
output: Уровень %joblevel% (%getbackjoblevel%) %jobname%
give:
help:
info: Gives item by jobs name and item category name. Player name is optional
info: Выдать предмет по названию Работы либо по категории. Имя игрока необязательно.
args: '[playername] [jobname] [itemname]'
output:
notonline: '&Игрок [%playername%] не на сервере!'
@ -168,20 +243,21 @@ command:
args: '[jobname] [action]'
actions: '&eДопустимые действия: &f%actions%'
max: ' - &eмаксимальный уровень:&f '
newMax: ' &eНовый максимальный уровень: &f[max]'
material: '&7%material%'
levelRange: ' &a(&e%levelFrom% &a- &e%levelUntil% &aуровней)'
levelFrom: ' &a(от &e%levelFrom% &aуровня)'
levelUntil: ' &a(вплоть до &e%levelUntil% &aуровня)'
money: ' &2%money%$'
points: ' &6%points% очков'
points: ' &6%points%pts'
exp: ' &e%exp%xp'
gui:
pickjob: '&eВыберите Вашу работу!'
jobinfo: '&eИнформация о[jobname]!'
actions: '&eДоступные действия:'
leftClick: '&eНажмите левую клавишу мыши, чтобы узнать подробнее'
rightClick: '&eНажмите правую клавишу мыши, чтобы устроиться на работу'
leftSlots: '&e"Левые слоты":&f '
leftClick: '&eНажмите ЛКМ, чтобы узнать подробнее'
rightClick: '&eНажмите ПКМ, чтобы устроиться на работу'
leftSlots: '&e"Осталось вакансий":&f '
working: '&2&nТекущая работа'
max: '&eМаксимальный уровень:&f '
back: '&e<--Вернуться'
@ -252,14 +328,16 @@ command:
info: Устроиться работу.
args: '[jobname]'
error:
alreadyin: Ты уже устроен на работу %jobname%.
fullslots: Не возможно устроиться на %jobname%, нет свободных мест.
alreadyin: Вы уже устроились на работу %jobname%.
fullslots: Невозможно устроиться на %jobname% - нет свободных мест.
maxjobs: Слишком много работ.
rejoin: '&cВы не можете устроиться прямо сейчас. Подождите [time]'
success: Вы устроились на %jobname%.
confirm: '&2Кликните, чтобы подтвердить приём на работу &7[jobname]'
leave:
help:
info: Уволиться с работы.
args: '[jobname]'
args: '[oldplayerjob]'
success: Вы уволились с %jobname%.
leaveall:
help:
@ -267,6 +345,12 @@ command:
error:
nojobs: Нет работ с которых можно уволится!
success: Вы уволились со всех работ.
explored:
help:
info: Проверить, кто посещал этот чанк.
error:
noexplore: Никто ещё не был замечен на этом чанке
list: '&e%place%. %playername%'
browse:
help:
info: Вывести список доступных работ.
@ -278,6 +362,34 @@ command:
totalWorkers: ' &7Рабочих: &e[amount]'
penalty: ' &4Ограниченых: &c[amount]%'
bonus: ' &2Бонус: &a[amount]%'
newHeader: '&2========== [amount] Доступные Работы ========='
list: ' &8[place]. &7[jobname]'
click: '&bКликните по работе, чтобы узнать больше про неё!'
detailed: '&bКликните, чтобы увидеть детальный список действий по данной работе'
jobHeader: '&2========== [jobname] ========='
chooseJob: '&7&n&oВыбрать эту работу'
chooseJobHover: '&7Кликните здесь, чтобы получить эту работу'
clearownership:
help:
info: Очистить информацию о владельце.
args: (playername)
output:
cleared: '&2Removed &7[furnaces] &2furnaces and &7[brewing] &2brewing stands'
quests:
help:
info: Отобразить список доступных квестов.
args: (playername)
error:
noquests: '&cКвесты не найдены'
toplineseparator: '&7*********************** &6[playerName]&2(&f[questsDone]&2)
&7***********************'
output:
completed: '&2 !Завершено!&r '
questLine: '[progress] &7[questName] &f[done]&7/&8[required]'
hover:
- '&f[jobName]'
- '[desc]'
- '&7Новый квест будет доступен через: [time]'
fire:
help:
info: Уволить игрока с работы.
@ -304,7 +416,7 @@ command:
target: Вы были устроены на работу %jobname%.
top:
help:
info: Показывает топ игроков.
info: Показывает ТОП игроков.
args: '[jobname]'
error:
nojob: Нет такой работы.
@ -316,7 +428,7 @@ command:
show: '&2Показать с &e[from] &2вплоть до &e[until] &2список топ игроков'
gtop:
help:
info: Показывает топ 15 игроков по уровню на работе.
info: Показывает ТОП 15 игроков по уровню на работе.
args: ''
error:
nojob: Невозможно найти какую-либо информацию.
@ -325,14 +437,38 @@ command:
list: '&e%number%&a. &e%playername% &alvl &e%level% &aс&e %exp% &aопыта'
prev: '&e<<<<< Предыдущая страница &2|'
next: '&2|&e Следующая страница >>>>'
show: '&2Показать с &e[from] &2вплоть до &e[until] &2список топ игроков'
show: '&2Показать с &e[from] &2вплоть до &e[until] &2список ТОП игроков'
area:
help:
info: Управление Бонусными зонами.
args: add/remove/info/list
addUsage: '&eИспользование: &6/Jobs area add [areaName/wg:worldGuardAreaName] [bonus]'
removeUsage: '&eИспользование: &6/Jobs area remove [areaName]'
output:
addedNew: '&eУспешно добавлена новая Бонусная зона с бонусом &6%bonus%'
removed: '&eБонусная зона &6%name% успешно удалена'
list: '&e%number%&a. &e%areaname% &e%worldname% (&a%x1%:%y1%:%z1%/&e%x2%:%y2%:%z2%)
&6%bonus%'
wgList: '&e%number%&a. WorldGuard: &e%areaname% &6%bonus%'
noAreas: '&eБонусных зон не найдено'
noAreasByLoc: '&eВ этой местности нет Бонусных зон'
areaList: '&eВсе Бонусные зоны в Вашем местоположении: &6%list%'
selected1: '&eВыбрана первая точка новой Бонусной зоны: &6%x%:%y%:%z%'
selected2: '&eВыбрана вторая точка новой Бонусной зоны: &6%x%:%y%:%z%'
select: '&eУкажите 2 точки новой Бонусной зоны, используя инструмент (%tool%)'
exist: '&eБонусная зона с таким именем уже существует'
dontExist: '&eБонусная зона с таким именем не существует'
wgDontExist: '&eWorldGuard области с таким именем не существует'
log:
help:
info: Показывает статистику.
args: '[playername]'
output:
topline: '&7************************* &6%playername% &7*************************'
list: '&7* &6%number%. &3%action%: &6%item% &eqty: %qty% &6денег: %money% &eопыт: %exp%'
ls: '&7* &6%number%. &3%action%: &6%item% &eqty: %qty% %money%%exp%%points%'
money: '&6money: %amount% '
exp: '&eexp: %amount% '
points: '&6points: %amount%'
bottomline: '&7***********************************************************'
prev: '&e<<<<< Предыдущая страница &2|'
next: '&2|&e Следующая страница >>>>'
@ -343,7 +479,10 @@ command:
args: ''
output:
topline: '&7*********************** &6Глобальная статистика &7***********************'
list: '&7* &6%number%. &3%username% &e%action%: &6%item% &eqty: %qty% &6деньги:%money% &eопыт: %exp%'
ls: '&7* &6%number%. &3%action%: &6%item% &eqty: %qty% %money%%exp%%points%'
money: '&6money: %amount% '
exp: '&eexp: %amount% '
points: '&6points: %amount%'
bottomline: '&7**************************************************************'
nodata: '&cДанные не найдены'
transfer:
@ -358,6 +497,13 @@ command:
args: '[playername] [jobname] [levels]'
output:
target: Вы были продвинуты на %levelsgained% уровней в %jobname%.
exp:
help:
info: Change the player exp for job.
args: '[playername] [jobname] [set/add/take] [amount]'
output:
target: '&eYour exp was changed for %jobname% &eand now you at &6%level%lvl
&eand with &6%exp%exp.'
demote:
help:
info: Понижает игрока на X уровней.
@ -378,8 +524,15 @@ command:
target: Вы потеряли %xplost% опыта в %jobname%.
signupdate:
help:
info: Manualy updates sign by its name
info: Обновить табличку по её имени.
args: '[jobname]'
bp:
help:
info: Показать защищённые блоки в радиусе 10 блоков от вас.
args: ''
output:
found: '&eНайдено &6%amount% &eзащищённых блоков рядом с вами'
notFound: '&eЗащищённых блоков рядом с вами не найдено'
reload:
help:
info: Перезагружает настройки плагина.
@ -404,9 +557,9 @@ message:
broadcast: '%playername% получил уровень %joblevel% в работе %jobname%.'
nobroadcast: Вы получили уровень %joblevel% в работе %jobname%.
cowtimer: '&eВы должны подождать &6%time% &eсекунд, чтобы получить зарплату.'
blocktimer: '&eВы должны подождать: &3[time] &eсек ещё, чтобы получить свои деньги!'
blocktimer: '&eВы должны подождать ещё &3[time] &eсекунд, чтобы получить свои деньги!'
placeblocktimer: '&eВы не можете ставить блоки быстрее, чем &6[time] &eсекунд в одном месте!'
taxes: '&3[amount] &eserver taxes where transfered to this account'
taxes: '&3[amount] &eбыло удержано в виде налогов с этого счёта'
boostStarted: '&eУскорение получения денег с работы началось!'
boostStoped: '&eУскорение получения денег с работы уже закончилось!'
crafting:
@ -414,35 +567,33 @@ message:
signs:
List: '&0[number].&8[player]&7:&4[level]'
SpecialList:
'1':
'1': '&b** &8Первый &b**'
'2': '&9[player]'
'3': '&8[level] уровень'
'4': '&b************'
'2':
'1': '&b** &8Второй &b**'
'2': '&9[player]'
'3': '&8[level] уровень'
'4': '&b************'
'3':
'1': '&b** &8Третий &b**'
'2': '&9[player]'
'3': '&8[level] уровень'
'4': '&b************'
p1: '&b** &8Первый &b**'
p2: '&b** &8Второй &b**'
p3: '&b** &8Третий &b**'
p4: '&b** &8Четвёртый &b**'
p5: '&b** &8Пятый &b**'
p6: '&b** &8Шестой &b**'
p7: '&b** &8Седьмой &b**'
p8: '&b** &8Восьмой &b**'
p9: '&b** &8Девятый &b**'
p10: '&b** &8Десятый &b**'
name: '&9[player]'
level: '&8[level] уровень'
bottom: '&b************'
cantcreate: '&4Вы не можете создать табличку!'
cantdestroy: '&4Вы не можете уничтожить эту табличку!'
topline: '&e[Jobs]'
secondline:
join: '&2Устроиться'
leave: '&4Уволиться'
toggle: '&eToggle'
top: '&eТоп'
browse: '&eBrowse'
stats: '&eStats'
limit: '&eLimit'
info: '&eИнформ'
archive: '&eArchive'
toggle: '&eПереключить'
top: '&eТОП'
browse: '&eОбзор'
stats: '&eСтатистика'
limit: '&eЛимиты'
info: '&eИнфо'
archive: '&0Архив'
scoreboard:
topline: '&2Top &e%jobname%'
gtopline: '&2Глобальный топ-лист'
lines: '&2%number%. &e%playername%'
topline: '&2ТОП &e%jobname%'
gtopline: '&2Глобальный ТОП лист'
line: '&2%number%. &e%playername% (&6%level%&e)'

View File

@ -1,7 +1,7 @@
name: Jobs
description: Jobs Plugin for the BukkitAPI
main: com.gamingmesh.jobs.Jobs
version: 4.7.1
version: 4.7.2
api-version: 1.13
website: https://www.spigotmc.org/resources/jobs-reborn.4216/
author: phrstbrn