mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35:51 +00:00
Merge branch 'master' into patch-2
This commit is contained in:
commit
ecfd242c32
2
pom.xml
2
pom.xml
@ -61,7 +61,7 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.2.1</version>
|
||||
<version>3.2.2</version>
|
||||
|
||||
<configuration>
|
||||
<relocations>
|
||||
|
@ -0,0 +1,43 @@
|
||||
package io.github.thebusybiscuit.slimefun4.api.events;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.core.services.localization.Language;
|
||||
|
||||
public class PlayerLanguageChangeEvent extends Event {
|
||||
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
|
||||
private final Player player;
|
||||
private final Language from;
|
||||
private final Language to;
|
||||
|
||||
public PlayerLanguageChangeEvent(Player p, Language from, Language to) {
|
||||
player = p;
|
||||
this.from = from;
|
||||
this.to = to;
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
public HandlerList getHandlers() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
return player;
|
||||
}
|
||||
|
||||
public Language getPreviousLanguage() {
|
||||
return from;
|
||||
}
|
||||
|
||||
public Language getNewLanguage() {
|
||||
return to;
|
||||
}
|
||||
|
||||
}
|
@ -81,20 +81,20 @@ public class GPSNetwork {
|
||||
}
|
||||
|
||||
public void openTransmitterControlPanel(Player p) {
|
||||
ChestMenu menu = new ChestMenu("&9Control Panel");
|
||||
ChestMenu menu = new ChestMenu(ChatColor.BLUE + SlimefunPlugin.getLocal().getMessage(p, "machines.GPS_CONTROL_PANEL.title"));
|
||||
|
||||
for (int slot : border) {
|
||||
menu.addItem(slot, ChestMenuUtils.getBackground(), ChestMenuUtils.getEmptyClickHandler());
|
||||
}
|
||||
|
||||
menu.addItem(2, new CustomItem(SlimefunItems.GPS_TRANSMITTER, "&7Transmitter Overview &e(Selected)"));
|
||||
menu.addItem(2, new CustomItem(SlimefunItems.GPS_TRANSMITTER, "&7" + SlimefunPlugin.getLocal().getMessage(p, "machines.GPS_CONTROL_PANEL.transmitters")));
|
||||
menu.addMenuClickHandler(2, ChestMenuUtils.getEmptyClickHandler());
|
||||
|
||||
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.addMenuClickHandler(4, ChestMenuUtils.getEmptyClickHandler());
|
||||
|
||||
menu.addItem(6, new CustomItem(worldIcon, "&7Waypoint Overview &r(Select)"));
|
||||
menu.addItem(6, new CustomItem(worldIcon, "&7" + SlimefunPlugin.getLocal().getMessage(p, "machines.GPS_CONTROL_PANEL.waypoints"), "", ChatColor.GRAY + "\u21E8 " + SlimefunPlugin.getLocal().getMessage(p, "guide.tooltips.open-category")));
|
||||
menu.addMenuClickHandler(6, (pl, slot, item, action) -> {
|
||||
openWaypointControlPanel(pl);
|
||||
return false;
|
||||
@ -136,13 +136,13 @@ public class GPSNetwork {
|
||||
}
|
||||
|
||||
public void openWaypointControlPanel(Player p) {
|
||||
ChestMenu menu = new ChestMenu("&9Control Panel");
|
||||
ChestMenu menu = new ChestMenu(ChatColor.BLUE + SlimefunPlugin.getLocal().getMessage(p, "machines.GPS_CONTROL_PANEL.title"));
|
||||
|
||||
for (int slot : border) {
|
||||
menu.addItem(slot, ChestMenuUtils.getBackground(), ChestMenuUtils.getEmptyClickHandler());
|
||||
}
|
||||
|
||||
menu.addItem(2, new CustomItem(SlimefunItems.GPS_TRANSMITTER, "&7Transmitter Overview &r(Select)"));
|
||||
menu.addItem(2, new CustomItem(SlimefunItems.GPS_TRANSMITTER, "&7" + SlimefunPlugin.getLocal().getMessage(p, "machines.GPS_CONTROL_PANEL.transmitters"), "", ChatColor.GRAY + "\u21E8 " + SlimefunPlugin.getLocal().getMessage(p, "guide.tooltips.open-category")));
|
||||
menu.addMenuClickHandler(2, (pl, slot, item, action) -> {
|
||||
openTransmitterControlPanel(pl);
|
||||
return false;
|
||||
@ -152,7 +152,7 @@ public class GPSNetwork {
|
||||
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.addMenuClickHandler(4, ChestMenuUtils.getEmptyClickHandler());
|
||||
|
||||
menu.addItem(6, new CustomItem(worldIcon, "&7Waypoint Overview &e(Selected)"));
|
||||
menu.addItem(6, new CustomItem(worldIcon, "&7" + SlimefunPlugin.getLocal().getMessage(p, "machines.GPS_CONTROL_PANEL.waypoints")));
|
||||
menu.addMenuClickHandler(6, ChestMenuUtils.getEmptyClickHandler());
|
||||
|
||||
int index = 0;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.api.inventory;
|
||||
package io.github.thebusybiscuit.slimefun4.api.player;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -7,7 +7,7 @@ import org.bukkit.inventory.Inventory;
|
||||
import io.github.thebusybiscuit.cscorelib2.config.Config;
|
||||
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
||||
|
||||
public class BackpackInventory {
|
||||
public class PlayerBackpack {
|
||||
|
||||
private final PlayerProfile profile;
|
||||
private final int id;
|
||||
@ -19,7 +19,7 @@ public class BackpackInventory {
|
||||
/**
|
||||
* This constructor loads an existing Backpack
|
||||
*/
|
||||
public BackpackInventory(PlayerProfile profile, int id) {
|
||||
public PlayerBackpack(PlayerProfile profile, int id) {
|
||||
this(profile, id, profile.getConfig().getInt("backpacks." + id + ".size"));
|
||||
|
||||
for (int i = 0; i < size; i++) {
|
||||
@ -30,7 +30,7 @@ public class BackpackInventory {
|
||||
/**
|
||||
* This constructor creates a new Backpack
|
||||
*/
|
||||
public BackpackInventory(PlayerProfile profile, int id, int size) {
|
||||
public PlayerBackpack(PlayerProfile profile, int id, int size) {
|
||||
this.profile = profile;
|
||||
this.id = id;
|
||||
this.cfg = profile.getConfig();
|
@ -0,0 +1,21 @@
|
||||
package io.github.thebusybiscuit.slimefun4.core.attributes;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
|
||||
public interface RecipeDisplayItem {
|
||||
|
||||
List<ItemStack> getDisplayRecipes();
|
||||
|
||||
default String getLabelLocalPath() {
|
||||
return "guide.tooltips.recipes.machine";
|
||||
}
|
||||
|
||||
default String getRecipeSectionLabel(Player p) {
|
||||
return "&7\u21E9 " + SlimefunPlugin.getLocal().getMessage(p, getLabelLocalPath()) + " \u21E9";
|
||||
}
|
||||
}
|
@ -40,32 +40,16 @@ public class ResearchCommand extends SubCommand {
|
||||
if (player.isPresent()) {
|
||||
Player p = player.get();
|
||||
|
||||
// Getting the PlayerProfile async
|
||||
PlayerProfile.get(p, profile -> {
|
||||
if (args[2].equalsIgnoreCase("all")) {
|
||||
for (Research res : SlimefunPlugin.getRegistry().getResearches()) {
|
||||
if (!profile.hasUnlocked(res)) {
|
||||
SlimefunPlugin.getLocal().sendMessage(sender, "messages.give-research", true, msg -> msg.replace(PLACEHOLDER_PLAYER, p.getName()).replace(PLACEHOLDER_RESEARCH, res.getName(p)));
|
||||
}
|
||||
|
||||
res.unlock(p, true);
|
||||
}
|
||||
researchAll(sender, profile, p);
|
||||
}
|
||||
else if (args[2].equalsIgnoreCase("reset")) {
|
||||
for (Research res : SlimefunPlugin.getRegistry().getResearches()) {
|
||||
profile.setResearched(res, false);
|
||||
}
|
||||
SlimefunPlugin.getLocal().sendMessage(p, "commands.research.reset", true, msg -> msg.replace(PLACEHOLDER_PLAYER, args[1]));
|
||||
reset(sender, profile, p);
|
||||
}
|
||||
else {
|
||||
Optional<Research> research = getResearchFromString(args[2]);
|
||||
|
||||
if (research.isPresent()) {
|
||||
research.get().unlock(p, true);
|
||||
SlimefunPlugin.getLocal().sendMessage(sender, "messages.give-research", true, msg -> msg.replace(PLACEHOLDER_PLAYER, p.getName()).replace(PLACEHOLDER_RESEARCH, research.get().getName(p)));
|
||||
}
|
||||
else {
|
||||
SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-valid-research", true, msg -> msg.replace(PLACEHOLDER_RESEARCH, args[2]));
|
||||
}
|
||||
giveResearch(sender, profile, p, args[2]);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -80,6 +64,36 @@ public class ResearchCommand extends SubCommand {
|
||||
}
|
||||
}
|
||||
|
||||
private void giveResearch(CommandSender sender, PlayerProfile profile, Player p, String input) {
|
||||
Optional<Research> research = getResearchFromString(input);
|
||||
|
||||
if (research.isPresent()) {
|
||||
research.get().unlock(p, true);
|
||||
SlimefunPlugin.getLocal().sendMessage(sender, "messages.give-research", true, msg -> msg.replace(PLACEHOLDER_PLAYER, p.getName()).replace(PLACEHOLDER_RESEARCH, research.get().getName(p)));
|
||||
}
|
||||
else {
|
||||
SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-valid-research", true, msg -> msg.replace(PLACEHOLDER_RESEARCH, input));
|
||||
}
|
||||
}
|
||||
|
||||
private void researchAll(CommandSender sender, PlayerProfile profile, Player p) {
|
||||
for (Research res : SlimefunPlugin.getRegistry().getResearches()) {
|
||||
if (!profile.hasUnlocked(res)) {
|
||||
SlimefunPlugin.getLocal().sendMessage(sender, "messages.give-research", true, msg -> msg.replace(PLACEHOLDER_PLAYER, p.getName()).replace(PLACEHOLDER_RESEARCH, res.getName(p)));
|
||||
}
|
||||
|
||||
res.unlock(p, true);
|
||||
}
|
||||
}
|
||||
|
||||
private void reset(CommandSender sender, PlayerProfile profile, Player p) {
|
||||
for (Research res : SlimefunPlugin.getRegistry().getResearches()) {
|
||||
profile.setResearched(res, false);
|
||||
}
|
||||
|
||||
SlimefunPlugin.getLocal().sendMessage(p, "commands.research.reset", true, msg -> msg.replace(PLACEHOLDER_PLAYER, p.getName()));
|
||||
}
|
||||
|
||||
private Optional<Research> getResearchFromString(String input) {
|
||||
if (!input.contains(":")) return Optional.empty();
|
||||
|
||||
|
@ -22,6 +22,7 @@ import io.github.thebusybiscuit.cscorelib2.chat.ChatInput;
|
||||
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
||||
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||
import io.github.thebusybiscuit.cscorelib2.recipes.MinecraftRecipe;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.ChatUtils;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu;
|
||||
@ -34,7 +35,6 @@ import me.mrCookieSlime.Slimefun.Objects.LockedCategory;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SeasonalCategory;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.MultiBlockMachine;
|
||||
import me.mrCookieSlime.Slimefun.api.GuideHandler;
|
||||
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
||||
@ -458,7 +458,7 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
|
||||
ChestMenu menu = create(p);
|
||||
|
||||
if (item.hasWiki()) {
|
||||
menu.addItem(8, new CustomItem(Material.KNOWLEDGE_BOOK, "&rView this Item on our Wiki &7(Slimefun Wiki)", "", "&7\u21E8 Click to open"));
|
||||
menu.addItem(8, new CustomItem(Material.KNOWLEDGE_BOOK, ChatColor.RESET + SlimefunPlugin.getLocal().getMessage("guide.tooltips.wiki"), "", ChatColor.GRAY + "\u21E8 " + ChatColor.GREEN + SlimefunPlugin.getLocal().getMessage(p, "guide.tooltips.open-category")));
|
||||
menu.addMenuClickHandler(8, (pl, slot, itemstack, action) -> {
|
||||
pl.closeInventory();
|
||||
ChatUtils.sendURL(pl, item.getWiki());
|
||||
@ -581,7 +581,7 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
|
||||
|
||||
if (page == 0) {
|
||||
for (int i = 27; i < 36; i++) {
|
||||
menu.replaceExistingItem(i, new CustomItem(ChestMenuUtils.getBackground(), sfItem.getRecipeSectionLabel()));
|
||||
menu.replaceExistingItem(i, new CustomItem(ChestMenuUtils.getBackground(), sfItem.getRecipeSectionLabel(p)));
|
||||
menu.addMenuClickHandler(i, ChestMenuUtils.getEmptyClickHandler());
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
|
||||
import io.github.thebusybiscuit.cscorelib2.data.PersistentDataAPI;
|
||||
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||
import io.github.thebusybiscuit.cscorelib2.skull.SkullItem;
|
||||
import io.github.thebusybiscuit.slimefun4.api.events.PlayerLanguageChangeEvent;
|
||||
import io.github.thebusybiscuit.slimefun4.core.services.github.Contributor;
|
||||
import io.github.thebusybiscuit.slimefun4.core.services.localization.Language;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.ChatUtils;
|
||||
@ -282,6 +283,7 @@ public final class GuideSettings {
|
||||
Language defaultLanguage = SlimefunPlugin.getLocal().getDefaultLanguage();
|
||||
menu.addItem(9, new CustomItem(defaultLanguage.getItem(), ChatColor.GRAY + SlimefunPlugin.getLocal().getMessage(p, "languages.default") + ChatColor.DARK_GRAY + " (" + defaultLanguage.getName(p) + ")", "", "&7\u21E8 &e" + SlimefunPlugin.getLocal().getMessage(p, "guide.languages.select-default")),
|
||||
(pl, i, item, action) -> {
|
||||
SlimefunPlugin.instance.getServer().getPluginManager().callEvent(new PlayerLanguageChangeEvent(pl, SlimefunPlugin.getLocal().getLanguage(pl), defaultLanguage));
|
||||
PersistentDataAPI.remove(pl, SlimefunPlugin.getLocal().getKey());
|
||||
|
||||
String name = SlimefunPlugin.getLocal().getMessage(p, "languages.default");
|
||||
@ -300,6 +302,7 @@ public final class GuideSettings {
|
||||
"",
|
||||
"&7\u21E8 &e" + SlimefunPlugin.getLocal().getMessage(p, "guide.languages.select")
|
||||
), (pl, i, item, action) -> {
|
||||
SlimefunPlugin.instance.getServer().getPluginManager().callEvent(new PlayerLanguageChangeEvent(pl, SlimefunPlugin.getLocal().getLanguage(pl), language));
|
||||
PersistentDataAPI.setString(pl, SlimefunPlugin.getLocal().getKey(), language.getID());
|
||||
|
||||
String name = language.getName(pl);
|
||||
|
@ -16,6 +16,7 @@ public enum SupportedLanguage {
|
||||
FINNISH("fi", "59f2349729a7ec8d4b1478adfe5ca8af96479e983fbad238ccbd81409b4ed"),
|
||||
NORWEGIAN("no", "e0596e165ec3f389b59cfdda93dd6e363e97d9c6456e7c2e123973fa6c5fda"),
|
||||
CZECH("cs", "48152b7334d7ecf335e47a4f35defbd2eb6957fc7bfe94212642d62f46e61e"),
|
||||
ROMANIAN("ro", "dceb1708d5404ef326103e7b60559c9178f3dce729007ac9a0b498bdebe46107"),
|
||||
PORTUGESE_PORTUGAL("pt", "ebd51f4693af174e6fe1979233d23a40bb987398e3891665fafd2ba567b5a53a"),
|
||||
PORTUGESE_BRAZIL("pt-BR", "9a46475d5dcc815f6c5f2859edbb10611f3e861c0eb14f088161b3c0ccb2b0d9"),
|
||||
HUNGARIAN("hu", "4a9c3c4b6c5031332dd2bfece5e31e999f8deff55474065cc86993d7bdcdbd0"),
|
||||
@ -26,10 +27,13 @@ public enum SupportedLanguage {
|
||||
INDONESIAN("id", "5db2678ccaba7934412cb97ee16d416463a392574c5906352f18dea42895ee"),
|
||||
CHINESE_CHINA("zh-CN", "7f9bc035cdc80f1ab5e1198f29f3ad3fdd2b42d9a69aeb64de990681800b98dc"),
|
||||
CHINESE_TAIWAN("zh-TW", "702a4afb2e1e2e3a1894a8b74272f95cfa994ce53907f9ac140bd3c932f9f"),
|
||||
JAPANESE("ja", "d640ae466162a47d3ee33c4076df1cab96f11860f07edb1f0832c525a9e33323"),
|
||||
HEBREW("he", "1ba086a2cc7272cf5ba49c80248546c22e5ef1bab54120e8a8e5d9e75b6a"),
|
||||
ARABIC("ar", "a4be759a9cf7f0a19a7e8e62f23789ad1d21cebae38af9d9541676a3db001572"),
|
||||
PERSIAN("fa", "5cd9badf1972583b663b44b1e027255de8f275aa1e89defcf77782ba6fcc652"),
|
||||
AFRIKAANS("af", "961a1eacc10524d1f45f23b0e487bb2fc33948d9676b418b19a3da0b109d0e3c"),
|
||||
MALAY("ms", "754b9041dea6db6db44750f1385a743adf653767b4b8802cad4c585dd3f5be46");
|
||||
MALAY("ms", "754b9041dea6db6db44750f1385a743adf653767b4b8802cad4c585dd3f5be46"),
|
||||
THAI("th", "2a7916e4a852f7e6f3f3de19c7fb57686a37bce834bd54684a7dbef8d53fb");
|
||||
|
||||
private final String id;
|
||||
private final String textureHash;
|
||||
|
@ -10,7 +10,6 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -37,6 +36,8 @@ import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
||||
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||
import io.github.thebusybiscuit.cscorelib2.skull.SkullBlock;
|
||||
import io.github.thebusybiscuit.cscorelib2.skull.SkullItem;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.NumberUtils;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
|
||||
@ -51,11 +52,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
@ -217,8 +216,8 @@ public abstract class ProgrammableAndroid extends SimpleSlimefunItem<BlockTicker
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeSectionLabel() {
|
||||
return "&7\u21E9 Available Types of Fuel \u21E9";
|
||||
public String getLabelLocalPath() {
|
||||
return "guide.tooltips.recipes.generator";
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -477,10 +476,10 @@ public abstract class ProgrammableAndroid extends SimpleSlimefunItem<BlockTicker
|
||||
|
||||
private void constructMenu(BlockMenuPreset preset) {
|
||||
for (int i : border) {
|
||||
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
|
||||
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler());
|
||||
}
|
||||
for (int i : border_out) {
|
||||
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
|
||||
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "), ChestMenuUtils.getEmptyClickHandler());
|
||||
}
|
||||
|
||||
for (int i : getOutputSlots()) {
|
||||
@ -498,19 +497,21 @@ public abstract class ProgrammableAndroid extends SimpleSlimefunItem<BlockTicker
|
||||
});
|
||||
}
|
||||
|
||||
ItemStack generator = SkullItem.fromBase64("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ==");
|
||||
|
||||
if (getTier() == 1) {
|
||||
preset.addItem(34, new CustomItem(SkullItem.fromBase64("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on solid Fuel", "&re.g. Coal, Wood, etc..."), (p, slot, item, action) -> false);
|
||||
preset.addItem(34, new CustomItem(generator, "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on solid Fuel", "&re.g. Coal, Wood, etc..."), ChestMenuUtils.getEmptyClickHandler());
|
||||
}
|
||||
else if (getTier() == 2){
|
||||
preset.addItem(34, new CustomItem(SkullItem.fromBase64("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on liquid Fuel", "&re.g. Lava, Oil, Fuel, etc..."), (p, slot, item, action) -> false);
|
||||
else if (getTier() == 2) {
|
||||
preset.addItem(34, new CustomItem(generator, "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on liquid Fuel", "&re.g. Lava, Oil, Fuel, etc..."), ChestMenuUtils.getEmptyClickHandler());
|
||||
}
|
||||
else {
|
||||
preset.addItem(34, new CustomItem(SkullItem.fromBase64("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on radioactive Fuel", "&re.g. Uranium, Neptunium or Boosted Uranium"), (p, slot, item, action) -> false);
|
||||
preset.addItem(34, new CustomItem(generator, "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on radioactive Fuel", "&re.g. Uranium, Neptunium or Boosted Uranium"), ChestMenuUtils.getEmptyClickHandler());
|
||||
}
|
||||
}
|
||||
|
||||
public void openScriptEditor(Player p, Block b) {
|
||||
ChestMenu menu = new ChestMenu("&eScript Editor");
|
||||
ChestMenu menu = new ChestMenu(ChatColor.DARK_AQUA + SlimefunPlugin.getLocal().getMessage(p, "android.scripts.editor"));
|
||||
|
||||
menu.addItem(1, new CustomItem(SkullItem.fromBase64("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDliZjZkYjRhZWRhOWQ4ODIyYjlmNzM2NTM4ZThjMThiOWE0ODQ0Zjg0ZWI0NTUwNGFkZmJmZWU4N2ViIn19fQ=="), "&2> Edit Script", "", "&aEdits your current Script"));
|
||||
menu.addMenuClickHandler(1, (pl, slot, item, action) -> {
|
||||
@ -540,7 +541,7 @@ public abstract class ProgrammableAndroid extends SimpleSlimefunItem<BlockTicker
|
||||
}
|
||||
|
||||
public void openScript(Player p, Block b, String script) {
|
||||
ChestMenu menu = new ChestMenu("&eScript Editor");
|
||||
ChestMenu menu = new ChestMenu(ChatColor.DARK_AQUA + SlimefunPlugin.getLocal().getMessage(p, "android.scripts.editor"));
|
||||
String[] commands = script.split("-");
|
||||
|
||||
menu.addItem(0, new CustomItem(ScriptPart.START.getItem(), SlimefunPlugin.getLocal().getMessage(p, "android.scripts.instructions.START"), "", "&7\u21E8 &eLeft Click &7to return to the Android's interface"));
|
||||
@ -794,33 +795,26 @@ public abstract class ProgrammableAndroid extends SimpleSlimefunItem<BlockTicker
|
||||
}
|
||||
|
||||
protected void openScriptComponentEditor(Player p, Block b, String script, int index) {
|
||||
ChestMenu menu = new ChestMenu("&eScript Editor");
|
||||
ChestMenu menu = new ChestMenu(ChatColor.DARK_AQUA + SlimefunPlugin.getLocal().getMessage(p, "android.scripts.editor"));
|
||||
String[] commands = script.split("-");
|
||||
|
||||
for (int i = 0; i < 9; i++) {
|
||||
menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "), (pl, slot, item, action) -> false);
|
||||
}
|
||||
ChestMenuUtils.drawBackground(menu, 0, 1, 2, 3, 4, 5, 6, 7, 8);
|
||||
|
||||
try {
|
||||
menu.addItem(9, new CustomItem(SkullItem.fromBase64("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYxMzlmZDFjNTY1NGU1NmU5ZTRlMmM4YmU3ZWIyYmQ1YjQ5OWQ2MzM2MTY2NjNmZWVlOTliNzQzNTJhZDY0In19fQ=="), "&rDo nothing"), (pl, slot, item, action) -> {
|
||||
int i = 0;
|
||||
StringBuilder builder = new StringBuilder("START-");
|
||||
menu.addItem(9, new CustomItem(SkullItem.fromBase64("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYxMzlmZDFjNTY1NGU1NmU5ZTRlMmM4YmU3ZWIyYmQ1YjQ5OWQ2MzM2MTY2NjNmZWVlOTliNzQzNTJhZDY0In19fQ=="), "&rDo nothing"), (pl, slot, item, action) -> {
|
||||
int i = 0;
|
||||
StringBuilder builder = new StringBuilder("START-");
|
||||
|
||||
for (String command : commands) {
|
||||
if (i != index && i > 0 && i < commands.length - 1) builder.append(command + "-");
|
||||
i++;
|
||||
}
|
||||
for (String command : commands) {
|
||||
if (i != index && i > 0 && i < commands.length - 1) builder.append(command + "-");
|
||||
i++;
|
||||
}
|
||||
|
||||
builder.append("REPEAT");
|
||||
BlockStorage.addBlockInfo(b, "script", builder.toString());
|
||||
builder.append("REPEAT");
|
||||
BlockStorage.addBlockInfo(b, "script", builder.toString());
|
||||
|
||||
openScript(p, b, builder.toString());
|
||||
return false;
|
||||
});
|
||||
}
|
||||
catch (Exception x) {
|
||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating the Script Editor for Slimefun " + SlimefunPlugin.getVersion(), x);
|
||||
}
|
||||
openScript(p, b, builder.toString());
|
||||
return false;
|
||||
});
|
||||
|
||||
int i = 10;
|
||||
for (ScriptPart part : getAccessibleScriptParts()) {
|
||||
|
@ -11,11 +11,11 @@ import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.PotionMeta;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.api.player.PlayerBackpack;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory;
|
||||
|
||||
public class CoolerListener implements Listener {
|
||||
|
||||
@ -30,7 +30,7 @@ public class CoolerListener implements Listener {
|
||||
|
||||
for (ItemStack item : p.getInventory().getContents()) {
|
||||
if (SlimefunManager.isItemSimilar(item, SlimefunItems.COOLER, false)) {
|
||||
BackpackInventory backpack = PlayerProfile.getBackpack(item);
|
||||
PlayerBackpack backpack = PlayerProfile.getBackpack(item);
|
||||
|
||||
if (backpack != null) {
|
||||
Inventory inv = backpack.getInventory();
|
||||
|
@ -68,19 +68,10 @@ public class MultiBlockListener implements Listener {
|
||||
}
|
||||
|
||||
protected boolean compareMaterialsVertical(Block b, Material top, Material center, Material bottom) {
|
||||
if (center != null && !equals(b.getType(), center)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (top != null && !equals(b.getRelative(BlockFace.UP).getType(), top)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (bottom != null && !equals(b.getRelative(BlockFace.DOWN).getType(), bottom)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
return
|
||||
(center == null || equals(b.getType(), center)) &&
|
||||
(top == null || equals(b.getRelative(BlockFace.UP).getType(), top)) &&
|
||||
(bottom == null || equals(b.getRelative(BlockFace.DOWN).getType(), bottom));
|
||||
}
|
||||
|
||||
private boolean equals(Material a, Material b) {
|
||||
|
@ -1,6 +1,8 @@
|
||||
package io.github.thebusybiscuit.slimefun4.implementation.listeners;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
@ -42,6 +44,8 @@ import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public class TalismanListener implements Listener {
|
||||
|
||||
private final int[] armorSlots = {39, 38, 37, 36};
|
||||
|
||||
public TalismanListener(SlimefunPlugin plugin) {
|
||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||
}
|
||||
@ -71,8 +75,6 @@ public class TalismanListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
private final int[] armorSlots = {39, 38, 37, 36};
|
||||
|
||||
@EventHandler
|
||||
public void onItemBreak(PlayerItemBreakEvent e) {
|
||||
if (Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_ANVIL)) {
|
||||
@ -115,7 +117,8 @@ public class TalismanListener implements Listener {
|
||||
Random random = ThreadLocalRandom.current();
|
||||
|
||||
if (Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_MAGICIAN)) {
|
||||
List<String> enchantments = new ArrayList<>();
|
||||
List<String> enchantments = new LinkedList<>();
|
||||
|
||||
for (Enchantment en : Enchantment.values()) {
|
||||
for (int i = 1; i <= en.getMaxLevel(); i++) {
|
||||
if ((boolean) Slimefun.getItemValue("MAGICIAN_TALISMAN", "allow-enchantments." + en.getKey().getKey() + ".level." + i) && en.canEnchantItem(e.getItem())) {
|
||||
@ -123,19 +126,21 @@ public class TalismanListener implements Listener {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String enchant = enchantments.get(random.nextInt(enchantments.size()));
|
||||
e.getEnchantsToAdd().put(Enchantment.getByKey(NamespacedKey.minecraft(enchant.split("-")[0])), Integer.parseInt(enchant.split("-")[1]));
|
||||
}
|
||||
|
||||
if (!e.getEnchantsToAdd().containsKey(Enchantment.SILK_TOUCH) && Enchantment.LOOT_BONUS_BLOCKS.canEnchantItem(e.getItem()) && Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_WIZARD)) {
|
||||
if (e.getEnchantsToAdd().containsKey(Enchantment.LOOT_BONUS_BLOCKS)) e.getEnchantsToAdd().remove(Enchantment.LOOT_BONUS_BLOCKS);
|
||||
Set<Enchantment> enchantments = e.getEnchantsToAdd().keySet();
|
||||
|
||||
for (Enchantment en : enchantments) {
|
||||
if (random.nextInt(100) < 40) e.getEnchantsToAdd().put(en, random.nextInt(3) + 1);
|
||||
if (random.nextInt(100) < 40) {
|
||||
e.getEnchantsToAdd().put(en, random.nextInt(3) + 1);
|
||||
}
|
||||
}
|
||||
|
||||
e.getItem().addUnsafeEnchantment(Enchantment.LOOT_BONUS_BLOCKS, random.nextInt(3) + 3);
|
||||
e.getEnchantsToAdd().put(Enchantment.LOOT_BONUS_BLOCKS, random.nextInt(3) + 3);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,11 +34,7 @@ public class TeleporterListener implements Listener {
|
||||
if (id.equals("GPS_ACTIVATION_DEVICE_SHARED") || (id.equals("GPS_ACTIVATION_DEVICE_PERSONAL") && BlockStorage.getLocationInfo(e.getClickedBlock().getLocation(), "owner").equals(e.getPlayer().getUniqueId().toString()))) {
|
||||
SlimefunItem teleporter = BlockStorage.check(e.getClickedBlock().getRelative(BlockFace.DOWN));
|
||||
|
||||
if (teleporter instanceof Teleporter) {
|
||||
for (BlockFace face : faces) {
|
||||
if (!BlockStorage.check(e.getClickedBlock().getRelative(BlockFace.DOWN).getRelative(face), "GPS_TELEPORTER_PYLON")) return;
|
||||
}
|
||||
|
||||
if (teleporter instanceof Teleporter && checkForPylons(e.getClickedBlock().getRelative(BlockFace.DOWN))) {
|
||||
Block block = e.getClickedBlock().getRelative(BlockFace.DOWN);
|
||||
UUID owner = UUID.fromString(BlockStorage.getLocationInfo(block.getLocation(), "owner"));
|
||||
SlimefunPlugin.getGPSNetwork().getTeleleportationService().openTeleporterGUI(e.getPlayer(), owner, block, SlimefunPlugin.getGPSNetwork().getNetworkComplexity(owner));
|
||||
@ -49,4 +45,14 @@ public class TeleporterListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkForPylons(Block teleporter) {
|
||||
for (BlockFace face : faces) {
|
||||
if (!BlockStorage.check(teleporter.getRelative(face), "GPS_TELEPORTER_PYLON")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -16,8 +16,6 @@ import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.Chest;
|
||||
import org.bukkit.block.CreatureSpawner;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -62,6 +60,12 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.blocks.AncientPedestal;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.blocks.HologramProjector;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.blocks.InfusedHopper;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.blocks.ReactorAccessPort;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.blocks.RepairedSpawner;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.blocks.TrashCan;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.AdvancedCargoOutputNode;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoConnector;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.cargo.CargoInputNode;
|
||||
@ -110,15 +114,10 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.TelepositionScroll;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.Vitamins;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.WaterStaff;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.WindStaff;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.AncientPedestal;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.BlockPlacer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Composter;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.Crucible;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.EnhancedFurnace;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.HologramProjector;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.InfusedHopper;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.TrashCan;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AnimalGrowthAccelerator;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoAnvil;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.AutoBreeder;
|
||||
@ -175,7 +174,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.OreWasher;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.PressureChamber;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.Smeltery;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks.TableSaw;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemUseHandler;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.MultiBlockInteractionHandler;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
@ -1298,30 +1296,9 @@ public final class SlimefunItemSetup {
|
||||
new ItemStack[] {null, null, null, null, new ItemStack(Material.SPAWNER), null, null, null, null})
|
||||
.register(true);
|
||||
|
||||
new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.REPAIRED_SPAWNER, RecipeType.ANCIENT_ALTAR,
|
||||
new RepairedSpawner(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.REPAIRED_SPAWNER, RecipeType.ANCIENT_ALTAR,
|
||||
new ItemStack[] {SlimefunItems.RUNE_ENDER, SlimefunItems.FILLED_FLASK_OF_KNOWLEDGE, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.FILLED_FLASK_OF_KNOWLEDGE, SlimefunItems.BROKEN_SPAWNER, SlimefunItems.FILLED_FLASK_OF_KNOWLEDGE, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.FILLED_FLASK_OF_KNOWLEDGE, SlimefunItems.RUNE_ENDER})
|
||||
.register(true, (BlockPlaceHandler) (e, item) -> {
|
||||
if (SlimefunManager.isItemSimilar(item, SlimefunItems.REPAIRED_SPAWNER, false)) {
|
||||
EntityType type = null;
|
||||
|
||||
for (String line: item.getItemMeta().getLore()) {
|
||||
if (ChatColor.stripColor(line).startsWith("Type: ") && !line.contains("<Type>")) {
|
||||
type = EntityType.valueOf(ChatColor.stripColor(line).replace("Type: ", "").replace(' ', '_').toUpperCase());
|
||||
}
|
||||
}
|
||||
|
||||
if (type != null) {
|
||||
CreatureSpawner spawner = (CreatureSpawner) e.getBlock().getState();
|
||||
spawner.setSpawnedType(type);
|
||||
spawner.update(true, false);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
.register(true);
|
||||
|
||||
new EnhancedFurnace(1, 1, 1, (SlimefunItemStack) SlimefunItems.ENHANCED_FURNACE,
|
||||
new ItemStack[] {null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.BASIC_CIRCUIT_BOARD, new ItemStack(Material.FURNACE), SlimefunItems.HEATING_COIL, null, SlimefunItems.ELECTRIC_MOTOR, null})
|
||||
|
@ -9,10 +9,10 @@ import org.bukkit.Material;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.MultiBlock;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem {
|
||||
|
@ -19,6 +19,7 @@ import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
|
||||
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
|
||||
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.NumberUtils;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||
@ -29,7 +30,6 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
@ -246,8 +246,8 @@ public abstract class AGenerator extends SlimefunItem implements RecipeDisplayIt
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeSectionLabel() {
|
||||
return "&7\u21E9 Available Types of Fuel \u21E9";
|
||||
public String getLabelLocalPath() {
|
||||
return "guide.tooltips.recipes.generator";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -21,6 +21,7 @@ import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
|
||||
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
||||
import io.github.thebusybiscuit.cscorelib2.skull.SkullItem;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.holograms.ReactorHologram;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.holograms.SimpleHologram;
|
||||
@ -30,8 +31,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.blocks.ReactorAccessPort;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
@ -407,8 +407,8 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeSectionLabel() {
|
||||
return "&7\u21E9 Available Types of Fuel \u21E9";
|
||||
public String getLabelLocalPath() {
|
||||
return "guide.tooltips.recipes.generator";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.blocks;
|
||||
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.inventory.ItemStack;
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.blocks;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@ -48,11 +48,6 @@ public class HologramProjector extends SimpleSlimefunItem<BlockUseHandler> {
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean areItemHandlersPrivate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockUseHandler getItemHandler() {
|
||||
return e -> {
|
||||
@ -68,7 +63,7 @@ public class HologramProjector extends SimpleSlimefunItem<BlockUseHandler> {
|
||||
}
|
||||
|
||||
private void openEditor(Player p, Block projector) {
|
||||
ChestMenu menu = new ChestMenu("Hologram Settings");
|
||||
ChestMenu menu = new ChestMenu(SlimefunPlugin.getLocal().getMessage(p, "machines.HOLOGRAM_PROJECTOR.inventory-title"));
|
||||
|
||||
menu.addItem(0, new CustomItem(Material.NAME_TAG, "&7Text &e(Click to edit)", "", "&r" + ChatColors.color(BlockStorage.getLocationInfo(projector.getLocation(), "text"))));
|
||||
menu.addMenuClickHandler(0, (pl, slot, item, action) -> {
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.blocks;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@ -24,11 +24,6 @@ public class InfusedHopper extends SimpleSlimefunItem<BlockTicker> {
|
||||
super(category, item, recipeType, recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean areItemHandlersPrivate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockTicker getItemHandler() {
|
||||
return new BlockTicker() {
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.blocks;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
@ -0,0 +1,55 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.blocks;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.block.CreatureSpawner;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockPlaceHandler;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public class RepairedSpawner extends SimpleSlimefunItem<BlockPlaceHandler> {
|
||||
|
||||
public RepairedSpawner(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, recipeType, recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean areItemHandlersPrivate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockPlaceHandler getItemHandler() {
|
||||
return (e, item) -> {
|
||||
if (SlimefunManager.isItemSimilar(item, SlimefunItems.REPAIRED_SPAWNER, false)) {
|
||||
EntityType type = null;
|
||||
|
||||
for (String line : item.getItemMeta().getLore()) {
|
||||
if (ChatColor.stripColor(line).startsWith("Type: ") && !line.contains("<Type>")) {
|
||||
type = EntityType.valueOf(ChatColor.stripColor(line).replace("Type: ", "").replace(' ', '_').toUpperCase(Locale.ROOT));
|
||||
}
|
||||
}
|
||||
|
||||
if (type != null) {
|
||||
CreatureSpawner spawner = (CreatureSpawner) e.getBlock().getState();
|
||||
spawner.setSpawnedType(type);
|
||||
spawner.update(true, false);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.blocks;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
@ -13,7 +13,7 @@ public interface DamageableItem {
|
||||
boolean isDamageable();
|
||||
|
||||
default void damageItem(Player p, ItemStack item) {
|
||||
if (item != null && item.getType() != Material.AIR && item.getAmount() > 0 && isDamageable()) {
|
||||
if (isDamageable() && item != null && item.getType() != Material.AIR && item.getAmount() > 0) {
|
||||
if (item.getEnchantments().containsKey(Enchantment.DURABILITY) && Math.random() * 100 <= (60 + Math.floorDiv(40, (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1)))) {
|
||||
return;
|
||||
}
|
||||
|
@ -1,21 +0,0 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
@FunctionalInterface
|
||||
public interface RecipeDisplayItem {
|
||||
|
||||
List<ItemStack> getDisplayRecipes();
|
||||
|
||||
@Deprecated
|
||||
default String getRecipeSectionLabel() {
|
||||
return "&7\u21E9 Recipes made in this Machine \u21E9";
|
||||
}
|
||||
|
||||
default String getRecipeSectionLabel(Player p) {
|
||||
return getRecipeSectionLabel();
|
||||
}
|
||||
}
|
@ -11,12 +11,12 @@ import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.cscorelib2.collections.RandomizedSet;
|
||||
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemUseHandler;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
@ -55,6 +55,11 @@ public class GoldPan extends SimpleSlimefunItem<ItemUseHandler> implements Recip
|
||||
weights += chance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLabelLocalPath() {
|
||||
return "guide.tooltips.recipes.gold-pan";
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemUseHandler getItemHandler() {
|
||||
return e -> {
|
||||
|
@ -11,11 +11,11 @@ import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.cscorelib2.collections.RandomizedSet;
|
||||
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemUseHandler;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
@ -61,6 +61,11 @@ public class NetherGoldPan extends SimpleSlimefunItem<ItemUseHandler> implements
|
||||
weights += chance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLabelLocalPath() {
|
||||
return "guide.tooltips.recipes.gold-pan";
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemUseHandler getItemHandler() {
|
||||
return e -> {
|
||||
|
@ -14,11 +14,11 @@ import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.cscorelib2.materials.MaterialCollections;
|
||||
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockUseHandler;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
@ -16,11 +16,11 @@ import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.cscorelib2.materials.MaterialCollections;
|
||||
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockUseHandler;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
|
@ -9,13 +9,13 @@ import org.bukkit.block.Block;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
@ -4,11 +4,11 @@ import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public abstract class CarbonPress extends AContainer implements RecipeDisplayItem {
|
||||
|
@ -9,13 +9,13 @@ import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.cscorelib2.collections.RandomizedSet;
|
||||
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
@ -3,12 +3,12 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public abstract class ElectricIngotFactory extends AContainer implements RecipeDisplayItem {
|
||||
|
@ -6,12 +6,12 @@ import java.util.List;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public class ElectricIngotPulverizer extends AContainer implements RecipeDisplayItem {
|
||||
|
@ -3,10 +3,10 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public abstract class ElectricOreGrinder extends AContainer implements RecipeDisplayItem {
|
||||
|
@ -4,12 +4,12 @@ import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public abstract class ElectricPress extends AContainer implements RecipeDisplayItem {
|
||||
|
@ -3,11 +3,11 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public abstract class FoodComposter extends AContainer implements RecipeDisplayItem {
|
||||
|
@ -6,12 +6,12 @@ import java.util.List;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public abstract class Freezer extends AContainer implements RecipeDisplayItem {
|
||||
|
@ -8,13 +8,13 @@ import org.bukkit.block.Block;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
@ -12,6 +12,7 @@ import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||
import io.github.thebusybiscuit.slimefun4.api.geo.GEOResource;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.holograms.SimpleHologram;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
|
||||
@ -25,7 +26,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
@ -121,8 +121,8 @@ public abstract class GEOMiner extends AContainer implements InventoryBlock, Rec
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRecipeSectionLabel() {
|
||||
return "&7\u21E9 Resources you can obtain \u21E9";
|
||||
public String getLabelLocalPath() {
|
||||
return "guide.tooltips.recipes.miner";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -13,6 +13,7 @@ import org.bukkit.inventory.ItemStack;
|
||||
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
||||
import io.github.thebusybiscuit.slimefun4.api.geo.GEOResource;
|
||||
import io.github.thebusybiscuit.slimefun4.core.attributes.RecipeDisplayItem;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
@ -20,7 +21,6 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
@ -27,6 +27,9 @@ import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public final class SlimefunManager {
|
||||
|
||||
private static final String EMERALDENCHANTS_LORE = ChatColor.YELLOW.toString() + ChatColor.YELLOW.toString() + ChatColor.GRAY.toString();
|
||||
private static final String SOULBOUND_LORE = ChatColor.GRAY + "Soulbound";
|
||||
|
||||
private SlimefunManager() {}
|
||||
|
||||
public static void registerArmorSet(ItemStack baseComponent, ItemStack[] items, String idSyntax, PotionEffect[][] effects, boolean special, boolean slimefun) {
|
||||
@ -167,16 +170,14 @@ public final class SlimefunManager {
|
||||
StringBuilder string1 = new StringBuilder();
|
||||
StringBuilder string2 = new StringBuilder();
|
||||
|
||||
String colors = ChatColor.YELLOW.toString() + ChatColor.YELLOW.toString() + ChatColor.GRAY.toString();
|
||||
|
||||
for (String string : lore) {
|
||||
if (!string.equals(ChatColor.GRAY + "Soulbound") && !string.startsWith(colors)) {
|
||||
if (!string.equals(SOULBOUND_LORE) && !string.startsWith(EMERALDENCHANTS_LORE)) {
|
||||
string1.append("-NEW LINE-").append(string);
|
||||
}
|
||||
}
|
||||
|
||||
for (String string : lore2) {
|
||||
if (!string.equals(ChatColor.GRAY + "Soulbound") && !string.startsWith(colors)) {
|
||||
if (!string.equals(SOULBOUND_LORE) && !string.startsWith(EMERALDENCHANTS_LORE)) {
|
||||
string2.append("-NEW LINE-").append(string);
|
||||
}
|
||||
}
|
||||
@ -207,7 +208,7 @@ public final class SlimefunManager {
|
||||
}
|
||||
else if (item.hasItemMeta()) {
|
||||
ItemMeta im = item.getItemMeta();
|
||||
return (im.hasLore() && im.getLore().contains(ChatColor.GRAY + "Soulbound"));
|
||||
return (im.hasLore() && im.getLore().equals(SOULBOUND_LORE));
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -53,7 +53,9 @@ public final class Pedestals {
|
||||
if (input.size() != 8) return null;
|
||||
|
||||
if (SlimefunManager.isItemSimilar(catalyst, SlimefunItems.BROKEN_SPAWNER, false)) {
|
||||
if (checkRecipe(SlimefunItems.BROKEN_SPAWNER, input) == null) return null;
|
||||
if (checkRecipe(SlimefunItems.BROKEN_SPAWNER, input) == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
ItemStack spawner = SlimefunItems.REPAIRED_SPAWNER.clone();
|
||||
ItemMeta im = spawner.getItemMeta();
|
||||
|
@ -22,9 +22,9 @@ import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.cscorelib2.config.Config;
|
||||
import io.github.thebusybiscuit.slimefun4.api.items.HashedArmorpiece;
|
||||
import io.github.thebusybiscuit.slimefun4.api.player.PlayerBackpack;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Research;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory;
|
||||
|
||||
/**
|
||||
* A class that can store a Player's Research Profile for caching
|
||||
@ -42,7 +42,7 @@ public final class PlayerProfile {
|
||||
private boolean markedForDeletion = false;
|
||||
|
||||
private final Set<Research> researches = new HashSet<>();
|
||||
private final Map<Integer, BackpackInventory> backpacks = new HashMap<>();
|
||||
private final Map<Integer, PlayerBackpack> backpacks = new HashMap<>();
|
||||
private final LinkedList<Object> guideHistory = new LinkedList<>();
|
||||
|
||||
private final HashedArmorpiece[] armor = {
|
||||
@ -102,7 +102,7 @@ public final class PlayerProfile {
|
||||
* This method will save the Player's Researches and Backpacks to the hard drive
|
||||
*/
|
||||
public void save() {
|
||||
for (BackpackInventory backpack : backpacks.values()) {
|
||||
for (PlayerBackpack backpack : backpacks.values()) {
|
||||
backpack.save();
|
||||
}
|
||||
|
||||
@ -164,22 +164,22 @@ public final class PlayerProfile {
|
||||
this.dirty = true;
|
||||
}
|
||||
|
||||
public BackpackInventory createBackpack(int size) {
|
||||
public PlayerBackpack createBackpack(int size) {
|
||||
IntStream stream = IntStream.iterate(0, i -> i + 1).filter(i -> !cfg.contains("backpacks." + i + ".size"));
|
||||
int id = stream.findFirst().getAsInt();
|
||||
|
||||
BackpackInventory backpack = new BackpackInventory(this, id, size);
|
||||
PlayerBackpack backpack = new PlayerBackpack(this, id, size);
|
||||
backpacks.put(id, backpack);
|
||||
|
||||
return backpack;
|
||||
}
|
||||
|
||||
public BackpackInventory getBackpack(int id) {
|
||||
BackpackInventory backpack = backpacks.get(id);
|
||||
public PlayerBackpack getBackpack(int id) {
|
||||
PlayerBackpack backpack = backpacks.get(id);
|
||||
|
||||
if (backpack != null) return backpack;
|
||||
else {
|
||||
backpack = new BackpackInventory(this, id);
|
||||
backpack = new PlayerBackpack(this, id);
|
||||
backpacks.put(id, backpack);
|
||||
return backpack;
|
||||
}
|
||||
@ -313,7 +313,7 @@ public final class PlayerProfile {
|
||||
return SlimefunPlugin.getRegistry().getPlayerProfiles().values().iterator();
|
||||
}
|
||||
|
||||
public static BackpackInventory getBackpack(ItemStack item) {
|
||||
public static PlayerBackpack getBackpack(ItemStack item) {
|
||||
if (item == null || !item.hasItemMeta() || !item.getItemMeta().hasLore()) return null;
|
||||
|
||||
Optional<Integer> id = Optional.empty();
|
||||
|
@ -27,9 +27,9 @@ import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
|
||||
import io.github.thebusybiscuit.slimefun4.api.network.Network;
|
||||
import io.github.thebusybiscuit.slimefun4.api.network.NetworkComponent;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.ChestMenuUtils;
|
||||
import io.github.thebusybiscuit.slimefun4.utils.holograms.SimpleHologram;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
@ -44,14 +44,13 @@ public class CargoNet extends Network {
|
||||
|
||||
private static final int RANGE = 5;
|
||||
|
||||
private static final int[] slots = new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39};
|
||||
private static final int[] slots = {19, 20, 21, 28, 29, 30, 37, 38, 39};
|
||||
|
||||
// Chest Terminal Stuff
|
||||
public static final int[] terminal_slots = new int[] {0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42};
|
||||
public static final int[] terminal_slots = {0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42};
|
||||
public static final int TERMINAL_OUT_SLOT = 17;
|
||||
|
||||
private static final ItemStack terminal_noitem_item = new CustomItem(new ItemStack(Material.BARRIER), "&4No Item cached");
|
||||
private static final MenuClickHandler terminal_noitem_handler = (p, slot, item, action) -> false;
|
||||
|
||||
private Set<Location> inputNodes = new HashSet<>();
|
||||
private Set<Location> outputNodes = new HashSet<>();
|
||||
@ -214,7 +213,7 @@ public class CargoNet extends Network {
|
||||
|
||||
if (menu.getItemInSlot(17) == null) {
|
||||
Block target = getAttachedBlock(bus.getBlock());
|
||||
ItemSlot stack = CargoManager.withdraw(bus.getBlock(), target, -1);
|
||||
ItemAndInt stack = CargoUtils.withdraw(bus.getBlock(), target, -1);
|
||||
|
||||
if (stack != null) {
|
||||
menu.replaceExistingItem(17, stack.getItem());
|
||||
@ -232,7 +231,7 @@ public class CargoNet extends Network {
|
||||
if (menu.getItemInSlot(17) != null) {
|
||||
Block target = getAttachedBlock(bus.getBlock());
|
||||
|
||||
menu.replaceExistingItem(17, CargoManager.insert(bus.getBlock(), target, menu.getItemInSlot(17), -1));
|
||||
menu.replaceExistingItem(17, CargoUtils.insert(bus.getBlock(), target, menu.getItemInSlot(17), -1));
|
||||
}
|
||||
|
||||
if (menu.getItemInSlot(17) == null) {
|
||||
@ -276,7 +275,7 @@ public class CargoNet extends Network {
|
||||
|
||||
for (Location l : destinations) {
|
||||
Block target = getAttachedBlock(l.getBlock());
|
||||
requestedItem = CargoManager.insert(l.getBlock(), target, requestedItem, -1);
|
||||
requestedItem = CargoUtils.insert(l.getBlock(), target, requestedItem, -1);
|
||||
|
||||
if (requestedItem == null) {
|
||||
menu.replaceExistingItem(request.getSlot(), null);
|
||||
@ -304,7 +303,7 @@ public class CargoNet extends Network {
|
||||
|
||||
for (Location l : providers) {
|
||||
Block target = getAttachedBlock(l.getBlock());
|
||||
ItemStack is = CargoManager.withdraw(l.getBlock(), target, requested);
|
||||
ItemStack is = CargoUtils.withdraw(l.getBlock(), target, requested);
|
||||
|
||||
if (is != null) {
|
||||
if (stack == null) {
|
||||
@ -355,11 +354,11 @@ public class CargoNet extends Network {
|
||||
boolean roundrobin = "true".equals(cfg.getString("round-robin"));
|
||||
|
||||
if (inputTarget != null) {
|
||||
ItemSlot slot = CargoManager.withdraw(input.getBlock(), inputTarget, Integer.parseInt(cfg.getString("index")));
|
||||
ItemAndInt slot = CargoUtils.withdraw(input.getBlock(), inputTarget, Integer.parseInt(cfg.getString("index")));
|
||||
|
||||
if (slot != null) {
|
||||
stack = slot.getItem();
|
||||
previousSlot = slot.getSlot();
|
||||
previousSlot = slot.getInt();
|
||||
}
|
||||
}
|
||||
|
||||
@ -389,7 +388,7 @@ public class CargoNet extends Network {
|
||||
Block target = getAttachedBlock(out.getBlock());
|
||||
|
||||
if (target != null) {
|
||||
stack = CargoManager.insert(out.getBlock(), target, stack, -1);
|
||||
stack = CargoUtils.insert(out.getBlock(), target, stack, -1);
|
||||
if (stack == null) break;
|
||||
}
|
||||
}
|
||||
@ -397,7 +396,7 @@ public class CargoNet extends Network {
|
||||
}
|
||||
|
||||
if (stack != null && previousSlot > -1) {
|
||||
DirtyChestMenu menu = CargoManager.getChestMenu(inputTarget);
|
||||
DirtyChestMenu menu = CargoUtils.getChestMenu(inputTarget);
|
||||
|
||||
if (menu != null) {
|
||||
menu.replaceExistingItem(previousSlot, stack);
|
||||
@ -414,7 +413,7 @@ public class CargoNet extends Network {
|
||||
|
||||
//Chest Terminal Code
|
||||
if (extraChannels) {
|
||||
List<StoredItem> items = new ArrayList<>();
|
||||
List<ItemAndInt> items = new ArrayList<>();
|
||||
|
||||
for (Location l : providers) {
|
||||
Block target = getAttachedBlock(l.getBlock());
|
||||
@ -436,10 +435,10 @@ public class CargoNet extends Network {
|
||||
for (int slot : blockMenu.getPreset().getSlotsAccessedByItemTransport((DirtyChestMenu) blockMenu, ItemTransportFlow.WITHDRAW, null)) {
|
||||
ItemStack is = blockMenu.getItemInSlot(slot);
|
||||
|
||||
if (is != null && CargoManager.matchesFilter(l.getBlock(), is, -1)) {
|
||||
if (is != null && CargoUtils.matchesFilter(l.getBlock(), is, -1)) {
|
||||
boolean add = true;
|
||||
|
||||
for (StoredItem item : items) {
|
||||
for (ItemAndInt item : items) {
|
||||
if (SlimefunManager.isItemSimilar(is, item.getItem(), true)) {
|
||||
add = false;
|
||||
item.add(is.getAmount() + stored);
|
||||
@ -447,7 +446,7 @@ public class CargoNet extends Network {
|
||||
}
|
||||
|
||||
if (add) {
|
||||
items.add(new StoredItem(new CustomItem(is, 1), is.getAmount() + stored));
|
||||
items.add(new ItemAndInt(new CustomItem(is, 1), is.getAmount() + stored));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -469,7 +468,7 @@ public class CargoNet extends Network {
|
||||
}
|
||||
}
|
||||
|
||||
Collections.sort(items, Comparator.comparingInt(item -> -item.getAmount()));
|
||||
Collections.sort(items, Comparator.comparingInt(item -> -item.getInt()));
|
||||
|
||||
for (Location l : terminals) {
|
||||
BlockMenu menu = BlockStorage.getInventory(l);
|
||||
@ -484,15 +483,15 @@ public class CargoNet extends Network {
|
||||
int slot = terminal_slots[i];
|
||||
|
||||
if (items.size() > i + (terminal_slots.length * (page - 1))) {
|
||||
StoredItem item = items.get(i + (terminal_slots.length * (page - 1)));
|
||||
ItemAndInt item = items.get(i + (terminal_slots.length * (page - 1)));
|
||||
|
||||
ItemStack stack = item.getItem().clone();
|
||||
ItemMeta im = stack.getItemMeta();
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add("");
|
||||
lore.add(ChatColors.color("&7Stored Items: &r" + DoubleHandler.getFancyDouble(item.getAmount())));
|
||||
lore.add(ChatColors.color("&7Stored Items: &r" + DoubleHandler.getFancyDouble(item.getInt())));
|
||||
|
||||
if (stack.getMaxStackSize() > 1) lore.add(ChatColors.color("&7<Left Click: Request 1 | Right Click: Request " + (item.getAmount() > stack.getMaxStackSize() ? stack.getMaxStackSize(): item.getAmount()) + ">"));
|
||||
if (stack.getMaxStackSize() > 1) lore.add(ChatColors.color("&7<Left Click: Request 1 | Right Click: Request " + (item.getInt() > stack.getMaxStackSize() ? stack.getMaxStackSize(): item.getInt()) + ">"));
|
||||
else lore.add(ChatColors.color("&7<Left Click: Request 1>"));
|
||||
|
||||
lore.add("");
|
||||
@ -504,7 +503,7 @@ public class CargoNet extends Network {
|
||||
stack.setItemMeta(im);
|
||||
menu.replaceExistingItem(slot, stack);
|
||||
menu.addMenuClickHandler(slot, (p, sl, is, action) -> {
|
||||
int amount = item.getAmount() > item.getItem().getMaxStackSize() ? item.getItem().getMaxStackSize() : item.getAmount();
|
||||
int amount = item.getInt() > item.getItem().getMaxStackSize() ? item.getItem().getMaxStackSize() : item.getInt();
|
||||
itemRequests.add(new ItemRequest(l, 44, new CustomItem(item.getItem(), action.isRightClicked() ? amount : 1), ItemTransportFlow.WITHDRAW));
|
||||
return false;
|
||||
});
|
||||
@ -512,7 +511,7 @@ public class CargoNet extends Network {
|
||||
}
|
||||
else {
|
||||
menu.replaceExistingItem(slot, terminal_noitem_item);
|
||||
menu.addMenuClickHandler(slot, terminal_noitem_handler);
|
||||
menu.addMenuClickHandler(slot, ChestMenuUtils.getEmptyClickHandler());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -540,17 +539,17 @@ public class CargoNet extends Network {
|
||||
return freq;
|
||||
}
|
||||
|
||||
private void handleWithdraw(DirtyChestMenu menu, List<StoredItem> items, Location l) {
|
||||
private void handleWithdraw(DirtyChestMenu menu, List<ItemAndInt> items, Location l) {
|
||||
for (int slot : menu.getPreset().getSlotsAccessedByItemTransport(menu, ItemTransportFlow.WITHDRAW, null)) {
|
||||
filter(menu.getItemInSlot(slot), items, l);
|
||||
}
|
||||
}
|
||||
|
||||
private void filter(ItemStack is, List<StoredItem> items, Location l) {
|
||||
if (is != null && CargoManager.matchesFilter(l.getBlock(), is, -1)) {
|
||||
private void filter(ItemStack is, List<ItemAndInt> items, Location l) {
|
||||
if (is != null && CargoUtils.matchesFilter(l.getBlock(), is, -1)) {
|
||||
boolean add = true;
|
||||
|
||||
for (StoredItem item : items) {
|
||||
for (ItemAndInt item : items) {
|
||||
if (SlimefunManager.isItemSimilar(is, item.getItem(), true)) {
|
||||
add = false;
|
||||
item.add(is.getAmount());
|
||||
@ -558,7 +557,7 @@ public class CargoNet extends Network {
|
||||
}
|
||||
|
||||
if (add) {
|
||||
items.add(new StoredItem(new CustomItem(is, 1), is.getAmount()));
|
||||
items.add(new ItemAndInt(new CustomItem(is, 1), is.getAmount()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,13 +19,12 @@ import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.DirtyChestMenu;
|
||||
|
||||
public final class CargoManager {
|
||||
public final class CargoUtils {
|
||||
|
||||
//Whitelist or blacklist slots
|
||||
private static final int[] SLOTS = new int[]{19, 20, 21, 28, 29, 30, 37, 38, 39};
|
||||
private static final int[] SLOTS = {19, 20, 21, 28, 29, 30, 37, 38, 39};
|
||||
|
||||
private CargoManager() {
|
||||
}
|
||||
private CargoUtils() {}
|
||||
|
||||
public static ItemStack withdraw(Block node, Block target, ItemStack template) {
|
||||
DirtyChestMenu menu = getChestMenu(target);
|
||||
@ -50,37 +49,44 @@ public final class CargoManager {
|
||||
BlockState state = target.getState();
|
||||
|
||||
if (state instanceof InventoryHolder) {
|
||||
Inventory inv = ((InventoryHolder) state).getInventory();
|
||||
int minSlot = 0;
|
||||
int maxSlot = inv.getContents().length;
|
||||
|
||||
if (inv instanceof FurnaceInventory) {
|
||||
minSlot = 2;
|
||||
maxSlot = 3;
|
||||
}
|
||||
else if (inv instanceof BrewerInventory) {
|
||||
maxSlot = 3;
|
||||
}
|
||||
for (int slot = minSlot; slot < maxSlot; slot++) {
|
||||
ItemStack is = inv.getContents()[slot];
|
||||
|
||||
if (SlimefunManager.isItemSimilar(is, template, true) && matchesFilter(node, is, -1)) {
|
||||
if (is.getAmount() > template.getAmount()) {
|
||||
inv.setItem(slot, new CustomItem(is, is.getAmount() - template.getAmount()));
|
||||
return template;
|
||||
}
|
||||
else {
|
||||
inv.setItem(slot, new CustomItem(is, is.getAmount() - template.getAmount()));
|
||||
return is.clone();
|
||||
}
|
||||
}
|
||||
}
|
||||
return withdrawFromVanillaInventory(node, template, ((InventoryHolder) state).getInventory());
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ItemSlot withdraw(Block node, Block target, int index) {
|
||||
private static ItemStack withdrawFromVanillaInventory(Block node, ItemStack template, Inventory inv) {
|
||||
int minSlot = 0;
|
||||
int maxSlot = inv.getContents().length;
|
||||
|
||||
if (inv instanceof FurnaceInventory) {
|
||||
minSlot = 2;
|
||||
maxSlot = 3;
|
||||
}
|
||||
else if (inv instanceof BrewerInventory) {
|
||||
maxSlot = 3;
|
||||
}
|
||||
|
||||
for (int slot = minSlot; slot < maxSlot; slot++) {
|
||||
ItemStack is = inv.getContents()[slot];
|
||||
|
||||
if (SlimefunManager.isItemSimilar(is, template, true) && matchesFilter(node, is, -1)) {
|
||||
if (is.getAmount() > template.getAmount()) {
|
||||
inv.setItem(slot, new CustomItem(is, is.getAmount() - template.getAmount()));
|
||||
return template;
|
||||
}
|
||||
else {
|
||||
inv.setItem(slot, new CustomItem(is, is.getAmount() - template.getAmount()));
|
||||
return is.clone();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ItemAndInt withdraw(Block node, Block target, int index) {
|
||||
DirtyChestMenu menu = getChestMenu(target);
|
||||
|
||||
if (menu != null) {
|
||||
@ -89,7 +95,7 @@ public final class CargoManager {
|
||||
|
||||
if (matchesFilter(node, is, index)) {
|
||||
menu.replaceExistingItem(slot, null);
|
||||
return new ItemSlot(is.clone(), slot);
|
||||
return new ItemAndInt(is.clone(), slot);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -115,7 +121,7 @@ public final class CargoManager {
|
||||
|
||||
if (matchesFilter(node, is, index)) {
|
||||
inv.setItem(slot, null);
|
||||
return new ItemSlot(is.clone(), slot);
|
||||
return new ItemAndInt(is.clone(), slot);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -157,69 +163,73 @@ public final class CargoManager {
|
||||
BlockState state = target.getState();
|
||||
|
||||
if (state instanceof InventoryHolder) {
|
||||
Inventory inv = ((InventoryHolder) state).getInventory();
|
||||
|
||||
int minSlot = 0;
|
||||
int maxSlot = inv.getContents().length;
|
||||
|
||||
//Check if it is a normal furnace
|
||||
if (inv instanceof FurnaceInventory) {
|
||||
//Check if it is fuel or not
|
||||
if (stack.getType().isFuel()) {
|
||||
minSlot = 1;
|
||||
maxSlot = 2;
|
||||
}
|
||||
else {
|
||||
maxSlot = 1;
|
||||
}
|
||||
}
|
||||
else if (inv instanceof BrewerInventory) {
|
||||
//Check if it goes in the potion slot,
|
||||
if (stack.getType() == Material.POTION || stack.getType() == Material.LINGERING_POTION || stack.getType() == Material.SPLASH_POTION) {
|
||||
maxSlot = 3;
|
||||
//The blaze powder slot,
|
||||
}
|
||||
else if (stack.getType() == Material.BLAZE_POWDER) {
|
||||
minSlot = 4;
|
||||
maxSlot = 5;
|
||||
}
|
||||
else {
|
||||
//Or the input
|
||||
minSlot = 3;
|
||||
maxSlot = 4;
|
||||
}
|
||||
}
|
||||
|
||||
for (int slot = minSlot; slot < maxSlot; slot++) {
|
||||
ItemStack is = inv.getContents()[slot];
|
||||
|
||||
if (is == null) {
|
||||
inv.setItem(slot, stack.clone());
|
||||
return null;
|
||||
}
|
||||
else if (SlimefunManager.isItemSimilar(new CustomItem(is, 1), new CustomItem(stack, 1), true) && is.getAmount() < is.getType().getMaxStackSize()) {
|
||||
int amount = is.getAmount() + stack.getAmount();
|
||||
|
||||
if (amount > is.getType().getMaxStackSize()) {
|
||||
is.setAmount(is.getType().getMaxStackSize());
|
||||
stack.setAmount(amount - is.getType().getMaxStackSize());
|
||||
}
|
||||
else {
|
||||
is.setAmount(amount);
|
||||
stack = null;
|
||||
}
|
||||
|
||||
inv.setItem(slot, is);
|
||||
return stack;
|
||||
}
|
||||
}
|
||||
return insertIntoVanillaInventory(stack, ((InventoryHolder) state).getInventory());
|
||||
}
|
||||
}
|
||||
|
||||
return stack;
|
||||
}
|
||||
|
||||
public static DirtyChestMenu getChestMenu(Block block) {
|
||||
private static ItemStack insertIntoVanillaInventory(ItemStack stack, Inventory inv) {
|
||||
int minSlot = 0;
|
||||
int maxSlot = inv.getContents().length;
|
||||
|
||||
//Check if it is a normal furnace
|
||||
if (inv instanceof FurnaceInventory) {
|
||||
//Check if it is fuel or not
|
||||
if (stack.getType().isFuel()) {
|
||||
minSlot = 1;
|
||||
maxSlot = 2;
|
||||
}
|
||||
else {
|
||||
maxSlot = 1;
|
||||
}
|
||||
}
|
||||
else if (inv instanceof BrewerInventory) {
|
||||
//Check if it goes in the potion slot,
|
||||
if (stack.getType() == Material.POTION || stack.getType() == Material.LINGERING_POTION || stack.getType() == Material.SPLASH_POTION) {
|
||||
maxSlot = 3;
|
||||
//The blaze powder slot,
|
||||
}
|
||||
else if (stack.getType() == Material.BLAZE_POWDER) {
|
||||
minSlot = 4;
|
||||
maxSlot = 5;
|
||||
}
|
||||
else {
|
||||
//Or the input
|
||||
minSlot = 3;
|
||||
maxSlot = 4;
|
||||
}
|
||||
}
|
||||
|
||||
for (int slot = minSlot; slot < maxSlot; slot++) {
|
||||
ItemStack is = inv.getContents()[slot];
|
||||
|
||||
if (is == null) {
|
||||
inv.setItem(slot, stack.clone());
|
||||
return null;
|
||||
}
|
||||
else if (SlimefunManager.isItemSimilar(new CustomItem(is, 1), new CustomItem(stack, 1), true) && is.getAmount() < is.getType().getMaxStackSize()) {
|
||||
int amount = is.getAmount() + stack.getAmount();
|
||||
|
||||
if (amount > is.getType().getMaxStackSize()) {
|
||||
is.setAmount(is.getType().getMaxStackSize());
|
||||
stack.setAmount(amount - is.getType().getMaxStackSize());
|
||||
}
|
||||
else {
|
||||
is.setAmount(amount);
|
||||
stack = null;
|
||||
}
|
||||
|
||||
inv.setItem(slot, is);
|
||||
return stack;
|
||||
}
|
||||
}
|
||||
|
||||
return stack;
|
||||
}
|
||||
|
||||
public static DirtyChestMenu getChestMenu(Block block) {
|
||||
if (BlockStorage.hasInventory(block)) {
|
||||
return BlockStorage.getInventory(block);
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
package me.mrCookieSlime.Slimefun.api.item_transport;
|
||||
|
||||
public class ChannelIndex {
|
||||
|
||||
private final int channel;
|
||||
private int index;
|
||||
|
||||
public ChannelIndex(int channel, int index) {
|
||||
this.channel = channel;
|
||||
this.index = index;
|
||||
}
|
||||
|
||||
public void setIndex(int index) {
|
||||
this.index = index;
|
||||
}
|
||||
|
||||
public int getChannel() {
|
||||
return this.channel;
|
||||
}
|
||||
|
||||
public int getIndex() {
|
||||
return this.index;
|
||||
}
|
||||
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
package me.mrCookieSlime.Slimefun.api.item_transport;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
public class ChestTerminalSorter implements Comparator<StoredItem> {
|
||||
|
||||
@Override
|
||||
public int compare(StoredItem item1, StoredItem item2) {
|
||||
return item2.getAmount() - item1.getAmount();
|
||||
}
|
||||
|
||||
}
|
@ -2,26 +2,26 @@ package me.mrCookieSlime.Slimefun.api.item_transport;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class StoredItem {
|
||||
public class ItemAndInt {
|
||||
|
||||
private final ItemStack item;
|
||||
private int amount;
|
||||
private int number;
|
||||
|
||||
public StoredItem(ItemStack item, int amount) {
|
||||
this.amount = amount;
|
||||
public ItemAndInt(ItemStack item, int amount) {
|
||||
this.number = amount;
|
||||
this.item = item;
|
||||
}
|
||||
|
||||
public int getAmount() {
|
||||
return this.amount;
|
||||
public int getInt() {
|
||||
return number;
|
||||
}
|
||||
|
||||
public ItemStack getItem() {
|
||||
return this.item;
|
||||
return item;
|
||||
}
|
||||
|
||||
public void add(int amount) {
|
||||
this.amount = this.amount + amount;
|
||||
number += amount;
|
||||
}
|
||||
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
package me.mrCookieSlime.Slimefun.api.item_transport;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class ItemSlot {
|
||||
|
||||
private final int slot;
|
||||
private final ItemStack item;
|
||||
|
||||
public ItemSlot(ItemStack item, int slot) {
|
||||
this.slot = slot;
|
||||
this.item = item;
|
||||
}
|
||||
|
||||
public int getSlot() {
|
||||
return this.slot;
|
||||
}
|
||||
|
||||
public ItemStack getItem() {
|
||||
return this.item;
|
||||
}
|
||||
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
package me.mrCookieSlime.Slimefun.utils;
|
||||
|
||||
@Deprecated
|
||||
public enum MachineTier {
|
||||
|
||||
BASIC("&eBasic"),
|
||||
AVERAGE("&6Average"),
|
||||
MEDIUM("&aMedium"),
|
||||
GOOD("&2Good"),
|
||||
ADVANCED("&6Advanced"),
|
||||
END_GAME("&4End-Game");
|
||||
|
||||
private final String prefix;
|
||||
|
||||
private MachineTier(String prefix) {
|
||||
this.prefix = prefix;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return prefix;
|
||||
}
|
||||
|
||||
public String and(MachineType type) {
|
||||
return this + " " + type;
|
||||
}
|
||||
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
package me.mrCookieSlime.Slimefun.utils;
|
||||
|
||||
@Deprecated
|
||||
public enum MachineType {
|
||||
|
||||
CAPACITOR("Capacitor"),
|
||||
GENERATOR("Generator"),
|
||||
MACHINE("Machine");
|
||||
|
||||
private final String suffix;
|
||||
|
||||
private MachineType(String suffix) {
|
||||
this.suffix = suffix;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return suffix;
|
||||
}
|
||||
|
||||
}
|
@ -1,25 +1,25 @@
|
||||
---
|
||||
slimefun:
|
||||
weapons: Zbrane
|
||||
tools: Nástroje
|
||||
items: Užitočné itemy
|
||||
food: Jedlo
|
||||
basic_machines: Základné stroje
|
||||
electricity: Energia a elektrina
|
||||
gps: GPS stroje
|
||||
armor: Brnenie
|
||||
magical_items: Magické itemy
|
||||
magical_gadgets: Magické komponenty
|
||||
misc: Rôzne itemy
|
||||
technical_gadgets: Technické komponenty
|
||||
resources: Zdroje
|
||||
cargo: Správa cargo siete
|
||||
tech_misc: Technické komponenty
|
||||
magical_armor: Magické brnenie
|
||||
talismans: Talizmany (Úroveň I)
|
||||
ender_talismans: Talizmany endu (Úroveň II)
|
||||
christmas: Vianoce (December)
|
||||
valentines_day: Valentín (14. február)
|
||||
easter: Veľká noc (Apríl)
|
||||
basic_machines: Základné stroje
|
||||
birthday: Narodeniny TheBusyBiscuit -a (26. október)
|
||||
christmas: Vianoce (December)
|
||||
easter: Veľká noc (Apríl)
|
||||
electricity: Energia a elektrina
|
||||
ender_talismans: Talizmany endu (Úroveň II)
|
||||
food: Jedlo
|
||||
gps: GPS stroje
|
||||
halloween: Halloween (31. október)
|
||||
items: Užitočné itemy
|
||||
magical_armor: Magické brnenie
|
||||
magical_gadgets: Magické komponenty
|
||||
magical_items: Magické itemy
|
||||
misc: Rôzne itemy
|
||||
talismans: Talizmany (Úroveň I)
|
||||
tech_misc: Technické komponenty
|
||||
technical_gadgets: Technické komponenty
|
||||
tools: Nástroje
|
||||
valentines_day: Valentín (14. február)
|
||||
weapons: Zbrane
|
||||
resources: Suroviny
|
||||
cargo: Cargo sieť
|
||||
|
@ -38,6 +38,7 @@ android:
|
||||
uploaded:
|
||||
- "&bLade dein Skript hoch..."
|
||||
- "&aDein Skript wurde erfolgreich hochgeladen!"
|
||||
editor: Skripteditor
|
||||
started: "&7Dein Android hat sein Skript fortgesetzt"
|
||||
stopped: "&7Dein Android hat sein Skript pausiert"
|
||||
anvil:
|
||||
@ -115,11 +116,17 @@ guide:
|
||||
languages: Wähle deine bevorzugte Sprache
|
||||
main: Slimefun-Handbuch
|
||||
settings: Einstellungen & Infos
|
||||
wiki: Slimefun4-Wiki
|
||||
source: Quellcode
|
||||
wiki: Slimefun4-Wiki
|
||||
tooltips:
|
||||
open-category: Klicke zum Öffnen
|
||||
versions-notice: Dies ist sehr wichtig bei Fehlermeldungen!
|
||||
wiki: Besuche das offizielle Slimefun-Wiki
|
||||
recipes:
|
||||
machine: Rezepte dieser Maschine
|
||||
miner: Ressourcen, die mit dieser Maschine gewonnen werden können
|
||||
generator: Mögliche Treibstoffquellen
|
||||
gold-pan: Ressourcen, die hiermit gewonnen werden können
|
||||
inventory:
|
||||
no-access: "&4Du kannst nicht auf diesen Block zugreifen"
|
||||
languages:
|
||||
@ -152,6 +159,10 @@ languages:
|
||||
vi: Vietnamesisch
|
||||
zh-CN: Chinesisch (China)
|
||||
zh-TW: Chinesisch (Taiwan)
|
||||
ja: Japanisch
|
||||
fa: Persisch
|
||||
th: Thailändisch
|
||||
ro: Rumänisch
|
||||
machines:
|
||||
ANCIENT_ALTAR:
|
||||
not-enough-pedestals: "&4Es fehlen einige Sockel des Altars &c(%pedestals% / 8)"
|
||||
@ -175,6 +186,7 @@ machines:
|
||||
HOLOGRAM_PROJECTOR:
|
||||
enter-text: "&7Bitte gebe ins Chatfenser einen Text für dieses Hologram ein. &r(Farbcodes
|
||||
werden unterstützt!)"
|
||||
inventory-title: Hologrammeditor
|
||||
ignition-chamber-no-flint: "&cAlle Feuerzeuge wurden aufgebraucht!"
|
||||
in-use: "&cDiese Maschine wird derzeit von einem anderen Spieler verwendet."
|
||||
pattern-not-found: "&eEs tut mir leid, aber ich konnte kein passendes Rezept finden."
|
||||
@ -187,6 +199,10 @@ machines:
|
||||
nicht, probier ein anderes Item aus."
|
||||
wrong-item: "&eEs tut mir leid, aber ich erkenne das Item in deiner Hand nicht,
|
||||
probier ein anderes Item aus."
|
||||
GPS_CONTROL_PANEL:
|
||||
title: GPS - Kontrolltafel
|
||||
transmitters: Satelliten-Übersicht
|
||||
waypoints: Wegpunkte-Übersicht
|
||||
messages:
|
||||
cannot-place: "&cDu kannst hier keine Blöcke platzieren!"
|
||||
diet-cookie: "&eDu beginnst dich sehr leicht zu fühlen..."
|
||||
|
@ -26,6 +26,13 @@ guide:
|
||||
tooltips:
|
||||
open-category: 'Click to open'
|
||||
versions-notice: 'These are very important when reporting bugs!'
|
||||
wiki: 'View this Item on the official Slimefun Wiki'
|
||||
|
||||
recipes:
|
||||
machine: 'Recipes made in this Machine'
|
||||
miner: 'Resources you can obtain with this Miner'
|
||||
generator: 'Available types of fuel'
|
||||
gold-pan: 'Resources you can obtain'
|
||||
|
||||
cheat:
|
||||
no-multiblocks: '&4You cannot cheat in Multiblocks, you have to build them!'
|
||||
@ -154,6 +161,7 @@ machines:
|
||||
|
||||
HOLOGRAM_PROJECTOR:
|
||||
enter-text: '&7Please enter your desired Hologram Text into your Chat. &r(Color Codes are supported!)'
|
||||
inventory-title: 'Hologram Editor'
|
||||
|
||||
ELEVATOR:
|
||||
no-destinations: '&4No destinations found'
|
||||
@ -169,6 +177,11 @@ machines:
|
||||
cancelled: '&4Teleportation cancelled!'
|
||||
invulnerability: '&b&lYou have been given 30 seconds of Invulnerability!'
|
||||
|
||||
GPS_CONTROL_PANEL:
|
||||
title: 'GPS - Control Panel'
|
||||
transmitters: 'Transmitter Overview'
|
||||
waypoints: 'Waypoint Overview'
|
||||
|
||||
CARGO_NODES:
|
||||
must-be-placed: '&4Must be placed onto a chest or machine!'
|
||||
|
||||
@ -206,8 +219,10 @@ inventory:
|
||||
android:
|
||||
started: '&7Your Android resumed running its script'
|
||||
stopped: '&7Your Android has paused its script'
|
||||
|
||||
scripts:
|
||||
already-uploaded: '&4This script has already been uploaded.'
|
||||
editor: 'Script Editor'
|
||||
|
||||
instructions:
|
||||
START: '&2Start Script'
|
||||
@ -280,3 +295,7 @@ languages:
|
||||
uk: 'Ukrainian'
|
||||
ms: 'Malay'
|
||||
'no': 'Norwegian'
|
||||
ja: 'Japanese'
|
||||
fa: 'Persian'
|
||||
th: 'Thai'
|
||||
ro: 'Romanian'
|
@ -38,6 +38,7 @@ android:
|
||||
uploaded:
|
||||
- "&bUpload du script..."
|
||||
- "&aVotre script a bien été upload !"
|
||||
editor: Éditeur de script
|
||||
started: "&7Votre androïde a repris l'exécution de son script"
|
||||
stopped: "&7Votre androïde a mis en pause l'exécution de son script"
|
||||
anvil:
|
||||
@ -76,6 +77,10 @@ gps:
|
||||
new: "&eEntrez un nom pour votre nouveau waypoint dans le chat. &7(Les codes couleur
|
||||
sont acceptés !)"
|
||||
guide:
|
||||
back:
|
||||
guide: Revenir au Guide Slimefun
|
||||
settings: Revenir au menu des Options
|
||||
title: Retour
|
||||
cheat:
|
||||
no-multiblocks: "&4Vous ne pouvez pas vous donnez les multiblocs, vous devez les
|
||||
construire!"
|
||||
@ -112,48 +117,54 @@ guide:
|
||||
languages: Choisissez votre langue
|
||||
main: Guide Slimefun
|
||||
settings: Paramètres et informations
|
||||
wiki: Wiki Slimefun4
|
||||
source: Code Source
|
||||
wiki: Wiki Slimefun4
|
||||
tooltips:
|
||||
open-category: Cliquez pour ouvrir
|
||||
versions-notice: Ces informations sont très importantes lorsque vous rapportez
|
||||
des bugs !
|
||||
back:
|
||||
title: Retour
|
||||
guide: Revenir au Guide Slimefun
|
||||
settings: Revenir au menu des Options
|
||||
wiki: Voir cet objet sur le wiki officiel de Slimefun
|
||||
recipes:
|
||||
machine: Recettes fabriquées dans cette machine
|
||||
miner: Ressources pouvant être obtenues avec ce mineur
|
||||
generator: Types de carburant disponibles
|
||||
gold-pan: Ressources pouvant être obtenues
|
||||
inventory:
|
||||
no-access: "&4Vous n'avez pas la permission d'accéder à ce bloc"
|
||||
languages:
|
||||
af: Afrikaans
|
||||
ar: Arabe
|
||||
cs: Tchèque
|
||||
da: Danois
|
||||
de: Allemand
|
||||
default: Paramètre par défaut
|
||||
el: Grec
|
||||
en: Anglais
|
||||
es: Espagnol
|
||||
fi: Finnois
|
||||
fr: Français
|
||||
he: Hébreu
|
||||
hu: Hongrois
|
||||
id: Indonésien
|
||||
it: Italien
|
||||
lv: Letton
|
||||
ms: Malais
|
||||
nl: Néerlandais
|
||||
'no': Norvégien
|
||||
pl: Polonais
|
||||
pt: Portugais (Portugal)
|
||||
pt-BR: Portugais (Brésil)
|
||||
ru: Russe
|
||||
sk: Slovaque
|
||||
sv: Suédois
|
||||
uk: Ukrainien
|
||||
vi: Vietnamien
|
||||
zh-CN: Chinois (Chine)
|
||||
zh-TW: Chinois (Taiwan)
|
||||
ar: Arabe
|
||||
af: Afrikaans
|
||||
da: Danois
|
||||
fi: Finnois
|
||||
uk: Ukrainien
|
||||
ms: Malais
|
||||
'no': Norvégien
|
||||
ja: Japonais
|
||||
fa: Persan
|
||||
th: Thaï
|
||||
ro: Roumain
|
||||
machines:
|
||||
ANCIENT_ALTAR:
|
||||
not-enough-pedestals: "&4L'autel n'est pas entouré du bon nombre de piédestaux
|
||||
@ -178,6 +189,7 @@ machines:
|
||||
HOLOGRAM_PROJECTOR:
|
||||
enter-text: "&7Veuillez saisir le texte voulu pour votre hologramme dans le chat.
|
||||
&r(Les codes couleur sont acceptés !)"
|
||||
inventory-title: Éditeur d'hologramme
|
||||
ignition-chamber-no-flint: "&cLa chambre d'allumage n'a pas de briquet."
|
||||
in-use: "&cL'inventaire de ce bloc est déjà ouvert par un autre joueur."
|
||||
pattern-not-found: "&eDésolé, je ne reconnais pas cette recette. Veuillez disposer
|
||||
@ -191,6 +203,10 @@ machines:
|
||||
y placer quelque chose que je connais."
|
||||
wrong-item: "&eDésolé, je ne reconnais pas l'objet avec lequel vous avez cliqué.
|
||||
Consultez le guide pour savoir quels objets vous pouvez utiliser."
|
||||
GPS_CONTROL_PANEL:
|
||||
title: Panneau de configuration GPS
|
||||
transmitters: Vue d'ensemble de l'émetteur
|
||||
waypoints: Vue d'ensemble des waypoints
|
||||
messages:
|
||||
cannot-place: "&cVous ne pouvez pas placer ce bloc là !"
|
||||
diet-cookie: "&eVous vous sentez léger comme une plume..."
|
||||
|
@ -1,232 +1,232 @@
|
||||
---
|
||||
slimefun:
|
||||
walking_sticks: Vychádzkové paličky
|
||||
portable_crafter: Prenosný crafter
|
||||
fortune_cookie: Koláčik šťastia
|
||||
portable_dustbin: Prenosný kôš
|
||||
armor_forge: Craftenie brnení
|
||||
ore_washer: Čistenie rudy
|
||||
gold_carats: Čisté zlato
|
||||
smelters_pickaxe: Vypekací krompáč
|
||||
common_talisman: Obyčajný talizman
|
||||
anvil_talisman: Talizman kovadliny
|
||||
miner_talisman: Talizman baníka
|
||||
hunter_talisman: Talizman lovca
|
||||
lava_talisman: Talizman chodenia po láve
|
||||
water_talisman: Talizman dýchania pod vodou
|
||||
angel_talisman: Talizman anjela
|
||||
fire_talisman: Talizman bojovníka s ohňom
|
||||
magician_talisman: Talizman kúzelníka
|
||||
traveller_talisman: Talizman cestovateľa
|
||||
warrior_talisman: Talizman bojovníka
|
||||
knight_talisman: Talizman rytiera
|
||||
gilded_iron: Žiarivé železo
|
||||
whirlwind_talisman: Talizman víchrice
|
||||
lumber_axe: Drevorubačská sekera
|
||||
uranium: Radioaktívne
|
||||
crushed_ore: Očistenie rudy
|
||||
first_aid: Prvá pomoc
|
||||
night_vision_googles: Okuliare s nočným videním
|
||||
pickaxe_of_containment: Krompáč spawnerov
|
||||
slime_steel_armor: Sliznaté oceľové brnenie
|
||||
24k_gold_block: Zlaté mesto
|
||||
composter: Kompostovanie zeme
|
||||
farmer_shoes: Farmárové boty
|
||||
explosive_tools: Výbušné nástroje
|
||||
crucible: Taviareň
|
||||
ender_talismans: Talizmany endu
|
||||
armored_jetboots: Obrnené tryskové topánky
|
||||
bound_weapons: Zbrane naviazané na dušu
|
||||
bound_tools: Nástroje naviazané na dušu
|
||||
bound_armor: Brnenie naviazané na dušu
|
||||
juicer: Lahodné nápoje
|
||||
repaired_spawner: Opravovanie spawnerov
|
||||
enhanced_furnace: Vylepšená pec
|
||||
more_enhanced_furnaces: Lepšie pece
|
||||
high_tier_enhanced_furnaces: Špičková pec
|
||||
reinforced_furnace: Zpevnená pec
|
||||
carbonado_furnace: Pec z brúseného diamantu
|
||||
electric_motor: Zahrievanie
|
||||
block_placer: Pokladač blokov
|
||||
scroll_of_dimensional_teleposition: Otočiť veci naopak
|
||||
special_bows: Robin Hood
|
||||
tome_of_knowledge_sharing: Delenie sa s kamarátmi
|
||||
flask_of_knowledge: Uschovávanie XP
|
||||
hardened_glass: Odolnosť voči výbuchu
|
||||
golden_apple_juice: Zlatý elixír
|
||||
cooler: Prenášanie nápojov
|
||||
ancient_altar: Staroveký oltár
|
||||
wither_proof_obsidian: Obsidian odolný voči witherom
|
||||
ancient_runes: Runy živlov
|
||||
special_runes: Fialové runy
|
||||
infernal_bonemeal: Pekelná kostná múčka
|
||||
rainbow_blocks: Dúhové bloky
|
||||
infused_hopper: Infusovaný hopper
|
||||
wither_proof_glass: Sklo odolné voči witherom
|
||||
duct_tape: Lepiaca páska
|
||||
plastic_sheet: Plast
|
||||
android_memory_core: Pamäťové jadro
|
||||
oil: Olej
|
||||
fuel: Palivo
|
||||
hologram_projector: Hologramy
|
||||
capacitors: Kondenzátory úrovne 1
|
||||
high_tier_capacitors: Kondenzátory úrovne 2
|
||||
solar_generators: Slnečná elektráreň
|
||||
electric_furnaces: Napájaná pec
|
||||
electric_ore_grinding: Drvenie
|
||||
heated_pressure_chamber: Vyhrievaná tlaková komora
|
||||
coal_generator: Generátor na uhlie
|
||||
bio_reactor: Bio-reaktor
|
||||
auto_enchanting: Automatické enchantovanie a odoberanie enchantov
|
||||
auto_anvil: Automatická kovadlina
|
||||
multimeter: Meranie energie
|
||||
gps_setup: Základné zapojenie GPS
|
||||
gps_emergency_transmitter: Núdzový GPS waypoint
|
||||
programmable_androids: Programovateľné androidy
|
||||
android_interfaces: Rozhrania androidov
|
||||
geo_scanner: GEO-skenovanie
|
||||
combustion_reactor: Spaľovací reaktor
|
||||
teleporter: Základné komponenty teleportera
|
||||
teleporter_activation_plates: Aktivácia teleportera
|
||||
better_solar_generators: Vylepšené solárne generátory
|
||||
better_gps_transmitters: Vylepšené vysielače
|
||||
elevator: Výťahy
|
||||
energized_solar_generator: Stála slnečná energia
|
||||
energized_gps_transmitter: Najvyššia úroveň vysielača
|
||||
energy_regulator: Elektrická sieť 101
|
||||
butcher_androids: Android mäsiar
|
||||
organic_food: Organické jedlo
|
||||
auto_breeder: Automatizované kŕmenie
|
||||
advanced_android: Pokročilé androidy
|
||||
advanced_butcher_android: Pokročilé androidy - mäsiar
|
||||
advanced_circuit_board: Pokročilá obvodová doska
|
||||
advanced_electric_smeltery: Pokročilá elektrická taviareň
|
||||
advanced_farmer_android: Pokročilé Androidy - farmár
|
||||
advanced_fisherman_android: Pokročilé androidy - rybár
|
||||
advanced_output_node: Pokročilý výstupný uzol
|
||||
alloys: Pokročilé zliatiny
|
||||
ancient_altar: Staroveký oltár
|
||||
ancient_runes: Runy živlov
|
||||
android_interfaces: Rozhrania androidov
|
||||
android_memory_core: Pamäťové jadro
|
||||
angel_talisman: Talizman anjela
|
||||
animal_growth_accelerator: Manipulácia rastu zvierat
|
||||
xp_collector: Zberač XP
|
||||
organic_fertilizer: Organické hnojivo
|
||||
crop_growth_accelerator: Urýchlovač rastu plodín
|
||||
anvil_talisman: Talizman kovadliny
|
||||
armored_jetboots: Obrnené tryskové topánky
|
||||
armored_jetpack: Obrnený jetpack
|
||||
armor_forge: Craftenie brnení
|
||||
auto_anvil: Automatická kovadlina
|
||||
auto_breeder: Automatizované kŕmenie
|
||||
auto_drier: Suchý deň
|
||||
auto_enchanting: Automatické enchantovanie a odoberanie enchantov
|
||||
automated_crafting_chamber: Automatizované craftenie
|
||||
automated_panning_machine: Automatická zlatá panvica
|
||||
automatic_ignition_chamber: Automatická zapaľovacia komora
|
||||
backpacks: Batohy
|
||||
basic_circuit_board: Základná obvodová doska
|
||||
battery: Tvoja prvá baterka
|
||||
better_carbon_press: Vylepšený uhlíkový lis
|
||||
better_crop_growth_accelerator: Pokročilý urýchlovač rastu plodín
|
||||
reactor_essentials: Základy reaktoru
|
||||
nuclear_reactor: Jadrová elektráreň
|
||||
freezer: Mraznička
|
||||
better_electric_crucibles: Vyhrievaná taviareň
|
||||
better_electric_furnace: Vylepšená elektrická pec
|
||||
better_food_fabricator: Vylepšená výroba jedla
|
||||
better_freezer: Vylepšená mraznička
|
||||
better_gps_transmitters: Vylepšené vysielače
|
||||
better_heated_pressure_chamber: Vylepšená vyhrievaná tlaková komora
|
||||
better_solar_generators: Vylepšené solárne generátory
|
||||
bio_reactor: Bio-reaktor
|
||||
blade_of_vampires: Čepeľ upírov
|
||||
blistering_ingots: Radioaktivne ingoty
|
||||
block_placer: Pokladač blokov
|
||||
boosted_uranium: Nikdy nekončiaci kruh
|
||||
boots_of_the_stomper: Topánky dupača
|
||||
bound_armor: Brnenie naviazané na dušu
|
||||
bound_backpack: Skladovanie duší
|
||||
bound_tools: Nástroje naviazané na dušu
|
||||
bound_weapons: Zbrane naviazané na dušu
|
||||
bronze: Vytvorenie bronzu
|
||||
butcher_androids: Android mäsiar
|
||||
cactus_armor: Kaktusový oblek
|
||||
capacitors: Kondenzátory úrovne 1
|
||||
carbonado: Čierne diamanty
|
||||
carbonado_furnace: Pec z brúseného diamantu
|
||||
carbonado_tools: Špičkové stroje
|
||||
carbon_press: Uhlíkový lis
|
||||
cargo_basics: Základy prenosu
|
||||
cargo_nodes: Nastavenie prenosu
|
||||
electric_ingot_machines: Elektrická výroba ingotov
|
||||
automated_crafting_chamber: Automatizované craftenie
|
||||
better_food_fabricator: Vylepšená výroba jedla
|
||||
reactor_access_port: Interakcia s reaktorom
|
||||
fluid_pump: Pumpa na tekutiny
|
||||
better_freezer: Vylepšená mraznička
|
||||
boosted_uranium: Nikdy nekončiaci kruh
|
||||
trash_can: Odpad
|
||||
electric_smeltery: Elektrická pec
|
||||
better_electric_furnace: Vylepšená elektrická pec
|
||||
wither_assembler: Automatizovaný zabijak witherov
|
||||
elytra: Elytry
|
||||
special_elytras: Špeciálne elytry
|
||||
better_electric_crucibles: Vyhrievaná taviareň
|
||||
nether_ice: Chladivo - ľad z netheru
|
||||
blistering_ingots: Radioaktivne ingoty
|
||||
output_chest: Výstupná truhla zo základných strojov
|
||||
auto_drier: Suchý deň
|
||||
diet_cookie: Diétny koláčik
|
||||
chainmail_armor: Krúžkové brnenie
|
||||
charging_bench: Nabíjacia stanica
|
||||
magnesium_generator: Energia z horčíka
|
||||
kelp_cookie: Chutná riasa
|
||||
meat_jerky: Sušené mäso
|
||||
glowstone_armor: Glowstone Brnenie
|
||||
lumps: Hrudky a kúzla
|
||||
ender_backpack: Ender batoh
|
||||
ender_armor: Ender Brnenie
|
||||
magic_eye_of_ender: Magiké Oko Endu
|
||||
magic_sugar: Magický cukor
|
||||
monster_jerky: Sušené mäso z monštier
|
||||
slime_armor: Slime brnenie
|
||||
sword_of_beheading: Meč popráv
|
||||
basic_circuit_board: Základná obvodová doska
|
||||
advanced_circuit_board: Pokročilá obvodová doska
|
||||
smeltery: Taviareň
|
||||
steel: Vek ocele
|
||||
misc_power_items: Dôležité veci súvisiace s energiou
|
||||
battery: Tvoja prvá baterka
|
||||
steel_plate: Oceľové pokovovanie
|
||||
steel_thruster: Oceľový pohon
|
||||
parachute: Padák
|
||||
grappling_hook: Kotviaci hák
|
||||
jetpacks: Jetpacky
|
||||
multitools: Viac nástrojov
|
||||
solar_panel_and_helmet: Solárna energia
|
||||
elemental_staff: Elementárne tyče
|
||||
grind_stone: Brúsiaci kameň
|
||||
cactus_armor: Kaktusový oblek
|
||||
gold_pan: Zlatá panvica
|
||||
magical_book_cover: Magická knižná väzba
|
||||
slimefun_metals: Nové kovy
|
||||
ore_crusher: Zdvojnásobenie rudy
|
||||
bronze: Vytvorenie bronzu
|
||||
alloys: Pokročilé zliatiny
|
||||
coal_generator: Generátor na uhlie
|
||||
cobalt_pickaxe: Rýchly krompáč
|
||||
combustion_reactor: Spaľovací reaktor
|
||||
common_talisman: Obyčajný talizman
|
||||
composter: Kompostovanie zeme
|
||||
compressor_and_carbon: Vytvorenie uhlíka
|
||||
gilded_iron_armor: Pozlatené železné brnenie
|
||||
synthetic_diamond: Umelé diamanty
|
||||
pressure_chamber: Tlaková komora
|
||||
synthetic_sapphire: Umelý zafír
|
||||
cooler: Prenášanie nápojov
|
||||
copper_wire: Zriedená vodivosť
|
||||
crop_growth_accelerator: Urýchlovač rastu plodín
|
||||
crucible: Taviareň
|
||||
crushed_ore: Očistenie rudy
|
||||
damascus_steel: Damašská oceľ
|
||||
damascus_steel_armor: Brnenie z Damašskej ocele
|
||||
reinforced_alloy: Zosilnená zliatina
|
||||
carbonado: Čierne diamanty
|
||||
magic_workbench: Magický pracovný stôl
|
||||
wind_staff: Veterná tyč
|
||||
reinforced_armor: Vystužené brnenie
|
||||
silicon: Silicon Valley
|
||||
fire_staff: Ohnivá palica
|
||||
lava_crystal: Horúca situácia
|
||||
synthetic_emerald: Falošný drahokam
|
||||
chainmail_armor: Krúžkové brnenie
|
||||
wizard_talisman: Talizman čarodejníka
|
||||
hazmat_suit: Hazmat oblek
|
||||
redstone_alloy: Redstonová zliatina
|
||||
carbonado_tools: Špičkové stroje
|
||||
gold_armor: Lesklé brnenie
|
||||
hercules_pickaxe: Herkulesov krompáč
|
||||
table_saw: Stolová píla
|
||||
blade_of_vampires: Čepeľ upírov
|
||||
water_staff: Vodná palica
|
||||
automated_panning_machine: Automatická zlatá panvica
|
||||
boots_of_the_stomper: Topánky dupača
|
||||
pickaxe_of_the_seeker: Krompáč hľadača
|
||||
backpacks: Batohy
|
||||
woven_backpack: Tkaný batoh
|
||||
gilded_backpack: Pozlatený batoh
|
||||
armored_jetpack: Obrnený jetpack
|
||||
nickel_and_cobalt: Ešte viac rúd
|
||||
magnet: Magnetické kovy
|
||||
infused_magnet: Infúzne magnety
|
||||
cobalt_pickaxe: Rýchly krompáč
|
||||
essence_of_afterlife: Čierna mágia
|
||||
bound_backpack: Skladovanie duší
|
||||
jetboots: Tryskové topánky
|
||||
seismic_axe: Seizmická sekera
|
||||
pickaxe_of_vein_mining: Krompáč žílnej ťažby
|
||||
high_tier_electric_ingot_machines: Super rýchla výroba ingotu
|
||||
advanced_output_node: Pokročilý výstupný uzol
|
||||
carbon_press: Uhlíkový lis
|
||||
better_carbon_press: Vylepšený uhlíkový lis
|
||||
diet_cookie: Diétny koláčik
|
||||
duct_tape: Lepiaca páska
|
||||
electric_crucible: Elektrifikovaný téglik
|
||||
electric_furnaces: Napájaná pec
|
||||
electric_ingot_machines: Elektrická výroba ingotov
|
||||
electric_motor: Zahrievanie
|
||||
electric_ore_grinding: Drvenie
|
||||
electric_press: Elektrický lis
|
||||
electric_smeltery: Elektrická pec
|
||||
elemental_staff: Elementárne tyče
|
||||
elevator: Výťahy
|
||||
elytra: Elytry
|
||||
empowered_android: Posilnené Androidy
|
||||
empowered_butcher_android: Posilnené Androidy - Mäsiar
|
||||
empowered_fisherman_android: Posilnené Androidy - Rybár
|
||||
high_tier_carbon_press: Ultimátny uhlíkový lis
|
||||
better_heated_pressure_chamber: Vylepšená vyhrievaná tlaková komora
|
||||
electric_crucible: Elektrifikovaný téglik
|
||||
advanced_electric_smeltery: Pokročilá elektrická taviareň
|
||||
advanced_farmer_android: Pokročilé Androidy - farmár
|
||||
lava_generator: Generátor lávy
|
||||
nether_star_reactor: Reaktor z Nether hviezdy
|
||||
automatic_ignition_chamber: Automatická zapaľovacia komora
|
||||
copper_wire: Zriedená vodivosť
|
||||
radiant_backpack: Žiariaci batoh
|
||||
storm_staff: Palica búrky
|
||||
soulbound_rune: Runa duší
|
||||
ender_armor: Ender Brnenie
|
||||
ender_backpack: Ender batoh
|
||||
ender_talismans: Talizmany endu
|
||||
energized_gps_transmitter: Najvyššia úroveň vysielača
|
||||
energized_solar_generator: Stála slnečná energia
|
||||
energy_regulator: Elektrická sieť 101
|
||||
enhanced_furnace: Vylepšená pec
|
||||
essence_of_afterlife: Čierna mágia
|
||||
explosive_tools: Výbušné nástroje
|
||||
farmer_shoes: Farmárové boty
|
||||
fire_staff: Ohnivá palica
|
||||
fire_talisman: Talizman bojovníka s ohňom
|
||||
first_aid: Prvá pomoc
|
||||
flask_of_knowledge: Uschovávanie XP
|
||||
fluid_pump: Pumpa na tekutiny
|
||||
fortune_cookie: Koláčik šťastia
|
||||
freezer: Mraznička
|
||||
fuel: Palivo
|
||||
geo_miner: GEO-Miner
|
||||
geo_scanner: GEO-skenovanie
|
||||
gilded_backpack: Pozlatený batoh
|
||||
gilded_iron: Žiarivé železo
|
||||
gilded_iron_armor: Pozlatené železné brnenie
|
||||
glowstone_armor: Glowstone Brnenie
|
||||
gold_armor: Lesklé brnenie
|
||||
gold_carats: Čisté zlato
|
||||
golden_apple_juice: Zlatý elixír
|
||||
gold_pan: Zlatá panvica
|
||||
gps_emergency_transmitter: Núdzový GPS waypoint
|
||||
gps_setup: Základné zapojenie GPS
|
||||
grappling_hook: Kotviaci hák
|
||||
grind_stone: Brúsiaci kameň
|
||||
hardened_glass: Odolnosť voči výbuchu
|
||||
hazmat_suit: Hazmat oblek
|
||||
heated_pressure_chamber: Vyhrievaná tlaková komora
|
||||
hercules_pickaxe: Herkulesov krompáč
|
||||
high_tier_capacitors: Kondenzátory úrovne 2
|
||||
high_tier_carbon_press: Ultimátny uhlíkový lis
|
||||
high_tier_electric_ingot_machines: Super rýchla výroba ingotu
|
||||
high_tier_enhanced_furnaces: Špičková pec
|
||||
hologram_projector: Hologramy
|
||||
hunter_talisman: Talizman lovca
|
||||
infernal_bonemeal: Pekelná kostná múčka
|
||||
infused_hopper: Infusovaný hopper
|
||||
infused_magnet: Infúzne magnety
|
||||
jetboots: Tryskové topánky
|
||||
jetpacks: Jetpacky
|
||||
juicer: Lahodné nápoje
|
||||
kelp_cookie: Chutná riasa
|
||||
knight_talisman: Talizman rytiera
|
||||
lava_crystal: Horúca situácia
|
||||
lava_generator: Generátor lávy
|
||||
lava_talisman: Talizman chodenia po láve
|
||||
lightning_rune: Runa blesku
|
||||
totem_of_undying: Totem večnosti
|
||||
lumber_axe: Drevorubačská sekera
|
||||
lumps: Hrudky a kúzla
|
||||
magical_book_cover: Magická knižná väzba
|
||||
magic_eye_of_ender: Magiké Oko Endu
|
||||
magician_talisman: Talizman kúzelníka
|
||||
magic_sugar: Magický cukor
|
||||
magic_workbench: Magický pracovný stôl
|
||||
magnesium_generator: Energia z horčíka
|
||||
magnet: Magnetické kovy
|
||||
meat_jerky: Sušené mäso
|
||||
miner_talisman: Talizman baníka
|
||||
misc_power_items: Dôležité veci súvisiace s energiou
|
||||
monster_jerky: Sušené mäso z monštier
|
||||
more_enhanced_furnaces: Lepšie pece
|
||||
multimeter: Meranie energie
|
||||
multitools: Viac nástrojov
|
||||
nether_gold_pan: Zlatá panvica z netheru
|
||||
electric_press: Elektrický lis
|
||||
nether_ice: Chladivo - ľad z netheru
|
||||
nether_star_reactor: Reaktor z Nether hviezdy
|
||||
nickel_and_cobalt: Ešte viac rúd
|
||||
night_vision_googles: Okuliare s nočným videním
|
||||
nuclear_reactor: Jadrová elektráreň
|
||||
oil: Olej
|
||||
ore_crusher: Zdvojnásobenie rudy
|
||||
ore_washer: Čistenie rudy
|
||||
organic_fertilizer: Organické hnojivo
|
||||
organic_food: Organické jedlo
|
||||
output_chest: Výstupná truhla zo základných strojov
|
||||
parachute: Padák
|
||||
pickaxe_of_containment: Krompáč spawnerov
|
||||
pickaxe_of_the_seeker: Krompáč hľadača
|
||||
pickaxe_of_vein_mining: Krompáč žílnej ťažby
|
||||
plastic_sheet: Plast
|
||||
portable_crafter: Prenosný crafter
|
||||
portable_dustbin: Prenosný kôš
|
||||
pressure_chamber: Tlaková komora
|
||||
programmable_androids: Programovateľné androidy
|
||||
radiant_backpack: Žiariaci batoh
|
||||
rainbow_blocks: Dúhové bloky
|
||||
reactor_access_port: Interakcia s reaktorom
|
||||
reactor_essentials: Základy reaktoru
|
||||
redstone_alloy: Redstonová zliatina
|
||||
reinforced_alloy: Zosilnená zliatina
|
||||
reinforced_armor: Vystužené brnenie
|
||||
reinforced_furnace: Zpevnená pec
|
||||
repaired_spawner: Opravovanie spawnerov
|
||||
scroll_of_dimensional_teleposition: Otočiť veci naopak
|
||||
seismic_axe: Seizmická sekera
|
||||
silicon: Silicon Valley
|
||||
slime_armor: Slime brnenie
|
||||
slimefun_metals: Nové kovy
|
||||
slime_steel_armor: Sliznaté oceľové brnenie
|
||||
smelters_pickaxe: Vypekací krompáč
|
||||
smeltery: Taviareň
|
||||
solar_generators: Slnečná elektráreň
|
||||
solar_panel_and_helmet: Solárna energia
|
||||
soulbound_rune: Runa duší
|
||||
special_bows: Robin Hood
|
||||
special_elytras: Špeciálne elytry
|
||||
special_runes: Fialové runy
|
||||
steel: Vek ocele
|
||||
steel_plate: Oceľové pokovovanie
|
||||
storm_staff: Palica búrky
|
||||
sword_of_beheading: Meč popráv
|
||||
synthetic_diamond: Umelé diamanty
|
||||
synthetic_emerald: Falošný drahokam
|
||||
synthetic_sapphire: Umelý zafír
|
||||
table_saw: Stolová píla
|
||||
teleporter: Základné komponenty teleportera
|
||||
teleporter_activation_plates: Aktivácia teleportera
|
||||
tome_of_knowledge_sharing: Delenie sa s kamarátmi
|
||||
totem_of_undying: Totem večnosti
|
||||
trash_can: Odpad
|
||||
traveller_talisman: Talizman cestovateľa
|
||||
uranium: Radioaktívne
|
||||
walking_sticks: Vychádzkové paličky
|
||||
warrior_talisman: Talizman bojovníka
|
||||
water_staff: Vodná palica
|
||||
water_talisman: Talizman dýchania pod vodou
|
||||
whirlwind_talisman: Talizman víchrice
|
||||
wind_staff: Veterná tyč
|
||||
wither_assembler: Automatizovaný zabijak witherov
|
||||
wither_proof_glass: Sklo odolné voči witherom
|
||||
wither_proof_obsidian: Obsidian odolný voči witherom
|
||||
wizard_talisman: Talizman čarodejníka
|
||||
woven_backpack: Tkaný batoh
|
||||
xp_collector: Zberač XP
|
||||
steel_thruster: Oceľová tryska
|
||||
|
Loading…
Reference in New Issue
Block a user