diff --git a/.github/workflows/translator-webhook.yml b/.github/workflows/translator-webhook.yml index 289779e51..0f5118b52 100644 --- a/.github/workflows/translator-webhook.yml +++ b/.github/workflows/translator-webhook.yml @@ -17,6 +17,6 @@ jobs: - name: Discord Notification uses: Ilshidur/action-discord@master with: - args: '<@&665202905271369776> Slimefun4''s language files have been updated! https://gitlocalize.com/repo/3841' + args: '<@&665202905271369776> Slimefun4''s language files were changed and require to be updated! https://gitlocalize.com/repo/3841' env: DISCORD_WEBHOOK: ${{ secrets.TRANSLATOR_WEBHOOK }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 90395bec3..ce0d2d742 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,8 @@ * Added ReactorExplodeEvent to the API * Compatibility mode status is now included in /sf versions * Added Nether Quartz Ore Crusher Recipe +* Added a new language: Tagalog +* Added Magical Zombie Pills #### Changes * Coolant Cells now last twice as long @@ -35,6 +37,10 @@ * Changed the texture for the Nuclear Reactor * Changed the texture for the Nether Star Reactor * Performance improvements to Rainbow Blocks +* Crafting Tin cans now produces 8 items instead of 4 +* Multi Tool lore now says "Crouch" instead of "Hold Shift" +* items which cannot be distributed by a Cargo Net will be dropped on the ground now instead of getting deleted +* Small performance improvements to the Cargo Net #### Fixes * Fixed #2005 @@ -42,6 +48,7 @@ * Fixed a chunk caching issue for GEO resources * Fixed Infused Magnet working even if you haven't researched it * Fixed Rainbow blocks duplication glitch when timing the block break right +* Fixed #1855 ## Release Candidate 13 (16 Jun 2020) https://thebusybiscuit.github.io/builds/TheBusyBiscuit/Slimefun4/stable/#13 diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/networks/cargo/CargoNet.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/networks/cargo/CargoNet.java index 31b952c72..ee42a1f93 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/networks/cargo/CargoNet.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/networks/cargo/CargoNet.java @@ -87,7 +87,10 @@ public class CargoNet extends ChestTerminalNetwork { @Override public NetworkComponent classifyLocation(Location l) { String id = BlockStorage.checkID(l); - if (id == null) return null; + + if (id == null) { + return null; + } switch (id) { case "CARGO_MANAGER": @@ -157,8 +160,8 @@ public class CargoNet extends ChestTerminalNetwork { // Chest Terminal Stuff Set destinations = new HashSet<>(); - List output16 = output.get(16); + if (output16 != null) { destinations.addAll(output16); } @@ -264,17 +267,30 @@ public class CargoNet extends ChestTerminalNetwork { stack = distributeItem(stack, inputNode, outputs); } - DirtyChestMenu menu = CargoUtils.getChestMenu(inputTarget); + if (stack != null) { + DirtyChestMenu menu = CargoUtils.getChestMenu(inputTarget); - if (menu != null) { - menu.replaceExistingItem(previousSlot, stack); - } - else if (CargoUtils.hasInventory(inputTarget)) { - BlockState state = inputTarget.getState(); + if (menu != null) { + if (menu.getItemInSlot(previousSlot) == null) { + menu.replaceExistingItem(previousSlot, stack); + } + else { + inputTarget.getWorld().dropItem(inputTarget.getLocation().add(0, 1, 0), stack); + } + } + else if (CargoUtils.hasInventory(inputTarget)) { + BlockState state = inputTarget.getState(); - if (state instanceof InventoryHolder) { - Inventory inv = ((InventoryHolder) state).getInventory(); - inv.setItem(previousSlot, stack); + if (state instanceof InventoryHolder) { + Inventory inv = ((InventoryHolder) state).getInventory(); + + if (inv.getItem(previousSlot) == null) { + inv.setItem(previousSlot, stack); + } + else { + inputTarget.getWorld().dropItem(inputTarget.getLocation().add(0, 1, 0), stack); + } + } } } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/networks/cargo/CargoUtils.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/networks/cargo/CargoUtils.java index c9a4eeb2d..47bee5f73 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/networks/cargo/CargoUtils.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/networks/cargo/CargoUtils.java @@ -194,6 +194,7 @@ final class CargoUtils { } } } + return null; } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java index 4d3ede7dd..38ed49a49 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/LocalizationService.java @@ -54,7 +54,7 @@ public class LocalizationService extends SlimefunLocalization implements Persist translationsEnabled = SlimefunPlugin.getCfg().getBoolean("options.enable-translations"); defaultLanguage = new Language(serverDefaultLanguage, "11b3188fd44902f72602bd7c2141f5a70673a411adb3d81862c69e536166b"); - defaultLanguage.setMessages(getConfig().getConfiguration()); + defaultLanguage.setMessagesFile(getConfig().getConfiguration()); loadEmbeddedLanguages(); @@ -147,10 +147,10 @@ public class LocalizationService extends SlimefunLocalization implements Persist getConfig().clear(); } - defaultLanguage.setResearches(streamConfigFile("researches_" + language + ".yml", null)); - defaultLanguage.setResources(streamConfigFile("resources_" + language + ".yml", null)); - defaultLanguage.setCategories(streamConfigFile("categories_" + language + ".yml", null)); - defaultLanguage.setRecipeTypes(streamConfigFile("recipes_" + language + ".yml", null)); + defaultLanguage.setResearchesFile(streamConfigFile("researches_" + language + ".yml", null)); + defaultLanguage.setResourcesFile(streamConfigFile("resources_" + language + ".yml", null)); + defaultLanguage.setCategoriesFile(streamConfigFile("categories_" + language + ".yml", null)); + defaultLanguage.setRecipeTypesFile(streamConfigFile("recipes_" + language + ".yml", null)); Slimefun.getLogger().log(Level.INFO, "Loaded language \"{0}\"", language); getConfig().setValue(LANGUAGE_PATH, language); @@ -179,11 +179,11 @@ public class LocalizationService extends SlimefunLocalization implements Persist FileConfiguration recipes = streamConfigFile("recipes_" + id + ".yml", null); Language language = new Language(id, hash); - language.setMessages(messages); - language.setResearches(researches); - language.setResources(resources); - language.setCategories(categories); - language.setRecipeTypes(recipes); + language.setMessagesFile(messages); + language.setResearchesFile(researches); + language.setResourcesFile(resources); + language.setCategoriesFile(categories); + language.setRecipeTypesFile(recipes); languages.put(id, language); } @@ -201,13 +201,16 @@ public class LocalizationService extends SlimefunLocalization implements Persist */ public double getProgress(Language lang) { int defaultKeys = getTotalKeys(languages.get("en")); - if (defaultKeys == 0) return 0; + + if (defaultKeys == 0) { + return 0; + } return Math.min(DoubleHandler.fixDouble(100.0 * (getTotalKeys(lang) / (double) defaultKeys)), 100.0); } private int getTotalKeys(Language lang) { - return getKeys(lang.getMessages(), lang.getResearches(), lang.getResources(), lang.getCategories(), lang.getRecipeTypes()); + return getKeys(lang.getFiles()); } private int getKeys(FileConfiguration... files) { diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/Language.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/Language.java index bf7c5b1d7..097937170 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/Language.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/Language.java @@ -60,43 +60,53 @@ public final class Language { return id; } - public FileConfiguration getMessages() { + FileConfiguration getMessagesFile() { return messages; } - public FileConfiguration getResearches() { + FileConfiguration getResearchesFile() { return researches; } - public FileConfiguration getResources() { + FileConfiguration getResourcesFile() { return resources; } - public FileConfiguration getCategories() { + FileConfiguration getCategoriesFile() { return categories; } - public FileConfiguration getRecipeTypes() { + FileConfiguration getRecipeTypesFile() { return recipeTypes; } - public void setMessages(FileConfiguration config) { + public void setMessagesFile(FileConfiguration config) { + Validate.notNull(config); + this.messages = config; } - public void setResearches(FileConfiguration config) { + public void setResearchesFile(FileConfiguration config) { + Validate.notNull(config); + this.researches = config; } - public void setResources(FileConfiguration config) { + public void setResourcesFile(FileConfiguration config) { + Validate.notNull(config); + this.resources = config; } - public void setCategories(FileConfiguration config) { + public void setCategoriesFile(FileConfiguration config) { + Validate.notNull(config); + this.categories = config; } - public void setRecipeTypes(FileConfiguration config) { + public void setRecipeTypesFile(FileConfiguration config) { + Validate.notNull(config); + this.recipeTypes = config; } @@ -119,7 +129,8 @@ public final class Language { * @return The localized name of this {@link Language} */ public String getName(Player p) { - return SlimefunPlugin.getLocal().getMessage(p, "languages." + id); + String name = SlimefunPlugin.getLocal().getMessage(p, "languages." + id); + return name != null ? name : toString(); } /** @@ -132,4 +143,13 @@ public final class Language { return this == SlimefunPlugin.getLocal().getDefaultLanguage(); } + @Override + public String toString() { + return "Language [ id= " + id + " | default=" + isDefault() + " ]"; + } + + public FileConfiguration[] getFiles() { + return new FileConfiguration[] { getMessagesFile(), getCategoriesFile(), getResearchesFile(), getResourcesFile() }; + } + } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SlimefunLocalization.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SlimefunLocalization.java index 0a491bcf4..c7c9012cd 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SlimefunLocalization.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SlimefunLocalization.java @@ -88,37 +88,37 @@ public abstract class SlimefunLocalization extends Localization implements Keyed public String getMessage(Player p, String key) { Language language = getLanguage(p); if (language == null) return "NO LANGUAGE FOUND"; - return language.getMessages().getString(key); + return language.getMessagesFile().getString(key); } public List getMessages(Player p, String key) { Language language = getLanguage(p); if (language == null) return Arrays.asList("NO LANGUAGE FOUND"); - return language.getMessages().getStringList(key); + return language.getMessagesFile().getStringList(key); } public String getResearchName(Player p, NamespacedKey key) { Language language = getLanguage(p); - if (language.getResearches() == null) return null; - return language.getResearches().getString(key.getNamespace() + "." + key.getKey()); + if (language.getResearchesFile() == null) return null; + return language.getResearchesFile().getString(key.getNamespace() + "." + key.getKey()); } public String getCategoryName(Player p, NamespacedKey key) { Language language = getLanguage(p); - if (language.getCategories() == null) return null; - return language.getCategories().getString(key.getNamespace() + "." + key.getKey()); + if (language.getCategoriesFile() == null) return null; + return language.getCategoriesFile().getString(key.getNamespace() + "." + key.getKey()); } public String getResourceString(Player p, String key) { Language language = getLanguage(p); - String value = language.getResources() != null ? language.getResources().getString(key) : null; + String value = language.getResourcesFile() != null ? language.getResourcesFile().getString(key) : null; if (value != null) { return value; } else { - return getLanguage("en").getResources().getString(key); + return getLanguage("en").getResourcesFile().getString(key); } } @@ -127,15 +127,15 @@ public abstract class SlimefunLocalization extends Localization implements Keyed ItemStack item = recipeType.toItem(); NamespacedKey key = recipeType.getKey(); - if (language.getRecipeTypes() == null || !language.getRecipeTypes().contains(key.getNamespace() + "." + key.getKey())) { + if (language.getRecipeTypesFile() == null || !language.getRecipeTypesFile().contains(key.getNamespace() + "." + key.getKey())) { language = getLanguage("en"); } - if (!language.getRecipeTypes().contains(key.getNamespace() + "." + key.getKey())) { + if (!language.getRecipeTypesFile().contains(key.getNamespace() + "." + key.getKey())) { return item; } - FileConfiguration config = language.getRecipeTypes(); + FileConfiguration config = language.getRecipeTypesFile(); return new CustomItem(item, meta -> { meta.setDisplayName(ChatColor.AQUA + config.getString(key.getNamespace() + "." + key.getKey() + ".name")); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SupportedLanguage.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SupportedLanguage.java index cfbeed21f..63be7dcf6 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SupportedLanguage.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/localization/SupportedLanguage.java @@ -53,7 +53,7 @@ enum SupportedLanguage { MALAY("ms", false, "754b9041dea6db6db44750f1385a743adf653767b4b8802cad4c585dd3f5be46"), THAI("th", true, "2a7916e4a852f7e6f3f3de19c7fb57686a37bce834bd54684a7dbef8d53fb"), MACEDONIAN("mk", false, "a0e0b0b5d87a855466980a101a757bcdb5f77d9f7287889f3efa998ee0472fc0"), - TAGALOG("tl", false, "9306c0c1ce6a9c61bb42a572c49e6d0ed20e0e6b3d122cc64c339cbf78e9e937"); + TAGALOG("tl", true, "9306c0c1ce6a9c61bb42a572c49e6d0ed20e0e6b3d122cc64c339cbf78e9e937"); private final String id; private final boolean releaseReady; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/SlimefunItems.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/SlimefunItems.java index 6131fd18a..5ba9dde2a 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/SlimefunItems.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/SlimefunItems.java @@ -50,7 +50,7 @@ public final class SlimefunItems { public static final SlimefunItemStack GRAPPLING_HOOK = new SlimefunItemStack("GRAPPLING_HOOK", Material.LEAD, "&6Grappling Hook", "", LoreBuilder.RIGHT_CLICK_TO_USE); public static final SlimefunItemStack SOLAR_HELMET = new SlimefunItemStack("SOLAR_HELMET", Material.IRON_HELMET, "&bSolar Helmet", "", "&a&oCharges held Items and Armor"); public static final SlimefunItemStack CLOTH = new SlimefunItemStack("CLOTH", Material.PAPER, "&bCloth"); - public static final SlimefunItemStack CAN = new SlimefunItemStack("CAN", HeadTexture.TIN_CAN, "&rTin Can"); + public static final SlimefunItemStack TIN_CAN = new SlimefunItemStack("CAN", HeadTexture.TIN_CAN, "&rTin Can"); public static final SlimefunItemStack NIGHT_VISION_GOGGLES = new SlimefunItemStack("NIGHT_VISION_GOGGLES", Material.LEATHER_HELMET, Color.BLACK, "&aNight Vision Goggles", "", "&9+ Night Vision"); public static final SlimefunItemStack FARMER_SHOES = new SlimefunItemStack("FARMER_SHOES", Material.LEATHER_BOOTS, Color.YELLOW, "&eFarmer Shoes", "", "&6&oPrevents you from trampling your Crops"); public static final SlimefunItemStack INFUSED_MAGNET = new SlimefunItemStack("INFUSED_MAGNET", HeadTexture.MAGNET, "&aInfused Magnet", "", "&rMagical infused Magnets", "&rattract nearby Items", "&ras long as it is somewhere in", "&ryour Inventory", "", "&7Hold &eShift&7 to pick up nearby Items"); @@ -96,13 +96,14 @@ public final class SlimefunItems { public static final SlimefunItemStack ARMORED_JETBOOTS = new SlimefunItemStack("ARMORED_JETBOOTS", Material.IRON_BOOTS, "&9Armored Jet Boots", "", LoreBuilder.material("Steel"), LoreBuilder.powerCharged(0, 50), LoreBuilder.speed(0.45F), "&8\u21E8 &7Accuracy: &e70%", "", LoreBuilder.CROUCH_TO_USE); /* Multi Tools */ - public static final SlimefunItemStack DURALUMIN_MULTI_TOOL = new SlimefunItemStack("DURALUMIN_MULTI_TOOL", Material.SHEARS, "&9Multi Tool &7- &eI", "", LoreBuilder.material("Duralumin"), LoreBuilder.powerCharged(0, 20), "", LoreBuilder.RIGHT_CLICK_TO_USE, "&7Hold &eShift + Right Click&7 to change the Mode"); - public static final SlimefunItemStack SOLDER_MULTI_TOOL = new SlimefunItemStack("SOLDER_MULTI_TOOL", Material.SHEARS, "&9Multi Tool &7- &eII", "", LoreBuilder.material("Solder"), LoreBuilder.powerCharged(0, 30), "", LoreBuilder.RIGHT_CLICK_TO_USE, "&7Hold &eShift + Right Click&7 to change the Mode"); - public static final SlimefunItemStack BILLON_MULTI_TOOL = new SlimefunItemStack("BILLON_MULTI_TOOL", Material.SHEARS, "&9Multi Tool &7- &eIII", "", LoreBuilder.material("Billon"), LoreBuilder.powerCharged(0, 40), "", LoreBuilder.RIGHT_CLICK_TO_USE, "&7Hold &eShift + Right Click&7 to change the Mode"); - public static final SlimefunItemStack STEEL_MULTI_TOOL = new SlimefunItemStack("STEEL_MULTI_TOOL", Material.SHEARS, "&9Multi Tool &7- &eIV", "", LoreBuilder.material("Steel"), LoreBuilder.powerCharged(0, 50), "", LoreBuilder.RIGHT_CLICK_TO_USE, "&7Hold &eShift + Right Click&7 to change the Mode"); - public static final SlimefunItemStack DAMASCUS_STEEL_MULTI_TOOL = new SlimefunItemStack("DAMASCUS_STEEL_MULTI_TOOL", Material.SHEARS, "&9Multi Tool &7- &eV", "", LoreBuilder.material("Damascus Steel"), LoreBuilder.powerCharged(0, 60), "", LoreBuilder.RIGHT_CLICK_TO_USE, "&7Hold &eShift + Right Click&7 to change the Mode"); - public static final SlimefunItemStack REINFORCED_ALLOY_MULTI_TOOL = new SlimefunItemStack("REINFORCED_ALLOY_MULTI_TOOL", Material.SHEARS, "&9Multi Tool &7- &eVI", "", LoreBuilder.material("Reinforced Alloy"), LoreBuilder.powerCharged(0, 75), "", LoreBuilder.RIGHT_CLICK_TO_USE, "&7Hold &eShift + Right Click&7 to change the Mode"); - public static final SlimefunItemStack CARBONADO_MULTI_TOOL = new SlimefunItemStack("CARBONADO_MULTI_TOOL", Material.SHEARS, "&9Multi Tool &7- &eVII", "", LoreBuilder.material("Carbonado"), LoreBuilder.powerCharged(0, 100), "", LoreBuilder.RIGHT_CLICK_TO_USE, "&7Hold &eShift + Right Click&7 to change the Mode"); + private static final String MULTI_TOOL_LORE = "&eCrouch & Right Click&7 to switch modes"; + public static final SlimefunItemStack DURALUMIN_MULTI_TOOL = new SlimefunItemStack("DURALUMIN_MULTI_TOOL", Material.SHEARS, "&9Multi Tool &7- &eI", "", LoreBuilder.material("Duralumin"), LoreBuilder.powerCharged(0, 20), "", LoreBuilder.RIGHT_CLICK_TO_USE, MULTI_TOOL_LORE); + public static final SlimefunItemStack SOLDER_MULTI_TOOL = new SlimefunItemStack("SOLDER_MULTI_TOOL", Material.SHEARS, "&9Multi Tool &7- &eII", "", LoreBuilder.material("Solder"), LoreBuilder.powerCharged(0, 30), "", LoreBuilder.RIGHT_CLICK_TO_USE, MULTI_TOOL_LORE); + public static final SlimefunItemStack BILLON_MULTI_TOOL = new SlimefunItemStack("BILLON_MULTI_TOOL", Material.SHEARS, "&9Multi Tool &7- &eIII", "", LoreBuilder.material("Billon"), LoreBuilder.powerCharged(0, 40), "", LoreBuilder.RIGHT_CLICK_TO_USE, MULTI_TOOL_LORE); + public static final SlimefunItemStack STEEL_MULTI_TOOL = new SlimefunItemStack("STEEL_MULTI_TOOL", Material.SHEARS, "&9Multi Tool &7- &eIV", "", LoreBuilder.material("Steel"), LoreBuilder.powerCharged(0, 50), "", LoreBuilder.RIGHT_CLICK_TO_USE, MULTI_TOOL_LORE); + public static final SlimefunItemStack DAMASCUS_STEEL_MULTI_TOOL = new SlimefunItemStack("DAMASCUS_STEEL_MULTI_TOOL", Material.SHEARS, "&9Multi Tool &7- &eV", "", LoreBuilder.material("Damascus Steel"), LoreBuilder.powerCharged(0, 60), "", LoreBuilder.RIGHT_CLICK_TO_USE, MULTI_TOOL_LORE); + public static final SlimefunItemStack REINFORCED_ALLOY_MULTI_TOOL = new SlimefunItemStack("REINFORCED_ALLOY_MULTI_TOOL", Material.SHEARS, "&9Multi Tool &7- &eVI", "", LoreBuilder.material("Reinforced Alloy"), LoreBuilder.powerCharged(0, 75), "", LoreBuilder.RIGHT_CLICK_TO_USE, MULTI_TOOL_LORE); + public static final SlimefunItemStack CARBONADO_MULTI_TOOL = new SlimefunItemStack("CARBONADO_MULTI_TOOL", Material.SHEARS, "&9Multi Tool &7- &eVII", "", LoreBuilder.material("Carbonado"), LoreBuilder.powerCharged(0, 100), "", LoreBuilder.RIGHT_CLICK_TO_USE, MULTI_TOOL_LORE); static { ItemMeta duralumin = DURALUMIN_MULTI_TOOL.getItemMeta(); @@ -327,7 +328,7 @@ public final class SlimefunItems { public static final SlimefunItemStack ENDER_LUMP_2 = new SlimefunItemStack("ENDER_LUMP_2", Material.GOLD_NUGGET, "&5Ender Lump &7- &eII", "", "&c&oTier: II"); public static final SlimefunItemStack ENDER_LUMP_3 = new SlimefunItemStack("ENDER_LUMP_3", Material.GOLD_NUGGET, "&5Ender Lump &7- &eIII", "", "&c&oTier: III"); public static final SlimefunItemStack MAGICAL_BOOK_COVER = new SlimefunItemStack("MAGICAL_BOOK_COVER", Material.PAPER, "&6Magical Book Cover", "", "&a&oUsed for various Magic Books"); - public static final SlimefunItemStack MAGIC_PILLS = new SlimefunItemStack("MAGIC_PILLS", Material.NETHER_WART, "&cMagic Pills", "", "&a&oUsed to cure zombie villagers instantly"); + public static final SlimefunItemStack MAGICAL_ZOMBIE_PILLS = new SlimefunItemStack("MAGICAL_ZOMBIE_PILLS", Material.NETHER_WART, "&6Magical Zombie Pills", "", "&eRight Click &7a Zombified Villager to", "&7instantly cure it from its curse"); public static final SlimefunItemStack BASIC_CIRCUIT_BOARD = new SlimefunItemStack("BASIC_CIRCUIT_BOARD", Material.ACTIVATOR_RAIL, "&bBasic Circuit Board"); public static final SlimefunItemStack ADVANCED_CIRCUIT_BOARD = new SlimefunItemStack("ADVANCED_CIRCUIT_BOARD", Material.POWERED_RAIL, "&bAdvanced Circuit Board"); public static final SlimefunItemStack WHEAT_FLOUR = new SlimefunItemStack("WHEAT_FLOUR", Material.SUGAR, "&rWheat Flour"); @@ -624,6 +625,7 @@ public final class SlimefunItems { public static final SlimefunItemStack AUTO_DISENCHANTER = new SlimefunItemStack("AUTO_DISENCHANTER", Material.ENCHANTING_TABLE, "&5Auto Disenchanter", "", LoreBuilder.machine(MachineTier.MEDIUM, MachineType.MACHINE), LoreBuilder.speed(1), LoreBuilder.powerPerSecond(18)); public static final SlimefunItemStack AUTO_ANVIL = new SlimefunItemStack("AUTO_ANVIL", Material.IRON_BLOCK, "&7Auto Anvil", "", LoreBuilder.machine(MachineTier.ADVANCED, MachineType.MACHINE), "&8\u21E8 &7Repair Factor: 10%", LoreBuilder.powerPerSecond(24)); public static final SlimefunItemStack AUTO_ANVIL_2 = new SlimefunItemStack("AUTO_ANVIL_2", Material.IRON_BLOCK, "&7Auto Anvil Mk.II", "", LoreBuilder.machine(MachineTier.END_GAME, MachineType.MACHINE), "&8\u21E8 &7Repair Factor: 25%", LoreBuilder.powerPerSecond(32)); + public static final SlimefunItemStack AUTO_BREWER; public static final SlimefunItemStack BIO_REACTOR = new SlimefunItemStack("BIO_REACTOR", Material.LIME_TERRACOTTA, "&2Bio Reactor", "", LoreBuilder.machine(MachineTier.AVERAGE, MachineType.GENERATOR), LoreBuilder.powerBuffer(128), LoreBuilder.powerPerSecond(8)); public static final SlimefunItemStack MULTIMETER = new SlimefunItemStack("MULTIMETER", Material.CLOCK, "&eMultimeter", "", "&rMeasures the Amount of stored", "&rEnergy in a Block"); @@ -799,11 +801,13 @@ public final class SlimefunItems { TABLE_SAW = new SlimefunItemStack("TABLE_SAW", Material.STONECUTTER, "&6Table Saw", "", "&aAllows you to get 8 planks from 1 Log", "&a(Works with all log types)"); MAKESHIFT_SMELTERY = new SlimefunItemStack("MAKESHIFT_SMELTERY", Material.BLAST_FURNACE, "&eMakeshift Smeltery", "", "&rImprovised version of the Smeltery", "&rthat only allows you to", "&rsmelt dusts into ingots"); AUTO_DRIER = new SlimefunItemStack("AUTO_DRIER", Material.SMOKER, "&eAuto Drier", "", LoreBuilder.machine(MachineTier.MEDIUM, MachineType.MACHINE), LoreBuilder.speed(1), LoreBuilder.powerPerSecond(10)); + AUTO_BREWER = new SlimefunItemStack("AUTO_BREWER", Material.SMOKER, "&eAuto Brewer", "", LoreBuilder.machine(MachineTier.MEDIUM, MachineType.MACHINE), LoreBuilder.speed(1), LoreBuilder.powerPerSecond(12)); } else { TABLE_SAW = null; MAKESHIFT_SMELTERY = new SlimefunItemStack("MAKESHIFT_SMELTERY", Material.FURNACE, "&eMakeshift Smeltery", "", "&rImprovised version of the Smeltery", "&rthat only allows you to", "&rsmelt dusts into ingots"); AUTO_DRIER = null; + AUTO_BREWER = new SlimefunItemStack("AUTO_BREWER", Material.BREWING_STAND, "&eAuto Brewer", LoreBuilder.machine(MachineTier.MEDIUM, MachineType.MACHINE), LoreBuilder.speed(1), LoreBuilder.powerPerSecond(12)); } } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/AutoBrewer.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/AutoBrewer.java new file mode 100644 index 000000000..d7e43cce9 --- /dev/null +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/AutoBrewer.java @@ -0,0 +1,230 @@ +package io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines; + +import java.util.EnumMap; +import java.util.Map; + +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.PotionMeta; +import org.bukkit.potion.PotionData; +import org.bukkit.potion.PotionType; + +import io.github.thebusybiscuit.cscorelib2.inventory.InvUtils; +import io.github.thebusybiscuit.cscorelib2.item.CustomItem; +import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils; +import me.mrCookieSlime.Slimefun.Lists.RecipeType; +import me.mrCookieSlime.Slimefun.Objects.Category; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe; +import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; +import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; + +/** + * + * The {@link AutoBrewer} machine with most if not all potion recipes. + * + * @author Linox + * + */ +public class AutoBrewer extends AContainer { + + private static final Map potionRecipes = new EnumMap<>(Material.class); + private static final Map fermentations = new EnumMap<>(PotionType.class); + + static { + potionRecipes.put(Material.SUGAR, PotionType.SPEED); + potionRecipes.put(Material.RABBIT_FOOT, PotionType.JUMP); + potionRecipes.put(Material.BLAZE_POWDER, PotionType.STRENGTH); + potionRecipes.put(Material.GLISTERING_MELON_SLICE, PotionType.INSTANT_HEAL); + potionRecipes.put(Material.SPIDER_EYE, PotionType.POISON); + potionRecipes.put(Material.GHAST_TEAR, PotionType.REGEN); + potionRecipes.put(Material.MAGMA_CREAM, PotionType.FIRE_RESISTANCE); + potionRecipes.put(Material.PUFFERFISH, PotionType.WATER_BREATHING); + potionRecipes.put(Material.GOLDEN_CARROT, PotionType.NIGHT_VISION); + potionRecipes.put(Material.TURTLE_HELMET, PotionType.TURTLE_MASTER); + potionRecipes.put(Material.PHANTOM_MEMBRANE, PotionType.SLOW_FALLING); + + fermentations.put(PotionType.SPEED, PotionType.SLOWNESS); + fermentations.put(PotionType.JUMP, PotionType.SLOWNESS); + fermentations.put(PotionType.INSTANT_HEAL, PotionType.INSTANT_DAMAGE); + fermentations.put(PotionType.POISON, PotionType.INSTANT_DAMAGE); + fermentations.put(PotionType.NIGHT_VISION, PotionType.INVISIBILITY); + } + + public AutoBrewer(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { + super(category, item, recipeType, recipe); + } + + @Override + protected void tick(Block b) { + BlockMenu menu = BlockStorage.getInventory(b.getLocation()); + + if (isProcessing(b)) { + int timeleft = progress.get(b); + + if (timeleft > 0) { + ChestMenuUtils.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar()); + + if (ChargableBlock.isChargable(b)) { + if (ChargableBlock.getCharge(b) < getEnergyConsumption()) { + return; + } + + ChargableBlock.addCharge(b, -getEnergyConsumption()); + progress.put(b, timeleft - 1); + } + else { + progress.put(b, timeleft - 1); + } + } + else { + menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); + + for (ItemStack item : processing.get(b).getOutput()) { + menu.pushItem(item, getOutputSlots()); + } + + progress.remove(b); + processing.remove(b); + } + } + else { + MachineRecipe recipe = findRecipe(menu); + + if (recipe != null) { + if (!InvUtils.fitAll(menu.toInventory(), recipe.getOutput(), getOutputSlots())) { + return; + } + + for (int slot : getInputSlots()) { + menu.consumeItem(slot); + } + + processing.put(b, recipe); + progress.put(b, recipe.getTicks()); + } + } + } + + private MachineRecipe findRecipe(BlockMenu menu) { + ItemStack input1 = menu.getItemInSlot(getInputSlots()[0]); + ItemStack input2 = menu.getItemInSlot(getInputSlots()[1]); + + if (input1 == null || input2 == null) { + return null; + } + + if (isPotion(input1.getType()) || isPotion(input2.getType())) { + boolean slot = isPotion(input1.getType()); + ItemStack potionItem = slot ? input1 : input2; + ItemStack ingredient = slot ? input2 : input1; + + PotionMeta potion = (PotionMeta) potionItem.getItemMeta(); + + // Reject any named items + if (ingredient.hasItemMeta()) { + return null; + } + + PotionData potionData = potion.getBasePotionData(); + ItemStack output = brew(ingredient.getType(), potionItem.getType(), potion, potionData); + + if (output == null) { + return null; + } + + output.setItemMeta(potion); + return new MachineRecipe(30, new ItemStack[] { input1, input2 }, new ItemStack[] { output }); + } + else { + return null; + } + } + + private ItemStack brew(Material input, Material potionType, PotionMeta potion, PotionData potionData) { + if (potionData.getType() == PotionType.WATER) { + if (input == Material.FERMENTED_SPIDER_EYE) { + potion.setBasePotionData(new PotionData(PotionType.WEAKNESS, false, false)); + return new ItemStack(potionType); + } + else if (input == Material.NETHER_WART) { + potion.setBasePotionData(new PotionData(PotionType.AWKWARD, false, false)); + return new ItemStack(potionType); + } + else if (potionType == Material.POTION && input == Material.GUNPOWDER) { + return new ItemStack(Material.SPLASH_POTION); + } + else if (potionType == Material.SPLASH_POTION && input == Material.DRAGON_BREATH) { + return new ItemStack(Material.LINGERING_POTION); + } + else { + return null; + } + + } + else if (input == Material.FERMENTED_SPIDER_EYE) { + potion.setBasePotionData(new PotionData(fermentations.get(potionData.getType()), false, false)); + return new ItemStack(potionType); + } + else if (input == Material.REDSTONE) { + potion.setBasePotionData(new PotionData(potionData.getType(), true, potionData.isUpgraded())); + return new ItemStack(potionType); + } + else if (input == Material.GLOWSTONE_DUST) { + potion.setBasePotionData(new PotionData(potionData.getType(), potionData.isExtended(), true)); + return new ItemStack(potionType); + } + else if (potionData.getType() == PotionType.AWKWARD && potionRecipes.containsKey(input)) { + potion.setBasePotionData(new PotionData(potionRecipes.get(input), false, false)); + return new ItemStack(potionType); + } + else { + return null; + } + } + + /** + * Checks whether a given {@link Material} is a valid Potion material. + * + * @param mat + * The {@link Material} to check + * + * @return Whether this {@link Material} is a valid potion + */ + private boolean isPotion(Material mat) { + return mat == Material.POTION || mat == Material.SPLASH_POTION || mat == Material.LINGERING_POTION; + } + + @Override + public String getInventoryTitle() { + return "&6Auto-Brewer"; + } + + @Override + public ItemStack getProgressBar() { + return new ItemStack(Material.CARROT_ON_A_STICK); + } + + @Override + public int getEnergyConsumption() { + return 6; + } + + @Override + public int getSpeed() { + return 1; + } + + @Override + public String getMachineIdentifier() { + return "AUTO_BREWER"; + } + + @Override + public int getCapacity() { + return 128; + } +} diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/FoodFabricator.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/FoodFabricator.java index ffcaab169..e86ccc5ed 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/FoodFabricator.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/FoodFabricator.java @@ -20,18 +20,18 @@ public abstract class FoodFabricator extends AContainer { @Override protected void registerDefaultRecipes() { - registerRecipe(12, new ItemStack[] { SlimefunItems.CAN, new ItemStack(Material.WHEAT) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.WHEAT_ORGANIC_FOOD, OrganicFood.OUTPUT) }); - registerRecipe(12, new ItemStack[] { SlimefunItems.CAN, new ItemStack(Material.CARROT) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.CARROT_ORGANIC_FOOD, OrganicFood.OUTPUT) }); - registerRecipe(12, new ItemStack[] { SlimefunItems.CAN, new ItemStack(Material.POTATO) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.POTATO_ORGANIC_FOOD, OrganicFood.OUTPUT) }); - registerRecipe(12, new ItemStack[] { SlimefunItems.CAN, new ItemStack(Material.WHEAT_SEEDS) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.SEEDS_ORGANIC_FOOD, OrganicFood.OUTPUT) }); - registerRecipe(12, new ItemStack[] { SlimefunItems.CAN, new ItemStack(Material.BEETROOT) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.BEETROOT_ORGANIC_FOOD, OrganicFood.OUTPUT) }); - registerRecipe(12, new ItemStack[] { SlimefunItems.CAN, new ItemStack(Material.MELON_SLICE) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.MELON_ORGANIC_FOOD, OrganicFood.OUTPUT) }); - registerRecipe(12, new ItemStack[] { SlimefunItems.CAN, new ItemStack(Material.APPLE) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.APPLE_ORGANIC_FOOD, OrganicFood.OUTPUT) }); - registerRecipe(12, new ItemStack[] { SlimefunItems.CAN, new ItemStack(Material.DRIED_KELP) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.KELP_ORGANIC_FOOD, OrganicFood.OUTPUT) }); - registerRecipe(12, new ItemStack[] { SlimefunItems.CAN, new ItemStack(Material.COCOA_BEANS) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.COCOA_ORGANIC_FOOD, OrganicFood.OUTPUT) }); + registerRecipe(12, new ItemStack[] { SlimefunItems.TIN_CAN, new ItemStack(Material.WHEAT) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.WHEAT_ORGANIC_FOOD, OrganicFood.OUTPUT) }); + registerRecipe(12, new ItemStack[] { SlimefunItems.TIN_CAN, new ItemStack(Material.CARROT) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.CARROT_ORGANIC_FOOD, OrganicFood.OUTPUT) }); + registerRecipe(12, new ItemStack[] { SlimefunItems.TIN_CAN, new ItemStack(Material.POTATO) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.POTATO_ORGANIC_FOOD, OrganicFood.OUTPUT) }); + registerRecipe(12, new ItemStack[] { SlimefunItems.TIN_CAN, new ItemStack(Material.WHEAT_SEEDS) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.SEEDS_ORGANIC_FOOD, OrganicFood.OUTPUT) }); + registerRecipe(12, new ItemStack[] { SlimefunItems.TIN_CAN, new ItemStack(Material.BEETROOT) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.BEETROOT_ORGANIC_FOOD, OrganicFood.OUTPUT) }); + registerRecipe(12, new ItemStack[] { SlimefunItems.TIN_CAN, new ItemStack(Material.MELON_SLICE) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.MELON_ORGANIC_FOOD, OrganicFood.OUTPUT) }); + registerRecipe(12, new ItemStack[] { SlimefunItems.TIN_CAN, new ItemStack(Material.APPLE) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.APPLE_ORGANIC_FOOD, OrganicFood.OUTPUT) }); + registerRecipe(12, new ItemStack[] { SlimefunItems.TIN_CAN, new ItemStack(Material.DRIED_KELP) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.KELP_ORGANIC_FOOD, OrganicFood.OUTPUT) }); + registerRecipe(12, new ItemStack[] { SlimefunItems.TIN_CAN, new ItemStack(Material.COCOA_BEANS) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.COCOA_ORGANIC_FOOD, OrganicFood.OUTPUT) }); if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_14)) { - registerRecipe(12, new ItemStack[] { SlimefunItems.CAN, new ItemStack(Material.SWEET_BERRIES) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.SWEET_BERRIES_ORGANIC_FOOD, OrganicFood.OUTPUT) }); + registerRecipe(12, new ItemStack[] { SlimefunItems.TIN_CAN, new ItemStack(Material.SWEET_BERRIES) }, new ItemStack[] { new SlimefunItemStack(SlimefunItems.SWEET_BERRIES_ORGANIC_FOOD, OrganicFood.OUTPUT) }); } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/MagicPills.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/MagicalZombiePills.java similarity index 74% rename from src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/MagicPills.java rename to src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/MagicalZombiePills.java index 3d30b3b9f..34f89f505 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/MagicPills.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/magical/MagicalZombiePills.java @@ -19,15 +19,18 @@ import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; /** * This {@link SlimefunItem} allows you to convert any {@link ZombieVillager} to * their {@link Villager} variant. It is also one of the very few utilisations of {@link EntityInteractHandler}. + * + * This item does not work on earlier versions than 1.14 as the {@link ZombieVillager} {@link EntityType} + * did not exist back then. * * @author Linox * * @see EntityInteractHandler * */ -public class MagicPills extends SimpleSlimefunItem { +public class MagicalZombiePills extends SimpleSlimefunItem { - public MagicPills(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { + public MagicalZombiePills(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) { super(category, item, recipeType, recipe, recipeOutput); } @@ -40,14 +43,10 @@ public class MagicPills extends SimpleSlimefunItem { p.playSound(p.getLocation(), Sound.ENTITY_ZOMBIE_VILLAGER_CONVERTED, 1, 1); ZombieVillager zombieVillager = (ZombieVillager) entity; - if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_14)) { - zombieVillager.setConversionTime(1); - if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_15)) { - zombieVillager.setConversionPlayer(p); - } + zombieVillager.setConversionTime(1); - } else { - zombieVillager.setVillager(true); + if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_15)) { + zombieVillager.setConversionPlayer(p); } } }; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/misc/OrganicFood.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/misc/OrganicFood.java index a25bba45c..10bccbdee 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/misc/OrganicFood.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/misc/OrganicFood.java @@ -14,7 +14,7 @@ public class OrganicFood extends SlimefunItem { public static final int OUTPUT = 2; public OrganicFood(Category category, SlimefunItemStack item, Material ingredient) { - super(category, item, RecipeType.FOOD_FABRICATOR, new ItemStack[] { SlimefunItems.CAN, new ItemStack(ingredient), null, null, null, null, null, null, null }, new SlimefunItemStack(item, OUTPUT)); + super(category, item, RecipeType.FOOD_FABRICATOR, new ItemStack[] { SlimefunItems.TIN_CAN, new ItemStack(ingredient), null, null, null, null, null, null, null }, new SlimefunItemStack(item, OUTPUT)); } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/PlayerInteractEntityListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/PlayerInteractEntityListener.java index fd8e98e7c..64e4a6d4e 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/PlayerInteractEntityListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/PlayerInteractEntityListener.java @@ -29,19 +29,22 @@ public class PlayerInteractEntityListener implements Listener { @EventHandler public void onInteractEntity(PlayerInteractAtEntityEvent e) { - - if (!e.getRightClicked().isValid()) return; + if (!e.getRightClicked().isValid()) { + return; + } ItemStack itemStack; + if (e.getHand() == EquipmentSlot.OFF_HAND) { itemStack = e.getPlayer().getInventory().getItemInOffHand(); - } else { + } + else { itemStack = e.getPlayer().getInventory().getItemInMainHand(); } - SlimefunItem sfItem = SlimefunItem.getByItem(itemStack); - if (sfItem == null) return; - if (Slimefun.hasUnlocked(e.getPlayer(), sfItem, true)) { + SlimefunItem sfItem = SlimefunItem.getByItem(itemStack); + + if (sfItem != null && Slimefun.hasUnlocked(e.getPlayer(), sfItem, true)) { sfItem.callItemHandler(EntityInteractHandler.class, handler -> handler.onInteract(e.getPlayer(), e.getRightClicked(), itemStack, e.getHand() == EquipmentSlot.OFF_HAND)); } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/DefaultCategories.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/DefaultCategories.java index b5b3af632..bfedcc391 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/DefaultCategories.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/DefaultCategories.java @@ -45,7 +45,7 @@ class DefaultCategories { protected final Category magicalArmor = new Category(new NamespacedKey(SlimefunPlugin.instance, "magical_armor"), new CustomItem(SlimefunItems.ENDER_HELMET, "&7Magical Armor"), 2); // Resources and tech stuff - protected final Category misc = new Category(new NamespacedKey(SlimefunPlugin.instance, "misc"), new CustomItem(SlimefunItems.CAN, "&7Miscellaneous"), 2); + protected final Category misc = new Category(new NamespacedKey(SlimefunPlugin.instance, "misc"), new CustomItem(SlimefunItems.TIN_CAN, "&7Miscellaneous"), 2); protected final Category technicalComponents = new Category(new NamespacedKey(SlimefunPlugin.instance, "tech_misc"), new CustomItem(SlimefunItems.HEATING_COIL, "&7Technical Components"), 2); protected final Category technicalGadgets = new Category(new NamespacedKey(SlimefunPlugin.instance, "technical_gadgets"), new CustomItem(SlimefunItems.STEEL_JETPACK, "&7Technical Gadgets"), 3); protected final Category resources = new Category(new NamespacedKey(SlimefunPlugin.instance, "resources"), new CustomItem(SlimefunItems.SYNTHETIC_SAPPHIRE, "&7Resources"), 1); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/ResearchSetup.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/ResearchSetup.java index 52b1efae7..49360af23 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/ResearchSetup.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/ResearchSetup.java @@ -109,7 +109,7 @@ public final class ResearchSetup { register("crushed_ore", 81, "Ore Purification", 25, SlimefunItems.CRUSHED_ORE, SlimefunItems.PULVERIZED_ORE, SlimefunItems.PURE_ORE_CLUSTER); register("redstone_alloy", 84, "Redstone Alloy", 16, SlimefunItems.REDSTONE_ALLOY); register("carbonado_tools", 85, "Top Tier Machines", 24, SlimefunItems.CARBONADO_MULTI_TOOL, SlimefunItems.CARBONADO_JETPACK, SlimefunItems.CARBONADO_JETBOOTS); - register("first_aid", 86, "First Aid", 2, SlimefunItems.CLOTH, SlimefunItems.RAG, SlimefunItems.BANDAGE, SlimefunItems.SPLINT, SlimefunItems.CAN, SlimefunItems.VITAMINS, SlimefunItems.MEDICINE); + register("first_aid", 86, "First Aid", 2, SlimefunItems.CLOTH, SlimefunItems.RAG, SlimefunItems.BANDAGE, SlimefunItems.SPLINT, SlimefunItems.TIN_CAN, SlimefunItems.VITAMINS, SlimefunItems.MEDICINE); register("gold_armor", 87, "Shiny Armor", 13, SlimefunItems.GOLD_HELMET, SlimefunItems.GOLD_CHESTPLATE, SlimefunItems.GOLD_LEGGINGS, SlimefunItems.GOLD_BOOTS); register("night_vision_googles", 89, "Night Vision Goggles", 10, SlimefunItems.NIGHT_VISION_GOGGLES); register("pickaxe_of_containment", 90, "Pickaxe of Containment", 14, SlimefunItems.PICKAXE_OF_CONTAINMENT, SlimefunItems.BROKEN_SPAWNER); @@ -265,8 +265,9 @@ public final class ResearchSetup { register("tree_growth_accelerator", 256, "Faster Trees", 18, SlimefunItems.TREE_GROWTH_ACCELERATOR); register("industrial_miner", 95, "Industrial Mining", 28, SlimefunItems.INDUSTRIAL_MINER); register("advanced_industrial_miner", 98, "Better Mining", 36, SlimefunItems.ADVANCED_INDUSTRIAL_MINER); - register("magic_pills", 257, "De-Zombification", 22, SlimefunItems.MAGIC_PILLS); - register("shulker_shell", 258, "Synthetic Shulkers", 30, new ItemStack(Material.SHULKER_SHELL)); + register("magical_zombie_pills", 257, "De-Zombification", 22, SlimefunItems.MAGICAL_ZOMBIE_PILLS); + register("auto_brewer", 258, "Industrial Brewery", 30, SlimefunItems.AUTO_BREWER); + register("shulker_shell", 259, "Synthetic Shulkers", 30, new ItemStack(Material.SHULKER_SHELL)); } private static void register(String key, int id, String name, int defaultCost, ItemStack... items) { diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/SlimefunItemSetup.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/SlimefunItemSetup.java index ff5c54b35..5682fe828 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/SlimefunItemSetup.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/SlimefunItemSetup.java @@ -71,6 +71,7 @@ import io.github.thebusybiscuit.slimefun4.implementation.items.electric.generato import io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.AnimalGrowthAccelerator; import io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.AutoAnvil; import io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.AutoBreeder; +import io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.AutoBrewer; import io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.AutoDisenchanter; import io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.AutoDrier; import io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.AutoEnchanter; @@ -121,7 +122,7 @@ import io.github.thebusybiscuit.slimefun4.implementation.items.magical.InfusedMa import io.github.thebusybiscuit.slimefun4.implementation.items.magical.KnowledgeFlask; import io.github.thebusybiscuit.slimefun4.implementation.items.magical.KnowledgeTome; import io.github.thebusybiscuit.slimefun4.implementation.items.magical.MagicEyeOfEnder; -import io.github.thebusybiscuit.slimefun4.implementation.items.magical.MagicPills; +import io.github.thebusybiscuit.slimefun4.implementation.items.magical.MagicalZombiePills; import io.github.thebusybiscuit.slimefun4.implementation.items.magical.SoulboundItem; import io.github.thebusybiscuit.slimefun4.implementation.items.magical.SoulboundRune; import io.github.thebusybiscuit.slimefun4.implementation.items.magical.StormStaff; @@ -290,7 +291,8 @@ public final class SlimefunItemSetup { new Compressor(categories.basicMachines, SlimefunItems.COMPRESSOR).register(plugin); new SlimefunItem(categories.magicalResources, SlimefunItems.MAGIC_LUMP_1, RecipeType.GRIND_STONE, - new ItemStack[] {new ItemStack(Material.NETHER_WART), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.MAGIC_LUMP_1, 2)) + new ItemStack[] {new ItemStack(Material.NETHER_WART), null, null, null, null, null, null, null, null}, + new CustomItem(SlimefunItems.MAGIC_LUMP_1, 2)) .register(plugin); new SlimefunItem(categories.magicalResources, SlimefunItems.MAGIC_LUMP_2, RecipeType.ENHANCED_CRAFTING_TABLE, @@ -644,7 +646,8 @@ public final class SlimefunItemSetup { .register(plugin); new SlimefunItem(categories.misc, SlimefunItems.CHAIN, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {null, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, null}, new CustomItem(SlimefunItems.CHAIN, 8)) + new ItemStack[] {null, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null, null}, + new CustomItem(SlimefunItems.CHAIN, 8)) .register(plugin); new SlimefunItem(categories.misc, SlimefunItems.HOOK, RecipeType.ENHANCED_CRAFTING_TABLE, @@ -781,17 +784,18 @@ public final class SlimefunItemSetup { new StormStaff(categories.magicalGadgets, SlimefunItems.STAFF_STORM, RecipeType.ANCIENT_ALTAR, new ItemStack[] {SlimefunItems.LIGHTNING_RUNE, SlimefunItems.ENDER_LUMP_3, SlimefunItems.LIGHTNING_RUNE, SlimefunItems.STAFF_WATER, SlimefunItems.MAGIC_SUGAR, SlimefunItems.STAFF_WIND, SlimefunItems.LIGHTNING_RUNE, SlimefunItems.ENDER_LUMP_3, SlimefunItems.LIGHTNING_RUNE}) .register(plugin); + + ItemStack weaknessPotion = new ItemStack(Material.POTION); + PotionMeta meta = (PotionMeta) weaknessPotion.getItemMeta(); + meta.setBasePotionData(new PotionData(PotionType.WEAKNESS, false, false)); + weaknessPotion.setItemMeta(meta); + + new MagicalZombiePills(categories.magicalGadgets, SlimefunItems.MAGICAL_ZOMBIE_PILLS, RecipeType.MAGIC_WORKBENCH, + new ItemStack[] {new ItemStack(Material.GOLD_INGOT), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.GOLD_INGOT), new ItemStack(Material.APPLE), weaknessPotion, new ItemStack(Material.APPLE), new ItemStack(Material.GOLD_INGOT), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.GOLD_INGOT)}, + new CustomItem(SlimefunItems.MAGICAL_ZOMBIE_PILLS, 2)) + .register(plugin); } - ItemStack magicPillsRecipePotion = new ItemStack(Material.POTION); - PotionMeta meta = (PotionMeta) magicPillsRecipePotion.getItemMeta(); - meta.setBasePotionData(new PotionData(PotionType.WEAKNESS, false, false)); - magicPillsRecipePotion.setItemMeta(meta); - new MagicPills(categories.magicalGadgets, SlimefunItems.MAGIC_PILLS, RecipeType.MAGIC_WORKBENCH, - new ItemStack[] {new ItemStack(Material.GOLD_INGOT), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.GOLD_INGOT), new ItemStack(Material.APPLE), magicPillsRecipePotion, new ItemStack(Material.APPLE), new ItemStack(Material.GOLD_INGOT), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.GOLD_INGOT)}, - new CustomItem(SlimefunItems.MAGIC_PILLS, 4)) - .register(plugin); - new SmeltersPickaxe(categories.tools, SlimefunItems.SMELTERS_PICKAXE, RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.LAVA_CRYSTAL, null, SlimefunItems.FERROSILICON, null, null, SlimefunItems.FERROSILICON, null}) .register(plugin); @@ -953,7 +957,8 @@ public final class SlimefunItemSetup { }, "GOLD_12K", false, plugin); new SlimefunItem(categories.misc, SlimefunItems.CLOTH, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {new ItemStack(Material.WHITE_WOOL), null, null, null, null, null, null, null, null}, new CustomItem(SlimefunItems.CLOTH, 8)) + new ItemStack[] {new ItemStack(Material.WHITE_WOOL), null, null, null, null, null, null, null, null}, + new CustomItem(SlimefunItems.CLOTH, 8)) .register(plugin); new Rag(categories.usefulItems, SlimefunItems.RAG, RecipeType.ENHANCED_CRAFTING_TABLE, @@ -970,13 +975,13 @@ public final class SlimefunItemSetup { new CustomItem(SlimefunItems.SPLINT, 4)) .register(plugin); - new SlimefunItem(categories.misc, SlimefunItems.CAN, RecipeType.ENHANCED_CRAFTING_TABLE, + new SlimefunItem(categories.misc, SlimefunItems.TIN_CAN, RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, null, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT, SlimefunItems.TIN_INGOT}, - new CustomItem(SlimefunItems.CAN, 4)) + new CustomItem(SlimefunItems.TIN_CAN, 8)) .register(plugin); new Vitamins(categories.usefulItems, SlimefunItems.VITAMINS, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.APPLE), new ItemStack(Material.RED_MUSHROOM), new ItemStack(Material.SUGAR), null, null, null, null, null}) + new ItemStack[] {SlimefunItems.TIN_CAN, new ItemStack(Material.APPLE), new ItemStack(Material.RED_MUSHROOM), new ItemStack(Material.SUGAR), null, null, null, null, null}) .register(plugin); new Medicine(categories.usefulItems, SlimefunItems.MEDICINE, RecipeType.ENHANCED_CRAFTING_TABLE, @@ -1976,6 +1981,10 @@ public final class SlimefunItemSetup { .register(plugin); } + new AutoBrewer(categories.electricity, SlimefunItems.AUTO_BREWER, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.HEATING_COIL, null, SlimefunItems.REINFORCED_PLATE, new ItemStack(Material.BREWING_STAND), SlimefunItems.REINFORCED_PLATE, null, SlimefunItems.ELECTRIC_MOTOR, null}) + .register(plugin); + new ElectricPress(categories.electricity, SlimefunItems.ELECTRIC_PRESS, RecipeType.ENHANCED_CRAFTING_TABLE, new ItemStack[] {new ItemStack(Material.PISTON), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PISTON), null, SlimefunItems.MEDIUM_CAPACITOR, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT}) { @@ -2784,7 +2793,7 @@ public final class SlimefunItemSetup { .register(plugin); new FoodFabricator(categories.electricity, SlimefunItems.FOOD_FABRICATOR, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.BILLON_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.CAN, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) { + new ItemStack[] {SlimefunItems.BILLON_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.TIN_CAN, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.TIN_CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) { @Override public int getEnergyConsumption() { @@ -2856,7 +2865,7 @@ public final class SlimefunItemSetup { .register(plugin); new AutoBreeder(categories.electricity, SlimefunItems.AUTO_BREEDER, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.GOLD_18K, SlimefunItems.CAN, SlimefunItems.GOLD_18K, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.HAY_BLOCK), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.LEAD_INGOT}) + new ItemStack[] {SlimefunItems.GOLD_18K, SlimefunItems.TIN_CAN, SlimefunItems.GOLD_18K, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.HAY_BLOCK), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.LEAD_INGOT}) .register(plugin); new AnimalGrowthAccelerator(categories.electricity, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, RecipeType.ENHANCED_CRAFTING_TABLE, @@ -2872,7 +2881,7 @@ public final class SlimefunItemSetup { .register(plugin); new FoodComposter(categories.electricity, SlimefunItems.FOOD_COMPOSTER, RecipeType.ENHANCED_CRAFTING_TABLE, - new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.CAN, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) { + new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.TIN_CAN, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.TIN_CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) { @Override public int getEnergyConsumption() { diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java b/src/main/java/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java index 4f4f31839..844b29f52 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Lists/SlimefunItems.java @@ -31,7 +31,7 @@ public final class SlimefunItems { public static final SlimefunItemStack GRAPPLING_HOOK = io.github.thebusybiscuit.slimefun4.implementation.SlimefunItems.GRAPPLING_HOOK; public static final SlimefunItemStack SOLAR_HELMET = io.github.thebusybiscuit.slimefun4.implementation.SlimefunItems.SOLAR_HELMET; public static final SlimefunItemStack CLOTH = io.github.thebusybiscuit.slimefun4.implementation.SlimefunItems.CLOTH; - public static final SlimefunItemStack CAN = io.github.thebusybiscuit.slimefun4.implementation.SlimefunItems.CAN; + public static final SlimefunItemStack CAN = io.github.thebusybiscuit.slimefun4.implementation.SlimefunItems.TIN_CAN; public static final SlimefunItemStack NIGHT_VISION_GOGGLES = io.github.thebusybiscuit.slimefun4.implementation.SlimefunItems.NIGHT_VISION_GOGGLES; public static final SlimefunItemStack FARMER_SHOES = io.github.thebusybiscuit.slimefun4.implementation.SlimefunItems.FARMER_SHOES; public static final SlimefunItemStack INFUSED_MAGNET = io.github.thebusybiscuit.slimefun4.implementation.SlimefunItems.INFUSED_MAGNET; diff --git a/src/main/resources/languages/categories_ja.yml b/src/main/resources/languages/categories_ja.yml index 7b90882ea..cd73641bf 100644 --- a/src/main/resources/languages/categories_ja.yml +++ b/src/main/resources/languages/categories_ja.yml @@ -23,3 +23,4 @@ slimefun: easter: 復活祭(4月) birthday: TheBusyBiscuit生誕祭(10月26日) halloween: ハロウィン(10月31日) + androids: プログラム制御アンドロイド diff --git a/src/main/resources/languages/categories_ko.yml b/src/main/resources/languages/categories_ko.yml index 75e400995..00f5e4c95 100644 --- a/src/main/resources/languages/categories_ko.yml +++ b/src/main/resources/languages/categories_ko.yml @@ -43,3 +43,4 @@ slimefun: halloween: '할로윈(10월 31일) ' + androids: 프로그래밍 가능한 안드로이드 diff --git a/src/main/resources/languages/categories_tl.yml b/src/main/resources/languages/categories_tl.yml new file mode 100644 index 000000000..8503ddf9d --- /dev/null +++ b/src/main/resources/languages/categories_tl.yml @@ -0,0 +1,26 @@ +--- +slimefun: + weapons: Mga Armas + tools: Mga Tools + items: Mga Aytem + food: Mga Pagkain + basic_machines: Mga Pangunahing Makina + electricity: Enerhiya at Elektrisidad + gps: Mga Makinang GPS-Based + armor: Mga Magkabaluti + magical_items: Mga Mahiwagang Aytem + magical_gadgets: Mga Mahiwagang Gadyet + misc: Mga Samut-Saring Aytem + technical_gadgets: Mga Teknikal Gadyet + resources: Mga Mapagkukunan + cargo: Pamamahala ng Kargamento + tech_misc: Mga Komponent na Teknikal + magical_armor: Mga Mahiwagang Magkabaluti + talismans: Mga Anting-anting (Baitang I) + ender_talismans: Mga Anting-anting na Ender (Baitang II) + christmas: Pasko (Disyembre) + valentines_day: Araw ng mga Puso (14th Pebrero) + easter: Mahal na Araw (Abril) + birthday: Ang Kaarawan ni TheBusyBiscuit (26th Oktubre) + halloween: Undas (31st Oktubre) + androids: Mga Androids na Maipoprograma diff --git a/src/main/resources/languages/messages_en.yml b/src/main/resources/languages/messages_en.yml index 397bb69bb..e0a84ce44 100644 --- a/src/main/resources/languages/messages_en.yml +++ b/src/main/resources/languages/messages_en.yml @@ -155,6 +155,10 @@ messages: - '&742. The answer is 42.' - '&7A Walshy a day will keep the troubles away.' - '&7Never dig straight down!' + - '&7Tis but a flesh wound!' + - '&7Always look on the bright side of life!' + - '&7This one was actually a Biscuit and not a Cookie' + - '&7Neon signs are LIT!' machines: pattern-not-found: '&eSorry, I could not recognize this Recipe. Please place the Items in the correct pattern into the Dispenser.' @@ -323,6 +327,7 @@ languages: ja: 'Japanese' fa: 'Persian' th: 'Thai' + tl: 'Tagalog' ro: 'Romanian' bg: 'Bulgarian' ko: 'Korean' @@ -330,4 +335,4 @@ languages: hr: 'Croatian' mk: 'Macedonian' sr: 'Serbian' - be: 'Belarusian' \ No newline at end of file + be: 'Belarusian' diff --git a/src/main/resources/languages/messages_ja.yml b/src/main/resources/languages/messages_ja.yml index 103919739..3daafa147 100644 --- a/src/main/resources/languages/messages_ja.yml +++ b/src/main/resources/languages/messages_ja.yml @@ -1,238 +1,133 @@ --- -android: - scripts: - already-uploaded: "&4このスクリプトはアップロード済みです" - editor: スクリプトエディタ - enter-name: - - - - "&eスクリプトの名前を入力してください" - instructions: - ATTACK_ANIMALS: "&4攻撃&c(動物)" - ATTACK_ANIMALS_ADULT: "&4攻撃&c(動物&7[親]&c)" - ATTACK_MOBS: "&4攻撃&c(モンスター)" - ATTACK_MOBS_ANIMALS: "&4攻撃&c(モンスター・動物)" - CATCH_FISH: "&b釣り" - CHOP_TREE: "&c伐採・植林" - DIG_DOWN: "&b下を採掘" - DIG_FORWARD: "&b前を採掘" - DIG_UP: "&b上を採掘" - FARM_DOWN: "&b収穫・植え直し&7(下方)" - FARM_EXOTIC_DOWN: "&bExoticGardenの収穫・植え直し&7(下方)" - FARM_EXOTIC_FORWARD: "&bExoticGardenの収穫・植え直し" - FARM_FORWARD: "&b収穫・植え直し" - GO_DOWN: "&7下へ移動" - GO_FORWARD: "&7前へ移動" - GO_UP: "&7上へ移動" - INTERFACE_FUEL: "&c燃料をInterfaceから取り出す" - INTERFACE_ITEMS: "&9所持アイテムをInterfaceに入れる" - MOVE_AND_DIG_DOWN: "&b下へ移動・採掘" - MOVE_AND_DIG_FORWARD: "&b前へ移動・採掘" - MOVE_AND_DIG_UP: "&b上へ移動・採掘" - REPEAT: "&9繰り返し" - START: "&2開始" - TURN_LEFT: "&7左へ旋回" - TURN_RIGHT: "&7右へ旋回" - WAIT: "&e0.5秒待機" - rating: - already: "&4このスクリプトは評価済みです!" - own: "&4自身のスクリプトは評価できません!" - uploaded: - - "&bアップロード中…" - - "&aスクリプトのアップロード完了!" - started: "&7アンドロイド動作開始" - stopped: "&7アンドロイド動作停止" -anvil: - not-working: "&4Slimefunアイテムは金床を利用できません!" -backpack: - already-open: "&cこのバックパックはどこかで使用中です!" - no-stack: "&cバックパックはスタックされていると使用できません!" commands: + help: コマンドの使い方を表示 cheat: Slimefunガイドをチートモードで開く give: 指定したプレイヤーにSlimefunアイテムを与える guide: Slimefunガイドを取得 - help: コマンドの使い方を表示 + timings: サーバの負荷状況を表示 + teleporter: 指定したプレイヤーのウェイポイントを表示 + versions: バージョンについて + search: Slimefunガイド内を検索 open_guide: Slimefunガイドを開く + stats: プレイヤー情報を表示 research: description: 指定したプレイヤーのリサーチ状況を操作 reset: "&c%player%のリサーチ状況を初期化しました" reset-target: "&cリサーチ状況が初期化されました" - search: Slimefunガイド内を検索 - stats: プレイヤー情報を表示 - teleporter: 指定したプレイヤーのウェイポイントを表示 - timings: サーバの負荷状況を表示 - versions: バージョンについて backpack: description: 生成済みのバックパックを取り出します invalid-id: "&4IDは非負整数にしてください!" player-never-joined: "&4その名前のプレイヤーが見つかりません!" backpack-does-not-exist: "&4指定したバックパックは存在しません!" restored-backpack-given: "&aバックパックが返還されました!" -gps: - deathpoint: "&4死亡地点 &7%date%" - geo: - scan-required: "&4惑星スキャンが必要です!&cGEO-Scannerでスキャンしてください!" - insufficient-complexity: - - "&4GPSネットワークの複雑さ不足: &c%complexity%" - - "&4a) GPSネットワークをセットアップしていない" - - "&4b) GPSネットワークの複雑さが不足している" - waypoint: - added: "&a新しいウェイポイントを登録しました" - max: "&4ウェイポイント数の上限に到達しています" - new: "&eウェイポイント名をチャットで入力してください&7(カラーコード対応)" guide: - back: - guide: Slimefunガイドへ戻る - settings: 設定画面へ戻る - title: 戻る + search: + message: "&b検索ワードをチャットで入力してください" + name: "&7検索…" + tooltip: "&bクリックでアイテムの検索" + inventory: '検索結果: %item%' + lore: + - "&b何について検索しますか?" + - "&7検索ワードをチャットで入力してください" cheat: no-multiblocks: "&4マルチブロックは取得できません" - credits: - commit: Commit - commits: Commits - profile-link: クリックでGitHubのプロファイルを開く - roles: - developer: "&6Developer" - resourcepack: "&cResourcepack Artist" - translator: "&9Translator" - wiki: "&3Wiki Editor" languages: + updated: "&a言語設定を変更しました: &b%lang%" + translations: + name: "&a他の言語をお探しですか?" + lore: クリックで他の言語に翻訳する select: クリックでこの言語を選択 select-default: クリックでデフォルトを選択 selected-language: '選択中の言語:' - translations: - lore: クリックで他の言語に翻訳する - name: "&a他の言語をお探しですか?" - updated: "&a言語設定を変更しました: &b%lang%" + title: + main: Slimefunガイド + settings: 設定・情報 + languages: 言語の選択 + credits: Slimefun4 開発者 + wiki: Slimefun4 Wiki + addons: Slimefun4 アドオン + bugs: バグ報告 + source: ソースコード + credits: + commit: Commit + commits: Commits + roles: + developer: "&6Developer" + wiki: "&3Wiki Editor" + resourcepack: "&cResourcepack Artist" + translator: "&9Translator" + profile-link: クリックでGitHubのプロファイルを開く + pages: + previous: 前のページ + next: 次のページ + tooltips: + open-category: クリックで開く + versions-notice: バグ報告をお願いします! + wiki: このアイテムを公式Wikiで確認する + recipes: + machine: 使用可能なレシピ + miner: 採掘可能な資源 + generator: 使用可能な燃料 + gold-pan: 入手可能な資源 + back: + title: 戻る + guide: Slimefunガイドへ戻る + settings: 設定画面へ戻る locked: ロック中 locked-category: - このカテゴリを開放するには - 以下のカテゴリの全アイテムを - リサーチしてください - pages: - next: 次のページ - previous: 前のページ - search: - inventory: '検索結果: %item%' - lore: - - "&b何について検索しますか?" - - "&7検索ワードをチャットで入力してください" - message: "&b検索ワードをチャットで入力してください" - name: "&7検索…" - tooltip: "&bクリックでアイテムの検索" - title: - addons: Slimefun4 アドオン - bugs: バグ報告 - credits: Slimefun4 開発者 - languages: 言語の選択 - main: Slimefunガイド - settings: 設定・情報 - source: ソースコード - wiki: Slimefun4 Wiki - tooltips: - open-category: クリックで開く - recipes: - generator: 使用可能な燃料 - gold-pan: 入手可能な資源 - machine: 使用可能なレシピ - miner: 採掘可能な資源 - versions-notice: バグ報告をお願いします! - wiki: このアイテムを公式Wikiで確認する -inventory: - no-access: "&4アクセス権がありません" -languages: - af: アフリカーンス語 - ar: アラビア語 - be: ベラルーシ語 - bg: ブルガリア語 - cs: チェコ語 - da: デンマーク語 - de: ドイツ語 - default: サーバデフォルト - el: ギリシャ語 - en: 英語 - es: スペイン語 - fa: ペルシア語 - fi: フィンランド語 - fr: フランス語 - he: ヘブライ語 - hr: クロアチア語 - hu: ハンガリー語 - id: インドネシア語 - it: イタリア語 - ja: 日本語 - ko: 韓国語 - lv: ラトビア語 - mk: マケドニア語 - ms: マレー語 - nl: オランダ語 - 'no': ノルウェー語 - pl: ポーランド語 - pt: ポルトガル語(ポルトガル) - pt-BR: ポルトガル語(ブラジル) - ro: ルーマニア語 - ru: ロシア語 - sk: スロバキア語 - sr: セルビア語 - sv: スウェーデン語 - th: タイ語 - tr: トルコ語 - uk: ウクライナ語 - vi: ベトナム語 - zh-CN: 中国語(中国) - zh-TW: 中国語(台湾) -machines: - ANCIENT_ALTAR: - not-enough-pedestals: "&4祭壇にAncient Pedestalが不足しています &c(%pedestals% / 8)" - unknown-catalyst: "&4不明な素材です!&c正しいレシピを使用してください" - unknown-recipe: "&4不明なレシピです!&c正しいレシピを使用してください" - ANCIENT_PEDESTAL: - obstructed: "&4Ancient Pedestalが塞がれています!&c上のブロックを破壊してください" - CARGO_NODES: - must-be-placed: "&4チェストや機械に対して設置してください!" - ELEVATOR: - click-to-teleport: "&eクリック&7でこの階に移動:" - current-floor: "&e現在の階:" - enter-name: "&7指定したい階の名前をチャットで入力してください&r(カラーコード対応)" - named: "&2階の名前を変更しました: &r%floor%" - no-destinations: "&4他の階が見つかりません" - pick-a-floor: "&3- 行先の選択 -" - full-inventory: "&eインベントリが一杯です!" - GPS_CONTROL_PANEL: - title: GPSコントロールパネル - transmitters: GPS送信機一覧 - waypoints: ウェイポイント一覧 - HOLOGRAM_PROJECTOR: - enter-text: "&7指定したい文字列をチャットに入力してください&r(カラーコード対応)" - inventory-title: ホログラムエディタ - ignition-chamber-no-flint: "&cIgnition Chamberに火打石と打ち金がありません" - in-use: "&cこのブロックは他のプレイヤーが開いています" - pattern-not-found: "&eレシピが確認できません、アイテムを正しく配置してください" - TELEPORTER: - cancelled: "&4テレポート中断!" - gui: - time: 推定時間 - title: あなたのウェイポイント - tooltip: クリックでテレポート - invulnerability: "&b&l30秒間の無敵が付与されました!" - teleported: "&3テレポート完了!" - teleporting: "&3テレポート中…" - unknown-material: "&eアイテムを識別できません、レシピ通りに配置してください" - wrong-item: "&eそのアイテムは識別できません、レシピから正しいアイテムを確認してください" - INDUSTRIAL_MINER: - no-fuel: "&cIndustrial Minerは燃料切れです!上のチェストに燃料を補充してください。" - piston-facing: "&cIndustrial Minerのピストンは上向きに設置してください!" - piston-space: "&cピストンの可動するスペースが必要です!" - destroyed: "&cIndustrial Minerは破壊されました。" - already-running: "&cこのIndustrial Minerは稼働中です!" - full-chest: "&cIndustrial Minerのチェストが一杯です!" - no-permission: "&4Industrial Minerを使う権限がありません!" - finished: "&eIndustrial Minerの稼働完了!合計で%ores%個の鉱石を入手しました!" messages: - cannot-place: "&cこの場所には設置できません" - diet-cookie: "&e体が軽くなったように感じる…" + not-researched: "&4知識が不足しています" + not-enough-xp: "&4リサーチの遂行に必要な経験値が足りません" + unlocked: '&bリサーチが完了しました &7"%research%"' + only-players: "&4プレイヤー専用コマンドです" + unknown-player: "&4プレイヤーが見つかりません: &c%player%" + no-permission: "&4権限がありません" + usage: "&4使用法: &c%usage%" + not-online: "&4%player% &cはオンラインではありません!" + not-valid-item: "&4%item% &cは正しくないアイテムです" + not-valid-amount: "&4%amount% &cの部分には、正の整数を指定してください" + given-item: "&b%item%を%amount%個与えられました" + give-item: "&b%player%に%item%を%amount%個与えました" + not-valid-research: "&4%research%&cは正しくないリサーチです" + give-research: "&b%player%のリサーチ%research%を完了させました" + hungry: "&c空腹のため使えません" + mode-change: "&b%device%のモード変更: &9%mode%" disabled-in-world: "&4&lこのワールドでは使用できません" disabled-item: "&4&lこのアイテムは無効化されています" + no-tome-yourself: "&c自身の&4Tome of Knowledge&cは使えません" + multimeter: "&bエネルギー残量: &3%stored% &b/ &3%capacity%" + talisman: + anvil: "&a&oタリスマンがツールの損壊を防いだ" + miner: "&a&oタリスマンがドロップを倍にした" + hunter: "&a&oタリスマンがドロップを倍にした" + lava: "&a&oタリスマンが炎上から身を護った" + water: "&a&oタリスマンが水没から身を護った" + angel: "&a&oタリスマンが落下から身を護った" + fire: "&a&oタリスマンが炎上から身を護った" + magician: "&a&oタリスマンが追加エンチャントを付与した" + traveller: "&a&oタリスマンが加速効果を付与した" + warrior: "&a&oタリスマンが肉体を強化した" + knight: "&a&oタリスマンが再生効果を付与した" + whirlwind: "&a&oタリスマンが飛び道具から身を護った" + wizard: "&a&oタリスマンが高レベルの幸運を付与したが、他のエンチャントレベルは下がってしまった" + soulbound-rune: + fail: "&c一度に複数アイテムとのバインディングはできません" + success: "&aアイテムとのバインディングが確立した!リスポーン時に当該アイテムは手繰り寄せられます" + research: + start: "&7どこからか古代の知識が聞こえてくる…" + progress: "&b%research%&7に取り組み始めた… &e(%progress%)" fire-extinguish: "&7消火しました" + cannot-place: "&cこの場所には設置できません" + no-pvp: "&cpvpが許可されているワールドでのみ利用できます" + radiation: "&4多量に被ばくしている! &c放射性物質を捨てるか、 Hazmat防具一式を装備しよう!" + opening-guide: "&bSlimefunガイドを開いている途中です、少々お待ちください…" + opening-backpack: "&bバックパックを開いている途中です、少々お待ちください…" + no-iron-golem-heal: "&c鉄インゴットではないので、アイアンゴーレムの回復には使えません!" + link-prompt: "&eクリックで開く:" + diet-cookie: "&e体が軽くなったように感じる…" fortune-cookie: - "&7フォーチュンクッキー工場に囚われたの、助けて!" - "&7あなたは明日死ぬでしょう… クリーパーによって…" @@ -244,51 +139,161 @@ messages: - "&7答えは……「42」です" - "&7Walshyさえいれば、1日だけ全てうまくいきます" - "&7直下掘りしないようにね!" - give-item: "&b%player%に%item%を%amount%個与えました" - given-item: "&b%item%を%amount%個与えられました" - give-research: "&b%player%のリサーチ%research%を完了させました" - hungry: "&c空腹のため使えません" - link-prompt: "&eクリックで開く:" - mode-change: "&b%device%のモード変更: &9%mode%" - multimeter: "&bエネルギー残量: &3%stored% &b/ &3%capacity%" - no-iron-golem-heal: "&c鉄インゴットではないので、アイアンゴーレムの回復には使えません!" - no-permission: "&4権限がありません" - no-pvp: "&cpvpが許可されているワールドでのみ利用できます" - not-enough-xp: "&4リサーチの遂行に必要な経験値が足りません" - no-tome-yourself: "&c自身の&4Tome of Knowledge&cは使えません" - not-online: "&4%player% &cはオンラインではありません!" - not-researched: "&4知識が不足しています" - not-valid-amount: "&4%amount% &cの部分には、正の整数を指定してください" - not-valid-item: "&4%item% &cは正しくないアイテムです" - not-valid-research: "&4%research%&cは正しくないリサーチです" - only-players: "&4プレイヤー専用コマンドです" - opening-backpack: "&bバックパックを開いている途中です、少々お待ちください…" - opening-guide: "&bSlimefunガイドを開いている途中です、少々お待ちください…" - radiation: "&4多量に被ばくしている! &c放射性物質を捨てるか、 Hazmat防具一式を装備しよう!" - research: - progress: "&b%research%&7に取り組み始めた… &e(%progress%)" - start: "&7どこからか古代の知識が聞こえてくる…" - soulbound-rune: - fail: "&c一度に複数アイテムとのバインディングはできません" - success: "&aアイテムとのバインディングが確立した!リスポーン時に当該アイテムは手繰り寄せられます" - talisman: - angel: "&a&oタリスマンが落下から身を護った" - anvil: "&a&oタリスマンがツールの損壊を防いだ" - fire: "&a&oタリスマンが炎上から身を護った" - hunter: "&a&oタリスマンがドロップを倍にした" - knight: "&a&oタリスマンが再生効果を付与した" - lava: "&a&oタリスマンが炎上から身を護った" - magician: "&a&oタリスマンが追加エンチャントを付与した" - miner: "&a&oタリスマンがドロップを倍にした" - traveller: "&a&oタリスマンが加速効果を付与した" - warrior: "&a&oタリスマンが肉体を強化した" - water: "&a&oタリスマンが水没から身を護った" - whirlwind: "&a&oタリスマンが飛び道具から身を護った" - wizard: "&a&oタリスマンが高レベルの幸運を付与したが、他のエンチャントレベルは下がってしまった" - unknown-player: "&4プレイヤーが見つかりません: &c%player%" - unlocked: '&bリサーチが完了しました &7"%research%"' - usage: "&4使用法: &c%usage%" -miner: - no-ores: "&e周辺には鉱石が見つかりませんでした!" + - "&7これはちょっとした切り傷です!" + - "&7常に前向きに生きていこう!" + - "&7これはビスケットなんかではなくクッキーに違いない" + - "&7ネオンサインが眩しい!" +machines: + pattern-not-found: "&eレシピが確認できません、アイテムを正しく配置してください" + unknown-material: "&eアイテムを識別できません、レシピ通りに配置してください" + wrong-item: "&eそのアイテムは識別できません、レシピから正しいアイテムを確認してください" + full-inventory: "&eインベントリが一杯です!" + in-use: "&cこのブロックは他のプレイヤーが開いています" + ignition-chamber-no-flint: "&cIgnition Chamberに火打石と打ち金がありません" + ANCIENT_ALTAR: + not-enough-pedestals: "&4祭壇にAncient Pedestalが不足しています &c(%pedestals% / 8)" + unknown-catalyst: "&4不明な素材です!&c正しいレシピを使用してください" + unknown-recipe: "&4不明なレシピです!&c正しいレシピを使用してください" + ANCIENT_PEDESTAL: + obstructed: "&4Ancient Pedestalが塞がれています!&c上のブロックを破壊してください" + HOLOGRAM_PROJECTOR: + enter-text: "&7指定したい文字列をチャットに入力してください&r(カラーコード対応)" + inventory-title: ホログラムエディタ + ELEVATOR: + no-destinations: "&4他の階が見つかりません" + pick-a-floor: "&3- 行先の選択 -" + current-floor: "&e現在の階:" + click-to-teleport: "&eクリック&7でこの階に移動:" + enter-name: "&7指定したい階の名前をチャットで入力してください&r(カラーコード対応)" + named: "&2階の名前を変更しました: &r%floor%" + TELEPORTER: + teleporting: "&3テレポート中…" + teleported: "&3テレポート完了!" + cancelled: "&4テレポート中断!" + invulnerability: "&b&l30秒間の無敵が付与されました!" + gui: + title: あなたのウェイポイント + tooltip: クリックでテレポート + time: 推定時間 + CARGO_NODES: + must-be-placed: "&4チェストや機械に対して設置してください!" + GPS_CONTROL_PANEL: + title: GPSコントロールパネル + transmitters: GPS送信機一覧 + waypoints: ウェイポイント一覧 + INDUSTRIAL_MINER: + no-fuel: "&cIndustrial Minerは燃料切れです!上のチェストに燃料を補充してください。" + piston-facing: "&cIndustrial Minerのピストンは上向きに設置してください!" + piston-space: "&cピストンの可動するスペースが必要です!" + destroyed: "&cIndustrial Minerは破壊されました。" + already-running: "&cこのIndustrial Minerは稼働中です!" + full-chest: "&cIndustrial Minerのチェストが一杯です!" + no-permission: "&4Industrial Minerを使う権限がありません!" + finished: "&eIndustrial Minerの稼働完了!合計で%ores%個の鉱石を入手しました!" +anvil: + not-working: "&4Slimefunアイテムは金床を利用できません!" +backpack: + already-open: "&cこのバックパックはどこかで使用中です!" + no-stack: "&cバックパックはスタックされていると使用できません!" workbench: not-enhanced: "&4Slimefunアイテムは作業台を利用できません!" +gps: + deathpoint: "&4死亡地点 &7%date%" + waypoint: + new: "&eウェイポイント名をチャットで入力してください&7(カラーコード対応)" + added: "&a新しいウェイポイントを登録しました" + max: "&4ウェイポイント数の上限に到達しています" + insufficient-complexity: + - "&4GPSネットワークの複雑さ不足: &c%complexity%" + - "&4a) GPSネットワークをセットアップしていない" + - "&4b) GPSネットワークの複雑さが不足している" + geo: + scan-required: "&4惑星スキャンが必要です!&cGEO-Scannerでスキャンしてください!" +inventory: + no-access: "&4アクセス権がありません" +android: + started: "&7アンドロイド動作開始" + stopped: "&7アンドロイド動作停止" + scripts: + already-uploaded: "&4このスクリプトはアップロード済みです" + instructions: + START: "&2開始" + REPEAT: "&9繰り返し" + WAIT: "&e0.5秒待機" + GO_FORWARD: "&7前へ移動" + GO_UP: "&7上へ移動" + GO_DOWN: "&7下へ移動" + TURN_LEFT: "&7左へ旋回" + TURN_RIGHT: "&7右へ旋回" + DIG_UP: "&b上を採掘" + DIG_FORWARD: "&b前を採掘" + DIG_DOWN: "&b下を採掘" + MOVE_AND_DIG_UP: "&b上へ移動・採掘" + MOVE_AND_DIG_FORWARD: "&b前へ移動・採掘" + MOVE_AND_DIG_DOWN: "&b下へ移動・採掘" + ATTACK_MOBS_ANIMALS: "&4攻撃&c(モンスター・動物)" + ATTACK_MOBS: "&4攻撃&c(モンスター)" + ATTACK_ANIMALS: "&4攻撃&c(動物)" + ATTACK_ANIMALS_ADULT: "&4攻撃&c(動物&7[親]&c)" + CHOP_TREE: "&c伐採・植林" + CATCH_FISH: "&b釣り" + FARM_FORWARD: "&b収穫・植え直し" + FARM_DOWN: "&b収穫・植え直し&7(下方)" + FARM_EXOTIC_FORWARD: "&bExoticGardenの収穫・植え直し" + FARM_EXOTIC_DOWN: "&bExoticGardenの収穫・植え直し&7(下方)" + INTERFACE_ITEMS: "&9所持アイテムをInterfaceに入れる" + INTERFACE_FUEL: "&c燃料をInterfaceから取り出す" + enter-name: + - + - "&eスクリプトの名前を入力してください" + uploaded: + - "&bアップロード中…" + - "&aスクリプトのアップロード完了!" + rating: + own: "&4自身のスクリプトは評価できません!" + already: "&4このスクリプトは評価済みです!" + editor: スクリプトエディタ +languages: + default: サーバデフォルト + en: 英語 + de: ドイツ語 + fr: フランス語 + it: イタリア語 + es: スペイン語 + pl: ポーランド語 + sv: スウェーデン語 + nl: オランダ語 + cs: チェコ語 + hu: ハンガリー語 + lv: ラトビア語 + ru: ロシア語 + sk: スロバキア語 + zh-TW: 中国語(台湾) + vi: ベトナム語 + id: インドネシア語 + zh-CN: 中国語(中国) + el: ギリシャ語 + he: ヘブライ語 + pt: ポルトガル語(ポルトガル) + ar: アラビア語 + af: アフリカーンス語 + da: デンマーク語 + fi: フィンランド語 + uk: ウクライナ語 + ms: マレー語 + 'no': ノルウェー語 + ja: 日本語 + fa: ペルシア語 + th: タイ語 + ro: ルーマニア語 + pt-BR: ポルトガル語(ブラジル) + bg: ブルガリア語 + ko: 韓国語 + tr: トルコ語 + hr: クロアチア語 + mk: マケドニア語 + sr: セルビア語 + be: ベラルーシ語 + tl: タガログ語 +miner: + no-ores: "&e周辺には鉱石が見つかりませんでした!" diff --git a/src/main/resources/languages/messages_tl.yml b/src/main/resources/languages/messages_tl.yml new file mode 100644 index 000000000..647d43970 --- /dev/null +++ b/src/main/resources/languages/messages_tl.yml @@ -0,0 +1,317 @@ +--- +commands: + help: Ipapakita itong help screen. + cheat: Pinapayagan kang dayain ang mga Aytem sa Slimefun. + give: Nagbibigay ito ng mga Aytem sa Slimefun. + guide: Bibigyan ka nito ng Simefun Guide. + timings: Lag-Info patungkol sa iyong server. + teleporter: Tingnan ang mga Waypoints ng mga Players. + versions: Ipapakita nito ang mga na-install na Addon sa Slimefun. + search: Hahanapin sa Guide ang binigyan na katawagan. + open_guide: Bubuksan nito ang Slimefun's Guide na wala ang libro. + stats: Ipapakita ang hindi karamihan na Estatistika ng Player. + research: + description: Iaunlock/Irereset ang mga Researches para sa Player. + reset: "&cNareset mo ang Knowledge para kay %player%." + reset-target: "&cNareset ang iyong Knowledge." + backpack: + description: Kunin ang isang kopya ng isang umiiral na backpack + invalid-id: "&4Ang id ay dapat na isang hindi negatibong numero!" + player-never-joined: "&4Walang nahanap na manlalaro na may pangalang iyon!" + backpack-does-not-exist: "&4Ang tinukoy na backpack ay hindi umiiral!" + restored-backpack-given: "&aAng iyong backpack ay naibalik at naidagdag sa iyong + imbentaryo!" +guide: + search: + message: "&bAno ang hinahanap mo?" + name: "&7Hanap..." + tooltip: "&bI-click upang maghanap para sa isang item" + inventory: 'Naghahanap para sa: %item%' + cheat: + no-multiblocks: "&4Hindi ka puwedeng mag-daya sa Multiblocks, kailangan mo itong + buoin!" + languages: + updated: "&aNapalitan na ang iyong wika sa: &b%lang%" + translations: + name: "&aMay kulang ba?" + lore: I-click upang magdagdag ng iyong sariling pagsasalin + select: I-click upang piliin ang wikang ito + select-default: I-click upang piliin ang default na wika + selected-language: 'Kasalukuyang pinili:' + title: + main: Slimefun Guide + settings: Mga Settings & Impormasyon + languages: Pumili ng gustong wika. + credits: Ang mga tumulong sa Slimefun4 + wiki: Ang Slimefun4 Wiki + addons: Ang mga Addons para sa Slimefun4 + bugs: Mga Bug Reports + source: Ang Source Code + credits: + commit: Commit + commits: Mga Commits + roles: + developer: "&6Developer" + wiki: "&3Wiki Editor" + resourcepack: "&cResourcepack Artist" + translator: "&9Translator" + profile-link: I-click upang bisitahin ang kanilang profile sa GitHub + pages: + previous: Nakaraang pahina + next: Susunod na pahina + tooltips: + open-category: I-click upang buksan + versions-notice: Napakahalaga ng mga ito kapag nag-uulat ng mga bug! + wiki: Tingnan ang item na ito sa opisyal na Slimefun Wiki + recipes: + machine: Mga recipe na ginawa sa Makina na ito + miner: Mga mapagkukunan na maaari mong makuha sa Miner na ito + generator: Magagamit na mga uri ng gasolina + gold-pan: Mga mapagkukunan na maaari mong makuha + back: + title: Balik + guide: Bumalik sa Slimefun Guide + settings: Bumalik sa Settings Panel + locked: NAKAKANDADO + locked-category: + - Upang i-unlock ang kategoryang ito + - kailangang i-unlock ang lahat ng mga item mula sa + - sumusunod na mga kategorya +messages: + not-researched: "&4Kulang ang iyong Knowledge upang ito'y maintindihan." + not-enough-xp: "&4Kulang ang iyong XP upang ito'y ma-unlock." + unlocked: '&bNa-unlock mo ang &7"%research%"' + only-players: "&4Ang command na ito ay para lamang sa Players." + unknown-player: "&4Hindi kilala na Player: &c%player%" + no-permission: "&4Wala kang permiso para gawin ito." + usage: "&4Paggamit: &c%usage%" + not-online: "&cHindi online si &4%player%!" + not-valid-item: "&cHindi valid ang &4%item%!" + not-valid-amount: "&cHindi valid ang amount na &4%amount% : dapat ito'y mas mataas + kaysa sa 0!" + given-item: '&bIka''y binigyan ng &a%amount% &7"%item%&7"' + give-item: '&bBinigyan mo si %player% ng &a%amount% &7"%item%&7"' + not-valid-research: "&4%research% &cay hindi valid na Research!" + give-research: '&bBinigyan mo si %player% ng Research &7"%research%&7"' + hungry: "&cIkaw ay sobrang gutom para gawin ito!" + mode-change: "&b%device% mode ay pinalitan ng: &9%mode%" + disabled-in-world: "&4&lDinisable ang Aytem sa world na ito." + disabled-item: "&4&lDinisable ang Aytem na ito! Paano mo ito nakuha?" + no-tome-yourself: "&cHindi mo magagamit ang &4Tome of Knowledge &cpara sa'yo..." + multimeter: "&bTinagong Enerhiya: &3%stored% &b/ &3%capacity%" + talisman: + anvil: "&a&oAng iyong anting-anting ay niligtas ang iyong tool sa pagkasira." + miner: "&a&oNa-doble ang drops dahil sa iyong anting-anting." + hunter: "&a&oNa-doble ang drops dahil sa iyong anting-anting." + lava: "&a&oNiligtas ka ng iyong anting-ating sa iyong pagkamatay sa apoy." + water: "&a&oNiligtas ka ng iyong anting-anting sa pagkalunod." + angel: "&a&oNiligtas ka ng iyong anting-anting sa pagkalaglag." + fire: "&a&oNiligtas ka ng iyong anting-ating sa iyong pagkamatay sa apoy." + magician: "&a&oBinigyan ka ng karagdagang Enchantment dahil sa iyong anting-anting." + traveller: "&a&oBinigyan ka ng anting-anting mo ng Speed Boost!" + warrior: "&a&oBinigyan ka ng anting-anting mo ng Kalakasan nang mga ilang saglit." + knight: "&a&oBinigyan ka ng 5 Seconds of Regeneration galing sa anting-anting + mo." + whirlwind: "&a&oTumilapon ang bala dahil sa iyong anting-anting." + wizard: "&a&oBinigyan ka ng iyong anting-anting na mas magandang Fortune Level + ngunit baka bumaba ang iba mong Enchantment Levels." + soulbound-rune: + fail: "&cMaaari mo lang mabigkis ang isa lang na aytem sa iyong kaluluwa kada + isang beses." + success: "&aNabigkis mo ang aytem na ito sa iyong kaluluwa! Nandito lang ito sa'yo + kapag ika'y namatay." + research: + start: "&7Bumulong ang mga Ancient Spirit sa iyong mga tenga!" + progress: "&7Sinimulan mong malaman ang &b%research% &e(%progress%)" + fire-extinguish: "&7Naibsan mo ang apoy sa'yo." + cannot-place: "&cHindi mo puwedeng ilagay ang block jan!" + no-pvp: "&cBawal makipaglaban dito!" + radiation: "&4Na-expose ka sa nakakamatay na radiation! &cTanggalin ang radioactive + aytem sa iyong inventory o isuot ang kompletong Hazmat Suit!" + opening-guide: "&bBinubuksan ang guide, maaari itong tumagal ng mga ilang segundo..." + opening-backpack: "&bBinubuksan ang backpack, maaari itong tumagal ng mga ilang + segundo..." + no-iron-golem-heal: "&cHindi ito Iron Ingot. Hindi ito ginagamit para gumaling ang + mga Iron Golems!" + link-prompt: "&ePindutin dito:" + diet-cookie: "&eNakakaramdam ka nang gaan sa iyong katawan..." + fortune-cookie: + - "&7Tulungan mo ako, nakulong ako sa Fortune Cookie Factory!" + - "&7Mamamatay ka bukas... dahil sa Creeper." + - "&7Sa ilang punto ng iyong buhay, may mangyayaring masama." + - "&7Sa susunod na linggo, mapapansin mo na hindi pala ito ang totoong mundo, nasa + isang ka palang kompyuter game." + - "&7Sasarap ang lasa ng cookie na ito ng ilang segundo." + - '&7Ang maririnig mo na huling salita ay "PUKSAIN!!!"' + - "&7Kahit anong gawin mo, huwag mong yakapin ang Creeper... Nasubukan ko na ito. + Ang sarap, ngunit hindi ito katumbas ng halaga." + - "&742. Ang sagot ay 42." + - "&7Ang isang Walshy sa isang araw ay maiiwasan ang problema." + - "&7Huwag kang maghukay na diretso pababa!" +machines: + pattern-not-found: "&ePasensiya na, hindi ko maintindihan ang Recipe na ito. Pakilagay + ang mga Aytem sa tamang pattern sa loob ng Dispense." + unknown-material: "&ePasensiya na, hindi ko maintindihan ang Aytem na ito sa Dispenser. + Maglagay ka ng mga alam ko sa Dispenser." + wrong-item: "&ePasensiya na, hindi ko maintindihan ang Aytem na kasama ang ni-right + click mo. Paki-check ang Recipies at tingnan kung anong mga Aytem na puwede mong + gamitin." + full-inventory: "&ePasensiya na, dahil puno na ang aking inventory!" + in-use: "&cAng inventory ng Block na ito ay nakabukas na sa ibang Player." + ignition-chamber-no-flint: "&cKulang ng Flint and Steel ang Ignition Chamber." + ANCIENT_ALTAR: + not-enough-pedestals: "&4Hindi napalibutan ng pedestals ang altar &c(%pedestals% + / 8)" + unknown-catalyst: "&4Hindi kilala ang Catalyst! &cGamitin na lamang ang tamang + Recipe!" + unknown-recipe: "&4Hindi kilala ang Recipe! &cGamitin na lamang ang tamang Recipe!" + ANCIENT_PEDESTAL: + obstructed: "&4Barado ang Pedestal! &cTanggalin lahat ang mga gamit sa taas ng + pedestal!" + HOLOGRAM_PROJECTOR: + enter-text: "&7I-enter ang gusto mong makita sa Hologram Text galing sa Chat. + &r(Supported ang Color Codes)" + inventory-title: Hologram Editor + ELEVATOR: + no-destinations: "&4Walang nahanap na mga patutunguhan." + pick-a-floor: "&3- Pumili ng palapag -" + current-floor: "&eIto ang sahig na iyong naroroon:" + click-to-teleport: "&ePindutin ito &7para magteleport sa palapag na ito:" + enter-name: "&7I-enter ang gusto mong makita sa Hologram Text galing sa Chat. + &r(Supported ang Color Codes)" + named: "&2Napangalanan na ang floor na: &r%floor%" + TELEPORTER: + teleporting: "&3Teleporting..." + teleported: "&3Teleported!" + cancelled: "&4Na-kansel ang teleportation!" + invulnerability: "&b&lBinigyan ka ng 30 segundo ng Invulnerability!" + gui: + title: Ang iyong mga waypoints + tooltip: I-click para mag-teleport + time: Tinatayang oras + CARGO_NODES: + must-be-placed: "&4Kailangang mailagay ito sa isang chest o makina!" + GPS_CONTROL_PANEL: + title: GPS - Control Panel + transmitters: Transmitter Overview + waypoints: Waypoint Overview + INDUSTRIAL_MINER: + no-fuel: "&cAng iyong Industrial Miner ay naubusan ng gasolina! Ilagay ang iyong + gasolina sa chest." + piston-facing: "&cAng iyong Industrial Miner ay nangangailangan ng mga piston + upang humarap ito pataas!" + piston-space: "&cAng dalawang piston ay kailangang magkaroon ng isang walang laman + na block sa itaas ng mga ito!" + destroyed: "&cAng iyong Industrial Miner ay nawasak." + already-running: "&cAng Industrial Miner na ito ay tumatakbo na!" + full-chest: "&cAng chest ng iyong Industrial Miner ay puno!" + no-permission: "&4Mukhang wala kang pahintulot upang mapatakbo ang isang Industrial + Miner dito!" + finished: "&eTapos na ang iyong Industrial Miner! Nakuha nito ang isang kabuuang + %ores% ore(s)!" +anvil: + not-working: "&4Hindi puwedeng gamitin ang mga Slimefun Aytem sa isang Anvil!" +backpack: + already-open: "&cPasensiya na, ang backpack na ito ay nakabukas na sa ibang lugar!" + no-stack: "&cHindi puwedeng i-stack ang mga Backpack." +workbench: + not-enhanced: "&4Hindi puwedeng gamitin ang mga Slimefun Aytem sa normal na workbench." +gps: + deathpoint: "&4Kinamatayan &7%date%" + waypoint: + new: "&eMangyaring mag-type ng isang pangalan para sa iyong bagong waypoint sa + chat. &7(Supported ang Color Codes!)" + added: "&aTagumpay ang pag-add ng bagong waypoint" + max: "&4Naabot mo na ang maximum amount ng waypoints." + insufficient-complexity: + - "&4Kulang ang GPS Network Complexity: &c%complexity%" + - "&4a) Wala ka pang GPS Network setup." + - "&4b) Hindi pa complex ang iyong GPS Network!" + geo: + scan-required: "&4Kailagan ng GEO-Scan! &cI-scan muna ang chunk na ito gamit ng + GEO-Scanner!" +inventory: + no-access: "&4Hindi ka pinapayagan na i-access ang block na ito." +android: + started: "&7Ang iyong Android ay nagpatuloy sa pagpapatakbo ng script nito." + stopped: "&7Ang iyong Android ay naka-pause sa script na ito." + scripts: + already-uploaded: "&4Na-upload na ang script na ito." + instructions: + START: "&2Simulan ang Script" + REPEAT: "&9Ulitin ang Script" + WAIT: "&eHintay 0.5s" + GO_FORWARD: "&7Umabante" + GO_UP: "&7Pataas" + GO_DOWN: "&7Pababa" + TURN_LEFT: "&7Lumiko pakaliwa" + TURN_RIGHT: "&7Lumiko pakanan" + DIG_UP: "&bMaghukay pataas" + DIG_FORWARD: "&bMaghukay paabante" + DIG_DOWN: "&bMaghukay pababa" + MOVE_AND_DIG_UP: "&bGumalaw at Maghukay pataas" + MOVE_AND_DIG_FORWARD: "&bGumalaw at Maghukay paabante" + MOVE_AND_DIG_DOWN: "&bGumalaw at Maghukay pababa" + ATTACK_MOBS_ANIMALS: "&4Atake &c(Mga matatapang na mobs at mga hayop)" + ATTACK_MOBS: "&4Atake &c(Mga matatapang na mobs)" + ATTACK_ANIMALS: "&4Atake &c(Mga hayop)" + ATTACK_ANIMALS_ADULT: "&4Atake &c(Mga hayop &7[Matanda]&c)" + CHOP_TREE: "&cTumaga at Magtanim" + CATCH_FISH: "&bMaghuli ng Isda" + FARM_FORWARD: "&bMag-ani at Magtanim" + FARM_DOWN: "&bMag-ani at Magtanim &7(Block sa ilalim)" + FARM_EXOTIC_FORWARD: "&bMasulong na Mag-ani at Magtanim" + FARM_EXOTIC_DOWN: "&bMasulong na Mag-ani at Magtanim &7(Block sa ilalim)" + INTERFACE_ITEMS: "&9Itulak ang Mga nilalaman ng Imbentaryo sa Interface" + INTERFACE_FUEL: "&cItulak ang fuel galing sa Interface" + enter-name: + - + - "&eMangyaring mag-type ng isang pangalan para sa iyong script" + uploaded: + - "&bUploading..." + - "&aTagumpay ang pag-upload ng script!" + rating: + own: "&4Hindi puwedeng i-rate ang sarili mong script!" + already: "&4Nakapag-iwan ka na ng Rating para sa script na ito!" + editor: Script Editor +languages: + default: Server-Default + en: Ingles + de: Aleman + fr: Pranses + it: Italyano + es: Espanyol + pl: Polish + sv: Suweko + nl: Dutch + cs: Czech + hu: Hungarian + lv: Latvian + ru: Ruso + sk: Slovak + zh-TW: Intsik (Taiwan) + vi: Vietnamese + id: Indonesian + zh-CN: Intsik (China) + el: Greek + he: Hebreo + ar: Arabe + af: Mga Afrikaans + da: Danish + fi: Finnish + uk: Ukranian + ms: Malay + 'no': Norwegian + ja: Hapon + fa: Persian + th: Thai + ro: Romanian + pt: Portugues (Portugal) + pt-BR: Portugues (Brazil) + bg: Bulgarian + ko: Koreano + tr: Turko + hr: Croatian + mk: Macedonian + sr: Serbian + be: Belarusian diff --git a/src/main/resources/languages/recipes_tl.yml b/src/main/resources/languages/recipes_tl.yml new file mode 100644 index 000000000..77fc3aa2f --- /dev/null +++ b/src/main/resources/languages/recipes_tl.yml @@ -0,0 +1,158 @@ +--- +slimefun: + multiblock: + name: Multiblock + lore: + - Buuin ang ipinakita na istraktura. + - Hindi ito crafted. + enhanced_crafting_table: + name: Enhanced Crafting Table + lore: + - I-craft ang item na ito tulad ng ipinakita + - sa Enhanced Crafting Table. + - Ang isang normal na Crafting Table ay hindi sapat! + armor_forge: + name: Armor Forge + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ang Armor Forge. + grind_stone: + name: Grind Stone + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ang Grind Stone. + smeltery: + name: Smeltery + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ang Smeltery. + ore_crusher: + name: Ore Crusher + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ng Ore Crusher. + mob_drop: + name: Mob Drop + lore: + - Patayin ang mob na iyon upang + - makuha ang aytem na ito. + gold_pan: + name: Gold Pan + lore: + - Gamitin ang Gold Pan upang + - makuha ang aytem na ito. + compressor: + name: Compressor + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ang Compressor. + pressure_chamber: + name: Pressure Chamber + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ang Pressure Chamber + ore_washer: + name: Ore Washer + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ang Ore Washer + juicer: + name: Juicer + lore: + - I-craft ang Juice na ito tulad ng ipinakita + - gamit ang Juicer. + magic_workbench: + name: Magic Workbench + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ang Magic Workbench. + ancient_altar: + name: Ancient Altar + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ang Ancient Altar. + - Hanapin ang Ancient Altar para sa karagdagang Impormasyon. + heated_pressure_chamber: + name: Heated Pressure Chamber + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ang Heated Pressure Chamber. + food_fabricator: + name: Food Fabricator + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ang Food Fabricator. + food_composter: + name: Food Composter + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ang Food Composter. + freezer: + name: Freezer + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ang Freezer. + geo_miner: + name: GEO Miner + lore: + - Ang item na ito ay maaaring tipunin + - sa pamamagitan ng paggamit ng isang GEO Miner. + nuclear_reactor: + name: Nuclear Reactor + lore: + - Ang Item na ito ay isang byproduct + - ng pagpapatakbo ng isang Nuclear Reactor. + oil_pump: + name: Oil Pump + lore: + - Ang item na ito ay maaaring tipunin + - sa pamamagitan ng paggamit ng isang Oil Pump. + pickaxe_of_containment: + name: Pickaxe of Containment + lore: + - Maaaring makuha ang block na ito + - sa pamamagitan ng pagmimina ng Spawner kasama + - ang Pickaxe of Containment. + refinery: + name: Refinery + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ang Refinery. +minecraft: + shaped: + name: Shaped Crafting Recipe + lore: + - I-craft ang item na ito tulad ng ipinakita + - sa normal na Crafting Table. + - Mahalaga ang hugis. + shapeless: + name: Shapeless Crafting Recipe + lore: + - I-craft ang item na ito tulad ng ipinakita + - sa normal na Crafting Table. + - Shapeless ang Recipe na ito. + furnace: + name: Furnace Recipe + lore: + - Lutuin ang item na ito sa isang Furnace + - upang likhain ang iyong ninanais na item. + blasting: + name: Blast Furnace Recipe + lore: + - Lutuin ang item na ito sa isang Blast Furnace + - upang likhain ang iyong ninanais na item. + smoking: + name: Smoker Recipe + lore: + - Lutuin ang item na ito sa isang Smoker + - upang likhain ang iyong ninanais na item. + campfire: + name: Campfire Recipe + lore: + - Lutuin ang item na ito sa isang Campfire + - upang likhain ang iyong ninanais na item. + stonecutting: + name: Stonecutter Recipe + lore: + - I-craft ang item na ito tulad ng ipinakita + - gamit ang Stonecutter. diff --git a/src/main/resources/languages/researches_en.yml b/src/main/resources/languages/researches_en.yml index 5105f7dd6..a17fa35fb 100644 --- a/src/main/resources/languages/researches_en.yml +++ b/src/main/resources/languages/researches_en.yml @@ -233,5 +233,6 @@ slimefun: tree_growth_accelerator: Faster Trees industrial_miner: Industrial Mining advanced_industrial_miner: Better Mining - magic_pills: De-Zombification + magical_zombie_pills: De-Zombification + auto_brewer: Industrial Brewery shulker_shell: Synthetic Shulkers \ No newline at end of file diff --git a/src/main/resources/languages/researches_ja.yml b/src/main/resources/languages/researches_ja.yml index a872d8a7e..83a90b080 100644 --- a/src/main/resources/languages/researches_ja.yml +++ b/src/main/resources/languages/researches_ja.yml @@ -1,236 +1,238 @@ --- slimefun: - 24k_gold_block: 黄金の国 - advanced_android: 強化アンドロイド - advanced_butcher_android: 強化屠殺アンドロイド - advanced_circuit_board: 発展電子回路 - advanced_electric_smeltery: 電気精錬所Ⅱ - advanced_farmer_android: 強化農耕アンドロイド - advanced_fisherman_android: 強化釣師アンドロイド - advanced_output_node: カーゴ配送強化 - alloys: 合金Ⅰ - ancient_altar: 古の祭壇 - ancient_runes: 太古のルーン - android_interfaces: アンドロイドインタフェース - android_memory_core: メモリーコア - angel_talisman: 天使のタリスマン - animal_growth_accelerator: 動物成長促進術 - anvil_talisman: 金床のタリスマン - armored_jetboots: アーマードジェットブーツ - armored_jetpack: アーマードジェットパック + walking_sticks: 転ばぬ先の杖 + portable_crafter: どこでもクラフト + fortune_cookie: フォーチュンクッキー + portable_dustbin: ポイ捨て禁止 + meat_jerky: ジャーキー armor_forge: 防具作成術 - auto_anvil: 電動修理術 - auto_breeder: 自動交配 - auto_drier: 乾燥機 - auto_enchanting: エンチャント操作術 - automated_crafting_chamber: 自動クラフト - automated_panning_machine: 自動パンニング - automatic_ignition_chamber: 自動再点火室 - backpacks: バックパックⅠ + glowstone_armor: グロウストーン防具 + lumps: 魔法の欠片 + ender_backpack: どこでもエンダーチェスト + ender_armor: エンダー防具 + magic_eye_of_ender: 魔法のエンダーアイ + magic_sugar: 魔法の砂糖 + monster_jerky: モンスタージャーキー + slime_armor: スライム防具Ⅰ + sword_of_beheading: 処刑人の剣 basic_circuit_board: 基本電子回路 + advanced_circuit_board: 発展電子回路 + smeltery: 精錬所 + steel: スチールの時代 + misc_power_items: エネルギーコア battery: はじめてのバッテリー - better_carbon_press: カーボンプレスⅡ - better_crop_growth_accelerator: 作物成長促進術Ⅱ - better_electric_crucibles: 電気るつぼⅡ - better_electric_furnace: 電気炉Ⅱ - better_food_fabricator: オーガニック食品生成所 - better_freezer: 冷凍庫 - better_gps_transmitters: 中級GPS送信機 - better_heated_pressure_chamber: 加熱圧力室Ⅱ - better_solar_generators: 強化太陽光発電所 - bio_reactor: バイオマス発電所 - blade_of_vampires: 吸血鬼の剣 - blistering_ingots: 猛烈な放射能 - block_placer: ブロック設置機 - boosted_uranium: ウラン235 - boots_of_the_stomper: 衝撃拡散のブーツ - bound_armor: ソウルバウンド防具 - bound_backpack: ソウルバウンドバックパック - bound_tools: ソウルバウンド道具 - bound_weapons: ソウルバウンド武器 - bronze: ブロンズの時代 - butcher_androids: 屠殺アンドロイド + steel_plate: スチールの加工 + steel_thruster: 推進機 + parachute: パラシュート + grappling_hook: グラップリングフック + jetpacks: ジェットパック + multitools: マルチツール + solar_panel_and_helmet: 太陽光の利用 + elemental_staff: 属性の杖 + grind_stone: 石臼 cactus_armor: サボテン防具 - capacitors: キャパシタⅠ - carbonado: ブラックダイヤモンド - carbonado_furnace: 強化かまどⅤ - carbonado_tools: 上級ガジェット - carbon_press: カーボンプレスⅠ - cargo_basics: カーゴ素材 - cargo_nodes: カーゴ運搬術 - chainmail_armor: チェーンメイル防具 - charging_bench: 充電装置 - coal_generator: 火力発電所 - cobalt_pickaxe: コバルトのピッケル - combustion_reactor: 燃焼発電所 - common_talisman: タリスマン - composter: コンポスター + gold_pan: パンニング + magical_book_cover: 魔法の本の作り方 + slimefun_metals: 新たな金属 + ore_crusher: 鉱石粉砕 + bronze: ブロンズの時代 + alloys: 合金Ⅰ compressor_and_carbon: 石炭紀 - cooler: 満腹感 - copper_wire: ジュール熱 - crop_growth_accelerator: 作物成長促進術Ⅰ - crucible: るつぼ - crushed_ore: 鉱石の洗浄 + gilded_iron_armor: 金メッキ防具 + synthetic_diamond: 合成ダイヤモンド + pressure_chamber: 圧力室 + synthetic_sapphire: 合成サファイア damascus_steel: ダマスカス鋼の時代 damascus_steel_armor: ダマスカス鋼防具 - diet_cookie: ダイエットクッキー - duct_tape: ダクトテープ - electric_crucible: 電気るつぼⅠ - electric_furnaces: 電気炉Ⅰ - electric_ingot_machines: 自動インゴット作成Ⅰ + reinforced_alloy: 強化鋼の時代 + carbonado: ブラックダイヤモンド + magic_workbench: 魔法の作業台 + wind_staff: 風属性の杖 + reinforced_armor: 強化鋼防具 + ore_washer: 鉱石洗浄 + gold_carats: 純金 + silicon: シリコンバレー + fire_staff: 火属性の杖 + smelters_pickaxe: 精錬のピッケル + common_talisman: タリスマン + anvil_talisman: 金床のタリスマン + miner_talisman: 採掘者のタリスマン + hunter_talisman: 狩人のタリスマン + lava_talisman: 溶岩歩行のタリスマン + water_talisman: 水中呼吸のタリスマン + angel_talisman: 天使のタリスマン + fire_talisman: 消防士のタリスマン + lava_crystal: 溶岩のクリスタル + magician_talisman: 奇術師のタリスマン + traveller_talisman: 探索者のタリスマン + warrior_talisman: 戦士のタリスマン + knight_talisman: 騎士のタリスマン + gilded_iron: 金メッキ + synthetic_emerald: 合成エメラルド + chainmail_armor: チェーンメイル防具 + whirlwind_talisman: 旋風のタリスマン + wizard_talisman: 魔術師のタリスマン + lumber_axe: 木こりの斧 + hazmat_suit: 危険物取扱装備 + uranium: 放射性物質 + crushed_ore: 鉱石の洗浄 + redstone_alloy: レッドストーン合金 + carbonado_tools: 上級ガジェット + first_aid: 応急手当 + gold_armor: 純金防具 + night_vision_googles: 暗視ゴーグル + pickaxe_of_containment: 魂封じのピッケル + hercules_pickaxe: ヘラクレスのピッケル + table_saw: テーブルソー + slime_steel_armor: スライム防具Ⅱ + blade_of_vampires: 吸血鬼の剣 + water_staff: 水属性の杖 + 24k_gold_block: 黄金の国 + composter: コンポスター + farmer_shoes: 農家の靴 + explosive_tools: 爆発のピッケル + automated_panning_machine: 自動パンニング + boots_of_the_stomper: 衝撃拡散のブーツ + pickaxe_of_the_seeker: 探索のピッケル + backpacks: バックパックⅠ + woven_backpack: バックパックⅡ + crucible: るつぼ + gilded_backpack: バックパックⅢ + armored_jetpack: アーマードジェットパック + ender_talismans: エンダータリスマン + nickel_and_cobalt: 合金Ⅱ + magnet: 磁性金属 + infused_magnet: 魔法の磁石 + cobalt_pickaxe: コバルトのピッケル + essence_of_afterlife: ネクロマンシー + bound_backpack: ソウルバウンドバックパック + jetboots: ジェットブーツ + armored_jetboots: アーマードジェットブーツ + seismic_axe: 地震の斧 + pickaxe_of_vein_mining: 鉱脈のピッケル + bound_weapons: ソウルバウンド武器 + bound_tools: ソウルバウンド道具 + bound_armor: ソウルバウンド防具 + juicer: ジュース + repaired_spawner: スポナーの修理士 + enhanced_furnace: 強化かまどⅠ + more_enhanced_furnaces: 強化かまどⅡ + high_tier_enhanced_furnaces: 強化かまどⅢ + reinforced_furnace: 強化かまどⅣ + carbonado_furnace: 強化かまどⅤ electric_motor: ヒートアップ + block_placer: ブロック設置機 + scroll_of_dimensional_teleposition: 逆転劇 + special_bows: ロビンフッド + tome_of_knowledge_sharing: 共有知識 + flask_of_knowledge: 経験値備蓄術 + hardened_glass: 耐爆ガラス + golden_apple_juice: 金のジュース + cooler: 満腹感 + ancient_altar: 古の祭壇 + wither_proof_obsidian: 耐ウィザー黒曜石 + ancient_runes: 太古のルーン + special_runes: 古雅なルーン + infernal_bonemeal: 地獄の骨粉 + rainbow_blocks: 虹ブロック + infused_hopper: 魔法のホッパー + wither_proof_glass: 耐ウィザーガラス + duct_tape: ダクトテープ + plastic_sheet: プラスチック + android_memory_core: メモリーコア + oil: 油田 + fuel: 精製 + hologram_projector: ホログラム + capacitors: キャパシタⅠ + high_tier_capacitors: キャパシタⅡ + solar_generators: 太陽光発電所 + electric_furnaces: 電気炉Ⅰ electric_ore_grinding: 粉砕粉砕 - electric_press: 電動プレス - electric_smeltery: 電気精錬所Ⅰ - elemental_staff: 属性の杖 + heated_pressure_chamber: 加熱圧力室Ⅰ + coal_generator: 火力発電所 + bio_reactor: バイオマス発電所 + auto_enchanting: エンチャント操作術 + auto_anvil: 電動修理術 + multimeter: マルチメーター + gps_setup: GPS時代の夜明け + gps_emergency_transmitter: 緊急戦線復帰 + programmable_androids: アンドロイド + android_interfaces: アンドロイドインタフェース + geo_scanner: 惑星スキャン + combustion_reactor: 燃焼発電所 + teleporter: テレポーター構成機器 + teleporter_activation_plates: テレポーター起動装置 + better_solar_generators: 強化太陽光発電所 + better_gps_transmitters: 中級GPS送信機 elevator: エレベーター - elytra: エリトラ + energized_solar_generator: 全日制太陽光発電所 + energized_gps_transmitter: 上級GPS送信機 + energy_regulator: エネルギーネットワーク + butcher_androids: 屠殺アンドロイド + organic_food: オーガニック食品 + auto_breeder: 自動交配 + advanced_android: 強化アンドロイド + advanced_butcher_android: 強化屠殺アンドロイド + advanced_fisherman_android: 強化釣師アンドロイド + animal_growth_accelerator: 動物成長促進術 + xp_collector: 経験値回収 + organic_fertilizer: 有機肥料 + crop_growth_accelerator: 作物成長促進術Ⅰ + better_crop_growth_accelerator: 作物成長促進術Ⅱ + reactor_essentials: 原子炉必需品 + nuclear_reactor: 原子力発電所 + freezer: ミスター・フリーズ + cargo_basics: カーゴ素材 + cargo_nodes: カーゴ運搬術 + electric_ingot_machines: 自動インゴット作成Ⅰ + high_tier_electric_ingot_machines: 自動インゴット作成Ⅱ + automated_crafting_chamber: 自動クラフト + better_food_fabricator: オーガニック食品生成所 + reactor_access_port: 原子炉とのやりとり + fluid_pump: 液体ポンプ + better_freezer: 冷凍庫 + boosted_uranium: ウラン235 + trash_can: ごみ処理施設 + advanced_output_node: カーゴ配送強化 + carbon_press: カーボンプレスⅠ + electric_smeltery: 電気精錬所Ⅰ + better_electric_furnace: 電気炉Ⅱ + better_carbon_press: カーボンプレスⅡ empowered_android: 上級アンドロイド empowered_butcher_android: 上級屠殺アンドロイド empowered_fisherman_android: 上級釣師アンドロイド - ender_armor: エンダー防具 - ender_backpack: どこでもエンダーチェスト - ender_talismans: エンダータリスマン - energized_gps_transmitter: 上級GPS送信機 - energized_solar_generator: 全日制太陽光発電所 - energy_regulator: エネルギーネットワーク - enhanced_furnace: 強化かまどⅠ - essence_of_afterlife: ネクロマンシー - explosive_tools: 爆発のピッケル - farmer_shoes: 農家の靴 - fire_staff: 火属性の杖 - fire_talisman: 消防士のタリスマン - first_aid: 応急手当 - flask_of_knowledge: 経験値備蓄術 - fluid_pump: 液体ポンプ - fortune_cookie: フォーチュンクッキー - freezer: ミスター・フリーズ - fuel: 精製 - geo_miner: 惑星採掘術 - geo_scanner: 惑星スキャン - gilded_backpack: バックパックⅢ - gilded_iron: 金メッキ - gilded_iron_armor: 金メッキ防具 - glowstone_armor: グロウストーン防具 - gold_armor: 純金防具 - gold_carats: 純金 - golden_apple_juice: 金のジュース - gold_pan: パンニング - gps_emergency_transmitter: 緊急戦線復帰 - gps_setup: GPS時代の夜明け - grappling_hook: グラップリングフック - grind_stone: 石臼 - hardened_glass: 耐爆ガラス - hazmat_suit: 危険物取扱装備 - heated_pressure_chamber: 加熱圧力室Ⅰ - hercules_pickaxe: ヘラクレスのピッケル - high_tier_capacitors: キャパシタⅡ high_tier_carbon_press: カーボンプレスⅢ - high_tier_electric_ingot_machines: 自動インゴット作成Ⅱ - high_tier_enhanced_furnaces: 強化かまどⅢ - hologram_projector: ホログラム - hunter_talisman: 狩人のタリスマン - infernal_bonemeal: 地獄の骨粉 - infused_hopper: 魔法のホッパー - infused_magnet: 魔法の磁石 - jetboots: ジェットブーツ - jetpacks: ジェットパック - juicer: ジュース - kelp_cookie: 昆布クッキー - knight_talisman: 騎士のタリスマン - lava_crystal: 溶岩のクリスタル + wither_assembler: 全自動ウィザートラップ + better_heated_pressure_chamber: 加熱圧力室Ⅱ + elytra: エリトラ + special_elytras: スペシャルエリトラ + electric_crucible: 電気るつぼⅠ + better_electric_crucibles: 電気るつぼⅡ + advanced_electric_smeltery: 電気精錬所Ⅱ + advanced_farmer_android: 強化農耕アンドロイド lava_generator: 溶岩発電所 - lava_talisman: 溶岩歩行のタリスマン - lightning_rune: 雷のルーン - lumber_axe: 木こりの斧 - lumps: 魔法の欠片 - magical_book_cover: 魔法の本の作り方 - magic_eye_of_ender: 魔法のエンダーアイ - magician_talisman: 奇術師のタリスマン - magic_sugar: 魔法の砂糖 - magic_workbench: 魔法の作業台 - magnesium_generator: マグネシウム発電所 - magnet: 磁性金属 - makeshift_smeltery: 間に合わせの製錬所 - meat_jerky: ジャーキー - miner_talisman: 採掘者のタリスマン - misc_power_items: エネルギーコア - monster_jerky: モンスタージャーキー - more_enhanced_furnaces: 強化かまどⅡ - multimeter: マルチメーター - multitools: マルチツール - nether_gold_pan: ネザーパンニング nether_ice: ネザーアイスクーラント nether_star_reactor: ネザースター発電所 - nickel_and_cobalt: 合金Ⅱ - night_vision_googles: 暗視ゴーグル - nuclear_reactor: 原子力発電所 - oil: 油田 - ore_crusher: 鉱石粉砕 - ore_washer: 鉱石洗浄 - organic_fertilizer: 有機肥料 - organic_food: オーガニック食品 + blistering_ingots: 猛烈な放射能 + automatic_ignition_chamber: 自動再点火室 output_chest: 基本機械搬出術 - parachute: パラシュート - pickaxe_of_containment: 魂封じのピッケル - pickaxe_of_the_seeker: 探索のピッケル - pickaxe_of_vein_mining: 鉱脈のピッケル - plastic_sheet: プラスチック - portable_crafter: どこでもクラフト - portable_dustbin: ポイ捨て禁止 - pressure_chamber: 圧力室 - programmable_androids: アンドロイド + copper_wire: ジュール熱 radiant_backpack: バックパックⅣ - rainbow_blocks: 虹ブロック - reactor_access_port: 原子炉とのやりとり - reactor_essentials: 原子炉必需品 - redstone_alloy: レッドストーン合金 - reinforced_alloy: 強化鋼の時代 - reinforced_armor: 強化鋼防具 - reinforced_furnace: 強化かまどⅣ - repaired_spawner: スポナーの修理士 - scroll_of_dimensional_teleposition: 逆転劇 - seismic_axe: 地震の斧 - silicon: シリコンバレー - slime_armor: スライム防具Ⅰ - slimefun_metals: 新たな金属 - slime_steel_armor: スライム防具Ⅱ - smelters_pickaxe: 精錬のピッケル - smeltery: 精錬所 - solar_generators: 太陽光発電所 - solar_panel_and_helmet: 太陽光の利用 - soulbound_rune: ソウルバウンドルーン - special_bows: ロビンフッド - special_elytras: スペシャルエリトラ - special_runes: 古雅なルーン - steel: スチールの時代 - steel_plate: スチールの加工 - steel_thruster: 推進機 + auto_drier: 乾燥機 + diet_cookie: ダイエットクッキー storm_staff: 雷属性の杖 - sword_of_beheading: 処刑人の剣 - synthetic_diamond: 合成ダイヤモンド - synthetic_emerald: 合成エメラルド - synthetic_sapphire: 合成サファイア - table_saw: テーブルソー - teleporter: テレポーター構成機器 - teleporter_activation_plates: テレポーター起動装置 - tome_of_knowledge_sharing: 共有知識 + soulbound_rune: ソウルバウンドルーン + geo_miner: 惑星採掘術 + lightning_rune: 雷のルーン totem_of_undying: 不死のトーテム - trash_can: ごみ処理施設 - traveller_talisman: 探索者のタリスマン + charging_bench: 充電装置 + nether_gold_pan: ネザーパンニング + electric_press: 電動プレス + magnesium_generator: マグネシウム発電所 + kelp_cookie: 昆布クッキー + makeshift_smeltery: 間に合わせの製錬所 tree_growth_accelerator: 1ニョッキ!2ニョッキ! - uranium: 放射性物質 - walking_sticks: 転ばぬ先の杖 - warrior_talisman: 戦士のタリスマン - water_staff: 水属性の杖 - water_talisman: 水中呼吸のタリスマン - whirlwind_talisman: 旋風のタリスマン - wind_staff: 風属性の杖 - wither_assembler: 全自動ウィザートラップ - wither_proof_glass: 耐ウィザーガラス - wither_proof_obsidian: 耐ウィザー黒曜石 - wizard_talisman: 魔術師のタリスマン - woven_backpack: バックパックⅡ - xp_collector: 経験値回収 industrial_miner: 工業的採掘 advanced_industrial_miner: よりよい採掘 + magical_zombie_pills: ゾンビ化解除 + auto_brewer: 工業的醸造 diff --git a/src/main/resources/languages/researches_tl.yml b/src/main/resources/languages/researches_tl.yml new file mode 100644 index 000000000..b69dd74a9 --- /dev/null +++ b/src/main/resources/languages/researches_tl.yml @@ -0,0 +1,236 @@ +--- +slimefun: + walking_sticks: Walking Sticks + portable_crafter: Portable Crafter + fortune_cookie: Fortune Cookie + portable_dustbin: Portable Dustbin + meat_jerky: Meat Jerky + armor_forge: Armor Crafting + glowstone_armor: Glowstone Armor + lumps: Lumps and Magic + ender_backpack: Ender Backpack + ender_armor: Ender Armor + magic_eye_of_ender: Magic Eye of Ender + magic_sugar: Magic Sugar + monster_jerky: Monster Jerky + slime_armor: Slime Armor + sword_of_beheading: Sword of Beheading + basic_circuit_board: Basic Circuit Board + advanced_circuit_board: Advanced Circuit Board + smeltery: Smeltery + steel: Steel Age + misc_power_items: Mahalagang Mga item na nauugnay sa kapangyarihan + battery: Ang iyong unang Baterya + steel_plate: Steel Plating + steel_thruster: Steel Thruster + parachute: Parachute + grappling_hook: Grappling Hook + jetpacks: Jetpacks + multitools: Multi Tools + solar_panel_and_helmet: Solar Power + elemental_staff: Elemental Staves + grind_stone: Grind Stone + cactus_armor: Cactus Suit + gold_pan: Gold Pan + magical_book_cover: Magical Book Binding + slimefun_metals: New Metals + ore_crusher: Ore Doubling + bronze: Bronze Creation + alloys: Advanced Alloys + compressor_and_carbon: Carbon Creation + gilded_iron_armor: Gilded Iron Armor + synthetic_diamond: Synthetic Diamonds + pressure_chamber: Pressure Chamber + synthetic_sapphire: Synthetic Sapphires + damascus_steel: Damascus Steel + damascus_steel_armor: Damascus Steel Armor + reinforced_alloy: Reinforced Alloy + carbonado: Black Diamonds + magic_workbench: Magic Workbench + wind_staff: Wind Staff + reinforced_armor: Reinforced Armor + ore_washer: Ore Washer + gold_carats: Pure Gold + silicon: Silicon Valley + fire_staff: Fire Staff + smelters_pickaxe: Smelters Pickaxe + common_talisman: Karaniwang Anting-anting + anvil_talisman: Ang anting-anting ng Anvil + miner_talisman: Ang anting-anting ng Miner + hunter_talisman: Ang Anting-anting ng Mangangaso + lava_talisman: Ang Anting-anting ng Lava Walker + water_talisman: Ang Anting-anting ng Water Breather + angel_talisman: Ang Anting-anting ng Anghel + fire_talisman: Ang Anting-anting ng Bumbero + lava_crystal: Fiery Situation + magician_talisman: Ang Anting-anting ng Mago + traveller_talisman: Ang Anting-anting ng Manlalakbay + warrior_talisman: Ang Anting-anting ng Mandirigma + knight_talisman: Ang Anting-anting ng Knight + gilded_iron: Shiny Iron + synthetic_emerald: Fake Gem + chainmail_armor: Chainmail Armor + whirlwind_talisman: Ang Anting-anting ng Whirlwind + wizard_talisman: Ang Anting-anting ng Wizard + lumber_axe: Lumber Axe + hazmat_suit: Hazmat Suit + uranium: Radioactive + crushed_ore: Ore Purification + redstone_alloy: Redstone Alloy + carbonado_tools: Top Tier Machines + first_aid: First Aid + gold_armor: Shiny Armor + night_vision_googles: Night Vision Goggles + pickaxe_of_containment: Pickaxe of Containment + hercules_pickaxe: Hercules Pickaxe + table_saw: Table Saw + slime_steel_armor: Slimy Steel Armor + blade_of_vampires: Blade of Vampires + water_staff: Water Staff + 24k_gold_block: Golden City + composter: Composting Dirt + farmer_shoes: Farmer Shoes + explosive_tools: Explosive Tools + automated_panning_machine: Automated Gold Pan + boots_of_the_stomper: Boots of the Stomper + pickaxe_of_the_seeker: Pickaxe of the Seeker + backpacks: Mga Backpacks + woven_backpack: Woven Backpack + crucible: Crucible + gilded_backpack: Gilded Backpack + armored_jetpack: Armored Jetpack + ender_talismans: Ender Talismans + nickel_and_cobalt: Even more Ores + magnet: Magnetic Metals + infused_magnet: Infused Magnets + cobalt_pickaxe: Speedy Pickaxe + essence_of_afterlife: Necromancy + bound_backpack: Soulbound Storage + jetboots: Jet Boots + armored_jetboots: Armoured Jet Boots + seismic_axe: Seismic Axe + pickaxe_of_vein_mining: Pickaxe of Vein Mining + bound_weapons: Soulbound Weapons + bound_tools: Soulbound Tools + bound_armor: Soulbound Armor + juicer: Delicious Drinks + repaired_spawner: Repairing Spawners + enhanced_furnace: Enhanced Furnace + more_enhanced_furnaces: Better Furnaces + high_tier_enhanced_furnaces: High Tier Furnace + reinforced_furnace: Reinforced Furnace + carbonado_furnace: Carbonado Edged furnace + electric_motor: Heating up + block_placer: Block Placer + scroll_of_dimensional_teleposition: Turning things around + special_bows: Robin Hood + tome_of_knowledge_sharing: Sharing with friends + flask_of_knowledge: XP Storage + hardened_glass: Withstanding Explosions + golden_apple_juice: Golden Potion + cooler: Portable Beverages + ancient_altar: Ancient Altar + wither_proof_obsidian: Wither-Proof Obsidian + ancient_runes: Elemental Runes + special_runes: Purple Runes + infernal_bonemeal: Infernal Bonemeal + rainbow_blocks: Rainbow Blocks + infused_hopper: Infused Hopper + wither_proof_glass: Wither-Proof Glass + duct_tape: Duct Tape + plastic_sheet: Plastik + android_memory_core: Memory Core + oil: Oil + fuel: Fuel + hologram_projector: Holograms + capacitors: Tier 1 Capacitors + high_tier_capacitors: Tier 2 Capacitors + solar_generators: Solar Power Plant + electric_furnaces: Powered Furnace + electric_ore_grinding: 'Crushing and Grinding ' + heated_pressure_chamber: Heated Pressure Chamber + coal_generator: Coal Generator + bio_reactor: Bio-Reactor + auto_enchanting: Automatic Enchanting and Disenchanting + auto_anvil: Automatic Anvil + multimeter: Power Measurement + gps_setup: Basic GPS Setup + gps_emergency_transmitter: GPS Emergency Waypoint + programmable_androids: Programmable Androids + android_interfaces: Andrioid Interfaces + geo_scanner: GEO-Scans + combustion_reactor: Combustion Reactor + teleporter: Teleporter Base Components + teleporter_activation_plates: Teleported Activation + better_solar_generators: Upgraded Solar Generators + better_gps_transmitters: Upgraded Transmitters + elevator: Elevators + energized_solar_generator: Full-Time Solar Power + energized_gps_transmitter: Top Tier Transmitter + energy_regulator: Energy Networks 101 + butcher_androids: Butcher Androids + organic_food: Organic Food + auto_breeder: Automated Feeding + advanced_android: Advanced Androids + advanced_butcher_android: Advanced Androids - Butcher + advanced_fisherman_android: Advanced Androids - Fisherman + animal_growth_accelerator: Animal Growth Manipulation + xp_collector: XP Collector + organic_fertilizer: Organic Fertilizer + crop_growth_accelerator: Crop Growth Acceleration + better_crop_growth_accelerator: Upgraded Crop Growth Accelerator + reactor_essentials: Reactor Essentials + nuclear_reactor: Nuclear Power Plant + freezer: Mr Freeze + cargo_basics: Cargo Basics + cargo_nodes: Cargo Setup + electric_ingot_machines: Electric Ingot Fabrication + high_tier_electric_ingot_machines: Super Fast Ingot Fabrication + automated_crafting_chamber: Automated Crafting + better_food_fabricator: Upgraded Food Fabrication + reactor_access_port: Reactor Interaction + fluid_pump: Fluid Pump + better_freezer: Upgraded Freezer + boosted_uranium: Never-Ending Circle + trash_can: Basura + advanced_output_node: Advanced Output Node + carbon_press: Carbon Press + electric_smeltery: Electric Smeltery + better_electric_furnace: Upgraded Electric Furnace + better_carbon_press: Upgraded Carbon Press + empowered_android: Empowered Androids + empowered_butcher_android: Empowered Androids - Butcher + empowered_fisherman_android: Empowered Androids - Fisherman + high_tier_carbon_press: Ultimate Carbon Press + wither_assembler: Automated Wither Killer + better_heated_pressure_chamber: Upgraded Heated Pressure Chamber + elytra: Elytras + special_elytras: Espesyal na Elytras + electric_crucible: Electrified Crucible + better_electric_crucibles: Hot Crucibles + advanced_electric_smeltery: Advanced Electric Smeltery + advanced_farmer_android: Advanced Androids - Farmer + lava_generator: Lava Generator + nether_ice: Nether Ice Coolant + nether_star_reactor: Nether Star Reactor + blistering_ingots: Blistering Radioactivity + automatic_ignition_chamber: Automatic Ignition Chamber + output_chest: Basic machinery output chest + copper_wire: Thinned-down Conductivity + radiant_backpack: Radiant Backpack + auto_drier: A Dry Day + diet_cookie: Diet Cookie + storm_staff: Storm Staff + soulbound_rune: Soulbound Rune + geo_miner: GEO-Miner + lightning_rune: Lightning Rune + totem_of_undying: Totem ng Undying + charging_bench: Charging Bench + nether_gold_pan: Nether Gold Pan + electric_press: Electric Press + magnesium_generator: Kapangyarihan mula sa Magnesium + kelp_cookie: Tasty Kelp + makeshift_smeltery: Improvised Smeltery + tree_growth_accelerator: Faster Trees + industrial_miner: Industrial Mining + advanced_industrial_miner: Better Mining diff --git a/src/main/resources/languages/resources_tl.yml b/src/main/resources/languages/resources_tl.yml new file mode 100644 index 000000000..464b56397 --- /dev/null +++ b/src/main/resources/languages/resources_tl.yml @@ -0,0 +1,24 @@ +--- +tooltips: + results: Result ng GEO-Scan + chunk: Scanned Chunk + world: Mundo + unit: Unit + units: Units +resources: + slimefun: + oil: Langis + nether_ice: Nether Ice + salt: Asin + uranium: Uranium + slimefunorechunks: + iron_ore_chunk: Iron Ore Chunk + gold_ore_chunk: Gold Ore Chunk + copper_ore_chunk: Copper Ore Chunk + tin_ore_chunk: Tin Ore Chunk + silver_ore_chunk: Silver Ore Chunk + aluminum_ore_chunk: Aluminum Ore Chunk + lead_ore_chunk: Lead Ore Chunk + zinc_ore_chunk: Zinc Ore Chunk + nickel_ore_chunk: Nickel Ore Chunk + cobalt_ore_chunk: Cobalt Ore Chunk diff --git a/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/items/TestItemSetup.java b/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/items/TestItemSetup.java index 5a3d8fac7..18578cc0c 100644 --- a/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/items/TestItemSetup.java +++ b/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/items/TestItemSetup.java @@ -1,12 +1,19 @@ package io.github.thebusybiscuit.slimefun4.testing.tests.items; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; + +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; -import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; import be.seeseemelk.mockbukkit.MockBukkit; import be.seeseemelk.mockbukkit.ServerMock; @@ -14,6 +21,7 @@ import io.github.thebusybiscuit.slimefun4.implementation.setup.PostSetup; import io.github.thebusybiscuit.slimefun4.implementation.setup.SlimefunItemSetup; import io.github.thebusybiscuit.slimefun4.testing.TestUtilities; import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.Objects.Category; @TestMethodOrder(value = OrderAnnotation.class) public class TestItemSetup { @@ -49,4 +57,17 @@ public class TestItemSetup { public void testWikiSetup() { Assertions.assertDoesNotThrow(() -> PostSetup.setupWiki()); } + + @Test + @Order(value = 3) + public void testCategoryTranslations() throws IOException { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/languages/categories_en.yml"), StandardCharsets.UTF_8))) { + FileConfiguration config = YamlConfiguration.loadConfiguration(reader); + + for (Category category : SlimefunPlugin.getRegistry().getCategories()) { + String path = category.getKey().getNamespace() + '.' + category.getKey().getKey(); + Assertions.assertTrue(config.contains(path)); + } + } + } } diff --git a/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/researches/TestResearchSetup.java b/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/researches/TestResearchSetup.java index 09d2c75ac..1b7d67d7d 100644 --- a/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/researches/TestResearchSetup.java +++ b/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/researches/TestResearchSetup.java @@ -1,14 +1,26 @@ package io.github.thebusybiscuit.slimefun4.testing.tests.researches; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; + +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; import be.seeseemelk.mockbukkit.MockBukkit; +import io.github.thebusybiscuit.slimefun4.core.researching.Research; import io.github.thebusybiscuit.slimefun4.implementation.setup.ResearchSetup; import me.mrCookieSlime.Slimefun.SlimefunPlugin; +@TestMethodOrder(value = OrderAnnotation.class) public class TestResearchSetup { @BeforeAll @@ -23,14 +35,29 @@ public class TestResearchSetup { } @Test + @Order(value = 1) public void testForExceptions() { // Not really ideal but still important to test. // Research amount is variable, so we can't test for that. // We are really only concerned about any runtime exceptions here. + SlimefunPlugin.getRegistry().setResearchingEnabled(true); Assertions.assertDoesNotThrow(() -> ResearchSetup.setupResearches()); // Running it a second time should NOT be allowed. Assertions.assertThrows(UnsupportedOperationException.class, () -> ResearchSetup.setupResearches()); } + @Test + @Order(value = 2) + public void testResearchTranslations() throws IOException { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/languages/researches_en.yml"), StandardCharsets.UTF_8))) { + FileConfiguration config = YamlConfiguration.loadConfiguration(reader); + + for (Research research : SlimefunPlugin.getRegistry().getResearches()) { + String path = research.getKey().getNamespace() + '.' + research.getKey().getKey(); + Assertions.assertTrue(config.contains(path)); + } + } + } + }