1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 03:35:51 +00:00

Merge branch 'master' of https://github.com/TheBusyBiscuit/Slimefun4 into HazmatSuitBees

 Conflicts:
	src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/ArmorTask.java
This commit is contained in:
LinoxGH 2020-06-27 08:09:09 +03:00
commit 52dc7585fc
43 changed files with 2515 additions and 1904 deletions

View File

@ -46,6 +46,7 @@
* items which cannot be distributed by a Cargo Net will be dropped on the ground now instead of getting deleted * 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 * Small performance improvements to the Cargo Net
* Slimefun no longer supports CraftBukkit * Slimefun no longer supports CraftBukkit
* Item Energy is now also stored persistently via NBT
#### Fixes #### Fixes
* Fixed #2005 * Fixed #2005
@ -56,6 +57,7 @@
* Fixed #1855 * Fixed #1855
* Fixed some issues with AsyncWorldEdit * Fixed some issues with AsyncWorldEdit
* Fixed some problems with unregistered or fake worlds * Fixed some problems with unregistered or fake worlds
* Fixed a rare concurrency issue with world saving
## Release Candidate 13 (16 Jun 2020) ## Release Candidate 13 (16 Jun 2020)
https://thebusybiscuit.github.io/builds/TheBusyBiscuit/Slimefun4/stable/#13 https://thebusybiscuit.github.io/builds/TheBusyBiscuit/Slimefun4/stable/#13

View File

