1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-19 19:25:48 +00:00

Slimefun can now be translated (see wiki)

This commit is contained in:
TheBusyBiscuit 2020-01-30 22:03:17 +01:00
parent 911aa64e32
commit 761d52a9c6
9 changed files with 68 additions and 43 deletions

View File

@ -35,6 +35,7 @@
* Added support for Furnaces and Brewing Stands to Cargo Networks
* Added Organic Food/Fertilizer for Dried Kelp
* Added many more strings to the messages.yml
* Added ability to translate messages for Players
### Changes
* Removed Solar Array
@ -59,6 +60,7 @@
* Fixed #1394
* Fixed #1313
* Fixed #1396
* Fixed Backpacks being placeable
## Release Candidate 4 (06 Jan 2020)
https://thebusybiscuit.github.io/builds/TheBusyBiscuit/Slimefun4/stable/#4

View File

@ -147,14 +147,14 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
}
}
menu.addItem(46, ChestMenuUtils.getPreviousButton(page, pages));
menu.addItem(46, ChestMenuUtils.getPreviousButton(p, page, pages));
menu.addMenuClickHandler(46, (pl, slot, item, action) -> {
int next = page - 1;
if (next != page && next > 0) openMainMenu(profile, survival, next);
return false;
});
menu.addItem(52, ChestMenuUtils.getNextButton(page, pages));
menu.addItem(52, ChestMenuUtils.getNextButton(p, page, pages));
menu.addMenuClickHandler(52, (pl, slot, item, action) -> {
int next = page + 1;
if (next != page && next <= pages) openMainMenu(profile, survival, next);
@ -185,14 +185,14 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
int index = 9;
int pages = (category.getItems().size() - 1) / CATEGORY_SIZE + 1;
menu.addItem(46, ChestMenuUtils.getPreviousButton(page, pages));
menu.addItem(46, ChestMenuUtils.getPreviousButton(p, page, pages));
menu.addMenuClickHandler(46, (pl, slot, item, action) -> {
int next = page - 1;
if (next != page && next > 0) openCategory(profile, category, survival, next);
return false;
});
menu.addItem(52, ChestMenuUtils.getNextButton(page, pages));
menu.addItem(52, ChestMenuUtils.getNextButton(p, page, pages));
menu.addMenuClickHandler(52, (pl, slot, item, action) -> {
int next = page + 1;
if (next != page && next <= pages) openCategory(profile, category, survival, next);
@ -408,7 +408,7 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
menu.addItem(i, ChestMenuUtils.getBackground(), ChestMenuUtils.getEmptyClickHandler());
}
menu.addItem(28, ChestMenuUtils.getPreviousButton(index + 1, recipes.length),
menu.addItem(28, ChestMenuUtils.getPreviousButton(p, index + 1, recipes.length),
(pl, slot, action, stack) -> {
if (index > 0) {
showMinecraftRecipe(recipes, index - 1, item, profile, p, false);
@ -416,7 +416,7 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
return false;
});
menu.addItem(34, ChestMenuUtils.getNextButton(index + 1, recipes.length),
menu.addItem(34, ChestMenuUtils.getNextButton(p, index + 1, recipes.length),
(pl, slot, action, stack) -> {
if (index < recipes.length - 1) {
showMinecraftRecipe(recipes, index + 1, item, profile, p, false);
@ -455,7 +455,7 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
displayItem(menu, profile, p, item, result, recipeType, recipe, addToHistory);
if (item instanceof RecipeDisplayItem) {
displayRecipes(profile, menu, (RecipeDisplayItem) item, 0);
displayRecipes(p, profile, menu, (RecipeDisplayItem) item, 0);
}
menu.open(p);
@ -559,7 +559,7 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
}
}
private void displayRecipes(PlayerProfile profile, ChestMenu menu, RecipeDisplayItem sfItem, int page) {
private void displayRecipes(Player p, PlayerProfile profile, ChestMenu menu, RecipeDisplayItem sfItem, int page) {
List<ItemStack> recipes = sfItem.getDisplayRecipes();
if (!recipes.isEmpty()) {
@ -574,20 +574,20 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
int pages = (recipes.size() - 1) / 18 + 1;
menu.replaceExistingItem(28, ChestMenuUtils.getPreviousButton(page + 1, pages));
menu.replaceExistingItem(28, ChestMenuUtils.getPreviousButton(p, page + 1, pages));
menu.addMenuClickHandler(28, (pl, slot, itemstack, action) -> {
if (page > 0) {
displayRecipes(profile, menu, sfItem, page - 1);
displayRecipes(pl, profile, menu, sfItem, page - 1);
pl.playSound(pl.getLocation(), Sound.ITEM_BOOK_PAGE_TURN, 1, 1);
}
return false;
});
menu.replaceExistingItem(34, ChestMenuUtils.getNextButton(page + 1, pages));
menu.replaceExistingItem(34, ChestMenuUtils.getNextButton(p, page + 1, pages));
menu.addMenuClickHandler(34, (pl, slot, itemstack, action) -> {
if (recipes.size() > (18 * (page + 1))) {
displayRecipes(profile, menu, sfItem, page + 1);
displayRecipes(pl, profile, menu, sfItem, page + 1);
pl.playSound(pl.getLocation(), Sound.ITEM_BOOK_PAGE_TURN, 1, 1);
}

View File

@ -266,10 +266,11 @@ public final class GuideSettings {
});
}
else if (i == 7) {
menu.addItem(7, new CustomItem(SkullItem.fromHash("3edd20be93520949e6ce789dc4f43efaeb28c717ee6bfcbbe02780142f716"), "&cAdd your Translation", "", "&4This is not possible yet", "&4Stay tuned for updates on this!")
, (pl, slot, item, action) ->
false
);
menu.addItem(7, new CustomItem(SkullItem.fromHash("3edd20be93520949e6ce789dc4f43efaeb28c717ee6bfcbbe02780142f716"), SlimefunPlugin.getLocal().getMessage(p, "guide.languages.translations.name"), "", "&7\u21E8 &eClick to add your own translations")
, (pl, slot, item, action) -> {
ChatUtils.sendURL(pl, "https://github.com/TheBusyBiscuit/Slimefun4/wiki/Translating-Slimefun");
return false;
});
}
else {
menu.addItem(i, ChestMenuUtils.getBackground(), ChestMenuUtils.getEmptyClickHandler());
@ -386,13 +387,13 @@ public final class GuideSettings {
});
}
menu.addItem(46, ChestMenuUtils.getPreviousButton(page + 1, pages));
menu.addItem(46, ChestMenuUtils.getPreviousButton(p, page + 1, pages));
menu.addMenuClickHandler(46, (pl, slot, item, action) -> {
if (page > 0) openCredits(pl, page - 1);
return false;
});
menu.addItem(52, ChestMenuUtils.getNextButton(page + 1, pages));
menu.addItem(52, ChestMenuUtils.getNextButton(p, page + 1, pages));
menu.addMenuClickHandler(52, (pl, slot, item, action) -> {
if (page + 1 < pages) openCredits(pl, page + 1);
return false;

View File

@ -114,22 +114,19 @@ public class LocalizationService extends SlimefunLocalization {
}
private void addLanguage(String id, String hash) {
FileConfiguration cfg;
if (!hasLanguage(id)) {
cfg = getConfig().getConfiguration();
}
else {
if (hasLanguage(id)) {
FileConfiguration cfg;
String path = "/languages/messages_" + id + ".yml";
try (BufferedReader reader = new BufferedReader(new InputStreamReader(plugin.getClass().getResourceAsStream(path)))) {
cfg = YamlConfiguration.loadConfiguration(reader);
cfg.setDefaults(getConfig().getConfiguration());
} catch (IOException e) {
Slimefun.getLogger().log(Level.SEVERE, "Failed to load language file into memory: \"" + path + "\"", e);
cfg = getConfig().getConfiguration();
return;
}
}
languages.put(id, new Language(id, cfg, hash));
languages.put(id, new Language(id, cfg, hash));
}
}
}

View File

@ -2,7 +2,14 @@ package io.github.thebusybiscuit.slimefun4.core.services.localization;
public enum SupportedLanguage {
ENGLISH("en", "a1701f21835a898b20759fb30a583a38b994abf60d3912ab4ce9f2311e74f72");
ENGLISH("en", "a1701f21835a898b20759fb30a583a38b994abf60d3912ab4ce9f2311e74f72"),
GERMAN("de", "5e7899b4806858697e283f084d9173fe487886453774626b24bd8cfecc77b3f"),
FRENCH("fr", "51269a067ee37e63635ca1e723b676f139dc2dbddff96bbfef99d8b35c996bc"),
ITALIAN("it", "85ce89223fa42fe06ad65d8d44ca412ae899c831309d68924dfe0d142fdbeea4"),
SPANISH("es", "32bd4521983309e0ad76c1ee29874287957ec3d96f8d889324da8c887e485ea8"),
POLISH("pl", "921b2af8d2322282fce4a1aa4f257a52b68e27eb334f4a181fd976bae6d8eb"),
SWEDISH("sv", "e910904bff9c86f6ed47688e9429c26e8d9c5d5743bd3ebb8e6f5040be192998"),
DUTCH("nl", "c23cf210edea396f2f5dfbced69848434f93404eefeabf54b23c073b090adf");
private final String id;
private final String textureHash;

View File

@ -113,14 +113,6 @@ public class BlockListener implements Listener {
else if (SlimefunManager.isItemSimilar(item, SlimefunItems.PORTABLE_CRAFTER, true)) e.setCancelled(true);
else if (SlimefunManager.isItemSimilar(item, SlimefunItems.PORTABLE_DUSTBIN, true)) e.setCancelled(true);
else if (SlimefunManager.isItemSimilar(item, SlimefunItems.BACKPACK_SMALL, false)) e.setCancelled(true);
else if (SlimefunManager.isItemSimilar(item, SlimefunItems.BACKPACK_MEDIUM, false)) e.setCancelled(true);
else if (SlimefunManager.isItemSimilar(item, SlimefunItems.BACKPACK_LARGE, false)) e.setCancelled(true);
else if (SlimefunManager.isItemSimilar(item, SlimefunItems.WOVEN_BACKPACK, false)) e.setCancelled(true);
else if (SlimefunManager.isItemSimilar(item, SlimefunItems.GILDED_BACKPACK, false)) e.setCancelled(true);
else if (SlimefunManager.isItemSimilar(item, SlimefunItems.RADIANT_BACKPACK, false)) e.setCancelled(true);
else if (SlimefunManager.isItemSimilar(item, SlimefunItems.BOUND_BACKPACK, false)) e.setCancelled(true);
else if (SlimefunManager.isItemSimilar(item, SlimefunItems.COOLER, false)) e.setCancelled(true);
else if (SlimefunManager.isItemSimilar(item, SlimefunItems.ENDER_BACKPACK, false)) e.setCancelled(true);
else if (SlimefunManager.isItemSimilar(item, SlimefunItems.CARBON, false)) e.setCancelled(true);

View File

@ -4,6 +4,7 @@ import java.util.Arrays;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable;
@ -12,6 +13,7 @@ import org.bukkit.inventory.meta.ItemMeta;
import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
@ -56,20 +58,32 @@ public final class ChestMenuUtils {
return WIKI_BUTTON;
}
public static ItemStack getPreviousButton(int page, int pages) {
public static ItemStack getPreviousButton(Player p, int page, int pages) {
if (pages == 1 || page == 1) {
return new CustomItem(PREV_BUTTON_INACTIVE, meta -> meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")")));
return new CustomItem(PREV_BUTTON_INACTIVE, meta -> {
meta.setDisplayName(ChatColor.DARK_GRAY + "\u21E6 " + SlimefunPlugin.getLocal().getMessage(p, "guide.pages.previous"));
meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")"));
});
}
return new CustomItem(PREV_BUTTON_ACTIVE, meta -> meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")")));
return new CustomItem(PREV_BUTTON_ACTIVE, meta -> {
meta.setDisplayName(ChatColor.RESET + "\u21E6 " + SlimefunPlugin.getLocal().getMessage(p, "guide.pages.previous"));
meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")"));
});
}
public static ItemStack getNextButton(int page, int pages) {
public static ItemStack getNextButton(Player p, int page, int pages) {
if (pages == 1 || page == pages) {
return new CustomItem(NEXT_BUTTON_INACTIVE, meta -> meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")")));
return new CustomItem(NEXT_BUTTON_INACTIVE, meta -> {
meta.setDisplayName(ChatColor.DARK_GRAY + SlimefunPlugin.getLocal().getMessage(p, "guide.pages.next") + " \u21E6");
meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")"));
});
}
return new CustomItem(NEXT_BUTTON_ACTIVE, meta -> meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")")));
return new CustomItem(NEXT_BUTTON_ACTIVE, meta -> {
meta.setDisplayName(ChatColor.RESET + SlimefunPlugin.getLocal().getMessage(p, "guide.pages.next") + " \u21E6");
meta.setLore(Arrays.asList("", ChatColor.GRAY + "(" + page + " / " + pages + ")"));
});
}
public static void updateProgressbar(BlockMenu menu, int slot, int timeleft, int time, ItemStack indicator) {

View File

@ -26,6 +26,8 @@ public class SlimefunBackpack extends SimpleSlimefunItem<ItemUseHandler> {
@Override
public ItemUseHandler getItemHandler() {
return e -> {
e.cancel();
BackpackListener listener = SlimefunPlugin.getBackpackListener();
if (listener != null) {

View File

@ -25,9 +25,15 @@ guide:
cheat:
no-multiblocks: '&4You cannot cheat in Multiblocks, you have to build them!'
pages:
previous: 'Previous page'
next: 'Next page'
languages:
updated: '&aYour language was successfully set to: &b%lang%'
translations:
name: '&aIs something missing?'
title:
main: 'Slimefun Guide'
@ -231,3 +237,7 @@ languages:
de: 'German'
fr: 'French'
it: 'Italian'
es: 'Spanish'
pl: 'Polish'
sv: 'Swedish'
nl: 'Dutch'