@ -137,7 +137,7 @@ public class GPSNetwork {
menu.addMenuClickHandler(2, ChestMenuUtils.getEmptyClickHandler()); menu.addMenuClickHandler(2, ChestMenuUtils.getEmptyClickHandler());
int complexity = getNetworkComplexity(p.getUniqueId()); int complexity = getNetworkComplexity(p.getUniqueId());
menu.addItem(4, new CustomItem(SlimefunItems.GPS_CONTROL_PANEL, "&7Network Info", "", "&8\u21E8 &7Status: " + (complexity > 0 ? "&2&lONLINE" : "&4&lOFFLINE"), "&8\u21E8 &7Complexity: &r" + complexity)); menu.addItem(4, new CustomItem(SlimefunItems.GPS_CONTROL_PANEL, "&7Network Info", "", "&8\u21E8 &7Status: " + (complexity > 0 ? "&2&lONLINE" : "&4&lOFFLINE"), "&8\u21E8 &7Complexity: &f" + complexity));
menu.addMenuClickHandler(4, ChestMenuUtils.getEmptyClickHandler()); menu.addMenuClickHandler(4, ChestMenuUtils.getEmptyClickHandler());
menu.addItem(6, new CustomItem(HeadTexture.GLOBE_OVERWORLD.getAsItemStack(), "&7" + SlimefunPlugin.getLocal().getMessage(p, "machines.GPS_CONTROL_PANEL.waypoints"), "", ChatColor.GRAY + "\u21E8 " + SlimefunPlugin.getLocal().getMessage(p, "guide.tooltips.open-category"))); menu.addItem(6, new CustomItem(HeadTexture.GLOBE_OVERWORLD.getAsItemStack(), "&7" + SlimefunPlugin.getLocal().getMessage(p, "machines.GPS_CONTROL_PANEL.waypoints"), "", ChatColor.GRAY + "\u21E8 " + SlimefunPlugin.getLocal().getMessage(p, "guide.tooltips.open-category")));
@ -154,7 +154,7 @@ public class GPSNetwork {
if (sfi instanceof GPSTransmitter) { if (sfi instanceof GPSTransmitter) {
int slot = inventory[index]; int slot = inventory[index];
menu.addItem(slot, new CustomItem(SlimefunItems.GPS_TRANSMITTER, "&bGPS Transmitter", "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &7Signal Strength: &r" + ((GPSTransmitter) sfi).getMultiplier(l.getBlockY()), "&8\u21E8 &7Ping: &r" + DoubleHandler.fixDouble(1000D / l.getY()) + "ms")); menu.addItem(slot, new CustomItem(SlimefunItems.GPS_TRANSMITTER, "&bGPS Transmitter", "&8\u21E8 &7World: &f" + l.getWorld().getName(), "&8\u21E8 &7X: &f" + l.getX(), "&8\u21E8 &7Y: &f" + l.getY(), "&8\u21E8 &7Z: &f" + l.getZ(), "", "&8\u21E8 &7Signal Strength: &f" + ((GPSTransmitter) sfi).getMultiplier(l.getBlockY()), "&8\u21E8 &7Ping: &f" + DoubleHandler.fixDouble(1000D / l.getY()) + "ms"));
menu.addMenuClickHandler(slot, ChestMenuUtils.getEmptyClickHandler()); menu.addMenuClickHandler(slot, ChestMenuUtils.getEmptyClickHandler());
index++; index++;
@ -209,7 +209,7 @@ public class GPSNetwork {
}); });
int complexity = getNetworkComplexity(p.getUniqueId()); int complexity = getNetworkComplexity(p.getUniqueId());
menu.addItem(4, new CustomItem(SlimefunItems.GPS_CONTROL_PANEL, "&7Network Info", "", "&8\u21E8 &7Status: " + (complexity > 0 ? "&2&lONLINE" : "&4&lOFFLINE"), "&8\u21E8 &7Complexity: &r" + complexity)); menu.addItem(4, new CustomItem(SlimefunItems.GPS_CONTROL_PANEL, "&7Network Info", "", "&8\u21E8 &7Status: " + (complexity > 0 ? "&2&lONLINE" : "&4&lOFFLINE"), "&8\u21E8 &7Complexity: &f" + complexity));
menu.addMenuClickHandler(4, ChestMenuUtils.getEmptyClickHandler()); menu.addMenuClickHandler(4, ChestMenuUtils.getEmptyClickHandler());
menu.addItem(6, new CustomItem(HeadTexture.GLOBE_OVERWORLD.getAsItemStack(), "&7" + SlimefunPlugin.getLocal().getMessage(p, "machines.GPS_CONTROL_PANEL.waypoints"))); menu.addItem(6, new CustomItem(HeadTexture.GLOBE_OVERWORLD.getAsItemStack(), "&7" + SlimefunPlugin.getLocal().getMessage(p, "machines.GPS_CONTROL_PANEL.waypoints")));
@ -221,7 +221,7 @@ public class GPSNetwork {
int slot = inventory[index]; int slot = inventory[index];
Location l = waypoint.getLocation(); Location l = waypoint.getLocation();
menu.addItem(slot, new CustomItem(waypoint.getIcon(), waypoint.getName().replace("player:death ", ""), "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &cClick to delete")); menu.addItem(slot, new CustomItem(waypoint.getIcon(), waypoint.getName().replace("player:death ", ""), "&8\u21E8 &7World: &f" + l.getWorld().getName(), "&8\u21E8 &7X: &f" + l.getX(), "&8\u21E8 &7Y: &f" + l.getY(), "&8\u21E8 &7Z: &f" + l.getZ(), "", "&8\u21E8 &cClick to delete"));
menu.addMenuClickHandler(slot, (pl, s, item, action) -> { menu.addMenuClickHandler(slot, (pl, s, item, action) -> {
profile.removeWaypoint(waypoint); profile.removeWaypoint(waypoint);
pl.playSound(pl.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F); pl.playSound(pl.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F);

View File

@ -61,7 +61,7 @@ public final class TeleportationManager {
Location l = waypoint.getLocation(); Location l = waypoint.getLocation();
menu.addItem(slot, menu.addItem(slot,
new CustomItem(waypoint.getIcon(), waypoint.getName().replace("player:death ", ""), "", "&8\u21E8 &7" + SlimefunPlugin.getLocal().getResourceString(p, "tooltips.world") + ": &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "&8\u21E8 &7" + SlimefunPlugin.getLocal().getMessage(p, "machines.TELEPORTER.gui.time") + ": &r" + DoubleHandler.fixDouble(0.5 * getTeleportationTime(complexity, source, l)) + "s", "", "&8\u21E8 &c" + SlimefunPlugin.getLocal().getMessage(p, "machines.TELEPORTER.gui.tooltip"))); new CustomItem(waypoint.getIcon(), waypoint.getName().replace("player:death ", ""), "", "&8\u21E8 &7" + SlimefunPlugin.getLocal().getResourceString(p, "tooltips.world") + ": &f" + l.getWorld().getName(), "&8\u21E8 &7X: &f" + l.getX(), "&8\u21E8 &7Y: &f" + l.getY(), "&8\u21E8 &7Z: &f" + l.getZ(), "&8\u21E8 &7" + SlimefunPlugin.getLocal().getMessage(p, "machines.TELEPORTER.gui.time") + ": &f" + DoubleHandler.fixDouble(0.5 * getTeleportationTime(complexity, source, l)) + "s", "", "&8\u21E8 &c" + SlimefunPlugin.getLocal().getMessage(p, "machines.TELEPORTER.gui.tooltip")));
menu.addMenuClickHandler(slot, (pl, s, item, action) -> { menu.addMenuClickHandler(slot, (pl, s, item, action) -> {
pl.closeInventory(); pl.closeInventory();
teleport(pl.getUniqueId(), complexity, source, l, false); teleport(pl.getUniqueId(), complexity, source, l, false);
@ -107,7 +107,7 @@ public final class TeleportationManager {
teleporterUsers.remove(uuid); teleporterUsers.remove(uuid);
if (p != null) { if (p != null) {
p.sendTitle(ChatColors.color(SlimefunPlugin.getLocal().getMessage(p, "machines.TELEPORTER.cancelled")), ChatColors.color("&c&k40&r&c%"), 20, 60, 20); p.sendTitle(ChatColors.color(SlimefunPlugin.getLocal().getMessage(p, "machines.TELEPORTER.cancelled")), ChatColors.color("&c&k40&f&c%"), 20, 60, 20);
} }
} }

View File

@ -10,7 +10,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Server; import org.bukkit.Server;
@ -76,8 +75,8 @@ public class SlimefunRegistry {
private final Set<String> chargeableBlocks = new HashSet<>(); private final Set<String> chargeableBlocks = new HashSet<>();
private final Map<String, WitherProof> witherProofBlocks = new HashMap<>(); private final Map<String, WitherProof> witherProofBlocks = new HashMap<>();
private final ConcurrentMap<UUID, PlayerProfile> profiles = new ConcurrentHashMap<>(); private final Map<UUID, PlayerProfile> profiles = new ConcurrentHashMap<>();
private final Map<String, BlockStorage> worlds = new HashMap<>(); private final Map<String, BlockStorage> worlds = new ConcurrentHashMap<>();
private final Map<String, BlockInfoConfig> chunks = new HashMap<>(); private final Map<String, BlockInfoConfig> chunks = new HashMap<>();
private final Map<SlimefunGuideLayout, SlimefunGuideImplementation> layouts = new EnumMap<>(SlimefunGuideLayout.class); private final Map<SlimefunGuideLayout, SlimefunGuideImplementation> layouts = new EnumMap<>(SlimefunGuideLayout.class);
private final Map<EntityType, Set<ItemStack>> drops = new EnumMap<>(EntityType.class); private final Map<EntityType, Set<ItemStack>> drops = new EnumMap<>(EntityType.class);
@ -234,7 +233,7 @@ public class SlimefunRegistry {
return universalInventories; return universalInventories;
} }
public ConcurrentMap<UUID, PlayerProfile> getPlayerProfiles() { public Map<UUID, PlayerProfile> getPlayerProfiles() {
return profiles; return profiles;
} }

View File

@ -0,0 +1,145 @@
package io.github.thebusybiscuit.slimefun4.core.attributes;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import io.github.thebusybiscuit.slimefun4.core.networks.energy.EnergyNet;
import io.github.thebusybiscuit.slimefun4.implementation.items.electric.gadgets.Jetpack;
import io.github.thebusybiscuit.slimefun4.implementation.items.electric.gadgets.MultiTool;
import io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.ChargingBench;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
/**
* A {@link Rechargeable} {@link SlimefunItem} can hold energy and is able to
* be recharged using a {@link ChargingBench}.
* Any {@link SlimefunItem} which is supposed to be chargeable <b>must</b> implement this interface.
*
* @author TheBusyBiscuit
*
* @see ChargingBench
* @see EnergyNet
* @see Jetpack
* @see MultiTool
*
*/
@FunctionalInterface
public interface Rechargeable extends ItemAttribute {
/**
* This method returns the maximum charge the given {@link ItemStack} is capable of holding.
*
* @param item
* The {@link ItemStack} for which to determine the maximum charge
*
* @return The maximum energy charge for this {@link ItemStack}
*/
float getMaxItemCharge(ItemStack item);
/**
* This method sets the stored energy charge for a given {@link ItemStack}.
* The charge must be at least zero and at most {@link #getMaxItemCharge(ItemStack)}.
*
* @param item
* The {@link ItemStack} to charge
* @param charge
* The amount of charge to store
*/
default void setItemCharge(ItemStack item, float charge) {
if (item == null || item.getType() == Material.AIR) {
throw new IllegalArgumentException("Cannot set Item charge for null or AIR");
}
float maximum = getMaxItemCharge(item);
if (charge < 0 || charge > maximum) {
throw new IllegalArgumentException("Charge must be between zero and " + maximum + ".");
}
ItemMeta meta = item.getItemMeta();
RechargeableHelper.setCharge(meta, charge, maximum);
item.setItemMeta(meta);
}
/**
* This method returns the currently stored energy charge on the provided {@link ItemStack}.
*
* @param item
* The {@link ItemStack} to get the charge from
*
* @return The charge stored on this {@link ItemStack}
*/
default float getItemCharge(ItemStack item) {
if (item == null || item.getType() == Material.AIR) {
throw new IllegalArgumentException("Cannot get Item charge for null or AIR");
}
return RechargeableHelper.getCharge(item.getItemMeta());
}
/**
* This method adds the given charge to the provided {@link ItemStack}.
* The method will also return whether this operation was successful.
* If the {@link ItemStack} is already at maximum charge, the method will return <code>false</code>.
*
* @param item
* The {@link ItemStack} to charge
* @param charge
* The amount of charge to add
*
* @return Whether the given charge could be added successfully
*/
default boolean addItemCharge(ItemStack item, float charge) {
if (item == null || item.getType() == Material.AIR) {
throw new IllegalArgumentException("Cannot add Item charge for null or AIR");
}
ItemMeta meta = item.getItemMeta();
float currentCharge = RechargeableHelper.getCharge(meta);
float maximum = getMaxItemCharge(item);
// If the item is already fully charged, we abort.
if (currentCharge >= maximum) {
return false;
}
float newCharge = Math.min(currentCharge + charge, maximum);
RechargeableHelper.setCharge(meta, newCharge, maximum);
item.setItemMeta(meta);
return true;
}
/**
* This method removes the given charge to the provided {@link ItemStack}.
* The method will also return whether this operation was successful.
* If the {@link ItemStack} does not have enough charge, the method will return <code>false</code>.
*
* @param item
* The {@link ItemStack} to remove the charge from
* @param charge
* The amount of charge to remove
*
* @return Whether the given charge could be removed successfully
*/
default boolean removeItemCharge(ItemStack item, float charge) {
if (item == null || item.getType() == Material.AIR) {
throw new IllegalArgumentException("Cannot remove Item charge for null or AIR");
}
ItemMeta meta = item.getItemMeta();
float currentCharge = RechargeableHelper.getCharge(meta);
// If the item does not have enough charge, we abort
if (currentCharge < charge) {
return false;
}
float newCharge = Math.max(currentCharge - charge, 0);
RechargeableHelper.setCharge(meta, newCharge, getMaxItemCharge(item));
item.setItemMeta(meta);
return true;
}
}

View File

@ -0,0 +1,78 @@
package io.github.thebusybiscuit.slimefun4.core.attributes;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.NamespacedKey;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataType;
import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
import io.github.thebusybiscuit.slimefun4.api.MinecraftVersion;
import io.github.thebusybiscuit.slimefun4.utils.PatternUtils;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
/**
* This is just a simple helper class to provide static methods to the {@link Rechargeable}
* interface.
*
* @author TheBusyBiscuit
*
* @see Rechargeable
*
*/
final class RechargeableHelper {
private static final NamespacedKey CHARGE_KEY = new NamespacedKey(SlimefunPlugin.instance, "item_charge");
private static final String LORE_PREFIX = ChatColors.color("&c&o&8\u21E8 &e\u26A1 &7");
private RechargeableHelper() {}
static void setCharge(ItemMeta meta, float charge, float capacity) {
BigDecimal decimal = BigDecimal.valueOf(charge).setScale(2, RoundingMode.HALF_UP);
float value = decimal.floatValue();
if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_14)) {
meta.getPersistentDataContainer().set(CHARGE_KEY, PersistentDataType.FLOAT, value);
}
List<String> lore = meta.hasLore() ? meta.getLore() : new ArrayList<>();
for (int i = 0; i < lore.size(); i++) {
String line = lore.get(i);
if (line.startsWith(LORE_PREFIX)) {
lore.set(i, LORE_PREFIX + value + " / " + capacity + " J");
meta.setLore(lore);
return;
}
}
lore.add(LORE_PREFIX + value + " / " + capacity + " J");
meta.setLore(lore);
}
static float getCharge(ItemMeta meta) {
if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_14)) {
Float value = meta.getPersistentDataContainer().get(CHARGE_KEY, PersistentDataType.FLOAT);
// If persistent data is available, we just return this value
if (value != null) {
return value;
}
}
// If no persistent data exists, we will just fall back to the lore
if (meta.hasLore()) {
for (String line : meta.getLore()) {
if (line.startsWith(LORE_PREFIX) && line.contains(" / ") && line.endsWith(" J")) {
return Float.parseFloat(PatternUtils.SLASH_SEPARATOR.split(line)[0].replace(LORE_PREFIX, ""));
}
}
}
return 0;
}
}

View File

@ -3,6 +3,7 @@ package io.github.thebusybiscuit.slimefun4.core.services;
import java.util.Optional; import java.util.Optional;
import org.bukkit.Keyed; import org.bukkit.Keyed;
import org.bukkit.Material;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
@ -65,7 +66,7 @@ public class CustomItemDataService implements PersistentDataService, Keyed {
* @return An {@link Optional} describing the result * @return An {@link Optional} describing the result
*/ */
public Optional<String> getItemData(ItemStack item) { public Optional<String> getItemData(ItemStack item) {
if (item == null || !item.hasItemMeta()) { if (item == null || item.getType() == Material.AIR || !item.hasItemMeta()) {
return Optional.empty(); return Optional.empty();
} }

View File

@ -154,6 +154,8 @@ public class Translators {
addTranslator("G4stavoM1ster", SupportedLanguage.PORTUGUESE_BRAZIL, true); addTranslator("G4stavoM1ster", SupportedLanguage.PORTUGUESE_BRAZIL, true);
addTranslator("yurinogueira", SupportedLanguage.PORTUGUESE_BRAZIL, true); addTranslator("yurinogueira", SupportedLanguage.PORTUGUESE_BRAZIL, true);
addTranslator("Sakanas", SupportedLanguage.PORTUGUESE_BRAZIL, true); addTranslator("Sakanas", SupportedLanguage.PORTUGUESE_BRAZIL, true);
addTranslator("krazybeat", SupportedLanguage.PORTUGUESE_BRAZIL, true);
addTranslator("FaolanMalcadh", SupportedLanguage.PORTUGUESE_BRAZIL, true);
} }
private void addTranslator(String name, SupportedLanguage lang, boolean lock) { private void addTranslator(String name, SupportedLanguage lang, boolean lock) {

View File

@ -2,23 +2,31 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.electric.gadgets
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.slimefun4.core.attributes.Rechargeable;
import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ChargableItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
public class JetBoots extends ChargableItem { public class JetBoots extends SlimefunItem implements Rechargeable {
private final double speed; private final double speed;
private final float capacity;
public JetBoots(Category category, SlimefunItemStack item, ItemStack[] recipe, double speed) { public JetBoots(Category category, SlimefunItemStack item, ItemStack[] recipe, double speed, float capacity) {
super(category, item, RecipeType.ENHANCED_CRAFTING_TABLE, recipe); super(category, item, RecipeType.ENHANCED_CRAFTING_TABLE, recipe);
this.speed = speed; this.speed = speed;
this.capacity = capacity;
} }
public double getSpeed() { public double getSpeed() {
return speed; return speed;
} }
@Override
public float getMaxItemCharge(ItemStack item) {
return capacity;
}
} }

View File

@ -2,23 +2,31 @@ package io.github.thebusybiscuit.slimefun4.implementation.items.electric.gadgets
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.slimefun4.core.attributes.Rechargeable;
import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ChargableItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
public class Jetpack extends ChargableItem { public class Jetpack extends SlimefunItem implements Rechargeable {
private final double thrust; private final double thrust;
private final float capacity;
public Jetpack(Category category, SlimefunItemStack item, ItemStack[] recipe, double thrust) { public Jetpack(Category category, SlimefunItemStack item, ItemStack[] recipe, double thrust, float capacity) {
super(category, item, RecipeType.ENHANCED_CRAFTING_TABLE, recipe); super(category, item, RecipeType.ENHANCED_CRAFTING_TABLE, recipe);
this.thrust = thrust; this.thrust = thrust;
this.capacity = capacity;
} }
public double getThrust() { public double getThrust() {
return thrust; return thrust;
} }
@Override
public float getMaxItemCharge(ItemStack item) {
return capacity;
}
} }

View File

@ -10,29 +10,36 @@ import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.slimefun4.core.attributes.Rechargeable;
import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.ChargableItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemUseHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemUseHandler;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
public class MultiTool extends ChargableItem { public class MultiTool extends SlimefunItem implements Rechargeable {
private static final float COST = 0.3F; private static final float COST = 0.3F;
private final Map<UUID, Integer> selectedMode = new HashMap<>(); private final Map<UUID, Integer> selectedMode = new HashMap<>();
private final List<MultiToolMode> modes = new ArrayList<>(); private final List<MultiToolMode> modes = new ArrayList<>();
private final float capacity;
public MultiTool(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, String... items) { public MultiTool(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, float capacity, String... items) {
super(category, item, recipeType, recipe); super(category, item, recipeType, recipe);
for (int i = 0; i < items.length; i++) { for (int i = 0; i < items.length; i++) {
modes.add(new MultiToolMode(this, i, items[i])); modes.add(new MultiToolMode(this, i, items[i]));
} }
this.capacity = capacity;
}
@Override
public float getMaxItemCharge(ItemStack item) {
return capacity;
} }
protected ItemUseHandler getItemUseHandler() { protected ItemUseHandler getItemUseHandler() {
@ -44,11 +51,7 @@ public class MultiTool extends ChargableItem {
int index = selectedMode.getOrDefault(p.getUniqueId(), 0); int index = selectedMode.getOrDefault(p.getUniqueId(), 0);
if (!p.isSneaking()) { if (!p.isSneaking()) {
float charge = ItemEnergy.getStoredEnergy(item); if (removeItemCharge(item, -COST)) {
if (charge >= COST) {
ItemEnergy.chargeItem(item, -COST);
SlimefunItem sfItem = modes.get(index).getItem(); SlimefunItem sfItem = modes.get(index).getItem();
if (sfItem != null) { if (sfItem != null) {

View File

@ -1,25 +1,65 @@
package io.github.thebusybiscuit.slimefun4.implementation.items.electric.gadgets; package io.github.thebusybiscuit.slimefun4.implementation.items.electric.gadgets;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.slimefun4.api.items.ItemSetting; import io.github.thebusybiscuit.slimefun4.api.items.ItemSetting;
import io.github.thebusybiscuit.slimefun4.core.attributes.Rechargeable;
import io.github.thebusybiscuit.slimefun4.implementation.tasks.ArmorTask;
import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
/**
* The {@link SolarHelmet} can be worn by {@link Player}.
* As long as that {@link Player} has contact with sunlight, the helmet will charge any
* {@link Rechargeable} {@link SlimefunItem} that this {@link Player} is currently wearing
* or holding.
*
* @author TheBusyBiscuit
*
* @see ArmorTask
* @see Rechargeable
*
*/
public class SolarHelmet extends SlimefunItem { public class SolarHelmet extends SlimefunItem {
private final ItemSetting<Double> chargeSetting = new ItemSetting<>("charge-amount", 0.1); private final ItemSetting<Double> charge;
public SolarHelmet(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { public SolarHelmet(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, double defaultChargingLevel) {
super(category, item, recipeType, recipe, null); super(category, item, recipeType, recipe);
addItemSetting(chargeSetting); if (defaultChargingLevel <= 0) {
throw new IllegalArgumentException("A Solar Helmet must have a positive charging level!");
} }
public double getChargeAmount() { charge = new ItemSetting<>("charge-amount", defaultChargingLevel);
return chargeSetting.getValue(); addItemSetting(charge);
}
/**
* This method recharges the equipment of the given {@link Player} by the configured
* factor of this {@link SolarHelmet}.
*
* @param p
* The {@link Player} wearing this {@link SolarHelmet}
*/
public void rechargeItems(Player p) {
recharge(p.getInventory().getHelmet());
recharge(p.getInventory().getChestplate());
recharge(p.getInventory().getLeggings());
recharge(p.getInventory().getBoots());
recharge(p.getInventory().getItemInMainHand());
recharge(p.getInventory().getItemInOffHand());
}
private void recharge(ItemStack item) {
SlimefunItem sfItem = SlimefunItem.getByItem(item);
if (sfItem instanceof Rechargeable) {
((Rechargeable) sfItem).addItemCharge(item, charge.getValue().floatValue());
}
} }
} }

View File

@ -1,6 +1,8 @@
package io.github.thebusybiscuit.slimefun4.implementation.items.electric.generators; package io.github.thebusybiscuit.slimefun4.implementation.items.electric.generators;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.slimefun4.api.events.PlayerRightClickEvent; import io.github.thebusybiscuit.slimefun4.api.events.PlayerRightClickEvent;
@ -60,11 +62,17 @@ public abstract class SolarGenerator extends SimpleSlimefunItem<GeneratorTicker>
@Override @Override
public double generateEnergy(Location l, SlimefunItem item, Config data) { public double generateEnergy(Location l, SlimefunItem item, Config data) {
if (!l.getWorld().isChunkLoaded(l.getBlockX() >> 4, l.getBlockZ() >> 4) || l.getBlock().getLightFromSky() != 15) { World world = l.getWorld();
return 0D;
if (world.getEnvironment() != Environment.NORMAL) {
return 0;
} }
if (l.getWorld().getTime() < 12300 || l.getWorld().getTime() > 23850) { if (!world.isChunkLoaded(l.getBlockX() >> 4, l.getBlockZ() >> 4) || l.getBlock().getLightFromSky() != 15) {
return 0;
}
if (world.getTime() < 12300 || world.getTime() > 23850) {
return getDayEnergy(); return getDayEnergy();
} }

View File

@ -29,7 +29,7 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
* @author Linox * @author Linox
* *
*/ */
public class AutoBrewer extends AContainer { public abstract class AutoBrewer extends AContainer {
private static final Map<Material, PotionType> potionRecipes = new EnumMap<>(Material.class); private static final Map<Material, PotionType> potionRecipes = new EnumMap<>(Material.class);
private static final Map<PotionType, PotionType> fermentations = new EnumMap<>(PotionType.class); private static final Map<PotionType, PotionType> fermentations = new EnumMap<>(PotionType.class);
@ -122,15 +122,14 @@ public class AutoBrewer extends AContainer {
ItemStack potionItem = slot ? input1 : input2; ItemStack potionItem = slot ? input1 : input2;
ItemStack ingredient = slot ? input2 : input1; ItemStack ingredient = slot ? input2 : input1;
PotionMeta potion = (PotionMeta) potionItem.getItemMeta();
// Reject any named items // Reject any named items
if (ingredient.hasItemMeta()) { if (ingredient.hasItemMeta()) {
return null; return null;
} }
PotionData potionData = potion.getBasePotionData(); PotionMeta potion = (PotionMeta) potionItem.getItemMeta();
ItemStack output = brew(ingredient.getType(), potionItem.getType(), potion, potionData);
ItemStack output = brew(ingredient.getType(), potionItem.getType(), potion);
if (output == null) { if (output == null) {
return null; return null;
@ -144,8 +143,10 @@ public class AutoBrewer extends AContainer {
} }
} }
private ItemStack brew(Material input, Material potionType, PotionMeta potion, PotionData potionData) { private ItemStack brew(Material input, Material potionType, PotionMeta potion) {
if (potionData.getType() == PotionType.WATER) { PotionData data = potion.getBasePotionData();
if (data.getType() == PotionType.WATER) {
if (input == Material.FERMENTED_SPIDER_EYE) { if (input == Material.FERMENTED_SPIDER_EYE) {
potion.setBasePotionData(new PotionData(PotionType.WEAKNESS, false, false)); potion.setBasePotionData(new PotionData(PotionType.WEAKNESS, false, false));
return new ItemStack(potionType); return new ItemStack(potionType);
@ -166,18 +167,18 @@ public class AutoBrewer extends AContainer {
} }
else if (input == Material.FERMENTED_SPIDER_EYE) { else if (input == Material.FERMENTED_SPIDER_EYE) {
potion.setBasePotionData(new PotionData(fermentations.get(potionData.getType()), false, false)); potion.setBasePotionData(new PotionData(fermentations.get(data.getType()), false, false));
return new ItemStack(potionType); return new ItemStack(potionType);
} }
else if (input == Material.REDSTONE) { else if (input == Material.REDSTONE) {
potion.setBasePotionData(new PotionData(potionData.getType(), true, potionData.isUpgraded())); potion.setBasePotionData(new PotionData(data.getType(), true, data.isUpgraded()));
return new ItemStack(potionType); return new ItemStack(potionType);
} }
else if (input == Material.GLOWSTONE_DUST) { else if (input == Material.GLOWSTONE_DUST) {
potion.setBasePotionData(new PotionData(potionData.getType(), potionData.isExtended(), true)); potion.setBasePotionData(new PotionData(data.getType(), data.isExtended(), true));
return new ItemStack(potionType); return new ItemStack(potionType);
} }
else if (potionData.getType() == PotionType.AWKWARD && potionRecipes.containsKey(input)) { else if (data.getType() == PotionType.AWKWARD && potionRecipes.containsKey(input)) {
potion.setBasePotionData(new PotionData(potionRecipes.get(input), false, false)); potion.setBasePotionData(new PotionData(potionRecipes.get(input), false, false));
return new ItemStack(potionType); return new ItemStack(potionType);
} }
@ -213,11 +214,6 @@ public class AutoBrewer extends AContainer {
return 6; return 6;
} }
@Override
public int getSpeed() {
return 1;
}
@Override @Override
public String getMachineIdentifier() { public String getMachineIdentifier() {
return "AUTO_BREWER"; return "AUTO_BREWER";

View File

@ -4,13 +4,14 @@ import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.slimefun4.core.attributes.Rechargeable;
import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
public class ChargingBench extends AContainer { public class ChargingBench extends AContainer {
@ -50,38 +51,34 @@ public class ChargingBench extends AContainer {
for (int slot : getInputSlots()) { for (int slot : getInputSlots()) {
ItemStack item = inv.getItemInSlot(slot); ItemStack item = inv.getItemInSlot(slot);
if (ItemEnergy.getMaxEnergy(item) > 0) { if (charge(b, inv, slot, item)) {
charge(b, inv, slot, item);
return; return;
} }
} }
} }
private void charge(Block b, BlockMenu inv, int slot, ItemStack item) { private boolean charge(Block b, BlockMenu inv, int slot, ItemStack item) {
if (ItemEnergy.getStoredEnergy(item) < ItemEnergy.getMaxEnergy(item)) { SlimefunItem sfItem = SlimefunItem.getByItem(item);
ChargableBlock.addCharge(b, -getEnergyConsumption());
float rest = ItemEnergy.addStoredEnergy(item, getEnergyConsumption() / 2F);
if (rest > 0F) { if (sfItem instanceof Rechargeable) {
if (inv.fits(item, getOutputSlots())) { float charge = getEnergyConsumption() / 2F;
inv.pushItem(item, getOutputSlots());
inv.replaceExistingItem(slot, null); if (((Rechargeable) sfItem).addItemCharge(item, charge)) {
} ChargableBlock.addCharge(b, -getEnergyConsumption());
else {
inv.replaceExistingItem(slot, item);
}
}
else {
inv.replaceExistingItem(slot, item);
}
} }
else if (inv.fits(item, getOutputSlots())) { else if (inv.fits(item, getOutputSlots())) {
inv.pushItem(item, getOutputSlots()); inv.pushItem(item, getOutputSlots());
inv.replaceExistingItem(slot, null); inv.replaceExistingItem(slot, null);
} }
else {
inv.replaceExistingItem(slot, item); return true;
} }
else if (sfItem != null && inv.fits(item, getOutputSlots())) {
inv.pushItem(item, getOutputSlots());
inv.replaceExistingItem(slot, null);
}
return false;
} }
@Override @Override

View File

@ -72,7 +72,7 @@ public class GadgetsListener implements Listener {
double thrust = ((Jetpack) chestplate).getThrust(); double thrust = ((Jetpack) chestplate).getThrust();
if (thrust > 0.2) { if (thrust > 0.2) {
new JetpackTask(p, thrust).scheduleRepeating(0, 3); new JetpackTask(p, (Jetpack) chestplate).scheduleRepeating(0, 3);
} }
} }
else if (chestplate instanceof Parachute) { else if (chestplate instanceof Parachute) {
@ -85,7 +85,7 @@ public class GadgetsListener implements Listener {
double speed = ((JetBoots) boots).getSpeed(); double speed = ((JetBoots) boots).getSpeed();
if (speed > 0.2) { if (speed > 0.2) {
new JetBootsTask(p, speed).scheduleRepeating(0, 2); new JetBootsTask(p, (JetBoots) boots).scheduleRepeating(0, 2);
} }
} }
} }

View File

@ -599,37 +599,37 @@ public final class SlimefunItemSetup {
new Jetpack(categories.technicalGadgets, SlimefunItems.DURALUMIN_JETPACK, new Jetpack(categories.technicalGadgets, SlimefunItems.DURALUMIN_JETPACK,
new ItemStack[] {SlimefunItems.DURALUMIN_INGOT, null, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {SlimefunItems.DURALUMIN_INGOT, null, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.35) 0.35, 20)
.register(plugin); .register(plugin);
new Jetpack(categories.technicalGadgets, SlimefunItems.SOLDER_JETPACK, new Jetpack(categories.technicalGadgets, SlimefunItems.SOLDER_JETPACK,
new ItemStack[] {SlimefunItems.SOLDER_INGOT, null, SlimefunItems.SOLDER_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.SOLDER_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {SlimefunItems.SOLDER_INGOT, null, SlimefunItems.SOLDER_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.SOLDER_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.4) 0.4, 30)
.register(plugin); .register(plugin);
new Jetpack(categories.technicalGadgets, SlimefunItems.BILLON_JETPACK, new Jetpack(categories.technicalGadgets, SlimefunItems.BILLON_JETPACK,
new ItemStack[] {SlimefunItems.BILLON_INGOT, null, SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BILLON_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {SlimefunItems.BILLON_INGOT, null, SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BILLON_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.45) 0.45, 45)
.register(plugin); .register(plugin);
new Jetpack(categories.technicalGadgets, SlimefunItems.STEEL_JETPACK, new Jetpack(categories.technicalGadgets, SlimefunItems.STEEL_JETPACK,
new ItemStack[] {SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.5) 0.5, 60)
.register(plugin); .register(plugin);
new Jetpack(categories.technicalGadgets, SlimefunItems.DAMASCUS_STEEL_JETPACK, new Jetpack(categories.technicalGadgets, SlimefunItems.DAMASCUS_STEEL_JETPACK,
new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.55) 0.55, 75)
.register(plugin); .register(plugin);
new Jetpack(categories.technicalGadgets, SlimefunItems.REINFORCED_ALLOY_JETPACK, new Jetpack(categories.technicalGadgets, SlimefunItems.REINFORCED_ALLOY_JETPACK,
new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.6) 0.6, 100)
.register(plugin); .register(plugin);
new Jetpack(categories.technicalGadgets, SlimefunItems.CARBONADO_JETPACK, new Jetpack(categories.technicalGadgets, SlimefunItems.CARBONADO_JETPACK,
new ItemStack[] {SlimefunItems.CARBON_CHUNK, null, SlimefunItems.CARBON_CHUNK, SlimefunItems.CARBONADO, SlimefunItems.POWER_CRYSTAL, SlimefunItems.CARBONADO, SlimefunItems.STEEL_THRUSTER, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {SlimefunItems.CARBON_CHUNK, null, SlimefunItems.CARBON_CHUNK, SlimefunItems.CARBONADO, SlimefunItems.POWER_CRYSTAL, SlimefunItems.CARBONADO, SlimefunItems.STEEL_THRUSTER, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.7) 0.7, 150)
.register(plugin); .register(plugin);
new Parachute(categories.technicalGadgets, SlimefunItems.PARACHUTE, RecipeType.ENHANCED_CRAFTING_TABLE, new Parachute(categories.technicalGadgets, SlimefunItems.PARACHUTE, RecipeType.ENHANCED_CRAFTING_TABLE,
@ -672,37 +672,37 @@ public final class SlimefunItemSetup {
new MultiTool(categories.technicalGadgets, SlimefunItems.DURALUMIN_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, new MultiTool(categories.technicalGadgets, SlimefunItems.DURALUMIN_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.DURALUMIN_INGOT, null, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.DURALUMIN_INGOT, null, SlimefunItems.DURALUMIN_INGOT, null}, new ItemStack[] {SlimefunItems.DURALUMIN_INGOT, null, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.DURALUMIN_INGOT, null, SlimefunItems.DURALUMIN_INGOT, null},
multiToolItems) 20, multiToolItems)
.register(plugin); .register(plugin);
new MultiTool(categories.technicalGadgets, SlimefunItems.SOLDER_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, new MultiTool(categories.technicalGadgets, SlimefunItems.SOLDER_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.SOLDER_INGOT, null, SlimefunItems.SOLDER_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.SOLDER_INGOT, null, SlimefunItems.SOLDER_INGOT, null}, new ItemStack[] {SlimefunItems.SOLDER_INGOT, null, SlimefunItems.SOLDER_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.SOLDER_INGOT, null, SlimefunItems.SOLDER_INGOT, null},
multiToolItems) 30, multiToolItems)
.register(plugin); .register(plugin);
new MultiTool(categories.technicalGadgets, SlimefunItems.BILLON_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, new MultiTool(categories.technicalGadgets, SlimefunItems.BILLON_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.BILLON_INGOT, null, SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.BILLON_INGOT, null, SlimefunItems.BILLON_INGOT, null}, new ItemStack[] {SlimefunItems.BILLON_INGOT, null, SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.BILLON_INGOT, null, SlimefunItems.BILLON_INGOT, null},
multiToolItems) 40, multiToolItems)
.register(plugin); .register(plugin);
new MultiTool(categories.technicalGadgets, SlimefunItems.STEEL_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, new MultiTool(categories.technicalGadgets, SlimefunItems.STEEL_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null}, new ItemStack[] {SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, null},
multiToolItems) 50, multiToolItems)
.register(plugin); .register(plugin);
new MultiTool(categories.technicalGadgets, SlimefunItems.DAMASCUS_STEEL_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, new MultiTool(categories.technicalGadgets, SlimefunItems.DAMASCUS_STEEL_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.DAMASCUS_STEEL_INGOT, null, SlimefunItems.DAMASCUS_STEEL_INGOT, null}, new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.DAMASCUS_STEEL_INGOT, null, SlimefunItems.DAMASCUS_STEEL_INGOT, null},
multiToolItems) 60, multiToolItems)
.register(plugin); .register(plugin);
new MultiTool(categories.technicalGadgets, SlimefunItems.REINFORCED_ALLOY_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, new MultiTool(categories.technicalGadgets, SlimefunItems.REINFORCED_ALLOY_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, null}, new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, null},
multiToolItems) 75, multiToolItems)
.register(plugin); .register(plugin);
new MultiTool(categories.technicalGadgets, SlimefunItems.CARBONADO_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE, new MultiTool(categories.technicalGadgets, SlimefunItems.CARBONADO_MULTI_TOOL, RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.CARBONADO, null, SlimefunItems.CARBONADO, SlimefunItems.CARBONADO, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.CARBONADO, null, SlimefunItems.CARBONADO, null}, new ItemStack[] {SlimefunItems.CARBONADO, null, SlimefunItems.CARBONADO, SlimefunItems.CARBONADO, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.CARBONADO, null, SlimefunItems.CARBONADO, null},
"PORTABLE_CRAFTER", "MAGIC_EYE_OF_ENDER", "STAFF_ELEMENTAL_WIND", "GRAPPLING_HOOK", "GOLD_PAN", "NETHER_GOLD_PAN") 100, "PORTABLE_CRAFTER", "MAGIC_EYE_OF_ENDER", "STAFF_ELEMENTAL_WIND", "GRAPPLING_HOOK", "GOLD_PAN", "NETHER_GOLD_PAN")
.register(plugin); .register(plugin);
new OreWasher(categories.basicMachines, SlimefunItems.ORE_WASHER).register(plugin); new OreWasher(categories.basicMachines, SlimefunItems.ORE_WASHER).register(plugin);
@ -765,7 +765,8 @@ public final class SlimefunItemSetup {
.register(plugin); .register(plugin);
new SolarHelmet(categories.technicalGadgets, SlimefunItems.SOLAR_HELMET, RecipeType.ENHANCED_CRAFTING_TABLE, new SolarHelmet(categories.technicalGadgets, SlimefunItems.SOLAR_HELMET, RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.SOLAR_PANEL, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.MEDIUM_CAPACITOR, null, SlimefunItems.MEDIUM_CAPACITOR}) new ItemStack[] {SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.SOLAR_PANEL, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.MEDIUM_CAPACITOR, null, SlimefunItems.MEDIUM_CAPACITOR},
0.1)
.register(plugin); .register(plugin);
new UnplaceableBlock(categories.magicalResources, SlimefunItems.LAVA_CRYSTAL, RecipeType.ENHANCED_CRAFTING_TABLE, new UnplaceableBlock(categories.magicalResources, SlimefunItems.LAVA_CRYSTAL, RecipeType.ENHANCED_CRAFTING_TABLE,
@ -1112,42 +1113,42 @@ public final class SlimefunItemSetup {
new JetBoots(categories.technicalGadgets, SlimefunItems.DURALUMIN_JETBOOTS, new JetBoots(categories.technicalGadgets, SlimefunItems.DURALUMIN_JETBOOTS,
new ItemStack[] {null, null, null, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {null, null, null, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.35) 0.35, 20)
.register(plugin); .register(plugin);
new JetBoots(categories.technicalGadgets, SlimefunItems.SOLDER_JETBOOTS, new JetBoots(categories.technicalGadgets, SlimefunItems.SOLDER_JETBOOTS,
new ItemStack[] {null, null, null, SlimefunItems.SOLDER_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.SOLDER_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {null, null, null, SlimefunItems.SOLDER_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.SOLDER_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.4) 0.4, 30)
.register(plugin); .register(plugin);
new JetBoots(categories.technicalGadgets, SlimefunItems.BILLON_JETBOOTS, new JetBoots(categories.technicalGadgets, SlimefunItems.BILLON_JETBOOTS,
new ItemStack[] {null, null, null, SlimefunItems.BILLON_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BILLON_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {null, null, null, SlimefunItems.BILLON_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BILLON_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.45) 0.45, 40)
.register(plugin); .register(plugin);
new JetBoots(categories.technicalGadgets, SlimefunItems.STEEL_JETBOOTS, new JetBoots(categories.technicalGadgets, SlimefunItems.STEEL_JETBOOTS,
new ItemStack[] {null, null, null, SlimefunItems.STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {null, null, null, SlimefunItems.STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.5) 0.5, 50)
.register(plugin); .register(plugin);
new JetBoots(categories.technicalGadgets, SlimefunItems.DAMASCUS_STEEL_JETBOOTS, new JetBoots(categories.technicalGadgets, SlimefunItems.DAMASCUS_STEEL_JETBOOTS,
new ItemStack[] {null, null, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {null, null, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.55) 0.55, 75)
.register(plugin); .register(plugin);
new JetBoots(categories.technicalGadgets, SlimefunItems.REINFORCED_ALLOY_JETBOOTS, new JetBoots(categories.technicalGadgets, SlimefunItems.REINFORCED_ALLOY_JETBOOTS,
new ItemStack[] {null, null, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {null, null, null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.STEEL_THRUSTER, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.6) 0.6, 100)
.register(plugin); .register(plugin);
new JetBoots(categories.technicalGadgets, SlimefunItems.CARBONADO_JETBOOTS, new JetBoots(categories.technicalGadgets, SlimefunItems.CARBONADO_JETBOOTS,
new ItemStack[] {null, null, null, SlimefunItems.CARBONADO, SlimefunItems.POWER_CRYSTAL, SlimefunItems.CARBONADO, SlimefunItems.STEEL_THRUSTER, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {null, null, null, SlimefunItems.CARBONADO, SlimefunItems.POWER_CRYSTAL, SlimefunItems.CARBONADO, SlimefunItems.STEEL_THRUSTER, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.7) 0.7, 125)
.register(plugin); .register(plugin);
new JetBoots(categories.technicalGadgets, SlimefunItems.ARMORED_JETBOOTS, new JetBoots(categories.technicalGadgets, SlimefunItems.ARMORED_JETBOOTS,
new ItemStack[] {null, null, null, SlimefunItems.STEEL_PLATE, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_PLATE, SlimefunItems.STEEL_THRUSTER, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_THRUSTER}, new ItemStack[] {null, null, null, SlimefunItems.STEEL_PLATE, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_PLATE, SlimefunItems.STEEL_THRUSTER, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_THRUSTER},
0.45) 0.45, 50)
.register(plugin); .register(plugin);
new SeismicAxe(categories.weapons, SlimefunItems.SEISMIC_AXE, RecipeType.MAGIC_WORKBENCH, new SeismicAxe(categories.weapons, SlimefunItems.SEISMIC_AXE, RecipeType.MAGIC_WORKBENCH,
@ -1975,15 +1976,22 @@ public final class SlimefunItemSetup {
new AutoDrier(categories.electricity, SlimefunItems.AUTO_DRIER, RecipeType.ENHANCED_CRAFTING_TABLE, new AutoDrier(categories.electricity, SlimefunItems.AUTO_DRIER, RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[]{null, null, null, SlimefunItems.HEATING_COIL, new ItemStack(Material.SMOKER), SlimefunItems.HEATING_COIL, null, new ItemStack(Material.CAMPFIRE), null}) new ItemStack[]{null, null, null, SlimefunItems.HEATING_COIL, new ItemStack(Material.SMOKER), SlimefunItems.HEATING_COIL, null, new ItemStack(Material.CAMPFIRE), null})
.register(plugin); .register(plugin);
} else { }
else {
new AutoDrier(categories.electricity, SlimefunItems.AUTO_DRIER, RecipeType.ENHANCED_CRAFTING_TABLE, new AutoDrier(categories.electricity, SlimefunItems.AUTO_DRIER, RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[]{null, null, null, SlimefunItems.HEATING_COIL, new ItemStack(Material.FURNACE), SlimefunItems.HEATING_COIL, null, new ItemStack(Material.TORCH), null}) new ItemStack[]{null, null, null, SlimefunItems.HEATING_COIL, new ItemStack(Material.FURNACE), SlimefunItems.HEATING_COIL, null, new ItemStack(Material.TORCH), null})
.register(plugin); .register(plugin);
} }
new AutoBrewer(categories.electricity, SlimefunItems.AUTO_BREWER, RecipeType.ENHANCED_CRAFTING_TABLE, 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}) 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);
@Override
public int getSpeed() {
return 1;
}
}.register(plugin);
new ElectricPress(categories.electricity, SlimefunItems.ELECTRIC_PRESS, RecipeType.ENHANCED_CRAFTING_TABLE, 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}) { 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}) {

View File

@ -5,6 +5,8 @@ import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffect;
@ -20,7 +22,6 @@ import io.github.thebusybiscuit.slimefun4.utils.SlimefunUtils;
import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
/** /**
* The {@link ArmorTask} is responsible for handling {@link PotionEffect PotionEffects} for * The {@link ArmorTask} is responsible for handling {@link PotionEffect PotionEffects} for
@ -57,7 +58,11 @@ public class ArmorTask implements Runnable {
HashedArmorpiece[] cachedArmor = profile.getArmor(); HashedArmorpiece[] cachedArmor = profile.getArmor();
handleSlimefunArmor(p, armor, cachedArmor); handleSlimefunArmor(p, armor, cachedArmor);
if (hasSunlight(p)) {
checkForSolarHelmet(p); checkForSolarHelmet(p);
}
checkForRadiation(p); checkForRadiation(p);
}); });
} }
@ -89,20 +94,29 @@ public class ArmorTask implements Runnable {
} }
private void checkForSolarHelmet(Player p) { private void checkForSolarHelmet(Player p) {
// Temporary performance improvement ItemStack helmet = p.getInventory().getHelmet();
if (!SlimefunUtils.isItemSimilar(p.getInventory().getHelmet(), SlimefunItems.SOLAR_HELMET, true)) {
if (SlimefunPlugin.getRegistry().isBackwardsCompatible() && !SlimefunUtils.isItemSimilar(helmet, SlimefunItems.SOLAR_HELMET, true, false)) {
// Performance saver for slow backwards-compatible versions of Slimefun
return; return;
} }
SlimefunItem item = SlimefunItem.getByItem(p.getInventory().getHelmet()); SlimefunItem item = SlimefunItem.getByItem(helmet);
if (item instanceof SolarHelmet && Slimefun.hasUnlocked(p, item, true) && hasSunlight(p)) { if (item instanceof SolarHelmet && Slimefun.hasUnlocked(p, item, true)) {
ItemEnergy.chargeInventory(p, (float) ((SolarHelmet) item).getChargeAmount()); ((SolarHelmet) item).rechargeItems(p);
} }
} }
private boolean hasSunlight(Player p) { private boolean hasSunlight(Player p) {
return (p.getWorld().getTime() < 12300 || p.getWorld().getTime() > 23850) && p.getEyeLocation().getBlock().getLightFromSky() == 15; World world = p.getWorld();
if (world.getEnvironment() != Environment.NORMAL) {
// The End and Nether have no sunlight
return false;
}
return (world.getTime() < 12300 || world.getTime() > 23850) && p.getEyeLocation().getBlock().getLightFromSky() == 15;
} }
private void checkForRadiation(Player p) { private void checkForRadiation(Player p) {
@ -111,6 +125,7 @@ public class ArmorTask implements Runnable {
!SlimefunUtils.isItemSimilar(SlimefunItems.HAZMAT_CHESTPLATE, p.getInventory().getChestplate(), true) || !SlimefunUtils.isItemSimilar(SlimefunItems.HAZMAT_CHESTPLATE, p.getInventory().getChestplate(), true) ||
!SlimefunUtils.isItemSimilar(SlimefunItems.HAZMAT_LEGGINGS, p.getInventory().getLeggings(), true) || !SlimefunUtils.isItemSimilar(SlimefunItems.HAZMAT_LEGGINGS, p.getInventory().getLeggings(), true) ||
!SlimefunUtils.isItemSimilar(SlimefunItems.RUBBER_BOOTS, p.getInventory().getBoots(), true)) { !SlimefunUtils.isItemSimilar(SlimefunItems.RUBBER_BOOTS, p.getInventory().getBoots(), true)) {
if (!SlimefunUtils.isItemSimilar(p.getInventory().getHelmet(), SlimefunItems.SCUBA_HELMET, true) || !SlimefunUtils.isItemSimilar(p.getInventory().getChestplate(), SlimefunItems.HAZMAT_CHESTPLATE, true) || !SlimefunUtils.isItemSimilar(p.getInventory().getLeggings(), SlimefunItems.HAZMAT_LEGGINGS, true) || !SlimefunUtils.isItemSimilar(p.getInventory().getBoots(), SlimefunItems.RUBBER_BOOTS, true)) {
for (ItemStack item : p.getInventory()) { for (ItemStack item : p.getInventory()) {
if (isRadioactive(p, item)) { if (isRadioactive(p, item)) {
break; break;

View File

@ -4,40 +4,45 @@ import java.util.concurrent.ThreadLocalRandom;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Effect; import org.bukkit.Effect;
import org.bukkit.Material;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler; import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy; import io.github.thebusybiscuit.slimefun4.implementation.items.electric.gadgets.JetBoots;
public class JetBootsTask extends PlayerTask { public class JetBootsTask extends PlayerTask {
private final double speed; private static final float COST = 0.075F;
public JetBootsTask(Player p, double speed) { private final JetBoots boots;
public JetBootsTask(Player p, JetBoots boots) {
super(p); super(p);
this.speed = speed; this.boots = boots;
} }
@Override @Override
protected void executeTask() { protected void executeTask() {
float cost = 0.075F; if (p.getInventory().getBoots() == null || p.getInventory().getBoots().getType() == Material.AIR) {
float charge = ItemEnergy.getStoredEnergy(p.getInventory().getBoots()); return;
double accuracy = DoubleHandler.fixDouble(speed - 0.7); }
if (charge >= cost) { double accuracy = DoubleHandler.fixDouble(boots.getSpeed() - 0.7);
p.getInventory().setBoots(ItemEnergy.chargeItem(p.getInventory().getBoots(), -cost));
if (boots.removeItemCharge(p.getInventory().getBoots(), COST)) {
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_TNT_PRIMED, (float) 0.25, 1); p.getWorld().playSound(p.getLocation(), Sound.ENTITY_TNT_PRIMED, (float) 0.25, 1);
p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1, 1); p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1, 1);
p.setFallDistance(0F); p.setFallDistance(0F);
double gravity = 0.04; double gravity = 0.04;
double offset = ThreadLocalRandom.current().nextBoolean() ? accuracy : -accuracy; double offset = ThreadLocalRandom.current().nextBoolean() ? accuracy : -accuracy;
Vector vector = new Vector(p.getEyeLocation().getDirection().getX() * speed + offset, gravity, p.getEyeLocation().getDirection().getZ() * speed - offset); Vector vector = new Vector(p.getEyeLocation().getDirection().getX() * boots.getSpeed() + offset, gravity, p.getEyeLocation().getDirection().getZ() * boots.getSpeed() - offset);
p.setVelocity(vector); p.setVelocity(vector);
} }
else Bukkit.getScheduler().cancelTask(id); else {
Bukkit.getScheduler().cancelTask(id);
}
} }
} }

View File

@ -2,19 +2,22 @@ package io.github.thebusybiscuit.slimefun4.implementation.tasks;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Effect; import org.bukkit.Effect;
import org.bukkit.Material;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy; import io.github.thebusybiscuit.slimefun4.implementation.items.electric.gadgets.Jetpack;
public class JetpackTask extends PlayerTask { public class JetpackTask extends PlayerTask {
private final double thrust; private static final float COST = 0.08F;
public JetpackTask(Player p, double thrust) { private final Jetpack jetpack;
public JetpackTask(Player p, Jetpack jetpack) {
super(p); super(p);
this.thrust = thrust; this.jetpack = jetpack;
} }
@Override @Override
@ -24,17 +27,16 @@ public class JetpackTask extends PlayerTask {
@Override @Override
protected void executeTask() { protected void executeTask() {
float cost = 0.08F; if (p.getInventory().getChestplate() == null || p.getInventory().getChestplate().getType() == Material.AIR) {
float charge = ItemEnergy.getStoredEnergy(p.getInventory().getChestplate()); return;
}
if (charge >= cost) {
p.getInventory().setChestplate(ItemEnergy.chargeItem(p.getInventory().getChestplate(), -cost));
if (jetpack.removeItemCharge(p.getInventory().getChestplate(), COST)) {
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, (float) 0.25, 1); p.getWorld().playSound(p.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, (float) 0.25, 1);
p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1, 1); p.getWorld().playEffect(p.getLocation(), Effect.SMOKE, 1, 1);
p.setFallDistance(0F); p.setFallDistance(0F);
Vector vector = new Vector(0, 1, 0); Vector vector = new Vector(0, 1, 0);
vector.multiply(thrust); vector.multiply(jetpack.getThrust());
vector.add(p.getEyeLocation().getDirection().multiply(0.2F)); vector.add(p.getEyeLocation().getDirection().multiply(0.2F));
p.setVelocity(vector); p.setVelocity(vector);

View File

@ -1,5 +1,7 @@
package io.github.thebusybiscuit.slimefun4.implementation.tasks; package io.github.thebusybiscuit.slimefun4.implementation.tasks;
import java.util.logging.Level;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
@ -10,6 +12,7 @@ import io.github.thebusybiscuit.slimefun4.implementation.setup.PostSetup;
import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.Slimefun;
/** /**
* This Task initializes all items, some listeners and various other stuff. * This Task initializes all items, some listeners and various other stuff.
@ -48,8 +51,13 @@ public class SlimefunStartupTask implements Runnable {
SlimefunPlugin.getWorldSettingsService().load(Bukkit.getWorlds()); SlimefunPlugin.getWorldSettingsService().load(Bukkit.getWorlds());
for (World world : Bukkit.getWorlds()) { for (World world : Bukkit.getWorlds()) {
try {
new BlockStorage(world); new BlockStorage(world);
} }
catch (Exception x) {
Slimefun.getLogger().log(Level.SEVERE, x, () -> "An Error occured while trying to load World \"" + world.getName() + "\" for Slimefun v" + SlimefunPlugin.getVersion());
}
}
// Load all listeners that depend on items to be enabled // Load all listeners that depend on items to be enabled

View File

@ -87,4 +87,8 @@ public final class NumberUtils {
public static int getInt(Integer value, int defaultValue) { public static int getInt(Integer value, int defaultValue) {
return value == null ? defaultValue : value; return value == null ? defaultValue : value;
} }
public static float getFloat(Float value, float defaultValue) {
return value == null ? defaultValue : value;
}
} }

View File

@ -2,18 +2,30 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.slimefun4.core.attributes.Rechargeable;
import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
// We need to refactor this class some day... /**
// Add some methods or whatever, make it useful * This class is deprecated.
// (And also fix the typo in the name) *
* @deprecated Please implement the {@link Rechargeable} interface from now on.
*
* @author TheBusyBiscuit
*
*/
@Deprecated @Deprecated
public class ChargableItem extends SlimefunItem { public class ChargableItem extends SlimefunItem implements Rechargeable {
public ChargableItem(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { public ChargableItem(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
super(category, item, recipeType, recipe); super(category, item, recipeType, recipe);
} }
@Override
public float getMaxItemCharge(ItemStack item) {
return ItemEnergy.getMaxEnergy(item);
}
} }

View File

@ -28,6 +28,7 @@ import io.github.thebusybiscuit.slimefun4.api.items.ItemState;
import io.github.thebusybiscuit.slimefun4.core.attributes.EnergyNetComponent; import io.github.thebusybiscuit.slimefun4.core.attributes.EnergyNetComponent;
import io.github.thebusybiscuit.slimefun4.core.attributes.Placeable; import io.github.thebusybiscuit.slimefun4.core.attributes.Placeable;
import io.github.thebusybiscuit.slimefun4.core.attributes.Radioactive; import io.github.thebusybiscuit.slimefun4.core.attributes.Radioactive;
import io.github.thebusybiscuit.slimefun4.core.attributes.Rechargeable;
import io.github.thebusybiscuit.slimefun4.core.attributes.WitherProof; import io.github.thebusybiscuit.slimefun4.core.attributes.WitherProof;
import io.github.thebusybiscuit.slimefun4.core.guide.SlimefunGuide; import io.github.thebusybiscuit.slimefun4.core.guide.SlimefunGuide;
import io.github.thebusybiscuit.slimefun4.core.researching.Research; import io.github.thebusybiscuit.slimefun4.core.researching.Research;
@ -462,12 +463,12 @@ public class SlimefunItem implements Placeable {
} }
public void setRecipeType(RecipeType type) { public void setRecipeType(RecipeType type) {
Validate.notNull(type, "'recipeType' is not allowed to be null!"); Validate.notNull(type, "The RecipeType is not allowed to be null!");
this.recipeType = type; this.recipeType = type;
} }
public void setCategory(Category category) { public void setCategory(Category category) {
Validate.notNull(category, "'category' is not allowed to be null!"); Validate.notNull(category, "The Category is not allowed to be null!");
this.category.remove(this); this.category.remove(this);
category.add(this); category.add(this);
@ -543,7 +544,7 @@ public class SlimefunItem implements Placeable {
// Backwards compatibility // Backwards compatibility
if (SlimefunPlugin.getMinecraftVersion().isBefore(MinecraftVersion.MINECRAFT_1_14) || SlimefunPlugin.getRegistry().isBackwardsCompatible()) { if (SlimefunPlugin.getMinecraftVersion().isBefore(MinecraftVersion.MINECRAFT_1_14) || SlimefunPlugin.getRegistry().isBackwardsCompatible()) {
boolean loreInsensitive = this instanceof ChargableItem || this instanceof SlimefunBackpack || id.equals("BROKEN_SPAWNER") || id.equals("REINFORCED_SPAWNER"); boolean loreInsensitive = this instanceof Rechargeable || this instanceof SlimefunBackpack || id.equals("BROKEN_SPAWNER") || id.equals("REINFORCED_SPAWNER");
return SlimefunUtils.isItemSimilar(item, this.item, !loreInsensitive); return SlimefunUtils.isItemSimilar(item, this.item, !loreInsensitive);
} }
else { else {
@ -804,19 +805,17 @@ public class SlimefunItem implements Placeable {
return getByID(((SlimefunItemStack) item).getItemId()); return getByID(((SlimefunItemStack) item).getItemId());
} }
// This wrapper improves the heavy ItemStack#getItemMeta() call by caching it. Optional<String> itemID = SlimefunPlugin.getItemDataService().getItemData(item);
ItemStackWrapper wrapper = new ItemStackWrapper(item);
if (item.hasItemMeta()) {
Optional<String> itemID = SlimefunPlugin.getItemDataService().getItemData(wrapper);
if (itemID.isPresent()) { if (itemID.isPresent()) {
return getByID(itemID.get()); return getByID(itemID.get());
} }
}
// Backwards compatibility // Backwards compatibility
if (SlimefunPlugin.getMinecraftVersion().isBefore(MinecraftVersion.MINECRAFT_1_14) || SlimefunPlugin.getRegistry().isBackwardsCompatible()) { if (SlimefunPlugin.getMinecraftVersion().isBefore(MinecraftVersion.MINECRAFT_1_14) || SlimefunPlugin.getRegistry().isBackwardsCompatible()) {
// This wrapper improves the heavy ItemStack#getItemMeta() call by caching it.
ItemStackWrapper wrapper = new ItemStackWrapper(item);
// Quite expensive performance-wise // Quite expensive performance-wise
// But necessary for supporting legacy items // But necessary for supporting legacy items
for (SlimefunItem sfi : SlimefunPlugin.getRegistry().getAllSlimefunItems()) { for (SlimefunItem sfi : SlimefunPlugin.getRegistry().getAllSlimefunItems()) {

View File

@ -97,6 +97,10 @@ public class BlockStorage {
public BlockStorage(World w) { public BlockStorage(World w) {
this.world = w; this.world = w;
if (world.getName().indexOf('.') != -1) {
throw new IllegalArgumentException("Slimefun cannot deal with World names that contain a dot: " + w.getName());
}
if (SlimefunPlugin.getRegistry().getWorlds().containsKey(w.getName())) { if (SlimefunPlugin.getRegistry().getWorlds().containsKey(w.getName())) {
// Cancel the loading process if the world was already loaded // Cancel the loading process if the world was already loaded
return; return;

View File

@ -10,8 +10,17 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import io.github.thebusybiscuit.cscorelib2.chat.ChatColors; import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
import io.github.thebusybiscuit.slimefun4.core.attributes.Rechargeable;
import io.github.thebusybiscuit.slimefun4.utils.PatternUtils; import io.github.thebusybiscuit.slimefun4.utils.PatternUtils;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
/**
* @deprecated Please implement {@link Rechargeable} on your {@link SlimefunItem} instead.
*
* @author TheBusyBiscuit
*
*/
@Deprecated
public final class ItemEnergy { public final class ItemEnergy {
// We should find a replacement for this class // We should find a replacement for this class

View File

@ -23,3 +23,4 @@ slimefun:
easter: Páscoa (abril) easter: Páscoa (abril)
birthday: Aniversário do TheBusyBiscuit (26 de outubro) birthday: Aniversário do TheBusyBiscuit (26 de outubro)
halloween: Halloween (31 de outubro) halloween: Halloween (31 de outubro)
androids: Robôs e programação

View File

@ -23,3 +23,4 @@ slimefun:
easter: 復活節 easter: 復活節
birthday: TheBusyBiscuit的生日(10月26日) birthday: TheBusyBiscuit的生日(10月26日)
halloween: 萬聖節 halloween: 萬聖節
androids: 可編輯的機器人

View File

@ -1,249 +1,139 @@
--- ---
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: "&bПродвинутая сборка урожая и пересадка &7(блок снизу)"
FARM_EXOTIC_FORWARD: "&bПродвинутая сборка урожая и пересадка"
FARM_FORWARD: "&bСобрать урожай и пересадить"
GO_DOWN: "&7Двинуться вниз"
GO_FORWARD: "&7Двинуться вперёд"
GO_UP: "&7Двинуться вверх"
INTERFACE_FUEL: "&cВосполнить топливо из хранилища спереди"
INTERFACE_ITEMS: "&9Сложить хранимые предметы в хранилище спереди"
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: "&eПодождать 0.5с"
rating:
already: "&4Вы уже оценили этот скрипт!"
own: "&4Вы не можете оценить свой скрипт!"
uploaded:
- "&bЗагрузка…"
- "&aВаш скрипт успешно загружен!"
started: "&7Ваш Андроид возобновил работу своего скрипта"
stopped: "&7Ваш Андроид приостановил выполнение своего скрипта"
anvil:
not-working: "&4Вы не можете использовать Slimefun предметы в наковальне!"
backpack:
already-open: "&cИзвините, этот рюкзак уже открыт в другом месте!"
no-stack: "&cВы не можете складывать рюкзаки вместе"
commands: commands:
help: Вывести это меню помощи
cheat: Войти в режим выдачи предметов cheat: Войти в режим выдачи предметов
give: Выдать Slimefun предметы give: Выдать Slimefun предметы
guide: Получить руководство Slimefun guide: Получить руководство Slimefun
help: Вывести это меню помощи timings: Вывести информацию о нагрузке сервера
teleporter: Просмотреть контрольные точки других игроков
versions: Вывести список установленных дополнений
search: Поиск предметов по заданному запросу
open_guide: Открыть руководство Slimefun open_guide: Открыть руководство Slimefun
stats: Вывести статистику игрока
research: research:
description: Выдать или сбросить исследования игрока description: Выдать или сбросить исследования игрока
reset: "&cВы сбросили исследования для игрока %player%" reset: "&cВы сбросили исследования для игрока %player%"
reset-target: "&cВаши исследования были сброшены" reset-target: "&cВаши исследования были сброшены"
search: Поиск предметов по заданному запросу
stats: Вывести статистику игрока
teleporter: Просмотреть контрольные точки других игроков
timings: Вывести информацию о нагрузке сервера
versions: Вывести список установленных дополнений
backpack: backpack:
description: Заполучить копию существующего рюкзака description: Заполучить копию существующего рюкзака
invalid-id: "&4Идентификатор должен быть неотрицательным числом!" invalid-id: "&4Идентификатор должен быть неотрицательным числом!"
player-never-joined: "&4Игрок с таким ником не найден!" player-never-joined: "&4Игрок с таким ником не найден!"
backpack-does-not-exist: "&4Указанный рюкзак не существует!" backpack-does-not-exist: "&4Указанный рюкзак не существует!"
restored-backpack-given: "&aРюкзак был восстановлен и добавлен в Ваш инвентарь!" restored-backpack-given: "&aРюкзак был восстановлен и добавлен в Ваш инвентарь!"
gps:
deathpoint: "&4Точка смерти &7%date%"
geo:
scan-required: "&4Требуется геосканирование! &cПроанализируйте чанк при помощи
GPS-геосканера для начала!"
insufficient-complexity:
- "&4Недостаточная общая сила сигнала GPS сети: &c%complexity%"
- "&4а) Ваша GPS сеть пока что не подключена"
- "&4б) У Вашей GPS сети недостаточная сила сигнала"
waypoint:
added: "&aКонтрольная точка успешно добавлена"
max: "&4Вы достигли максимального количества контрольных точек"
new: "&eПожалуйста, введите название новой контрольной точки в чат. &7(можно использовать
цветовые коды!)"
guide: guide:
back: search:
guide: Вернуться к руководству Slimefun message: "&bЧто бы Вы хотели найти?"
settings: Вернуться к настройкам name: "&7Поиск…"
title: Назад tooltip: "&bНажмите для поиска предмета"
inventory: 'Поиск: %item%'
lore:
- "&bЧто бы Вы хотели найти?"
- "&7Введите поисковый запрос в чат"
cheat: cheat:
no-multiblocks: "&4Вы не можете выдать себе постройку, она должна быть построена no-multiblocks: "&4Вы не можете выдать себе постройку, она должна быть построена
в мире!" в мире!"
credits:
commit: Коммит
commits: Коммитов
profile-link: Нажмите, чтобы посетить GitHub профиль
roles:
developer: "&6Разработчик"
resourcepack: "&cТекстурщик"
translator: "&9Локализатор"
wiki: "&3Редактор Вики"
languages: languages:
updated: "&aВаш язык успешно установлен на: &b%lang%"
translations:
name: "&aЧего-то не хватает?"
lore: Нажмите, чтобы добавить свой перевод
select: Нажмите для выбора этого языка select: Нажмите для выбора этого языка
select-default: Нажмите для выбора языка по умолчанию select-default: Нажмите для выбора языка по умолчанию
selected-language: 'Сейчас выбрано:' selected-language: 'Сейчас выбрано:'
translations: title:
lore: Нажмите, чтобы добавить свой перевод main: Руководство Slimefun
name: "&aЧего-то не хватает?" settings: Информация и настройки
updated: "&aВаш язык успешно установлен на: &b%lang%" languages: Выберите Ваш предпочитаемый язык
credits: Авторы Slimefun4
wiki: Slimefun4 Вики
addons: Дополнения к Slimefun4
bugs: Отчёты об ошибках
source: Исходный код
credits:
commit: Коммит
commits: Коммитов
roles:
developer: "&6Разработчик"
wiki: "&3Редактор Вики"
resourcepack: "&cТекстурщик"
translator: "&9Локализатор"
profile-link: Нажмите, чтобы посетить GitHub профиль
pages:
previous: Предыдущая страница
next: Следующая страница
tooltips:
open-category: Нажмите, чтобы открыть
versions-notice: Это очень важно, когда Вы сообщаете об ошибках!
wiki: Просмотреть этот предмет на официальной Slimefun Вики
recipes:
machine: Рецепты, доступные в этой машине
miner: Ресурсы, добываемые этим шахтёром
generator: Доступные виды топлива
gold-pan: Ресурсы, которые Вы можете получить
back:
title: Назад
guide: Вернуться к руководству Slimefun
settings: Вернуться к настройкам
locked: ЗАБЛОКИРОВАНО locked: ЗАБЛОКИРОВАНО
locked-category: 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 Вики
tooltips:
open-category: Нажмите, чтобы открыть
recipes:
generator: Доступные виды топлива
gold-pan: Ресурсы, которые Вы можете получить
machine: Рецепты, доступные в этой машине
miner: Ресурсы, добываемые этим шахтёром
versions-notice: Это очень важно, когда Вы сообщаете об ошибках!
wiki: Просмотреть этот предмет на официальной Slimefun Вики
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Алтарь не окружён необходимым количеством пьедесталов
&c(%pedestals% / 8)"
unknown-catalyst: "&4Неизвестный катализатор! &cИспользуйте правильный рецепт!"
unknown-recipe: "&4Неизвестный рецепт! &cИспользуйте правильный рецепт!"
ANCIENT_PEDESTAL:
obstructed: "&4Что-то мешает! &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: Просмотр передатчиков
waypoints: Просмотр контрольных точек
HOLOGRAM_PROJECTOR:
enter-text: "&7Пожалуйста, введите желаемый текст для голограммы в чат. &r(можно
использовать цветовые коды!)"
inventory-title: Редактирование голограммы
ignition-chamber-no-flint: "&cАвтоматическая камера зажигания не смогла зажечь блок
из-за отсутствия огнива."
in-use: "&cИнвентарь этого блока уже открыт другим игроком."
pattern-not-found: "&eК сожалению, не удалось распознать этот рецепт. Пожалуйста,
разложите предметы в верной последовательности в раздатчик."
TELEPORTER:
cancelled: "&4Телепортация отменена!"
gui:
time: Расчётное время
title: Ваши контрольные точки
tooltip: Нажмите для телепортации
invulnerability: "&b&lВы получили 30 секунд неуязвимости!"
teleported: "&3Телепортировано!"
teleporting: "&3Телепортация…"
unknown-material: "&eК сожалению, не удалось распознать предмет в раздатчике. Пожалуйста,
перепроверьте все предметы."
wrong-item: "&eК сожалению, не удалось распознать предмет, которым Вы кликнули.
Проверьте рецепты и посмотрите, какие предметы Вы можете использовать."
INDUSTRIAL_MINER:
no-fuel: "&cВаш промышленный шахтёр исчерпал всё топливо! Поместите топливо в
сундук выше."
piston-facing: "&cПоршни промышленного шахтёра должны быть направлены вверх!"
piston-space: "&cПоршни должны иметь воздух над ними!"
destroyed: "&cПохоже, что промышленный шахтёр был сломан."
already-running: "&cВаш промышленный шахтёр уже работает!"
full-chest: "&cСундук Вашего промышленного шахтёра переполнен!"
no-permission: "&4У Вас нет прав, чтобы использовать промышленного шахтёра здесь!"
finished: "&eВаш промышленный шахтёр закончил работу! Добыто руд: %ores%!"
messages: messages:
cannot-place: "&cВы не можете поставить этот блок здесь!" not-researched: "&4Вам не хватает знаний, чтобы понять это"
diet-cookie: "&eВы ощущаете невероятное облегчение…" 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Вам выдали &a%amount% &7"%item%&7"'
give-item: '&bВы выдали игроку %player% &a%amount% &7"%item%&7"'
not-valid-research: "&4%research% &cне является допустимым исследованием!"
give-research: '&bВы выдали игроку %player% исследование &7"%research%&7"'
hungry: "&cВы слишком голодны для этого!"
mode-change: "&b%device% | Режим изменён на: &9%mode%"
disabled-in-world: "&4&lДанный предмет отключен в этом мире" disabled-in-world: "&4&lДанный предмет отключен в этом мире"
disabled-item: "&4&lЭтот предмет был отключен! Где Вы вообще его взяли?" disabled-item: "&4&lЭтот предмет был отключен! Где Вы вообще его взяли?"
no-tome-yourself: "&cВы не можете использовать &4том обмена знаниями &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Ваш талисман выдал Вам 5 секунд регенерации"
whirlwind: "&a&oВаш талисман отразил снаряд"
wizard: "&a&oТалисман повысил уровень зачарования «Удача», но мог также ухудшить
другие зачарования"
soulbound-rune:
fail: "&cВы можете привязать к себе только один предмет за раз."
success: "&aВы успешно привязали этот предмет к себе! Он останется при Вас после
смерти."
research:
start: "&7Древние духи шепчут загадочные слова в Ваше ухо!"
progress: "&7Вы начинаете задаваться вопросом о &b%research% &e(%progress%)"
fire-extinguish: "&7Вы погасили себя" fire-extinguish: "&7Вы погасили себя"
cannot-place: "&cВы не можете поставить этот блок здесь!"
no-pvp: "&cВы не можете вступать в PvP здесь!"
radiation: "&4Вы подвергались смертельной радиации! &cИзбавьтесь от всех радиоактивных
предметов или наденьте костюм химзащиты!"
opening-guide: "&bОткрытие руководства, это может занять некоторое время…"
opening-backpack: "&bОткрытие рюкзака, это может занять некоторое время…"
no-iron-golem-heal: "&cЭтот предмет не является железным слитком. Его нельзя использовать
для починки железных големов!"
link-prompt: "&eНажмите сюда:"
diet-cookie: "&eВы ощущаете невероятное облегчение…"
fortune-cookie: fortune-cookie:
- "&7Помогите! Я в плену на фабрике печений с предсказаниями!" - "&7Помогите! Я в плену на фабрике печений с предсказаниями!"
- "&7Уже завтра ты умрёшь… от любезного Крипера" - "&7Уже завтра ты умрёшь… от любезного Крипера"
@ -257,56 +147,171 @@ messages:
- "&742. Ответ 42." - "&742. Ответ 42."
- "&7Бед не ждите в этот день Walshy гонит грусти тень." - "&7Бед не ждите в этот день Walshy гонит грусти тень."
- "&7Никогда не копайте под себя!" - "&7Никогда не копайте под себя!"
give-item: '&bВы выдали игроку %player% &a%amount% &7"%item%&7"' - "&7Это всего лишь царапина!"
given-item: '&bВам выдали &a%amount% &7"%item%&7"' - "&7Всегда смотрите на светлую сторону жизни!"
give-research: '&bВы выдали игроку %player% исследование &7"%research%&7"' - "&7Вы съели странное печенье, до жути напоминающее бисквит"
hungry: "&cВы слишком голодны для этого!" - "&7Неоновые таблички просто ШИК!"
link-prompt: "&eНажмите сюда:" machines:
mode-change: "&b%device% | Режим изменён на: &9%mode%" pattern-not-found: "&eК сожалению, не удалось распознать этот рецепт. Пожалуйста,
multimeter: "&bНакопленное электричество: &3%stored% &b/ &3%capacity%" разложите предметы в верной последовательности в раздатчик."
no-iron-golem-heal: "&cЭтот предмет не является железным слитком. Его нельзя использовать unknown-material: "&eК сожалению, не удалось распознать предмет в раздатчике. Пожалуйста,
для починки железных големов!" перепроверьте все предметы."
no-permission: "&4У Вас недостаточно прав, чтобы сделать это" wrong-item: "&eК сожалению, не удалось распознать предмет, которым Вы кликнули.
no-pvp: "&cВы не можете вступать в PvP здесь!" Проверьте рецепты и посмотрите, какие предметы Вы можете использовать."
not-enough-xp: "&4У Вас недостаточно опыта, чтобы исследовать это" full-inventory: "&eК сожалению, инвентарь уже заполнен!"
no-tome-yourself: "&cВы не можете использовать &4том обмена знаниями &cна себе…" in-use: "&cИнвентарь этого блока уже открыт другим игроком."
not-online: "&4%player% &cсейчас не в игре!" ignition-chamber-no-flint: "&cАвтоматическая камера зажигания не смогла зажечь блок
not-researched: "&4Вам не хватает знаний, чтобы понять это" из-за отсутствия огнива."
not-valid-amount: "&4%amount% &cне является допустимым числом: количество должно ANCIENT_ALTAR:
быть больше нуля!" not-enough-pedestals: "&4Алтарь не окружён необходимым количеством пьедесталов
not-valid-item: "&4%item% &cне является допустимым предметом!" &c(%pedestals% / 8)"
not-valid-research: "&4%research% &cне является допустимым исследованием!" unknown-catalyst: "&4Неизвестный катализатор! &cИспользуйте правильный рецепт!"
only-players: "&4Эта команда предназначена только для игроков" unknown-recipe: "&4Неизвестный рецепт! &cИспользуйте правильный рецепт!"
opening-backpack: "&bОткрытие рюкзака, это может занять некоторое время…" ANCIENT_PEDESTAL:
opening-guide: "&bОткрытие руководства, это может занять некоторое время…" obstructed: "&4Что-то мешает! &cУбедитесь, что над пьедесталом ничего нет!"
radiation: "&4Вы подвергались смертельной радиации! &cИзбавьтесь от всех радиоактивных HOLOGRAM_PROJECTOR:
предметов или наденьте костюм химзащиты!" enter-text: "&7Пожалуйста, введите желаемый текст для голограммы в чат. &r(можно
research: использовать цветовые коды!)"
progress: "&7Вы начинаете задаваться вопросом о &b%research% &e(%progress%)" inventory-title: Редактирование голограммы
start: "&7Древние духи шепчут загадочные слова в Ваше ухо!" ELEVATOR:
soulbound-rune: no-destinations: "&4Этажи не найдены"
fail: "&cВы можете привязать к себе только один предмет за раз." pick-a-floor: "&3- Выберите пункт назначения -"
success: "&aВы успешно привязали этот предмет к себе! Он останется при Вас после current-floor: "&eВаш текущий этаж:"
смерти." click-to-teleport: "&eНажмите &7для перемещения на этот этаж:"
talisman: enter-name: "&7Пожалуйста, введите название для этажа в чат. &r(можно использовать
angel: "&a&oВаш талисман смягчил урон от падения" цветовые коды!)"
anvil: "&a&oВаш талисман сохранил инструмент от поломки" named: "&2Этаж успешно переименован: &r%floor%"
fire: "&a&oВаш талисман спас Вас от сгорания до смерти" TELEPORTER:
hunter: "&a&oВаш талисман удвоил Ваш дроп" teleporting: "&3Телепортация…"
knight: "&a&oВаш талисман выдал Вам 5 секунд регенерации" teleported: "&3Телепортировано!"
lava: "&a&oВаш талисман спас Вас от лавового сжигания до смерти" cancelled: "&4Телепортация отменена!"
magician: "&a&oВаш талисман прибавил Вам дополнительное зачарование" invulnerability: "&b&lВы получили 30 секунд неуязвимости!"
miner: "&a&oВаш талисман удвоил Ваш дроп" gui:
traveller: "&a&oВаш талисман повысил Вашу скорость" title: Ваши контрольные точки
warrior: "&a&oВаш талисман повысил Вашу силу на некоторое время" tooltip: Нажмите для телепортации
water: "&a&oВаш талисман спас Вас от утопления" time: Расчётное время
whirlwind: "&a&oВаш талисман отразил снаряд" CARGO_NODES:
wizard: "&a&oТалисман повысил уровень зачарования «Удача», но мог также ухудшить must-be-placed: "&4Может быть прикреплён только к сундуку или машине!"
другие зачарования" GPS_CONTROL_PANEL:
unknown-player: "&4Неизвестный игрок: &c%player%" title: Панель управления GPS
unlocked: '&bВы исследовали &7"%research%"' transmitters: Просмотр передатчиков
usage: "&4Использование: &c%usage%" waypoints: Просмотр контрольных точек
miner: INDUSTRIAL_MINER:
no-ores: "&eК сожалению, не удалось найти какую-либо руду поблизости!" no-fuel: "&cВаш промышленный шахтёр исчерпал всё топливо! Поместите топливо в
сундук выше."
piston-facing: "&cПоршни промышленного шахтёра должны быть направлены вверх!"
piston-space: "&cПоршни должны иметь воздух над ними!"
destroyed: "&cПохоже, что промышленный шахтёр был сломан."
already-running: "&cВаш промышленный шахтёр уже работает!"
full-chest: "&cСундук Вашего промышленного шахтёра переполнен!"
no-permission: "&4У Вас нет прав, чтобы использовать промышленного шахтёра здесь!"
finished: "&eВаш промышленный шахтёр закончил работу! Добыто руд: %ores%!"
anvil:
not-working: "&4Вы не можете использовать Slimefun предметы в наковальне!"
backpack:
already-open: "&cИзвините, этот рюкзак уже открыт в другом месте!"
no-stack: "&cВы не можете складывать рюкзаки вместе"
workbench: workbench:
not-enhanced: "&4Вы не можете использовать Slimefun предметы в обычном верстаке" not-enhanced: "&4Вы не можете использовать Slimefun предметы в обычном верстаке"
gps:
deathpoint: "&4Точка смерти &7%date%"
waypoint:
new: "&eПожалуйста, введите название новой контрольной точки в чат. &7(можно использовать
цветовые коды!)"
added: "&aКонтрольная точка успешно добавлена"
max: "&4Вы достигли максимального количества контрольных точек"
insufficient-complexity:
- "&4Недостаточная общая сила сигнала GPS сети: &c%complexity%"
- "&4а) Ваша GPS сеть пока что не подключена"
- "&4б) У Вашей GPS сети недостаточная сила сигнала"
geo:
scan-required: "&4Требуется геосканирование! &cПроанализируйте чанк при помощи
GPS-геосканера для начала!"
inventory:
no-access: "&4У Вас нет доступа к этому блоку"
android:
started: "&7Ваш Андроид возобновил работу своего скрипта"
stopped: "&7Ваш Андроид приостановил выполнение своего скрипта"
scripts:
already-uploaded: "&4Этот скрипт уже был загружен."
instructions:
START: "&2Начать работу скрипта"
REPEAT: "&9Повторить скрипт"
WAIT: "&eПодождать 0.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: "&bПродвинутая сборка урожая и пересадка"
FARM_EXOTIC_DOWN: "&bПродвинутая сборка урожая и пересадка &7(блок снизу)"
INTERFACE_ITEMS: "&9Сложить хранимые предметы в хранилище спереди"
INTERFACE_FUEL: "&cВосполнить топливо из хранилища спереди"
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: Иврит
ar: Арабский
af: Бурский
da: Датский
fi: Финский
uk: Украинский
ms: Малайский
'no': Норвержский
ja: Японский
fa: Персидский
th: Тайский
ro: Румынский
pt: Португальский (Португалия)
pt-BR: Португальский (Бразилия)
bg: Болгарский
ko: Корейский
tr: Турецкий
hr: Хорватский
mk: Македонский
sr: Сербский
be: Белорусский
tl: Тагальский
miner:
no-ores: "&eК сожалению, не удалось найти какую-либо руду поблизости!"

View File

@ -1,244 +1,135 @@
--- ---
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: "&bПрогресивне збирання врожаю та пересадка &7(блок знизу)"
FARM_EXOTIC_FORWARD: "&bПрогресивне збирання врожаю та пересадка"
FARM_FORWARD: "&bЗібрати врожай та пересадити"
GO_DOWN: "&7Рушити вниз"
GO_FORWARD: "&7Рушити вперед"
GO_UP: "&7Рушити вгору"
INTERFACE_FUEL: "&cПоповнити запаси палива зі сховища спереду"
INTERFACE_ITEMS: "&9Скласти збережені предмети в сховище спереду"
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: "&eЗачекати 0.5с"
rating:
already: "&4Ви вже оцінили цей скрипт!"
own: "&4Ви не можете оцінити власний скрипт!"
uploaded:
- "&bЗавантаження…"
- "&aВаш скрипт успішно завантажено!"
started: "&7Ваш Андроїд продовжив виконання свого скрипту"
stopped: "&7Ваш Андроїд призупинив виконання свого скрипту"
anvil:
not-working: "&4Ви не можете використовувати Slimefun предмети в наковальні!"
backpack:
already-open: "&cВибачте, цей рюкзак уже відкрито в іншому місці!"
no-stack: "&cВи не можете складати рюкзаки разом"
commands: commands:
help: Вивести цей екран допомоги
cheat: Увійти в режим видачі предметів cheat: Увійти в режим видачі предметів
give: Видача Slimefun предметів give: Видача Slimefun предметів
guide: Отримати посібник Slimefun guide: Отримати посібник Slimefun
help: Вивести цей екран допомоги timings: Вивести інформацію про нагрузку сервера
teleporter: Перегляд контрольних точок інших гравців
versions: Вивести список установлених доповнень
search: Пошук предметів по заданому запиту
open_guide: Відкрити посібник Slimefun open_guide: Відкрити посібник Slimefun
stats: Вивести статистику гравця
research: research:
description: Видати або скинути дослідження гравця description: Видати або скинути дослідження гравця
reset: "&cВи скинули дослідження гравця %player%" reset: "&cВи скинули дослідження гравця %player%"
reset-target: "&cВаші дослідження були скинуті" reset-target: "&cВаші дослідження були скинуті"
search: Пошук предметів по заданому запиту
stats: Вивести статистику гравця
teleporter: Перегляд контрольних точок інших гравців
timings: Вивести інформацію про нагрузку сервера
versions: Вивести список установлених доповнень
backpack: backpack:
description: Отримати копію існуючого рюкзака description: Отримати копію існуючого рюкзака
invalid-id: "&4Ідентифікатор повинен бути невід’ємним числом!" invalid-id: "&4Ідентифікатор повинен бути невід’ємним числом!"
player-never-joined: "&4Гравця з таким ніком не знайдено!" player-never-joined: "&4Гравця з таким ніком не знайдено!"
backpack-does-not-exist: "&4Вказаний рюкзак не існує!" backpack-does-not-exist: "&4Вказаний рюкзак не існує!"
restored-backpack-given: "&aРюкзак відновлено та додано в Ваш інвентар!" restored-backpack-given: "&aРюкзак відновлено та додано в Ваш інвентар!"
gps:
deathpoint: "&4Точка смерті &7%date%"
geo:
scan-required: "&4Необхідне геосканування! &cПроскануйте цей чанк геосканером
спочатку!"
insufficient-complexity:
- "&4Недостатня загальна сила GPS мережі: &c%complexity%"
- "&4а) Ваша GPS мережа ще не під’эднана"
- "&4б) У Вашої GPS мережі недостатня сила сигналу"
waypoint:
added: "&aКонтрольну точку успішно додано"
max: "&4Ви досягли максимальної кількості контрольних точок"
new: "&eБудь ласка, введіть назву для контрольної точки в чат. &7(кольори підтримуються!)"
guide: guide:
back: search:
guide: Повернутись до посібника Slimefun message: "&bЩо би Ви бажали знайти?"
settings: Повернутись до панелі налаштувань name: "&7Пошук…"
title: Назад tooltip: "&bНатисніть для пошуку предмету"
inventory: 'Пошук: %item%'
cheat: cheat:
no-multiblocks: "&4Ви не можете видати собі споруду, вона повинна бути побудована!" no-multiblocks: "&4Ви не можете видати собі споруду, вона повинна бути побудована!"
credits:
commit: Коміт
commits: Комітів
profile-link: Натисніть, щоб відвідати GitHub профіль
roles:
developer: "&6Розробник"
resourcepack: "&cТекстурщик"
translator: "&9Локалізатор"
wiki: "&3Редактор Вікі"
languages: languages:
updated: "&aВашу мову було успішно встановлено на: &b%lang%"
translations:
name: "&aЧогось не вистачає?"
lore: Натисніть, щоб додати свій переклад
select: Натисніть для вибору цієї мови select: Натисніть для вибору цієї мови
select-default: Натисніть для вибору стандартної мови select-default: Натисніть для вибору стандартної мови
selected-language: 'Наразі обрано:' selected-language: 'Наразі обрано:'
translations: title:
lore: Натисніть, щоб додати свій переклад main: Посібник Slimefun
name: "&aЧогось не вистачає?" settings: Налаштування та інформація
updated: "&aВашу мову було успішно встановлено на: &b%lang%" languages: Виберіть бажану мову
credits: Автори Slimefun4
wiki: Slimefun4 Вікі
addons: Доповнення до Slimefun4
bugs: Звіти про помилки
source: Вихідний код
credits:
commit: Коміт
commits: Комітів
roles:
developer: "&6Розробник"
wiki: "&3Редактор Вікі"
resourcepack: "&cТекстурщик"
translator: "&9Локалізатор"
profile-link: Натисніть, щоб відвідати GitHub профіль
pages:
previous: Попередня сторінка
next: Наступна сторінка
tooltips:
open-category: Натисніть, що відкрити
versions-notice: Це дуже важливо, коли Ви повідомляєте про помилки!
wiki: Переглянути цей предмет на офіційній Slimefun Вікі
recipes:
machine: Рецепти, доступні у цій машині
miner: Ресурси, що видобуваються цим шахтарем
generator: Доступні види палива
gold-pan: Ресурси, які Ви можете отримати
back:
title: Назад
guide: Повернутись до посібника Slimefun
settings: Повернутись до панелі налаштувань
locked: ЗАКРИТО locked: ЗАКРИТО
locked-category: locked-category:
- Для розблокування цієї категорії - Для розблокування цієї категорії
- спочатку відкрийте всі предмети - спочатку відкрийте всі предмети
- з категорій нижче - з категорій нижче
pages:
next: Наступна сторінка
previous: Попередня сторінка
search:
inventory: 'Пошук: %item%'
message: "&bЩо би Ви бажали знайти?"
name: "&7Пошук…"
tooltip: "&bНатисніть для пошуку предмету"
title:
addons: Доповнення до Slimefun4
bugs: Звіти про помилки
credits: Автори Slimefun4
languages: Виберіть бажану мову
main: Посібник Slimefun
settings: Налаштування та інформація
source: Вихідний код
wiki: Slimefun4 Вікі
tooltips:
open-category: Натисніть, що відкрити
recipes:
generator: Доступні види палива
gold-pan: Ресурси, які Ви можете отримати
machine: Рецепти, доступні у цій машині
miner: Ресурси, що видобуваються цим шахтарем
versions-notice: Це дуже важливо, коли Ви повідомляєте про помилки!
wiki: Переглянути цей предмет на офіційній Slimefun Вікі
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Вівтар не оточений необхідною кількістю п’єдесталів &c(%pedestals%
/ 8)"
unknown-catalyst: "&4Невідомий каталізатор! &cВикористовуйте правильний рецепт!"
unknown-recipe: "&4Невідомий рецепт! &cВикористовуйте правильний рецепт!"
ANCIENT_PEDESTAL:
obstructed: "&4Щось мішає! &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: Перегляд передавачів
waypoints: Перегляд контрольних точок
HOLOGRAM_PROJECTOR:
enter-text: "&7Будь ласка, введіть бажаний текст для голограми в чат. &r(кольори
підтримуються!)"
inventory-title: Редагування голограми
ignition-chamber-no-flint: "&cАвтоматична камера запалювання не змогла запалити
блок через відсутність запальничок."
in-use: "&cІнвентар цього блоку вже переглядає інший гравець."
pattern-not-found: "&eНа жаль, не вдалось розпізнати цей рецепт. Будь ласка, розмістіть
предмети у правильній послідовності у роздавач."
TELEPORTER:
cancelled: "&4Телепортацію відмінено!"
gui:
time: Розрахунковий час
title: Ваші контрольні точки
tooltip: Натисніть для телепортації
invulnerability: "&b&lВи отримали 30 секунд невразливості!"
teleported: "&3Телепортовано!"
teleporting: "&3Телепортація…"
unknown-material: "&eНа жаль, не вдалось розпізнати предмет у роздавачі. Будь ласка,
перепровірте предмети."
wrong-item: "&eНа жаль, не вдалось розпізнати предмет, яким Ви нажали. Провірте
рецепти та гляньте, які предмети Ви можете використовувати."
INDUSTRIAL_MINER:
no-fuel: "&cУ Вашого промислового шахтаря закінчилося пальне! Розмістіть пальне
у сундук вище."
piston-facing: "&cПоршні Вашого промислового шахтаря повинні бути направлені вгору!"
piston-space: "&cНад поршнями повинно бути повітря!"
destroyed: "&cСхоже, що Вашого промислового шахтаря було знищено."
already-running: "&cЦей промисловий шахтар вже працює!"
full-chest: "&cСундук Вашого промислового шахтаря переповнено!"
no-permission: "&4У Вас немає дозволу на використання промислового шахтаря у цьому
місці!"
finished: "&eВаш промисловий шахтар завершив роботу! Отримано руд: %ores%!"
messages: messages:
cannot-place: "&cВи не можете поставити цей блок тут!" not-researched: "&4Вам бракує знань, щоб зрозуміти це"
diet-cookie: "&eВи відчуваєте неймовірне полегшення…" 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не є допустимою кількістю: значення повинно бути
більшим за 0!"
given-item: '&bВам видали &a%amount% &7"%item%&7"'
give-item: '&bВи видали гравцю %player% &a%amount% &7"%item%&7"'
not-valid-research: "&4%research% &cне є правильним дослідженням!"
give-research: '&bВи видали грацю %player% дослідження &7"%research%&7"'
hungry: "&cВи занадто голодні для цього!"
mode-change: "&b%device% | Режим змінено на: &9%mode%"
disabled-in-world: "&4&lЦей предмет було відключено у цьому світі" disabled-in-world: "&4&lЦей предмет було відключено у цьому світі"
disabled-item: "&4&lЦей предмет було відключено! Де Ви змогли його надибати?" disabled-item: "&4&lЦей предмет було відключено! Де Ви змогли його надибати?"
no-tome-yourself: "&cВи не можете використати &4том обміну знаннями &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Ваш талісман надав Вам 5 секунд регенерації"
whirlwind: "&a&oВаш талісман відобразив снаряд"
wizard: "&a&oВаш талісман покращив рівень зачарування «Вдача», але також міг погіршити
інші зачарування"
soulbound-rune:
fail: "&cВи можете прикріпити до себе лише один предмет за раз."
success: "&aВи успішно прикріпили цей предмет до себе! Він залишиться з Вами після
смерті."
research:
start: "&7Древні духи шепочуть загадкові слова в Ваше вухо!"
progress: "&7Ви починаєте задумуватись над &b%research% &e(%progress%)"
fire-extinguish: "&7Ви погасили себе" fire-extinguish: "&7Ви погасили себе"
cannot-place: "&cВи не можете поставити цей блок тут!"
no-pvp: "&cВи не можете вступати в PvP тут!"
radiation: "&4Ви потрапили у дію небезпечної радіації! &cПозбавтесь радіоактивних
предметів або одягніть костюм хімзахисту!"
opening-guide: "&bВідкриваємо посібник, це може зайняти кілька секунд…"
opening-backpack: "&bВідкриваємо рюкзак, це може зайняти кілька секунд…"
no-iron-golem-heal: "&cЦей предмет не є залізним злитком. Його не можна використовувати
для лагодження залізних големів!"
link-prompt: "&eНатисніть сюди:"
diet-cookie: "&eВи відчуваєте неймовірне полегшення…"
fortune-cookie: fortune-cookie:
- "&7Допоможіть мені! Я у пастці на фабриці печива долі!" - "&7Допоможіть мені! Я у пастці на фабриці печива долі!"
- "&7Завтра ти помреш… від люб’язного Кріпера" - "&7Завтра ти помреш… від люб’язного Кріпера"
@ -252,56 +143,170 @@ messages:
- "&742. Відповідь 42." - "&742. Відповідь 42."
- "&7Неприємності йдуть лісом Walshy вже договорився з бісом." - "&7Неприємності йдуть лісом Walshy вже договорився з бісом."
- "&7Ніколи не копайте вниз!" - "&7Ніколи не копайте вниз!"
give-item: '&bВи видали гравцю %player% &a%amount% &7"%item%&7"' - "&7Це лише подряпина!"
given-item: '&bВам видали &a%amount% &7"%item%&7"' - "&7Завжди дивіться на світлу сторону життя!"
give-research: '&bВи видали грацю %player% дослідження &7"%research%&7"' - "&7Цього разу попався бісквіт, а не печиво"
hungry: "&cВи занадто голодні для цього!" - "&7Неонові таблички просто ШИК!"
link-prompt: "&eНатисніть сюди:" machines:
mode-change: "&b%device% | Режим змінено на: &9%mode%" pattern-not-found: "&eНа жаль, не вдалось розпізнати цей рецепт. Будь ласка, розмістіть
multimeter: "&bНакопичена електрика: &3%stored% &b/ &3%capacity%" предмети у правильній послідовності у роздавач."
no-iron-golem-heal: "&cЦей предмет не є залізним злитком. Його не можна використовувати unknown-material: "&eНа жаль, не вдалось розпізнати предмет у роздавачі. Будь ласка,
для лагодження залізних големів!" перепровірте предмети."
no-permission: "&4У Вас недостатньо прав для цього" wrong-item: "&eНа жаль, не вдалось розпізнати предмет, яким Ви нажали. Провірте
no-pvp: "&cВи не можете вступати в PvP тут!" рецепти та гляньте, які предмети Ви можете використовувати."
not-enough-xp: "&4У Вас недостатньо опиту, щоб дослідити це" full-inventory: "&eВибачте, інвентар переповнено!"
no-tome-yourself: "&cВи не можете використати &4том обміну знаннями &cна собі…" in-use: "&cІнвентар цього блоку вже переглядає інший гравець."
not-online: "&4%player% &cзараз не знаходиться у грі!" ignition-chamber-no-flint: "&cАвтоматична камера запалювання не змогла запалити
not-researched: "&4Вам бракує знань, щоб зрозуміти це" блок через відсутність запальничок."
not-valid-amount: "&4%amount% &cне є допустимою кількістю: значення повинно бути ANCIENT_ALTAR:
більшим за 0!" not-enough-pedestals: "&4Вівтар не оточений необхідною кількістю п’єдесталів &c(%pedestals%
not-valid-item: "&4%item% &cне є достовірним предметом!" / 8)"
not-valid-research: "&4%research% &cне є правильним дослідженням!" unknown-catalyst: "&4Невідомий каталізатор! &cВикористовуйте правильний рецепт!"
only-players: "&4Ця команда доступна лише для гравців" unknown-recipe: "&4Невідомий рецепт! &cВикористовуйте правильний рецепт!"
opening-backpack: "&bВідкриваємо рюкзак, це може зайняти кілька секунд…" ANCIENT_PEDESTAL:
opening-guide: "&bВідкриваємо посібник, це може зайняти кілька секунд…" obstructed: "&4Щось мішає! &cВпевніться, що над п’єдесталом нічого немає!"
radiation: "&4Ви потрапили у дію небезпечної радіації! &cПозбавтесь радіоактивних HOLOGRAM_PROJECTOR:
предметів або одягніть костюм хімзахисту!" enter-text: "&7Будь ласка, введіть бажаний текст для голограми в чат. &r(кольори
research: підтримуються!)"
progress: "&7Ви починаєте задумуватись над &b%research% &e(%progress%)" inventory-title: Редагування голограми
start: "&7Древні духи шепочуть загадкові слова в Ваше вухо!" ELEVATOR:
soulbound-rune: no-destinations: "&4Поверхи не знайдено"
fail: "&cВи можете прикріпити до себе лише один предмет за раз." pick-a-floor: "&3- Виберіть поверх -"
success: "&aВи успішно прикріпили цей предмет до себе! Він залишиться з Вами після current-floor: "&eВаш поверх:"
смерті." click-to-teleport: "&eКлацніть &7для переміщення на цей поверх:"
talisman: enter-name: "&7Будь ласка, введіть назву для поверху в чат. &r(кольори підтримуються!)"
angel: "&a&oВаш талісман пом'якшив пошкодження від падіння" named: "&2Поверх успішно названо: &r%floor%"
anvil: "&a&oВаш талісман зберіг інструмент від поломки" TELEPORTER:
fire: "&a&oВаш талісман врятував Вас від спалення до смерті" teleporting: "&3Телепортація…"
hunter: "&a&oВаш талісман подвоїв Ваш дроп" teleported: "&3Телепортовано!"
knight: "&a&oВаш талісман надав Вам 5 секунд регенерації" cancelled: "&4Телепортацію відмінено!"
lava: "&a&oВаш талісман врятував Вас від спалення до смерті" invulnerability: "&b&lВи отримали 30 секунд невразливості!"
magician: "&a&oВаш талісман надав Вам додаткове зачарування" gui:
miner: "&a&oВаш талісман подвоїв Ваш дроп" title: Ваші контрольні точки
traveller: "&a&oВаш талісман надав Вам швидкості" tooltip: Натисніть для телепортації
warrior: "&a&oВаш талісман надав Вам силу на деякий час" time: Розрахунковий час
water: "&a&oВаш талісман врятував Вас від утоплення" CARGO_NODES:
whirlwind: "&a&oВаш талісман відобразив снаряд" must-be-placed: "&4Повинно бути розміщено на сундуку або машині!"
wizard: "&a&oВаш талісман покращив рівень зачарування «Вдача», але також міг погіршити GPS_CONTROL_PANEL:
інші зачарування" title: Контрольна панель GPS
unknown-player: "&4Невідомий гравець: &c%player%" transmitters: Перегляд передавачів
unlocked: '&bВи дослідили &7"%research%"' waypoints: Перегляд контрольних точок
usage: "&4Використання: &c%usage%" INDUSTRIAL_MINER:
miner: no-fuel: "&cУ Вашого промислового шахтаря закінчилося пальне! Розмістіть пальне
no-ores: "&eНа жаль, не вдалось знайти руду поблизу!" у сундук вище."
piston-facing: "&cПоршні Вашого промислового шахтаря повинні бути направлені вгору!"
piston-space: "&cНад поршнями повинно бути повітря!"
destroyed: "&cСхоже, що Вашого промислового шахтаря було знищено."
already-running: "&cЦей промисловий шахтар вже працює!"
full-chest: "&cСундук Вашого промислового шахтаря переповнено!"
no-permission: "&4У Вас немає дозволу на використання промислового шахтаря у цьому
місці!"
finished: "&eВаш промисловий шахтар завершив роботу! Отримано руд: %ores%!"
anvil:
not-working: "&4Ви не можете використовувати Slimefun предмети в наковальні!"
backpack:
already-open: "&cВибачте, цей рюкзак уже відкрито в іншому місці!"
no-stack: "&cВи не можете складати рюкзаки разом"
workbench: workbench:
not-enhanced: "&4Ви не можете використовувати Slimefun предмети в звичайному верстаку" not-enhanced: "&4Ви не можете використовувати Slimefun предмети в звичайному верстаку"
gps:
deathpoint: "&4Точка смерті &7%date%"
waypoint:
new: "&eБудь ласка, введіть назву для контрольної точки в чат. &7(кольори підтримуються!)"
added: "&aКонтрольну точку успішно додано"
max: "&4Ви досягли максимальної кількості контрольних точок"
insufficient-complexity:
- "&4Недостатня загальна сила GPS мережі: &c%complexity%"
- "&4а) Ваша GPS мережа ще не під’эднана"
- "&4б) У Вашої GPS мережі недостатня сила сигналу"
geo:
scan-required: "&4Необхідне геосканування! &cПроскануйте цей чанк геосканером
спочатку!"
inventory:
no-access: "&4У Вас немає доступу до цього блоку"
android:
started: "&7Ваш Андроїд продовжив виконання свого скрипту"
stopped: "&7Ваш Андроїд призупинив виконання свого скрипту"
scripts:
already-uploaded: "&4Цей скрипт вже було завантажено."
instructions:
START: "&2Розпочати виконання скрипту"
REPEAT: "&9Повторити виконання скрипту"
WAIT: "&eЗачекати 0.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: "&bПрогресивне збирання врожаю та пересадка"
FARM_EXOTIC_DOWN: "&bПрогресивне збирання врожаю та пересадка &7(блок знизу)"
INTERFACE_ITEMS: "&9Скласти збережені предмети в сховище спереду"
INTERFACE_FUEL: "&cПоповнити запаси палива зі сховища спереду"
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: Португальська (Португалія)
pt-BR: Португальська (Бразилія)
ar: Арабська
af: Бурська
da: Датська
fi: Фінська
uk: Українська
ms: Малайська
'no': Норвезька
ja: Японська
fa: Перська
th: Тайська
ro: Румунська
bg: Болгарська
ko: Корейська
tr: Турецька
hr: Хорватська
mk: Македонська
sr: Сербська
be: Білоруська
tl: Тагальська
miner:
no-ores: "&eНа жаль, не вдалось знайти руду поблизу!"

View File

@ -1,219 +1,133 @@
--- ---
android:
scripts:
already-uploaded: "&4程式已上傳"
editor: 程式編輯器
enter-name:
-
- "&e輸入程式名稱"
instructions:
ATTACK_ANIMALS: "&4攻擊&c動物"
ATTACK_ANIMALS_ADULT: "&4攻擊&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向下收割並重種"
FARM_EXOTIC_DOWN: "&b進階向下收割並重種"
FARM_EXOTIC_FORWARD: "&b進階向前收割並重種"
FARM_FORWARD: "&b向前收割並重種"
GO_DOWN: "&7向下移動"
GO_FORWARD: "&7向前移動"
GO_UP: "&7向上移動"
INTERFACE_FUEL: "&c從燃料節點取得燃料"
INTERFACE_ITEMS: "&c向物品節點輸入物品"
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: "&e等0.5秒"
rating:
already: "&4你已經評價過此程式!"
own: "&4你不能評價自己的程式!"
uploaded:
- "&b上傳中"
- "&a成功上傳程式!"
started: "&7機器人繼續運作"
stopped: "&7機器人暫停運作"
anvil:
not-working: "&4科技物品需要用自動鐵砧+修理膠帶!"
backpack:
already-open: "&c別人正在使用這個背包!"
no-stack: "&c背包不能疊!"
commands: commands:
help: 顯示此幫助畫面
cheat: 允許您以作弊取得物品 cheat: 允許您以作弊取得物品
give: 給其他玩家Slimefun物品 give: 給其他玩家Slimefun物品
guide: 給自己一個Slimefun指南 guide: 給自己一個Slimefun指南
help: 顯示此幫助畫面 timings: 關於您的伺服器的卡頓信息
teleporter: 查看其他玩家的位置標點
versions: 列出所有已安裝的附屬插件
search: 在指南中搜索輸入的字句
open_guide: 打開Slimefun指南(不使用書本) open_guide: 打開Slimefun指南(不使用書本)
stats: 顯示玩家的統計數據
research: research:
description: 解鎖/重置玩家的研究項目 description: 解鎖/重置玩家的研究項目
reset: "&c你已使%player%變回智障" reset: "&c你已使%player%變回智障"
reset-target: "&c你變回笨蛋了" reset-target: "&c你變回笨蛋了"
search: 在指南中搜索輸入的字句 backpack:
stats: 顯示玩家的統計數據 description: 檢索已存在背包的副本
teleporter: 查看其他玩家的位置標點 invalid-id: "&4ID不能是負數!"
timings: 關於您的伺服器的卡頓信息 player-never-joined: "&4找不到該ID的玩家"
versions: 列出所有已安裝的附屬插件 backpack-does-not-exist: "&4該背包不存在!"
gps: restored-backpack-given: "&a你的背包已被修復並放到你的物品欄中!"
deathpoint: "&4死亡點&7%date%"
geo:
scan-required: "&4請先做地質掃描"
insufficient-complexity:
- "&4GPS信號不足 &c%complexity%"
- "&4a) GPS基礎設施未放置"
- "&4b)GPS信號不足"
waypoint:
added: "&a成功新增傳送點"
max: "&4傳送點已達上限"
new: "&e輸入傳送點名稱 &7(Color Codes supported!)"
guide: guide:
back: search:
guide: 回到Slimefun指南 message: "&c你要搜尋什麼?"
settings: 回到設定介面 name: "&7搜尋..."
title: 上一頁 tooltip: "&b點擊以尋找物品"
inventory: '尋找: %item%'
lore:
- "&b您要搜尋什麼"
- "&7請輸入搜尋字句到聊天"
cheat: cheat:
no-multiblocks: "&4您不能靠作弊取得多方塊結構機械你必須用蓋的" no-multiblocks: "&4您不能靠作弊取得多方塊結構機械你必須用蓋的"
credits:
commit: 成員
commits: 成員
profile-link: 點擊觀看他們在GitHub上的個人資料
roles:
developer: "&6開發人員"
resourcepack: "&7資源包製作人員"
translator: "&9翻譯人員"
wiki: "&3Wiki編輯人員"
languages: languages:
updated: "&a你的語言已改成: &b%lang%"
translations:
name: "&a缺少什麼嗎?"
lore: 點擊增加您自己的翻譯
select: 點擊選擇此語言 select: 點擊選擇此語言
select-default: 點擊選擇默認語言 select-default: 點擊選擇默認語言
selected-language: 當前選擇: selected-language: 當前選擇:
translations: title:
lore: 點擊增加您自己的翻譯 main: Slimefun指南
name: "&a缺少什麼嗎?" settings: 設置及資訊
updated: "&a你的語言已改成: &b%lang%" languages: 請選擇您偏好的語言
credits: Slimefun4貢獻者
wiki: Slimefun4 Wiki
addons: Slimefun4的附加插件
bugs: 錯誤報告
source: 來源代碼
credits:
commit: 成員
commits: 成員
roles:
developer: "&6開發人員"
wiki: "&3Wiki編輯人員"
resourcepack: "&7資源包製作人員"
translator: "&9翻譯人員"
profile-link: 點擊觀看他們在GitHub上的個人資料
pages:
previous: 上一頁
next: 下一頁
tooltips:
open-category: 點擊開啟
versions-notice: 這些在報告錯誤時非常重要!
wiki: 在Slimefun官方Wiki上查看此物品
recipes:
machine: 使用本機械的合成表
miner: 此挖礦機可獲取的資源
generator: 可以使用的燃料
gold-pan: 可以獲取的資源
back:
title: 上一頁
guide: 回到Slimefun指南
settings: 回到設定介面
locked: 已鎖定 locked: 已鎖定
locked-category: locked-category:
- 要解鎖此分類 - 要解鎖此分類
- 必須先解鎖下列分類 - 必須先解鎖下列分類
- 的所有物品 - 的所有物品
pages:
next: 下一頁
previous: 上一頁
search:
inventory: '尋找: %item%'
lore:
- "&b您要搜尋什麼"
- "&7請輸入搜尋字句到聊天"
message: "&c你要搜尋什麼?"
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: 在Slimefun官方Wiki上查看此物品
inventory:
no-access: "&4沒有權限使用該物品"
languages:
af: 南非語
ar: 阿拉伯文
bg: 保加利亞語
cs: 捷克文
da: 丹麥文
de: 德語
default: 默認
el: 希臘語
en: 英語
es: 西班牙文
fa: 波斯語
fi: 芬蘭文
fr: 法文
he: 希伯來語
hu: 匈牙利文
id: 印尼語
it: 義大利文
ja: 日語
ko: 韓語
lv: 拉脫維亞語
ms: 馬來語
nl: 荷蘭語
'no': 挪威
pl: 波蘭語
pt: 葡萄牙文(葡萄牙)
pt-BR: 葡萄牙文(巴西)
ro: 羅馬尼亞語
ru: 俄語
sk: 斯洛伐克文
sv: 瑞典語
th: 泰語
tr: 土耳其
uk: 烏克蘭文
vi: 越南文
zh-CN: 中文(簡體)
zh-TW: 中文(繁體)
machines:
ANCIENT_ALTAR:
not-enough-pedestals: "&4此祭壇需要更多基座&c(%pedestals% / 8)"
unknown-catalyst: "&4未知中心物品! &c請檢察合成表!"
unknown-recipe: "&4未知合成表! &c請檢察合成表!"
ANCIENT_PEDESTAL:
obstructed: "&4基座被擋住了! &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: 訊號發射器總覽
waypoints: 傳送點總覽
HOLOGRAM_PROJECTOR:
enter-text: "&7輸入你想要的文字 &r(可以輸入顏色代碼!)"
inventory-title: 全息投影編輯器
ignition-chamber-no-flint: "&c點火系統沒有打火石"
in-use: "&c別人正在使用這台機器"
pattern-not-found: "&e查無此合成表 請確認使用的機器或合成表的材料"
TELEPORTER:
cancelled: "&4傳送中止!"
gui:
time: 估計時間
title: 你的標記點
tooltip: 點擊以傳送
invulnerability: "&b&l你得到了30秒的無敵!"
teleported: "&3傳送成功!"
teleporting: "&3傳送中..."
unknown-material: "&e這個機器不能處理這個物品 請確認使用的機器或合成表的材料"
wrong-item: "&e你手持的物品和機器並不相容 請確認使用的機器或合成表的材料"
messages: messages:
cannot-place: "&c那裡不能放方塊!" not-researched: "&4你太笨了"
diet-cookie: "&e你開始覺得很輕..." 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不是有效數量數值必須大於0!"
given-item: '&b你已獲得 &a%amount% &7"%item%&7"'
give-item: '&b你已給予%player% &a%amount% &7"%item%&7"'
not-valid-research: "&4%research% &c不存在!"
give-research: '&b你已給予%player% 研究項目&7"%research%&7"'
hungry: "&c你太餓了做不了這個"
mode-change: "&b%device% 模式切換至: &9%mode%"
disabled-in-world: "&4&l此物品在此世界中已被禁用" disabled-in-world: "&4&l此物品在此世界中已被禁用"
disabled-item: "&4&l此物品已被禁用!你到底是怎樣得到的?" disabled-item: "&4&l此物品已被禁用!你到底是怎樣得到的?"
no-tome-yourself: "&c你不能在自己身上使用 &4知識之書&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你的護身符給了你速度3"
warrior: "&a&o你的護身符暫時提高了你的力量"
knight: "&a&o你的護身符給了你5秒的回復時間"
whirlwind: "&a&o你的護身符反射了投射物"
wizard: "&a&o你的護身符為你升高了幸運等級但也降低了其他附魔等級"
soulbound-rune:
fail: "&c你一次只能魂綁一個物品。"
success: "&a您已成功將此物品綁定魂綁!死後不會噴掉。"
research:
start: "&7遠古之靈在你耳邊低語!"
progress: "&7你開始研究&b%research% &e(%progress%)"
fire-extinguish: "&7你熄滅身上的火" fire-extinguish: "&7你熄滅身上的火"
cannot-place: "&c那裡不能放方塊!"
no-pvp: "&c這裡不准打架!"
radiation: "&4你正暴露在致命的輻射之下!&c立即丟棄放射性物品或裝備完整的防護服!"
opening-guide: "&b正在打開指南這可能需要幾秒鐘的時間..."
opening-backpack: "&b正在打開背包這可能需要幾秒鐘的時間..."
no-iron-golem-heal: "&c這不是鐵錠。你不能用它來治癒鐵巨人!"
link-prompt: "&e點擊此處:"
diet-cookie: "&e你開始覺得很輕..."
fortune-cookie: fortune-cookie:
- "&7快來幫幫我!我在幸運餅乾工廠裡出不了來!" - "&7快來幫幫我!我在幸運餅乾工廠裡出不了來!"
- "&7明天會有苦力怕歡樂送" - "&7明天會有苦力怕歡樂送"
@ -225,51 +139,161 @@ messages:
- "&742, 萬物的答案" - "&742, 萬物的答案"
- "&7Walshy會使你每天開開心心\n" - "&7Walshy會使你每天開開心心\n"
- "&7不要垂直往下挖!" - "&7不要垂直往下挖!"
give-item: '&b你已給予%player% &a%amount% &7"%item%&7"' - "&7這只是一個小傷!"
given-item: '&b你已獲得 &a%amount% &7"%item%&7"' - "&7永遠保持樂觀積極!"
give-research: '&b你已給予%player% 研究項目&7"%research%&7"' - "&7這不是普通的餅乾"
hungry: "&c你太餓了做不了這個" - "&7霓虹燈好帥!"
link-prompt: "&e點擊此處:" machines:
mode-change: "&b%device% 模式切換至: &9%mode%" pattern-not-found: "&e查無此合成表 請確認使用的機器或合成表的材料"
multimeter: "&b已儲存的能量:&3%stored% &b最大容量:&3%capacity%" unknown-material: "&e這個機器不能處理這個物品 請確認使用的機器或合成表的材料"
no-iron-golem-heal: "&c這不是鐵錠。你不能用它來治癒鐵巨人!" wrong-item: "&e你手持的物品和機器並不相容 請確認使用的機器或合成表的材料"
no-permission: "&4您沒有執行此動作所需的權限" full-inventory: "&e發射器滿了!(請考慮使用基礎機械輸出箱)"
no-pvp: "&c這裡不准打架!" in-use: "&c別人正在使用這台機器"
not-enough-xp: "&4你沒有足夠的經驗值用以解鎖這個" ignition-chamber-no-flint: "&c點火系統沒有打火石"
no-tome-yourself: "&c你不能在自己身上使用 &4知識之書&c..." ANCIENT_ALTAR:
not-online: "&4%player% &c還未上線!" not-enough-pedestals: "&4此祭壇需要更多基座&c(%pedestals% / 8)"
not-researched: "&4你太笨了" unknown-catalyst: "&4未知中心物品! &c請檢察合成表!"
not-valid-amount: "&4%amount% &c不是有效數量數值必須大於0!" unknown-recipe: "&4未知合成表! &c請檢察合成表!"
not-valid-item: "&4%item% &c不存在!" ANCIENT_PEDESTAL:
not-valid-research: "&4%research% &c不存在!" obstructed: "&4基座被擋住了! &c移除上方的方塊!"
only-players: "&4此命令只可由玩家發送" HOLOGRAM_PROJECTOR:
opening-backpack: "&b正在打開背包這可能需要幾秒鐘的時間..." enter-text: "&7輸入你想要的文字 &r(可以輸入顏色代碼!)"
opening-guide: "&b正在打開指南這可能需要幾秒鐘的時間..." inventory-title: 全息投影編輯器
radiation: "&4你正暴露在致命的輻射之下!&c立即丟棄放射性物品或裝備完整的防護服!" ELEVATOR:
research: no-destinations: "&4沒有目的地"
progress: "&7你開始研究&b%research% &e(%progress%)" pick-a-floor: "&3選擇樓層"
start: "&7遠古之靈在你耳邊低語!" current-floor: "&e這是你現在的樓層:"
soulbound-rune: click-to-teleport: "&e按這 &7來傳送到該樓:"
fail: "&c你一次只能魂綁一個物品。" enter-name: "&7輸入你的樓層名稱&r(可以輸入顏色代碼!)"
success: "&a您已成功將此物品綁定魂綁!死後不會噴掉。" named: "&2成功命名為 &r%floor%"
talisman: TELEPORTER:
angel: "&a&o你的護身符使你免疫摔落傷害" teleporting: "&3傳送中..."
anvil: "&a&o你的護符免了您的工具於斷裂" teleported: "&3傳送成功!"
fire: "&a&o你的護身符使你沒有燒死" cancelled: "&4傳送中止!"
hunter: "&a&o你的護符剛雙倍了你的掉落" invulnerability: "&b&l你得到了30秒的無敵!"
knight: "&a&o你的護身符給了你5秒的回復時間" gui:
lava: "&a&o你的護符把你從被燒死的命運中救出" title: 你的標記點
magician: "&a&o你的護身符給了你額外的附魔" tooltip: 點擊以傳送
miner: "&a&o你的護符剛雙倍了你的掉落" time: 估計時間
traveller: "&a&o你的護身符給了你速度3" CARGO_NODES:
warrior: "&a&o你的護身符暫時提高了你的力量" must-be-placed: "&4必須連接在箱子或機器旁!"
water: "&a&o你的護身符給了你空氣" GPS_CONTROL_PANEL:
whirlwind: "&a&o你的護身符反射了投射物" title: GPS控制面板
wizard: "&a&o你的護身符為你升高了幸運等級但也降低了其他附魔等級" transmitters: 訊號發射器總覽
unknown-player: "&4未知玩家&c%player%" waypoints: 傳送點總覽
unlocked: "&b你已解鎖&7“%research%”" INDUSTRIAL_MINER:
usage: "&4用法: &c%usage%" no-fuel: "&c你的工業挖礦機沒燃料了! 將燃料放置到上方的箱子"
miner: piston-facing: "&c工業挖礦機的活塞需要朝上!"
no-ores: "&e附近沒礦了!" piston-space: "&c兩活塞的上面需要為空氣!"
destroyed: "&c你的工業挖礦機被摧毀了"
already-running: "&c此工業挖礦機已經在運作中了!"
full-chest: "&c此工業挖礦機的箱子已滿!"
no-permission: "&4你沒有權限在此使用工業挖礦機!"
finished: "&e你的工業挖礦機已挖掘完畢 共挖到 %ores% 個!"
anvil:
not-working: "&4科技物品需要用自動鐵砧+修理膠帶!"
backpack:
already-open: "&c別人正在使用這個背包!"
no-stack: "&c背包不能疊!"
workbench: workbench:
not-enhanced: "&4科技物品不可在普通合成檯使用" not-enhanced: "&4科技物品不可在普通合成檯使用"
gps:
deathpoint: "&4死亡點&7%date%"
waypoint:
new: "&e輸入傳送點名稱 &7(Color Codes supported!)"
added: "&a成功新增傳送點"
max: "&4傳送點已達上限"
insufficient-complexity:
- "&4GPS信號不足 &c%complexity%"
- "&4a) GPS基礎設施未放置"
- "&4b)GPS信號不足"
geo:
scan-required: "&4請先做地質掃描"
inventory:
no-access: "&4沒有權限使用該物品"
android:
started: "&7機器人繼續運作"
stopped: "&7機器人暫停運作"
scripts:
already-uploaded: "&4程式已上傳"
instructions:
START: "&2執行程式"
REPEAT: "&9重複程式"
WAIT: "&e等0.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成年動物"
CHOP_TREE: "&c砍完整棵樹並重種"
CATCH_FISH: "&b嘗試抓魚"
FARM_FORWARD: "&b向前收割並重種"
FARM_DOWN: "&b向下收割並重種"
FARM_EXOTIC_FORWARD: "&b進階向前收割並重種"
FARM_EXOTIC_DOWN: "&b進階向下收割並重種"
INTERFACE_ITEMS: "&c向物品節點輸入物品"
INTERFACE_FUEL: "&c從燃料節點取得燃料"
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: 希伯來語
ar: 阿拉伯文
af: 南非語
da: 丹麥文
fi: 芬蘭文
uk: 烏克蘭文
ms: 馬來語
'no': 挪威
ja: 日語
fa: 波斯語
th: 泰語
ro: 羅馬尼亞語
pt: 葡萄牙文(葡萄牙)
pt-BR: 葡萄牙文(巴西)
bg: 保加利亞語
ko: 韓語
tr: 土耳其
hr: 克羅地亞語
mk: 馬其頓語
sr: 塞爾維亞語
be: 白俄羅斯語
tl: 他加祿語
miner:
no-ores: "&e附近沒礦了!"

View File

@ -1,145 +1,107 @@
--- ---
minecraft:
blasting:
lore:
- Funde este objeto en un Alto Horno
- para obtener el objeto que buscas.
name: Receta de Alto Horno
campfire:
lore:
- Funde este objeto sobre una Hoguera
- para obtener el objeto que buscas.
name: Receta de Hoguera
furnace:
lore:
- Funde este objeto en un Horno
- para obtener el objeto que buscas.
name: Receta de Horno
shaped:
lore:
- Haz este objeto tal como se muestra
- en una Tabla de Crafteo normal,
- la forma es importante.
name: Receta de Crafteo con forma
shapeless:
lore:
- Haz este objeto tal como se muestra
- en una Tabla de Crafteo normal
- Esta receta no tiene forma.
name: Receta de Crafteo sin forma
smoking:
lore:
- Funde este objeto en un Ahumador
- para obtener el objeto que buscas.
name: Receta de Ahumador
stonecutting:
lore:
- Haz este objeto tal como se muestra
- usando un Cortapiedras
name: Receta de Cortapiedras
slimefun: slimefun:
ancient_altar: multiblock:
name: Multiblock
lore: lore:
- Haz este objeto tal como se muestra - Construye la estructura presentada
- usando un Ancient Altar. - tal cual. No es una receta.
- Busca Ancient Altar para mas info.
name: Ancient Altar
armor_forge:
lore:
- Haz este objeto tal como se muestra
- usando una Armor Forge
name: Armor Forge
compressor:
lore:
- Haz este objeto tal como se muestra
- usando un Compressor
name: Compressor
enhanced_crafting_table: enhanced_crafting_table:
name: Enhanced Crafting Table
lore: lore:
- Haz este objeto tal como se muestra - Haz este objeto tal como se muestra
- en una Enhanced Crafting Table. - en una Enhanced Crafting Table.
- "¡Una Tabla de Crafteo normal no servirá!" - "¡Una Tabla de Crafteo normal no servirá!"
name: Enhanced Crafting Table armor_forge:
food_composter: name: Armor Forge
lore: lore:
- Haz este objeto tal como se muestra - Haz este objeto tal como se muestra
- usando un Food Composter - usando una Armor Forge
name: Food Composter
food_fabricator:
lore:
- Haz este objeto tal como se muestra
- usando un Food Fabricator
name: Food Fabricator
freezer:
lore:
- Congela este objeto tal como se muestra
- usando un Freezer
name: Freezer
geo_miner:
lore:
- Este objeto se puede obtener
- usando un GEO Miner
name: GEO Miner
gold_pan:
lore:
- Usa un Gold Pan para
- obtener este objeto.
name: Gold Pan
grind_stone: grind_stone:
name: Grind Stone
lore: lore:
- Haz este objeto tal como se muestra - Haz este objeto tal como se muestra
- usando una Grind Stone - usando una Grind Stone
name: Grind Stone
heated_pressure_chamber:
lore:
- Haz este objeto tal como se muestra
- usando una Heated Pressure Chamber
name: Heated Pressure Chamber
juicer:
lore:
- Haz este jugo tal como se muestra
- usando un Juicer
name: Juicer
magic_workbench:
lore:
- Haz este objeto tal como se muestra
- Usando una Magic Workbench
name: Magic Workbench
mob_drop:
lore:
- Mata ese Mob para
- obtener este objeto.
name: Botín de Mob
multiblock:
lore:
- Construye la estructura presentada
- tal cual. No es una receta.
name: Multiblock
nuclear_reactor:
lore:
- Este objeto es un suproducto generado
- al correr un Nuclear Reactor
name: Nuclear Reactor
ore_crusher:
lore:
- Haz este objeto tal como se muestra
- usando un Ore Crusher
name: Ore Crusher
ore_washer:
lore:
- Haz este objeto tal como se muestra
- usando un Ore Washer
name: Ore Washer
pressure_chamber:
lore:
- Haz este objeto tal como se muestra
- usando un Pressure Chamber
name: Pressure Chamber
smeltery: smeltery:
name: Smeltery
lore: lore:
- Haz este objeto tal como se muestra - Haz este objeto tal como se muestra
- usando un Smeltery - usando un Smeltery
name: Smeltery ore_crusher:
name: Ore Crusher
lore:
- Haz este objeto tal como se muestra
- usando un Ore Crusher
mob_drop:
name: Botín de Mob
lore:
- Mata ese Mob para
- obtener este objeto.
gold_pan:
name: Gold Pan
lore:
- Usa un Gold Pan para
- obtener este objeto.
compressor:
name: Compressor
lore:
- Haz este objeto tal como se muestra
- usando un Compressor
pressure_chamber:
name: Pressure Chamber
lore:
- Haz este objeto tal como se muestra
- usando un Pressure Chamber
ore_washer:
name: Ore Washer
lore:
- Haz este objeto tal como se muestra
- usando un Ore Washer
juicer:
name: Juicer
lore:
- Haz este jugo tal como se muestra
- usando un Juicer
magic_workbench:
name: Magic Workbench
lore:
- Haz este objeto tal como se muestra
- Usando una Magic Workbench
ancient_altar:
name: Ancient Altar
lore:
- Haz este objeto tal como se muestra
- usando un Ancient Altar.
- Busca Ancient Altar para mas info.
heated_pressure_chamber:
name: Heated Pressure Chamber
lore:
- Haz este objeto tal como se muestra
- usando una Heated Pressure Chamber
food_fabricator:
name: Food Fabricator
lore:
- Haz este objeto tal como se muestra
- usando un Food Fabricator
food_composter:
name: Food Composter
lore:
- Haz este objeto tal como se muestra
- usando un Food Composter
freezer:
name: Freezer
lore:
- Congela este objeto tal como se muestra
- usando un Freezer
geo_miner:
name: GEO Miner
lore:
- Este objeto se puede obtener
- usando un GEO Miner
nuclear_reactor:
name: Nuclear Reactor
lore:
- Este objeto es un suproducto generado
- al correr un Nuclear Reactor
oil_pump: oil_pump:
name: Oil Pump name: Oil Pump
lore: lore:
@ -156,3 +118,46 @@ slimefun:
lore: lore:
- Haz este objeto tal como se muestra - Haz este objeto tal como se muestra
- usando una Refinery - usando una Refinery
minecraft:
shaped:
name: Receta de Crafteo con forma
lore:
- Haz este objeto tal como se muestra
- en una Tabla de Crafteo normal,
- la forma es importante.
shapeless:
name: Receta de Crafteo sin forma
lore:
- Haz este objeto tal como se muestra
- en una Tabla de Crafteo normal
- Esta receta no tiene forma.
furnace:
name: Receta de Horno
lore:
- Funde este objeto en un Horno
- para obtener el objeto que buscas.
blasting:
name: Receta de Alto Horno
lore:
- Funde este objeto en un Alto Horno
- para obtener el objeto que buscas.
smoking:
name: Receta de Ahumador
lore:
- Funde este objeto en un Ahumador
- para obtener el objeto que buscas.
campfire:
name: Receta de Hoguera
lore:
- Funde este objeto sobre una Hoguera
- para obtener el objeto que buscas.
stonecutting:
name: Receta de Cortapiedras
lore:
- Haz este objeto tal como se muestra
- usando un Cortapiedras
smithing:
name: Smithing Table Recipe
lore:
- Haz este objeto como se muestra
- usando una Smithing Table

View File

@ -156,3 +156,8 @@ minecraft:
lore: lore:
- Создаётся так, как показано, - Создаётся так, как показано,
- используя камнерез - используя камнерез
smithing:
name: Создаётся на столе кузнеца
lore:
- Создаётся так, как показано,
- используя стол кузнеца

View File

@ -156,3 +156,8 @@ minecraft:
lore: lore:
- I-craft ang item na ito tulad ng ipinakita - I-craft ang item na ito tulad ng ipinakita
- gamit ang Stonecutter. - gamit ang Stonecutter.
smithing:
name: Smithing Table Recipe
lore:
- I-craft ang item na ito tulad ng ipinakita
- gamit ang Smithing Table.

View File

@ -156,3 +156,8 @@ minecraft:
lore: lore:
- Цей предмет створюється - Цей предмет створюється
- у камнерізі - у камнерізі
smithing:
name: Верстат коваля
lore:
- Цей предмет створюється
- на верстаті коваля

View File

@ -1,145 +1,107 @@
--- ---
minecraft:
blasting:
lore:
- 在高炉中燃烧
- 以合成你想要的物品
name: 高炉合成表
campfire:
lore:
- 在营火上燃烧
- 以合成你想要的物品
name: 营火合成表
furnace:
lore:
- 在熔炉中燃烧
- 以合成你想要的物品
name: 熔炉合成表
shaped:
lore:
- 如合成表所示
- 在普通的工作台中合成
- 摆放顺序很重要.
name: 有序合成
shapeless:
lore:
- 如合成表所示
- 在普通的工作台中合成.
- 摆放顺序不重要.
name: 无序合成
smoking:
lore:
- 在烟熏炉中燃烧
- 以合成你想要的物品
name: 烟熏炉合成表
stonecutting:
lore:
- 如合成表所示
- 使用切石机合成
name: 切石机合成表
slimefun: slimefun:
ancient_altar: multiblock:
name: 多方块结构
lore: lore:
- 如合成表所示 - 按照展示的结构用方块建造.
- 使用古代祭坛合成 - 它不能被合成.
- 查看古代祭坛页面获得更多信息
name: 古代祭坛 (Ancient Altar)
armor_forge:
lore:
- 如合成表所示
- 用盔甲锻造台合成
name: 盔甲锻造台 (Armor Forge)
compressor:
lore:
- 如合成表所示
- 在压缩机中合成
name: 压缩机 (Compressor)
enhanced_crafting_table: enhanced_crafting_table:
name: 增强型工作台 (Enhanced Crafting Table)
lore: lore:
- 如合成表所示 - 如合成表所示
- 在增强型工作台中合成. - 在增强型工作台中合成.
- 一个普通的工作台远远不够! - 一个普通的工作台远远不够!
name: 增强型工作台 (Enhanced Crafting Table) armor_forge:
food_composter: name: 盔甲锻造台 (Armor Forge)
lore: lore:
- 如合成表所示 - 如合成表所示
- 在食品堆肥器中制作 - 用盔甲锻造台合成
name: 食品堆肥器 (Food Composter)
food_fabricator:
lore:
- 如合成表所示合成
- 使用食品加工机
name: 食品加工机 (Food Fabricator)
freezer:
lore:
- 如合成表所示
- 在冰箱中合成
name: 冰箱 (Freezer)
geo_miner:
lore:
- 这个物品可以用
- GEO 矿机采集
name: GEO 矿机 (GEO Miner)
gold_pan:
lore:
- 使用淘金盘
- 获得此物品
name: 淘金盘 (Gold Pan)
grind_stone: grind_stone:
name: 磨石 (Grind Stone)
lore: lore:
- 如合成表所示 - 如合成表所示
- 使用磨石制作 - 使用磨石制作
name: 磨石 (Grind Stone)
heated_pressure_chamber:
lore:
- 如合成表所示
- 用加热压力舱合成
name: 加热压力舱 (Heated Pressure Chamber)
juicer:
lore:
- 如合成表所示
- 在榨汁机中制作果汁
name: 榨汁机 (Juicer)
magic_workbench:
lore:
- 如合成表所示
- 在魔法工作台中合成
name: 魔法工作台 (Magic Workbench)
mob_drop:
lore:
- 击杀指定的生物
- 以获得该物品
name: 击杀生物掉落
multiblock:
lore:
- 按照展示的结构用方块建造.
- 它不能被合成.
name: 多方块结构
nuclear_reactor:
lore:
- 这个物品是核反应堆
- 运行时产生的副产物
name: 核反应堆 (Nuclear Reactor)
ore_crusher:
lore:
- 如合成表所示
- 在碎矿机中合成
name: 矿石粉碎机 (Ore Crusher)
ore_washer:
lore:
- 如合成表所示
- 在洗矿机中合成
name: 洗矿机 (Ore Washer)
pressure_chamber:
lore:
- 如合成表所示
- 在压力舱中合成
name: 压力舱 (Pressure Chamber)
smeltery: smeltery:
name: 冶炼机 (Smeltery)
lore: lore:
- 如合成表所示 - 如合成表所示
- 用冶炼机合成 - 用冶炼机合成
name: 冶炼机 (Smeltery) ore_crusher:
name: 矿石粉碎机 (Ore Crusher)
lore:
- 如合成表所示
- 在碎矿机中合成
mob_drop:
name: 击杀生物掉落
lore:
- 击杀指定的生物
- 以获得该物品
gold_pan:
name: 淘金盘 (Gold Pan)
lore:
- 使用淘金盘
- 获得此物品
compressor:
name: 压缩机 (Compressor)
lore:
- 如合成表所示
- 在压缩机中合成
pressure_chamber:
name: 压力舱 (Pressure Chamber)
lore:
- 如合成表所示
- 在压力舱中合成
ore_washer:
name: 洗矿机 (Ore Washer)
lore:
- 如合成表所示
- 在洗矿机中合成
juicer:
name: 榨汁机 (Juicer)
lore:
- 如合成表所示
- 在榨汁机中制作果汁
magic_workbench:
name: 魔法工作台 (Magic Workbench)
lore:
- 如合成表所示
- 在魔法工作台中合成
ancient_altar:
name: 古代祭坛 (Ancient Altar)
lore:
- 如合成表所示
- 使用古代祭坛合成
- 查看古代祭坛页面获得更多信息
heated_pressure_chamber:
name: 加热压力舱 (Heated Pressure Chamber)
lore:
- 如合成表所示
- 用加热压力舱合成
food_fabricator:
name: 食品加工机 (Food Fabricator)
lore:
- 如合成表所示合成
- 使用食品加工机
food_composter:
name: 食品堆肥器 (Food Composter)
lore:
- 如合成表所示
- 在食品堆肥器中制作
freezer:
name: 冰箱 (Freezer)
lore:
- 如合成表所示
- 在冰箱中合成
geo_miner:
name: GEO 矿机 (GEO Miner)
lore:
- 这个物品可以用
- GEO 矿机采集
nuclear_reactor:
name: 核反应堆 (Nuclear Reactor)
lore:
- 这个物品是核反应堆
- 运行时产生的副产物
oil_pump: oil_pump:
name: 油泵 (Oil Pump) name: 油泵 (Oil Pump)
lore: lore:
@ -156,3 +118,46 @@ slimefun:
lore: lore:
- 如合成表所示 - 如合成表所示
- 用炼油机合成 - 用炼油机合成
minecraft:
shaped:
name: 有序合成
lore:
- 如合成表所示
- 在普通的工作台中合成
- 摆放顺序很重要.
shapeless:
name: 无序合成
lore:
- 如合成表所示
- 在普通的工作台中合成.
- 摆放顺序不重要.
furnace:
name: 熔炉合成表
lore:
- 在熔炉中燃烧
- 以合成你想要的物品
blasting:
name: 高炉合成表
lore:
- 在高炉中燃烧
- 以合成你想要的物品
smoking:
name: 烟熏炉合成表
lore:
- 在烟熏炉中燃烧
- 以合成你想要的物品
campfire:
name: 营火合成表
lore:
- 在营火上燃烧
- 以合成你想要的物品
stonecutting:
name: 切石机合成表
lore:
- 如合成表所示
- 使用切石机合成
smithing:
name: 锻造台
lore:
- 如所示配方
- 在锻造台中合成

View File

@ -1,134 +1,96 @@
--- ---
minecraft:
blasting:
lore:
- 加熱燒一燒
- 成品出來了!
name: 高爐合成表
campfire:
lore:
- 加熱燒一燒
- "\t\n成品出來了!"
name: 營火合成表
furnace:
lore:
- 加熱燒一燒
- 成品出來了!
name: 熔爐合成表
shaped:
lore:
- 數量一樣
- 位置一致
- "(原版合成檯)"
name: 有序合成
shapeless:
lore:
- 數量一樣
- 位置不重要
- "(原版合成檯)"
name: 無序合成
smoking:
lore:
- 加熱燒一燒
- 成品出來了!
name: 煙燻爐合成表
stonecutting:
lore:
- 上去磨一磨
- "\t\n成品出來了!"
name: 切石機合成表
slimefun: slimefun:
ancient_altar: multiblock:
name: 多重方塊
lore: lore:
- 使用古代祭壇 - 在世界中蓋出該結構
- 合成出該物品 - 這不是一個可合成的物品
- 到古代祭壇頁面獲取更多資訊
name: 古代祭壇(Ancient Altar)
armor_forge:
lore:
- 在盔甲鍛造檯中
- 鍛造出該物品
name: 盔甲鍛造檯(Armor Forge)
compressor:
lore:
- 使用壓縮機
- 壓縮出該物品
name: 壓縮機(Compressor)
enhanced_crafting_table: enhanced_crafting_table:
name: 進階合成檯(Enhanced Crafting Table)
lore: lore:
- 在進階合成檯中 - 在進階合成檯中
- 合成出該物品 - 合成出該物品
- 原版工作檯沒用喔 - 原版工作檯沒用喔
name: 進階合成檯(Enhanced Crafting Table) armor_forge:
food_composter: name: 盔甲鍛造檯(Armor Forge)
lore: lore:
- 使用堆肥機 - 在盔甲鍛造檯中
- 製造該物品 - 鍛造出該物品
name: 堆肥機(Food Composter) grind_stone:
food_fabricator: name: 研磨機(Grind Stone)
lore: lore:
- 使用食品加工場 - 在研磨機中
- 製造該物品 - 研磨出該物品
name: 食品加工場(Food Fabricator) smeltery:
name: 冶(一ㄝˇ )煉爐(Smeltery)
lore:
- 在冶煉爐中
- 冶煉出該物品
ore_crusher:
name: 礦石粉碎機(Ore Crusher)
lore:
- 使用礦石粉碎機
- 粉碎出該物品
mob_drop:
name: 怪物掉落物
lore:
- 擊殺該怪物
- 以取得該物品
gold_pan: gold_pan:
name: 掏金盤(Gold Pan)[工具區]
lore: lore:
- '使用掏金盤 - '使用掏金盤
' '
- 篩出此物品 - 篩出此物品
name: 掏金盤(Gold Pan)[工具區] compressor:
grind_stone: name: 壓縮機(Compressor)
lore: lore:
- 在研磨機中 - 使用壓縮機
- 研磨出該物品
name: 研磨機(Grind Stone)
heated_pressure_chamber:
lore:
- 使用高溫加壓室
- 壓縮出該物品 - 壓縮出該物品
name: |-
高溫加壓室
(Heated Pressure Chamber)
juicer:
lore:
- 使用果汁機
- 榨出蓋物品
name: 果汁機(Juicer)
magic_workbench:
lore:
- 使用魔法合成檯
- 合成出該物品
name: 魔法合成檯(Magic Workbench)
mob_drop:
lore:
- 擊殺該怪物
- 以取得該物品
name: 怪物掉落物
multiblock:
lore:
- 在世界中蓋出該結構
- 這不是一個可合成的物品
name: 多重方塊
ore_crusher:
lore:
- 使用礦石粉碎機
- 粉碎出該物品
name: 礦石粉碎機(Ore Crusher)
ore_washer:
lore:
- 使用礦物洗滌機
- 篩出該物品
name: 礦物洗滌機(Ore Washer)
pressure_chamber: pressure_chamber:
name: 加壓室(Pressure Chamber)
lore: lore:
- 使用加壓室 - 使用加壓室
- 壓縮出該物品 - 壓縮出該物品
name: 加壓室(Pressure Chamber) ore_washer:
smeltery: name: 礦物洗滌機(Ore Washer)
lore: lore:
- 在冶煉爐中 - 使用礦物洗滌機
- 冶煉出該物品 - 篩出該物品
name: 冶(一ㄝˇ )煉爐(Smeltery) juicer:
name: 果汁機(Juicer)
lore:
- 使用果汁機
- 榨出蓋物品
magic_workbench:
name: 魔法合成檯(Magic Workbench)
lore:
- 使用魔法合成檯
- 合成出該物品
ancient_altar:
name: 古代祭壇(Ancient Altar)
lore:
- 使用古代祭壇
- 合成出該物品
- 到古代祭壇頁面獲取更多資訊
heated_pressure_chamber:
name: |-
高溫加壓室
(Heated Pressure Chamber)
lore:
- 使用高溫加壓室
- 壓縮出該物品
food_fabricator:
name: 食品加工場(Food Fabricator)
lore:
- 使用食品加工場
- 製造該物品
food_composter:
name: 堆肥機(Food Composter)
lore:
- 使用堆肥機
- 製造該物品
freezer: freezer:
name: 冷凍艙(Freezer) name: 冷凍艙(Freezer)
lore: lore:
@ -160,3 +122,46 @@ slimefun:
lore: lore:
- 使用煉油廠 - 使用煉油廠
- 提煉該物品 - 提煉該物品
minecraft:
shaped:
name: 有序合成
lore:
- 數量一樣
- 位置一致
- "(原版合成檯)"
shapeless:
name: 無序合成
lore:
- 數量一樣
- 位置不重要
- "(原版合成檯)"
furnace:
name: 熔爐合成表
lore:
- 加熱燒一燒
- 成品出來了!
blasting:
name: 高爐合成表
lore:
- 加熱燒一燒
- 成品出來了!
smoking:
name: 煙燻爐合成表
lore:
- 加熱燒一燒
- 成品出來了!
campfire:
name: 營火合成表
lore:
- 加熱燒一燒
- "\t\n成品出來了!"
stonecutting:
name: 切石機合成表
lore:
- 上去磨一磨
- "\t\n成品出來了!"
smithing:
name: 鍛造台合成表
lore:
- 鍛造一下下
- 成品出來了

View File

@ -124,11 +124,14 @@ slimefun:
block_placer: Colocador de Blocos block_placer: Colocador de Blocos
scroll_of_dimensional_teleposition: Mudando as Coisas scroll_of_dimensional_teleposition: Mudando as Coisas
special_bows: Robin Hood special_bows: Robin Hood
tome_of_knowledge_sharing: Compartilhando com amigos
flask_of_knowledge: Armazenamento de XP flask_of_knowledge: Armazenamento de XP
hardened_glass: Suportar Explosões hardened_glass: Suportar Explosões
golden_apple_juice: Poção Dourada golden_apple_juice: Poção Dourada
cooler: Bebidas Portáteis cooler: Bebidas Portáteis
ancient_altar: Altar Ancião
wither_proof_obsidian: Obsidiana à Prova de Wither wither_proof_obsidian: Obsidiana à Prova de Wither
ancient_runes: Runas Elementais
special_runes: Runas Roxas special_runes: Runas Roxas
infernal_bonemeal: Farinha de Osso Infernal infernal_bonemeal: Farinha de Osso Infernal
rainbow_blocks: Blocos Coloridos rainbow_blocks: Blocos Coloridos
@ -166,12 +169,14 @@ slimefun:
energized_gps_transmitter: Transmissor de Nível Superior energized_gps_transmitter: Transmissor de Nível Superior
energy_regulator: Redes de Energia 101 energy_regulator: Redes de Energia 101
butcher_androids: Androids Açougueiro butcher_androids: Androids Açougueiro
organic_food: Comida Orgânica
auto_breeder: Alimentação Automatizada auto_breeder: Alimentação Automatizada
advanced_android: Androids Avançados advanced_android: Androids Avançados
advanced_butcher_android: Androids Avançados - Açougueiro advanced_butcher_android: Androids Avançados - Açougueiro
advanced_fisherman_android: Androids Avançados - Pescador advanced_fisherman_android: Androids Avançados - Pescador
animal_growth_accelerator: Manipulação do Crescimento Animal animal_growth_accelerator: Manipulação do Crescimento Animal
xp_collector: Coletor de XP xp_collector: Coletor de XP
organic_fertilizer: Fertilizante Orgânico
crop_growth_accelerator: Acelerador de Crescimento de Sementes crop_growth_accelerator: Acelerador de Crescimento de Sementes
better_crop_growth_accelerator: Acelerador de Crescimento de Sementes Atualizado better_crop_growth_accelerator: Acelerador de Crescimento de Sementes Atualizado
reactor_essentials: Fundamentos do Reator reactor_essentials: Fundamentos do Reator
@ -181,6 +186,7 @@ slimefun:
cargo_nodes: Configuração de Carga cargo_nodes: Configuração de Carga
electric_ingot_machines: Fabricação de Barras Elétricas electric_ingot_machines: Fabricação de Barras Elétricas
high_tier_electric_ingot_machines: Fabricação de Barras Super Rápida high_tier_electric_ingot_machines: Fabricação de Barras Super Rápida
automated_crafting_chamber: Criação Automatizada
better_food_fabricator: Fabricação de Alimentos Atualizada better_food_fabricator: Fabricação de Alimentos Atualizada
reactor_access_port: Interação do Reator reactor_access_port: Interação do Reator
fluid_pump: Bomba de Fluido fluid_pump: Bomba de Fluido
@ -224,9 +230,9 @@ slimefun:
electric_press: Prensa Elétrica electric_press: Prensa Elétrica
magnesium_generator: Gerador de Magnésio magnesium_generator: Gerador de Magnésio
kelp_cookie: Alga Marinha Saborosa kelp_cookie: Alga Marinha Saborosa
tome_of_knowledge_sharing: Compartilhando com amigos makeshift_smeltery: Fundição Improvisada
ancient_altar: Altar Ancião tree_growth_accelerator: Árvores mais rápidas
ancient_runes: Runas Elementais industrial_miner: Mineração Industrial
organic_food: Comida Orgânica advanced_industrial_miner: Melhor mineração
organic_fertilizer: Fertilizante Orgânico magical_zombie_pills: Deszombificação
automated_crafting_chamber: Criação Automatizada auto_brewer: Cervejaria Industrial

View File

@ -1,236 +1,238 @@
--- ---
slimefun: slimefun:
24k_gold_block: "«Эльдорадо»" walking_sticks: Мои любимые трости
advanced_android: Продвинутые Андроиды portable_crafter: Портативный крафтер
advanced_butcher_android: Продвинутый Андроид-мясник fortune_cookie: Печенье судьбы
advanced_circuit_board: Печатная плата portable_dustbin: Портативный мусорный ящик
advanced_electric_smeltery: Модернизированная электрическая плавильня meat_jerky: Вяленое мясо
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: Бронированный реактивный ранец
armor_forge: Изготовление доспехов armor_forge: Изготовление доспехов
auto_anvil: Автоматизированная наковальня glowstone_armor: Светящаяся броня
auto_breeder: Автоматизированное размножение lumps: Осколки Незера и Эндера
auto_drier: "«День сушки»" ender_backpack: Эндер-рюкзак
auto_enchanting: Автоматизированное зачаровывание и разачаровывание ender_armor: Эндер-броня
automated_crafting_chamber: Автоматизированный крафт magic_eye_of_ender: Магическое око Эндера
automated_panning_machine: Автоматизированная рудопромывочная машина magic_sugar: Волшебный сахар
automatic_ignition_chamber: Автоматизированная камера зажигания monster_jerky: Вяленая плоть
backpacks: Рюкзаки slime_armor: Слизневая броня
sword_of_beheading: Меч обезглавливания
basic_circuit_board: Монтажная плата basic_circuit_board: Монтажная плата
advanced_circuit_board: Печатная плата
smeltery: Плавильня
steel: Стальной век
misc_power_items: Важные ресурсы для питания сети
battery: Ваша первая батарея battery: Ваша первая батарея
better_carbon_press: Модернизированный углеродный пресс steel_plate: Стальное покрытие
better_crop_growth_accelerator: Модернизированный ускоритель роста растений steel_thruster: Стальной ускоритель
better_electric_crucibles: Горячие тигли parachute: Парашют
better_electric_furnace: Модернизированная электрическая печь grappling_hook: Крюк-кошка
better_food_fabricator: Улучшенная пищевая фабрика jetpacks: Реактивные ранцы
better_freezer: Улучшенная морозилка multitools: Мультиинструменты
better_gps_transmitters: Модернизированные передатчики solar_panel_and_helmet: Солнечная энергия
better_heated_pressure_chamber: Модернизированная обогреваемая барокамера elemental_staff: Стихийные посохи
better_solar_generators: Модернизированные солнечные генераторы grind_stone: Точильный камень
bio_reactor: Биореактор
blade_of_vampires: Вампирский клинок
blistering_ingots: Раскалённые слитки
block_placer: Размещатель блоков
boosted_uranium: "«Замкнутый круг»"
boots_of_the_stomper: Сапожки путешественника
bound_armor: Персональная броня
bound_backpack: Персональное хранилище
bound_tools: Персональные инструменты
bound_weapons: Персональное оружие
bronze: Создание бронзы
butcher_androids: Андроид-мясник
cactus_armor: Кактусовый костюм cactus_armor: Кактусовый костюм
capacitors: Маленький накопитель энергии gold_pan: Рудопромывочный лоток
carbonado: Карбонадо magical_book_cover: Обложка магической книги
carbonado_furnace: Карбонадовая печь slimefun_metals: Новые металлы
carbonado_tools: Высокоуровневые машины ore_crusher: Разрушитель руд
carbon_press: Углеродный пресс bronze: Создание бронзы
cargo_basics: Основы грузовой сети alloys: Продвинутые сплавы
cargo_nodes: Установка грузовой сети
chainmail_armor: Кольчужная броня
charging_bench: Зарядное устройство-верстак
coal_generator: Угольный генератор
cobalt_pickaxe: Кобальтовая кирка
combustion_reactor: Реактор внутреннего сгорания
common_talisman: Обычный талисман
composter: Компостирование грязи
compressor_and_carbon: Создание углерода compressor_and_carbon: Создание углерода
cooler: "«Переносной холодильник»" gilded_iron_armor: Позолоченные железные доспехи
copper_wire: Медный провод synthetic_diamond: Синтезированный алмаз
crop_growth_accelerator: Ускорение роста растений pressure_chamber: Барокамера
crucible: Тигель synthetic_sapphire: Синтетические сапфиры
crushed_ore: Очистка руды
damascus_steel: Слиток дамасской стали damascus_steel: Слиток дамасской стали
damascus_steel_armor: Доспехи из дамасской стали damascus_steel_armor: Доспехи из дамасской стали
diet_cookie: Диетическое печенье reinforced_alloy: Армированный сплав
duct_tape: Скотч carbonado: Карбонадо
electric_crucible: Электрический тигель magic_workbench: Магический верстак
electric_furnaces: Электрическая печь wind_staff: Посох ветров
electric_ingot_machines: Электрический завод слитков 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: "«Нагрев»" 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_ore_grinding: Дробление и распыление
electric_press: Электрический пресс heated_pressure_chamber: Обогреваемая барокамера
electric_smeltery: Электрическая плавильня coal_generator: Угольный генератор
elemental_staff: Стихийные посохи bio_reactor: Биореактор
auto_enchanting: Автоматизированное зачаровывание и разачаровывание
auto_anvil: Автоматизированная наковальня
multimeter: Измерение мощности
gps_setup: Базовая GPS установка
gps_emergency_transmitter: GPS аварийная точка
programmable_androids: Программируемые Андроиды
android_interfaces: Андроид-интерфейсы
geo_scanner: Гоесканирование
combustion_reactor: Реактор внутреннего сгорания
teleporter: Базовые компоненты телепортера
teleporter_activation_plates: Активация телепортера
better_solar_generators: Модернизированные солнечные генераторы
better_gps_transmitters: Модернизированные передатчики
elevator: Лифтовая плита elevator: Лифтовая плита
elytra: Элитры energized_solar_generator: Солнечная энергия круглые сутки!
energized_gps_transmitter: Высокоуровневый передатчик
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: "«Замкнутый круг»"
trash_can: Мусорка
advanced_output_node: Продвинутый грузовой узел
carbon_press: Углеродный пресс
electric_smeltery: Электрическая плавильня
better_electric_furnace: Модернизированная электрическая печь
better_carbon_press: Модернизированный углеродный пресс
empowered_android: Усиленные Андроиды empowered_android: Усиленные Андроиды
empowered_butcher_android: Усиленный Андроид-мясник empowered_butcher_android: Усиленный Андроид-мясник
empowered_fisherman_android: Усиленный Андроид-рыбак empowered_fisherman_android: Усиленный Андроид-рыбак
ender_armor: Эндер-броня
ender_backpack: Эндер-рюкзак
ender_talismans: Эндер-талисманы
energized_gps_transmitter: Высокоуровневый передатчик
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 аварийная точка
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_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: "«Огненная ситуация»"
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: Органическая пища
output_chest: Выходной сундук
parachute: Парашют
pickaxe_of_containment: Кирка сдерживания
pickaxe_of_the_seeker: Кирка искателя
pickaxe_of_vein_mining: Кирка жильного копания
plastic_sheet: Пластик
portable_crafter: Портативный крафтер
portable_dustbin: Портативный мусорный ящик
pressure_chamber: Барокамера
programmable_androids: Программируемые Андроиды
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: Стальной ускоритель
storm_staff: Штормовой посох
sword_of_beheading: Меч обезглавливания
synthetic_diamond: Синтезированный алмаз
synthetic_emerald: Фальшивый изумруд
synthetic_sapphire: Синтетические сапфиры
table_saw: Лесопилка
teleporter: Базовые компоненты телепортера
teleporter_activation_plates: Активация телепортера
tome_of_knowledge_sharing: Поделиться с ближними
totem_of_undying: Тотем бессмертия
trash_can: Мусорка
traveller_talisman: Талисман путешественника
tree_growth_accelerator: Быстрорастущие деревья
uranium: Радиоактивные штучки
walking_sticks: Мои любимые трости
warrior_talisman: Талисман воина
water_staff: Посох морей
water_talisman: Талисман покорителя воды
whirlwind_talisman: Талисман вихря
wind_staff: Посох ветров
wither_assembler: Образователь Визеров wither_assembler: Образователь Визеров
wither_proof_glass: Визеростойкое стекло better_heated_pressure_chamber: Модернизированная обогреваемая барокамера
wither_proof_obsidian: Визеростойкий обсидиан elytra: Элитры
wizard_talisman: Талисман волшебника special_elytras: Особые элитры
woven_backpack: Тканевой рюкзак electric_crucible: Электрический тигель
xp_collector: Собиратель опыта better_electric_crucibles: Горячие тигли
advanced_electric_smeltery: Модернизированная электрическая плавильня
advanced_farmer_android: Продвинутый Андроид-фермер
lava_generator: Лавовый генератор
nether_ice: Незерский хладагент
nether_star_reactor: Звёздный незерский реактор
blistering_ingots: Раскалённые слитки
automatic_ignition_chamber: Автоматизированная камера зажигания
output_chest: Выходной сундук
copper_wire: Медный провод
radiant_backpack: Рюкзак путешественника
auto_drier: "«День сушки»"
diet_cookie: Диетическое печенье
storm_staff: Штормовой посох
soulbound_rune: Персональная руна
geo_miner: Геокопатель
lightning_rune: Молниевая руна
totem_of_undying: Тотем бессмертия
charging_bench: Зарядное устройство-верстак
nether_gold_pan: Незерский рудопромывочный лоток
electric_press: Электрический пресс
magnesium_generator: Магниевое питание
kelp_cookie: Вкусная водоросль
makeshift_smeltery: Импровизированная плавильня
tree_growth_accelerator: Быстрорастущие деревья
industrial_miner: Промышленная добыча industrial_miner: Промышленная добыча
advanced_industrial_miner: Улучшенная добыча advanced_industrial_miner: Улучшенная добыча
magical_zombie_pills: Дезомбификация
auto_brewer: Промышленная пивоварня

View File

@ -1,236 +1,238 @@
--- ---
slimefun: slimefun:
24k_gold_block: "«Ельдорадо»" walking_sticks: Мої улюблені палиці
advanced_android: Просунуті Андроїди portable_crafter: Портативний крафтер
advanced_butcher_android: Просунутий Андроїд-м’ясник fortune_cookie: Печиво долі
advanced_circuit_board: Друкована плата portable_dustbin: Портативна мусорка
advanced_electric_smeltery: Модернізована електрична плавильня meat_jerky: В’ялене м’ясо
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: Броньований реактивний ранець
armor_forge: Виготовлення обладунків armor_forge: Виготовлення обладунків
auto_anvil: Автоматизоване ковадло glowstone_armor: Сяюча броня
auto_breeder: Автоматизоване розмноження lumps: Уламки Незеру та Енду
auto_drier: "«День сушки»" ender_backpack: Ендер-рюкзак
auto_enchanting: Автоматизоване зачарування та розчарування ender_armor: Ендер-броня
automated_crafting_chamber: Автоматизований крафт magic_eye_of_ender: Магічне око Енду
automated_panning_machine: Автоматизована машина для очищення руди magic_sugar: Чарівний цукор
automatic_ignition_chamber: Автоматизована камера запалювання monster_jerky: В’ялена плоть
backpacks: Рюкзаки slime_armor: Слизова броня
sword_of_beheading: Меч обезголовлювання
basic_circuit_board: Монтажна плата basic_circuit_board: Монтажна плата
advanced_circuit_board: Друкована плата
smeltery: Плавильня
steel: Сталевий вік
misc_power_items: Важливі ресурси для підтримання електромережі
battery: Ваша перша батарея battery: Ваша перша батарея
better_carbon_press: Модернізований вуглецевий прес steel_plate: Сталеве покриття
better_crop_growth_accelerator: Модернізований прискорювач росту рослин steel_thruster: Сталевий прискорювач
better_electric_crucibles: Гарячі тиглі parachute: Парашут
better_electric_furnace: Модернізована електрична піч grappling_hook: Крюк-кішка
better_food_fabricator: Покращена харчова фабрика jetpacks: Реактивні ранці
better_freezer: Покращена морозилка multitools: Мультиприбори
better_gps_transmitters: Модернізовані передавачі solar_panel_and_helmet: Сонячна енергія
better_heated_pressure_chamber: Модернізована обігріваюча барокамера elemental_staff: Стихійні посохи
better_solar_generators: Модернізовані сонячні генератори grind_stone: Точильний камінь
bio_reactor: Біореактор
blade_of_vampires: Вампірський клинок
blistering_ingots: Розпечені злитки
block_placer: Розміщувач блоків
boosted_uranium: "«Замкнуте коло»"
boots_of_the_stomper: Чобітки мандрівника
bound_armor: Персональна броня
bound_backpack: Персональне сховище
bound_tools: Персональні інструменти
bound_weapons: Персональна зброя
bronze: Створення бронзи
butcher_androids: Андроїд-м’ясник
cactus_armor: Кактусовий костюм cactus_armor: Кактусовий костюм
capacitors: Маленький накопичувач енергії gold_pan: Рудопромивочний лоток
carbonado: Карбонад magical_book_cover: Обкладинка магічної книги
carbonado_furnace: Піч-карбонадо slimefun_metals: Нові метали
carbonado_tools: Високорівневі машини ore_crusher: Руйнівник руд
carbon_press: Вуглецевий прес bronze: Створення бронзи
cargo_basics: Основи вантажної мережі alloys: Передові сплави
cargo_nodes: Налаштування вантажної мережі
chainmail_armor: Кольчужна броня
charging_bench: Зарядний пристрій-верстак
coal_generator: Вугільний генератор
cobalt_pickaxe: Кобальтове кайло
combustion_reactor: Реактор внутрішнього згоряння
common_talisman: Звичайний талісман
composter: Компостування бруду
compressor_and_carbon: Створення вуглецю compressor_and_carbon: Створення вуглецю
cooler: "«Переносний холодильник»" gilded_iron_armor: Позолочені залізні обладунки
copper_wire: Мідний дріт synthetic_diamond: Синтезований діамант
crop_growth_accelerator: Прискорення росту рослин pressure_chamber: Барокамера
crucible: Тигель synthetic_sapphire: Синтетичні сапфіри
crushed_ore: Очищення руди
damascus_steel: Злиток дамаської сталі damascus_steel: Злиток дамаської сталі
damascus_steel_armor: Обладунки з дамаської сталі damascus_steel_armor: Обладунки з дамаської сталі
diet_cookie: Дієтичне печиво reinforced_alloy: Армований сплав
duct_tape: Скотч carbonado: Карбонад
electric_crucible: Електричний тигель magic_workbench: Магічний верстак
electric_furnaces: Електрична піч wind_staff: Посох вітрів
electric_ingot_machines: Електричний завод злитків 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: "«Нагрів»" 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_ore_grinding: Дроблення і розпорошення
electric_press: Електричний прес heated_pressure_chamber: Отеплювальна барокамера
electric_smeltery: Електрична плавильня coal_generator: Вугільний генератор
elemental_staff: Стихійні посохи bio_reactor: Біореактор
auto_enchanting: Автоматизоване зачарування та розчарування
auto_anvil: Автоматизоване ковадло
multimeter: Вимірювання потужності
gps_setup: Базова GPS установка
gps_emergency_transmitter: GPS аварійний пункт
programmable_androids: Програмовані Андроїди
android_interfaces: Андроїд-інтерфейси
geo_scanner: Геосканування
combustion_reactor: Реактор внутрішнього згоряння
teleporter: Базові компоненти телепортера
teleporter_activation_plates: Активація телепортера
better_solar_generators: Модернізовані сонячні генератори
better_gps_transmitters: Модернізовані передавачі
elevator: Ліфтові плити elevator: Ліфтові плити
elytra: Елітри energized_solar_generator: Сонячна енергія цілодобово!
energized_gps_transmitter: Високорівневий передавач
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: "«Замкнуте коло»"
trash_can: Смітник
advanced_output_node: Просунутий вантажний вузол
carbon_press: Вуглецевий прес
electric_smeltery: Електрична плавильня
better_electric_furnace: Модернізована електрична піч
better_carbon_press: Модернізований вуглецевий прес
empowered_android: Посилені Андроїди empowered_android: Посилені Андроїди
empowered_butcher_android: Посилений Андроїд-м’ясник empowered_butcher_android: Посилений Андроїд-м’ясник
empowered_fisherman_android: Посилений Андроїд-рибалка empowered_fisherman_android: Посилений Андроїд-рибалка
ender_armor: Ендер-броня
ender_backpack: Ендер-рюкзак
ender_talismans: Ендер-талісмани
energized_gps_transmitter: Високорівневий передавач
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 аварійний пункт
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_carbon_press: Високорівневий вуглецевий прес
high_tier_electric_ingot_machines: Надшвидкий електричний завод злитків wither_assembler: Створювач Висушувачів
high_tier_enhanced_furnaces: Високорівнева піч better_heated_pressure_chamber: Модернізована обігріваюча барокамера
hologram_projector: ГоЛоГрАмИ elytra: Елітри
hunter_talisman: Талісман мисливця special_elytras: Особливі елітри
infernal_bonemeal: Пекельне кісткове бодошно electric_crucible: Електричний тигель
infused_hopper: Заряджена воронка better_electric_crucibles: Гарячі тиглі
infused_magnet: Магніт? advanced_electric_smeltery: Модернізована електрична плавильня
jetboots: Реактивні черевики advanced_farmer_android: Покращений Андроїд-фермер
jetpacks: Реактивні ранці
juicer: Смачні напої
kelp_cookie: Смачна водорість
knight_talisman: Талісман лицаря
lava_crystal: "«Вогняна ситуація»"
lava_generator: Лавовий генератор 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_ice: Пекельний холодоагент
nether_star_reactor: Пекельно-зірковий реактор nether_star_reactor: Пекельно-зірковий реактор
nickel_and_cobalt: Навіть більше руд! blistering_ingots: Розпечені злитки
night_vision_googles: Пристрій нічного бачення automatic_ignition_chamber: Автоматизована камера запалювання
nuclear_reactor: Атомна електростанція
oil: Нафта!
ore_crusher: Руйнівник руд
ore_washer: Очищувач руд
organic_fertilizer: Органічні добрива
organic_food: Органічна їжа
output_chest: Вихідна скриня output_chest: Вихідна скриня
parachute: Парашут copper_wire: Мідний дріт
pickaxe_of_containment: Кайло стримування
pickaxe_of_the_seeker: Кайло шукача
pickaxe_of_vein_mining: Кайло жильного копання
plastic_sheet: Пластик
portable_crafter: Портативний крафтер
portable_dustbin: Портативна мусорка
pressure_chamber: Барокамера
programmable_androids: Програмовані Андроїди
radiant_backpack: Рюкзак мандрівника radiant_backpack: Рюкзак мандрівника
rainbow_blocks: Райдужні блоки auto_drier: "«День сушки»"
reactor_access_port: Порт доступу до реактора diet_cookie: Дієтичне печиво
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: Сталевий прискорювач
storm_staff: Штормовий посох storm_staff: Штормовий посох
sword_of_beheading: Меч обезголовлювання soulbound_rune: Персональна руна
synthetic_diamond: Синтезований діамант geo_miner: Геокопач
synthetic_emerald: Фальшивий смарагд lightning_rune: Блискавична руна
synthetic_sapphire: Синтетичні сапфіри
table_saw: Лісопилка
teleporter: Базові компоненти телепортера
teleporter_activation_plates: Активація телепортера
tome_of_knowledge_sharing: Поділитися з ближніми
totem_of_undying: Тотем безсмертя totem_of_undying: Тотем безсмертя
trash_can: Смітник charging_bench: Зарядний пристрій-верстак
traveller_talisman: Талісман мандрівника nether_gold_pan: Пекельний рудопромивочний лоток
electric_press: Електричний прес
magnesium_generator: Магнієва підпитка
kelp_cookie: Смачна водорість
makeshift_smeltery: Імпровізована плавильня
tree_growth_accelerator: Швидкорослі дерева tree_growth_accelerator: Швидкорослі дерева
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: Промисловий видобуток industrial_miner: Промисловий видобуток
advanced_industrial_miner: Покращений видобуток advanced_industrial_miner: Покращений видобуток
magical_zombie_pills: Дезомбіфікація
auto_brewer: Промислова пивоварня

View File

@ -1,232 +1,238 @@
--- ---
slimefun: slimefun:
24k_gold_block: 我就有錢 walking_sticks: 拐杖
advanced_android: 進階機器人 portable_crafter: 隨身合成檯
advanced_butcher_android: 進階機器人–屠夫 fortune_cookie: 幸運餅乾
advanced_circuit_board: 進階電路板 portable_dustbin: 隨身垃圾桶
advanced_electric_smeltery: 進階電動冶煉爐 meat_jerky: 肉乾
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: 噴射裝甲
armor_forge: 盔甲合成檯 armor_forge: 盔甲合成檯
auto_anvil: 電動鐵砧 glowstone_armor: 螢光石套裝
auto_breeder: 幫你餵動物 lumps: 魔法結晶
auto_drier: 乾燥機 ender_backpack: 終界背包
auto_enchanting: 附魔&退魔檯 ender_armor: 終界套裝
automated_crafting_chamber: 自動合成檯 magic_eye_of_ender: 終界法眼
automated_panning_machine: 懶人掏金盤 magic_sugar: 魔法糖
automatic_ignition_chamber: 自動點火 monster_jerky: 腐肉乾
backpacks: 背包 slime_armor: 史萊姆套裝
sword_of_beheading: 斬首劍
basic_circuit_board: 基礎電路板 basic_circuit_board: 基礎電路板
advanced_circuit_board: 進階電路板
smeltery: 冶煉爐
steel: 鋼鐵時代
misc_power_items: 硫酸鹽和能量水晶
battery: 電池 battery: 電池
better_carbon_press: 升級版碳壓縮機 steel_plate: 鋼板
better_crop_growth_accelerator: 金坷垃2.0 steel_thruster: 鋼製推進器
better_electric_crucibles: 電熱坩堝—改 parachute: 降落傘
better_electric_furnace: 升級版電磁爐 grappling_hook: 鷹爪鉤
better_food_fabricator: 進階食品加工場 jetpacks: 噴射背包
better_freezer: 比你的笑話還冷 multitools: 多功能工具
better_gps_transmitters: 高階GPS信號發送器 solar_panel_and_helmet: 太陽能頭盔
better_heated_pressure_chamber: 進階高溫加壓室 elemental_staff: 元素杖
better_solar_generators: 高階太陽能發電機 grind_stone: 研磨機
bio_reactor: 生化反應爐
blade_of_vampires: 吸血之刃
blistering_ingots: 發泡錠
block_placer: 方塊放置器
boosted_uranium: 高壓鈾
boots_of_the_stomper: 踐踏之靴
bound_armor: 魂綁套裝
bound_backpack: 魂綁背包
bound_tools: 魂綁工具
bound_weapons: 魂綁武器
bronze: 青銅時代
butcher_androids: 屠夫機器人
cactus_armor: 仙人掌套裝 cactus_armor: 仙人掌套裝
capacitors: 初階電容器 gold_pan: 掏金盤
carbonado: 黑鑽石 magical_book_cover: 魔法書封面
carbonado_furnace: 碳纖維熔爐 slimefun_metals: 更多金屬
carbonado_tools: 頂級機器 ore_crusher: 雙倍礦物
carbon_press: 碳壓縮機 bronze: 青銅時代
cargo_basics: 物流基礎 alloys: 進階合金
cargo_nodes: 物流節點
chainmail_armor: 鎖鍊套裝
charging_bench: 充電台
coal_generator: 乾淨的煤
cobalt_pickaxe: 我是速度
combustion_reactor: 火力反應爐
common_talisman: 基礎護身符
composter: 堆肥
compressor_and_carbon: 壓縮碳 compressor_and_carbon: 壓縮碳
cooler: 保溫器 gilded_iron_armor: 鍍金鐵套裝
copper_wire: 良導體! synthetic_diamond: 合成鑽石
crop_growth_accelerator: 金坷垃 pressure_chamber: 加壓室
crucible: 坩鍋 synthetic_sapphire: 合成藍寶石
crushed_ore: 礦石純化
damascus_steel: 大馬士革鋼 damascus_steel: 大馬士革鋼
damascus_steel_armor: 大馬士革鋼套裝 damascus_steel_armor: 大馬士革鋼套裝
diet_cookie: 減肥餅 reinforced_alloy: 強化合金錠
duct_tape: FLEX TAPE carbonado: 黑鑽石
electric_crucible: 電動坩堝 magic_workbench: 魔術合成檯
electric_furnaces: 電磁爐 wind_staff: 元素杖—風
electric_ingot_machines: 電動煉錠產業鍊 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: 合法X-ray
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: 馬達 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: FLEX TAPE
plastic_sheet: 塑膠
android_memory_core: 機器人記憶體
oil: 美國的最愛
fuel: 石油燃料
hologram_projector: 投影文字
capacitors: 初階電容器
high_tier_capacitors: 高階電容器
solar_generators: 太陽能發機
electric_furnaces: 電磁爐
electric_ore_grinding: 電動研磨 electric_ore_grinding: 電動研磨
electric_press: 電動壓縮機 heated_pressure_chamber: 高溫加壓室
electric_smeltery: 電動冶煉爐 coal_generator: 乾淨的煤
elemental_staff: 元素杖 bio_reactor: 生化反應爐
auto_enchanting: 附魔&退魔檯
auto_anvil: 電動鐵砧
multimeter: 電力測量
gps_setup: GPS基礎組件
gps_emergency_transmitter: GPS求救信號
programmable_androids: 機器人
android_interfaces: 機器人接口
geo_scanner: 地質掃描
combustion_reactor: 火力反應爐
teleporter: 傳送檯基座
teleporter_activation_plates: 傳送裝置
better_solar_generators: 高階太陽能發電機
better_gps_transmitters: 高階GPS信號發送器
elevator: 電梯 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: 金坷垃2.0
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: 高壓鈾
trash_can: 黑洞!
advanced_output_node: 進階輸出接口
carbon_press: 碳壓縮機
electric_smeltery: 電動冶煉爐
better_electric_furnace: 升級版電磁爐
better_carbon_press: 升級版碳壓縮機
empowered_android: 頂級機器人 empowered_android: 頂級機器人
empowered_butcher_android: 頂級機器人-屠夫 empowered_butcher_android: 頂級機器人-屠夫
empowered_fisherman_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: 自然資源挖掘機
gilded_backpack: 鍍金背包
gilded_iron: 鍍金鐵
gilded_iron_armor: 鍍金鐵套裝
glowstone_armor: 螢光石套裝
gold_armor: 比較強的金裝
gold_carats: 純金
golden_apple_juice: 比較黃的果汁
gold_pan: 掏金盤
gps_emergency_transmitter: GPS求救信號
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_carbon_press: 終極碳壓縮機
high_tier_electric_ingot_machines: 高速煉錠產業鍊 wither_assembler: 凋零農場
high_tier_enhanced_furnaces: 更高階的熔爐 better_heated_pressure_chamber: 進階高溫加壓室
hologram_projector: 投影文字 elytra: 鞘翅
hunter_talisman: 獵人護身符 special_elytras: 特殊鞘翅
infernal_bonemeal: 地獄骨粉 electric_crucible: 電動坩堝
infused_hopper: 滴水不漏 better_electric_crucibles: 電熱坩堝—改
infused_magnet: 物品磁鐵 advanced_electric_smeltery: 進階電動冶煉爐
jetboots: 火箭靴 advanced_farmer_android: 進階機器人—農夫
jetpacks: 噴射背包
juicer: 果汁!
kelp_cookie: 自然的顏
knight_talisman: 騎士護身符
lava_crystal: 燒喔~
lava_generator: 熔岩發電機 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: 磁鐵
meat_jerky: 肉乾
miner_talisman: 礦工護身符
misc_power_items: 硫酸鹽和能量水晶
monster_jerky: 腐肉乾
more_enhanced_furnaces: 更好的進階熔爐
multimeter: 電力測量
multitools: 多功能工具
nether_gold_pan: 地域掏金盤
nether_ice: 地域冰 nether_ice: 地域冰
nether_star_reactor: 地域之星反應堆 nether_star_reactor: 地域之星反應堆
nickel_and_cobalt: 這是元素不是合金啊啊啊啊啊 blistering_ingots: 發泡錠
night_vision_googles: 夜視鏡 automatic_ignition_chamber: 自動點火
nuclear_reactor: 核分裂反應爐
oil: 美國的最愛
ore_crusher: 雙倍礦物
ore_washer: 礦物洗滌機
organic_fertilizer: 有機堆肥
organic_food: 有機食品
output_chest: 基礎器械輸出箱 output_chest: 基礎器械輸出箱
parachute: 降落傘 copper_wire: 良導體!
pickaxe_of_containment: 生怪磚鎬
pickaxe_of_the_seeker: 合法X-ray
pickaxe_of_vein_mining: 連鎖鎬
plastic_sheet: 塑膠
portable_crafter: 隨身合成檯
portable_dustbin: 隨身垃圾桶
pressure_chamber: 加壓室
programmable_androids: 機器人
radiant_backpack: 超級背包 radiant_backpack: 超級背包
rainbow_blocks: 彩虹方塊 auto_drier: 乾燥機
reactor_access_port: 反應爐接口 diet_cookie: 減肥餅
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: 鋼製推進器
storm_staff: 元素杖—風暴 storm_staff: 元素杖—風暴
sword_of_beheading: 斬首劍 soulbound_rune: 魂綁符文
synthetic_diamond: 合成鑽石 geo_miner: 自然資源挖掘機
synthetic_emerald: 人造翡翠 lightning_rune: 閃電符文
synthetic_sapphire: 合成藍寶石
table_saw: 鋸木機
teleporter: 傳送檯基座
teleporter_activation_plates: 傳送裝置
tome_of_knowledge_sharing: 共產經驗
totem_of_undying: 逃避死亡 totem_of_undying: 逃避死亡
trash_can: 黑洞! charging_bench: 充電台
traveller_talisman: 旅者護身符 nether_gold_pan: 地域掏金盤
uranium: 輻射金屬 electric_press: 電動壓縮機
walking_sticks: 拐杖 magnesium_generator: 鎂鹽發電
warrior_talisman: 戰士護身符 kelp_cookie: 自然的顏
water_staff: 元素杖—水 makeshift_smeltery: 自動冶煉
water_talisman: 水中呼吸護身符 tree_growth_accelerator: 自動金坷垃
whirlwind_talisman: 旋風護身符 industrial_miner: 工業化採礦
wind_staff: 元素杖—風 advanced_industrial_miner: 工業化採礦 - 改
wither_assembler: 凋零農場 magical_zombie_pills: 救贖藥丸
wither_proof_glass: 抗凋玻璃 auto_brewer: 工業化釀造
wither_proof_obsidian: 抗凋黑曜石
wizard_talisman: 巫師護身符
woven_backpack: 手織背包
xp_collector: 經驗收集器
geo_scanner: 地質掃描

View File

@ -20,10 +20,13 @@ import io.github.thebusybiscuit.slimefun4.core.categories.FlexCategory;
import io.github.thebusybiscuit.slimefun4.core.categories.LockedCategory; import io.github.thebusybiscuit.slimefun4.core.categories.LockedCategory;
import io.github.thebusybiscuit.slimefun4.core.categories.SeasonalCategory; import io.github.thebusybiscuit.slimefun4.core.categories.SeasonalCategory;
import io.github.thebusybiscuit.slimefun4.core.guide.SlimefunGuideLayout; import io.github.thebusybiscuit.slimefun4.core.guide.SlimefunGuideLayout;
import io.github.thebusybiscuit.slimefun4.core.researching.Research;
import io.github.thebusybiscuit.slimefun4.testing.TestUtilities; import io.github.thebusybiscuit.slimefun4.testing.TestUtilities;
import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
public class TestCategories { public class TestCategories {
@ -115,7 +118,7 @@ public class TestCategories {
} }
@Test @Test
public void testLockedCategories() { public void testLockedCategoriesParents() {
Assertions.assertThrows(IllegalArgumentException.class, () -> new LockedCategory(new NamespacedKey(plugin, "locked"), new CustomItem(Material.GOLD_NUGGET, "&6Locked Test"), (NamespacedKey) null)); Assertions.assertThrows(IllegalArgumentException.class, () -> new LockedCategory(new NamespacedKey(plugin, "locked"), new CustomItem(Material.GOLD_NUGGET, "&6Locked Test"), (NamespacedKey) null));
Category category = new Category(new NamespacedKey(plugin, "unlocked"), new CustomItem(Material.EMERALD, "&5I am SHERlocked")); Category category = new Category(new NamespacedKey(plugin, "unlocked"), new CustomItem(Material.EMERALD, "&5I am SHERlocked"));
@ -139,6 +142,39 @@ public class TestCategories {
Assertions.assertTrue(locked.getParents().contains(category)); Assertions.assertTrue(locked.getParents().contains(category));
} }
@Test
public void testLockedCategoriesUnlocking() throws InterruptedException {
Player player = server.addPlayer();
PlayerProfile profile = TestUtilities.awaitProfile(player);
Assertions.assertThrows(IllegalArgumentException.class, () -> new LockedCategory(new NamespacedKey(plugin, "locked"), new CustomItem(Material.GOLD_NUGGET, "&6Locked Test"), (NamespacedKey) null));
Category category = new Category(new NamespacedKey(plugin, "parent"), new CustomItem(Material.EMERALD, "&5I am SHERlocked"));
category.register();
LockedCategory locked = new LockedCategory(new NamespacedKey(plugin, "locked"), new CustomItem(Material.GOLD_NUGGET, "&6Locked Test"), category.getKey());
locked.register();
// No Items, so it should be unlocked
Assertions.assertTrue(locked.hasUnlocked(player, profile));
SlimefunItem item = new SlimefunItem(category, new SlimefunItemStack("LOCKED_CATEGORY_TEST", new CustomItem(Material.LANTERN, "&6Test Item for locked categories")), RecipeType.NULL, new ItemStack[9]);
item.register(plugin);
item.load();
SlimefunPlugin.getRegistry().setResearchingEnabled(true);
Research research = new Research(new NamespacedKey(plugin, "cant_touch_this"), 432432, "MC Hammer", 90);
research.addItems(item);
research.register();
Assertions.assertFalse(profile.hasUnlocked(research));
Assertions.assertFalse(locked.hasUnlocked(player, profile));
profile.setResearched(research, true);
Assertions.assertTrue(locked.hasUnlocked(player, profile));
}
@Test @Test
public void testSeasonalCategories() { public void testSeasonalCategories() {
// Category with current Month // Category with current Month

View File

@ -0,0 +1,140 @@
package io.github.thebusybiscuit.slimefun4.testing.tests.items;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import be.seeseemelk.mockbukkit.MockBukkit;
import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.core.attributes.Rechargeable;
import io.github.thebusybiscuit.slimefun4.testing.TestUtilities;
import io.github.thebusybiscuit.slimefun4.utils.LoreBuilder;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
public class TestRechargeableItems {
private static SlimefunPlugin plugin;
@BeforeAll
public static void load() {
MockBukkit.mock();
plugin = MockBukkit.load(SlimefunPlugin.class);
}
@AfterAll
public static void unload() {
MockBukkit.unmock();
}
@Test
public void testInvalidItems() {
Rechargeable rechargeable = mock("INVALID_CHARGING_TEST", 1);
Assertions.assertThrows(IllegalArgumentException.class, () -> rechargeable.getItemCharge(null));
Assertions.assertThrows(IllegalArgumentException.class, () -> rechargeable.getItemCharge(new ItemStack(Material.AIR)));
Assertions.assertThrows(IllegalArgumentException.class, () -> rechargeable.setItemCharge(null, 1));
Assertions.assertThrows(IllegalArgumentException.class, () -> rechargeable.setItemCharge(new ItemStack(Material.AIR), 1));
Assertions.assertThrows(IllegalArgumentException.class, () -> rechargeable.addItemCharge(null, 1));
Assertions.assertThrows(IllegalArgumentException.class, () -> rechargeable.addItemCharge(new ItemStack(Material.AIR), 1));
Assertions.assertThrows(IllegalArgumentException.class, () -> rechargeable.removeItemCharge(null, 1));
Assertions.assertThrows(IllegalArgumentException.class, () -> rechargeable.removeItemCharge(new ItemStack(Material.AIR), 1));
}
@Test
public void testSetItemCharge() {
Rechargeable rechargeable = mock("CHARGING_TEST", 10);
ItemStack item = new CustomItem(Material.REDSTONE_ORE, "&4Chargeable Item", "", LoreBuilder.powerCharged(0, 10));
Assertions.assertEquals(0, rechargeable.getItemCharge(item));
rechargeable.setItemCharge(item, 10);
Assertions.assertEquals(10, rechargeable.getItemCharge(item));
String lore = ChatColors.color("&c&o&8\u21E8 &e\u26A1 &7") + "10.0 / 10.0 J";
Assertions.assertEquals(lore, item.getItemMeta().getLore().get(1));
}
@Test
public void testItemChargeBounds() {
Rechargeable rechargeable = mock("CHARGING_BOUNDS_TEST", 10);
ItemStack item = new CustomItem(Material.REDSTONE_BLOCK, "&4Chargeable Item with bounds", "", LoreBuilder.powerCharged(0, 10));
Assertions.assertThrows(IllegalArgumentException.class, () -> rechargeable.setItemCharge(item, -1));
Assertions.assertThrows(IllegalArgumentException.class, () -> rechargeable.setItemCharge(item, -0.01F));
Assertions.assertThrows(IllegalArgumentException.class, () -> rechargeable.setItemCharge(item, 10.01F));
Assertions.assertThrows(IllegalArgumentException.class, () -> rechargeable.setItemCharge(item, 11));
}
@Test
public void testAddItemCharge() {
Rechargeable rechargeable = mock("CHARGING_BOUNDS_TEST", 10);
ItemStack item = new CustomItem(Material.REDSTONE_BLOCK, "&4Chargeable Item with additions", "", LoreBuilder.powerCharged(0, 10));
Assertions.assertTrue(rechargeable.addItemCharge(item, 10));
Assertions.assertEquals(10, rechargeable.getItemCharge(item));
Assertions.assertFalse(rechargeable.addItemCharge(item, 1));
}
@Test
public void testAddItemChargeWithoutLore() {
Rechargeable rechargeable = mock("CHARGING_NO_LORE_TEST", 10);
ItemStack item = new CustomItem(Material.REDSTONE_BLOCK, "&4Chargeable Item with no lore");
Assertions.assertEquals(0, rechargeable.getItemCharge(item));
Assertions.assertTrue(rechargeable.addItemCharge(item, 10));
Assertions.assertEquals(10, rechargeable.getItemCharge(item));
String lore = ChatColors.color("&c&o&8\u21E8 &e\u26A1 &7") + "10.0 / 10.0 J";
Assertions.assertEquals(lore, item.getItemMeta().getLore().get(0));
}
@Test
public void testRemoveItemCharge() {
Rechargeable rechargeable = mock("CHARGING_BOUNDS_TEST", 10);
ItemStack item = new CustomItem(Material.REDSTONE_BLOCK, "&4Chargeable Item with removal", "", LoreBuilder.powerCharged(0, 10));
Assertions.assertFalse(rechargeable.removeItemCharge(item, 1));
rechargeable.setItemCharge(item, 10);
Assertions.assertTrue(rechargeable.removeItemCharge(item, 10));
Assertions.assertEquals(0, rechargeable.getItemCharge(item));
Assertions.assertFalse(rechargeable.removeItemCharge(item, 1));
}
private RechargeableMock mock(String id, float capacity) {
Category category = TestUtilities.getCategory(plugin, "rechargeable");
return new RechargeableMock(category, new SlimefunItemStack(id, new CustomItem(Material.REDSTONE_LAMP, "&3" + id)), capacity);
}
private class RechargeableMock extends SlimefunItem implements Rechargeable {
private final float capacity;
protected RechargeableMock(Category category, SlimefunItemStack item, float capacity) {
super(category, item, RecipeType.NULL, new ItemStack[9]);
this.capacity = capacity;
}
@Override
public float getMaxItemCharge(ItemStack item) {
return capacity;
}
}
}