diff --git a/.gitignore b/.gitignore index e6f9d7a43c..d15ffcb30c 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ /data-storage/ dependency-reduced-pom.xml - +UploadServer.bat .classpath .factorypath .project diff --git a/README.md b/README.md index affc3ed96c..febf62b5d7 100644 --- a/README.md +++ b/README.md @@ -1,165 +1,4 @@ -# Slimefun 4 -*Looking for the download link? [**Click here**](https://github.com/Slimefun/Slimefun4/blob/master/README.md#floppy_disk-download-slimefun-4)* +# ThornyaFun - Space Edition +*Acesse Thornya Space [**Clique para acessar o site**](https://thornya.club)* -Slimefun is a plugin which aims to turn your Spigot Server into a modpack without ever installing a single mod. It offers everything you could possibly imagine. From Backpacks to Jetpacks! Slimefun lets every player decide on their own how much they want to dive into Magic or Tech.
-We got everything from magical wands to nuclear reactors.
-We feature a magical altar, an electric power grid and even item transport systems. - -This project originally started back **in 2013** and has grown ever since.
-From one single person working on this plugin back then, we grew to a community of thousands of players and hundreds of contributors to this project.
-It currently adds over **500 new items and recipes** to Minecraft ([Read more about the history of this project](https://github.com/Slimefun/Slimefun4/wiki/Slimefun-in-a-nutshell)). - -But it also comes with a lot of addons! Check out our [addons](https://github.com/Slimefun/Slimefun4/wiki/Addons), you may find exactly what you were looking for. - -### Quick navigation -* **[:floppy_disk: Download Slimefun4](#floppy_disk-download-slimefun-4)** -* **[:framed_picture: Screenshots](#framed_picture-screenshots)** -* **[:headphones: Discord Support Server](#headphones-discord)** -* **[:beetle: Bug Tracker](https://github.com/Slimefun/Slimefun4/issues)** -* **[:open_book: Wiki](https://github.com/Slimefun/Slimefun4/wiki)** -* **[:interrobang: FAQ](https://github.com/Slimefun/Slimefun4/wiki/FAQ)** -* **[:handshake: How to contribute](https://github.com/Slimefun/Slimefun4/blob/master/CONTRIBUTING.md)** - -## :floppy_disk: Download Slimefun 4 -Slimefun requires your Minecraft Server to be running on [Spigot](https://spigotmc.org/), [Paper](https://papermc.io/) or on any fork of these.
-(See also: [How to install Slimefun](https://github.com/Slimefun/Slimefun4/wiki/Installing-Slimefun)) - -Slimefun 4 can be downloaded **for free** on our builds page.
-We currently provide two distinct versions of Slimefun, development builds and "stable" builds.
-Here is a full summary of the differences between the two different versions of Slimefun. - -| | development (latest) | "stable" | -| ------------------ | -------- | -------- | -| **Minecraft version(s)** | :video_game: **1.16.\* - 1.20.\*** | :video_game: **1.16.\* - 1.20.\*** | -| **Java version** | :computer: **Java 16 (or higher)** | :computer: **Java 16 (or higher)** | -| **automatic updates** | :heavy_check_mark: | :heavy_check_mark: | -| **frequent updates** | :heavy_check_mark: | :x: | -| **latest content** | :heavy_check_mark: | :x: | -| **Discord support** | :heavy_check_mark: | :x: | -| **Bug Reports** | :heavy_check_mark: | :x: | -| **testing before release** | :x: | :heavy_check_mark: | -| **change logs** | :x: | :memo: **[change log](https://github.com/Slimefun/Slimefun4/blob/master/CHANGELOG.md)** | -| **Download links** | :floppy_disk: **[download latest](https://blob.build/project/Slimefun4/Dev)** | :floppy_disk: **[download "stable"](https://blob.build/project/Slimefun4/RC)** | - -**:exclamation: We wholeheartedly recommend you to use _development builds_, they are the most recent version of Slimefun and also receive the most frequent updates! In fact, "stable" builds are so outdated that we won't accept bug reports from them at all.** -
- Here's why... - -"Stable" builds do not receive frequent updates or fast patches. As time goes on, bugs are fixed but it will take some time until these fixes make it into a "stable" build. We will also not accept or review any bug reports from "stable" builds. They are in fact just old development builds that seemed to run fine without any __major__ issues. - -**:question: Why use a "stable" build then?**
-While "stable" builds most definitely contain more bugs than development builds due to their very slow update schedule. you can be sure that they will not include __game-breaking__ issues, but rest assured that development builds almost never contain such issues either. If your server or business however heavily depends on a version of Slimefun that does not change/update a lot, you are forgiven if you choose the "stable" branch. But development builds will bring you the best experience, both in terms of features and bug fixes. - -**:question: What exactly are these "stable" builds then and why do you put them in quotes?**
-"Stable" builds are literally just outdated development builds that seemed to run fine without any __major__ issues. But they are far from bug-free hence why actually calling them stable would be hypocritical. However these builds can only really stay "stable" if there are enough people using development builds and report any bugs they come across. Otherwise potential issues may go unnoticed and slip into a "stable" build. Again, we really recommend you to choose the development builds. But since a few people really wanted "stable" builds, they are now an option too. - -
- -## :framed_picture: Screenshots -So what does Slimefun look like?
-Well, we asked some users on our [Discord server](#headphones-discord) to send us some screenshots, so see for yourself: -| Reactors and electricity | Awesome factories | Magic and Altars | -| :-------------------------------------------: | :--------------------------------------: | :----------------------------------------: | -| ![](https://raw.githubusercontent.com/Slimefun/Slimefun-Wiki/master/images/showcase1.png) | ![](https://raw.githubusercontent.com/Slimefun/Slimefun-Wiki/master/images/showcase6.png) | ![](https://raw.githubusercontent.com/Slimefun/Slimefun-Wiki/master/images/showcase5.png) | -| *Screenshot provided by HamtaBot#0001* | *Screenshot provided by Piͭxͪeͤl (mnb)#5049* | *Screenshot provided by Kilaruna#4981* | -| ![](https://raw.githubusercontent.com/Slimefun/Slimefun-Wiki/master/images/showcase4.png) | ![](https://raw.githubusercontent.com/Slimefun/Slimefun-Wiki/master/images/showcase3.png) | ![](https://raw.githubusercontent.com/Slimefun/Slimefun-Wiki/master/images/showcase2.png) | -| *Screenshot provided by GalaxyKat11#3816* | *Screenshot provided by TamThan#7987* | *Screenshot provided by Kilaruna#4981* | - -## :headphones: Discord -You can find Slimefun's community on Discord and connect with **over 7000** users of this plugin from all over the world.
-Click the badge down below to join the server for suggestions/questions or other discussions about this plugin.
-We are also hosting a community event every so often, join us to find out more.
-**Important: We don't accept bug reports on discord, please use our [Issue Tracker](https://github.com/Slimefun/Slimefun4/issues) to submit bug reports!** - -Due to the sheer size of this discord server, we need to enforce some [important rules](https://github.com/Slimefun/Slimefun4/wiki/Discord-Rules).
-Not following these rules can lead to a kick or even a ban from the server. - -

- - Discord Invite - -

- -## :open_book: Wiki -Slimefun has a (detailed and well-maintained - *cough*) Wiki for new players, maybe also consider -expanding the wiki to help grow our community and help out new users of this plugin. -https://github.com/Slimefun/Slimefun4/wiki - -#### :star: Highlighted Articles -* [What is Slimefun?](https://github.com/Slimefun/Slimefun4/wiki/Slimefun-in-a-nutshell) -* [How to install Slimefun](https://github.com/Slimefun/Slimefun4/wiki/Installing-Slimefun) -* [Addons for Slimefun 4](https://github.com/Slimefun/Slimefun4/wiki/Addons) -* [How to create an Addon for Slimefun 4](https://github.com/Slimefun/Slimefun4/wiki/Developer-Guide) -* [Getting Started](https://github.com/Slimefun/Slimefun4/wiki/Getting-Started) -* [Frequently Asked Questions](https://github.com/Slimefun/Slimefun4/wiki/FAQ) -* [Common issues](https://github.com/Slimefun/Slimefun4/wiki/Common-Issues) -* [Help us expand the Wiki!](https://github.com/Slimefun/Slimefun4/wiki/Expanding-the-Wiki) -* [Help us translate Slimefun!](https://github.com/Slimefun/Slimefun4/wiki/Translating-Slimefun) - -The wiki is entirely community-run, so if you find an article missing, feel free to write one and share it with others. - -## :handshake: Contributing to this project -Slimefun 4 is an Open-Source project and licensed under -[GNU GPLv3](https://github.com/Slimefun/Slimefun4/blob/master/LICENSE).
-**Over 200 people have already contributed to this amazing project. You guys are awesome! :heart:**
-Please consider helping us maintain this project too, your engagement keeps the project alive! - -You can find more info on how to contribute to this project in our [CONTRIBUTING.md](https://github.com/Slimefun/Slimefun4/blob/master/CONTRIBUTING.md). - -## :exclamation: Disclaimers -Slimefun4 uses various systems that collect usage information or download automatic updates as well as the latest information about the project. -We do not collect any personal information from you but there are some services that may gather or download some form of data. - -You can opt-out of the Auto-Updater and stats collection at any time! - -
- Automatic updates - -Slimefun4 uses an Auto-Updater which connects to https://thebusybiscuit.github.io/builds/ to check for and download updates.
-This behaviour is enabled by default but can be turned off under `/plugins/Slimefun/config.yml`.
-We highly recommend you to keep this on at any time though, as you could be missing out on important patches. -
- -
- Metrics and Statistics - -Slimefun4 uses [bStats](https://bstats.org/plugin/bukkit/Slimefun/4574) to collect anonymous information about the usage of this plugin.
-This is solely for statistical purposes, as we are interested in how Servers/Players use this plugin.
-All available data is anonymous and aggregated, at no point can we see individual server or player information.
-All of the collected data is publicly accessible: https://bstats.org/plugin/bukkit/Slimefun/4574 - -You can also disable this behaviour under `/plugins/bStats/config.yml`.
-For more info see [bStats' Privacy Policy](https://bstats.org/privacy-policy) - -Our [bStats Module](https://github.com/Slimefun/MetricsModule) is downloaded automatically when installing this Plugin, this module will automatically update on server starts independently from the main plugin. This way we can automatically roll out updates to the bStats module, in cases of severe performance issues for example where live data and insight into what is impacting performance can be crucial. -These updates can of course be disabled under `/plugins/Slimefun/config.yml`. To disable metrics collection as a whole, see the paragraph above. - ---- - -Slimefun also uses its own analytics system to collect anonymous information about the performance of this plugin.
-This is solely for statistical purposes, as we are interested in how it's performing for all servers.
-All available data is anonymous and aggregated, at no point can we see individual server information.
- -You can also disable this behaviour under `/plugins/Slimefun/config.yml`.
- -
- -
- GitHub Integration - -Lastly, Slimefun4 connects to https://api.github.com/ to gather information about this open-source project.
-No information about you or your Minecraft Server is sent to GitHub. - -This information includes (but is not limited to) -* list of contributors, their username and profile link (from the repositories `Slimefun/Slimefun4`, `Slimefun/Slimefun-Wiki` and `Slimefun/Resourcepack`) -* amount of open issues in this repository -* amount of pending pull requests in this repository -* amount of stars in this repository -* amount of forks of this repository -* amount of code-bytes in this repository -* date of the last commit to this repository -
- -Additionally the plugin connects to [textures.minecraft.net](https://www.minecraft.net/en-us) to retrieve the Minecraft skins of our contributors (if possible).
- -*Note that Slimefun is not associated with `Mojang Studios` or `Minecraft`.* +*Note that ThornyaFun is not associated with `Mojang Studios` or `Minecraft`.* diff --git a/pom.xml b/pom.xml index 2d82162def..2d028ccba2 100644 --- a/pom.xml +++ b/pom.xml @@ -14,8 +14,8 @@ jar - Slimefun is a Spigot/Paper plugin that simulates a modpack-like atmosphere by adding over 500 new items and recipes to your Minecraft Server. - https://github.com/Slimefun/Slimefun4 + Thornya Fun is a Spigot/Paper plugin that simulates a modpack-like atmosphere by adding over 500 new items and recipes to your Minecraft Server. + https://github.com/Thornya-Club/ThornyaFun @@ -108,7 +108,8 @@ clean package - ${project.name} v${project.version} + + ThornyaFun @@ -306,6 +307,7 @@ plugin.yml config.yml item-models.yml + blocks.yml wiki.json languages/translators.json diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/api/items/SlimefunItem.java b/src/main/java/io/github/thebusybiscuit/slimefun4/api/items/SlimefunItem.java index 6400d8b925..9dc720012a 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/api/items/SlimefunItem.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/api/items/SlimefunItem.java @@ -1076,7 +1076,7 @@ public void sendDeprecationWarning(Player player) { public boolean canUse(@Nonnull Player p, boolean sendMessage) { Validate.notNull(p, "The Player cannot be null!"); - if (getState() == ItemState.VANILLA_FALLBACK) { + if (getState() == ItemState.VANILLA_FALLBACK && this.getItem().getType() != Material.COPPER_INGOT) { // Vanilla items (which fell back) can always be used. return true; } else if (isDisabled()) { diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/api/researches/Research.java b/src/main/java/io/github/thebusybiscuit/slimefun4/api/researches/Research.java index c4c96e4e79..ab35c5123c 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/api/researches/Research.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/api/researches/Research.java @@ -242,11 +242,12 @@ public void unlockFromGuide(SlimefunGuideImplementation guide, Player player, Pl Bukkit.getPluginManager().callEvent(event); if (!event.isCancelled()) { - if (this.canUnlock(player)) { - guide.unlockItem(player, sfItem, pl -> guide.openItemGroup(profile, itemGroup, page)); - } else { - Slimefun.getLocalization().sendMessage(player, "messages.not-enough-xp", true); - } + player.sendMessage("§cUse a bancada de conhecimento para desbloquear este item!"); +// if (this.canUnlock(player)) { +// guide.unlockItem(player, sfItem, pl -> guide.openItemGroup(profile, itemGroup, page)); +// } else { +// Slimefun.getLocalization().sendMessage(player, "messages.not-enough-xp", true); +// } } } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/Slimefun.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/Slimefun.java index ae065bc062..fae5187674 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/Slimefun.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/Slimefun.java @@ -14,6 +14,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; +import io.github.thebusybiscuit.slimefun4.implementation.setup.*; import io.github.thebusybiscuit.slimefun4.storage.Storage; import io.github.thebusybiscuit.slimefun4.storage.backend.legacy.LegacyStorage; @@ -117,9 +118,6 @@ import io.github.thebusybiscuit.slimefun4.implementation.listeners.entity.PiglinListener; import io.github.thebusybiscuit.slimefun4.implementation.listeners.entity.WitherListener; import io.github.thebusybiscuit.slimefun4.implementation.resources.GEOResourcesSetup; -import io.github.thebusybiscuit.slimefun4.implementation.setup.PostSetup; -import io.github.thebusybiscuit.slimefun4.implementation.setup.ResearchSetup; -import io.github.thebusybiscuit.slimefun4.implementation.setup.SlimefunItemSetup; import io.github.thebusybiscuit.slimefun4.implementation.tasks.SlimefunStartupTask; import io.github.thebusybiscuit.slimefun4.implementation.tasks.TickerTask; import io.github.thebusybiscuit.slimefun4.implementation.tasks.armor.RadiationTask; @@ -174,6 +172,7 @@ public class Slimefun extends JavaPlugin implements SlimefunAddon { private final CustomItemDataService itemDataService = new CustomItemDataService(this, "slimefun_item"); private final BlockDataService blockDataService = new BlockDataService(this, "slimefun_block"); private final CustomTextureService textureService = new CustomTextureService(new Config(this, "item-models.yml")); + private final CustomBlockService customBlockService = new CustomBlockService(this); private final GitHubService gitHubService = new GitHubService("Slimefun/Slimefun4"); private final UpdaterService updaterService = new UpdaterService(this, getDescription().getVersion(), getFile()); private final MetricsService metricsService = new MetricsService(this); @@ -347,6 +346,7 @@ private void onPluginStart() { // Initiating various Stuff and all items with a slight delay (0ms after the Server finished loading) runSync(new SlimefunStartupTask(this, () -> { textureService.register(registry.getAllSlimefunItems(), true); + customBlockService.register(registry.getAllSlimefunItems(), true); permissionsService.register(registry.getAllSlimefunItems(), true); soundService.reload(true); @@ -358,7 +358,6 @@ private void onPluginStart() { } }), 0); - // Setting up our commands try { command.register(); @@ -693,6 +692,7 @@ private void loadTags() { private void loadItems() { try { SlimefunItemSetup.setup(this); + ThornyaItemSetup.setup(this); } catch (Exception | LinkageError x) { getLogger().log(Level.SEVERE, x, () -> "An Error occurred while initializing SlimefunItems for Slimefun " + getVersion()); } @@ -863,6 +863,12 @@ public static SoundService getSoundService() { return instance.soundService; } + @Nonnull + public static CustomBlockService getCustomBlockService() { + validateInstance(); + return instance.customBlockService; + } + /** * This returns our instance of {@link IntegrationsManager}. * This is responsible for managing any integrations with third party {@link Plugin plugins}. diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/SlimefunItems.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/SlimefunItems.java index 8695759316..bd63c4c12d 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/SlimefunItems.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/SlimefunItems.java @@ -10,6 +10,7 @@ import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; @@ -453,9 +454,7 @@ private SlimefunItems() {} public static final SlimefunItemStack RAINBOW_GLASS_PANE_HALLOWEEN = new SlimefunItemStack("RAINBOW_GLASS_PANE_HALLOWEEN", Material.ORANGE_STAINED_GLASS_PANE, "&5Rainbow Glass Pane &7(Halloween)", "", HALLOWEEN); public static final SlimefunItemStack RAINBOW_CONCRETE_HALLOWEEN = new SlimefunItemStack("RAINBOW_CONCRETE_HALLOWEEN", Material.ORANGE_CONCRETE, "&5Rainbow Concrete &7(Halloween)", "", HALLOWEEN); public static final SlimefunItemStack RAINBOW_GLAZED_TERRACOTTA_HALLOWEEN = new SlimefunItemStack("RAINBOW_GLAZED_TERRACOTTA_HALLOWEEN", Material.ORANGE_GLAZED_TERRACOTTA, "&5Rainbow Glazed Terracotta &7(Halloween)", "", HALLOWEEN); - - /* Ingots */ - public static final SlimefunItemStack COPPER_INGOT = new SlimefunItemStack("COPPER_INGOT", Material.BRICK, "&bCopper Ingot"); + public static final SlimefunItemStack COPPER_INGOT = new SlimefunItemStack("COPPER_INGOT", new ItemStack(Material.COPPER_INGOT), "&bCopper Ingot"); public static final SlimefunItemStack TIN_INGOT = new SlimefunItemStack("TIN_INGOT", Material.IRON_INGOT, "&bTin Ingot"); public static final SlimefunItemStack SILVER_INGOT = new SlimefunItemStack("SILVER_INGOT", Material.IRON_INGOT, "&bSilver Ingot"); public static final SlimefunItemStack ALUMINUM_INGOT = new SlimefunItemStack("ALUMINUM_INGOT", Material.IRON_INGOT, "&bAluminum Ingot"); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/ThornyaItems.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/ThornyaItems.java new file mode 100644 index 0000000000..a75983e501 --- /dev/null +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/ThornyaItems.java @@ -0,0 +1,83 @@ +package io.github.thebusybiscuit.slimefun4.implementation; + +import io.github.bakedlibs.dough.items.CustomItemStack; +import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack; +import org.bukkit.Material; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.LeatherArmorMeta; + +public class ThornyaItems { + public static final SlimefunItemStack MK1_SPACESHIP = new SlimefunItemStack("THORNYA_MK1_SPACESHIP", new ItemStack(Material.LEATHER_HORSE_ARMOR), "&bMK1 Spaceship"); + public static final SlimefunItemStack SPACE_HELMET = new SlimefunItemStack("THORNYA_SPACE_HELMET", new ItemStack(Material.LEATHER_HORSE_ARMOR), "&bSpace Helmet"); + public static final SlimefunItemStack UPGRADER_OXYGEN_TANK = new SlimefunItemStack("THORNYA_UPGRADER_OXYGEN_TANK", new ItemStack(Material.PAPER), "&e[Upgrade] &bOxygen Tank I"); + public static final SlimefunItemStack UPGRADER_UPGRADER_DEFENSE_1 = new SlimefunItemStack("THORNYA_UPGRADER_DEFENSE_1", new ItemStack(Material.PAPER), "&e[Upgrade] &bDefense I"); + public static final SlimefunItemStack UPGRADER_UPGRADER_DEFENSE_2 = new SlimefunItemStack("THORNYA_UPGRADER_DEFENSE_2", new ItemStack(Material.PAPER), "&e[Upgrade] &bDefense II"); + public static final SlimefunItemStack UPGRADER_UPGRADER_DEFENSE_3 = new SlimefunItemStack("THORNYA_UPGRADER_DEFENSE_3", new ItemStack(Material.PAPER), "&e[Upgrade] &bDefense III"); + public static final SlimefunItemStack HELIO3_GENERATOR = new SlimefunItemStack("THORNYA_HELIO3_GENERATOR", new ItemStack(Material.FURNACE), "&bHelio-3 Generator"); + public static final SlimefunItemStack HELIO3 = new SlimefunItemStack("THORNYA_HELIO3", new ItemStack(Material.QUARTZ), "&bHelio-3"); + public static final SlimefunItemStack OXYGEN_TANK_Mk1 = new SlimefunItemStack("THORNYA_OXYGEN_TANK_MK1", new ItemStack(Material.PAPER), "&bOxygen Tank MK1"); + public static final SlimefunItemStack OXYGEN_TANK_Mk2 = new SlimefunItemStack("THORNYA_OXYGEN_TANK_MK2", new ItemStack(Material.PAPER), "&bOxygen Tank MK2"); + public static final SlimefunItemStack OXYGEN_TANK_Mk3 = new SlimefunItemStack("THORNYA_OXYGEN_TANK_MK3", new ItemStack(Material.PAPER), "&bOxygen Tank MK3"); + public static final SlimefunItemStack SOLAR_MOON = new SlimefunItemStack("THORNYA_SOLAR_MOON", new ItemStack(Material.BROWN_MUSHROOM_BLOCK), "&bSolar Moon"); + public static final SlimefunItemStack SOLAR_BASE = new SlimefunItemStack("THORNYA_SOLAR_BASE", new ItemStack(Material.BROWN_MUSHROOM_BLOCK), "&bSolar Base"); + public static final SlimefunItemStack CHEESE_ORE = new SlimefunItemStack("THORNYA_CHEESE_ORE", new ItemStack(Material.BROWN_MUSHROOM_BLOCK), "&bCheese Ore"); + public static final SlimefunItemStack LEAD_ORE = new SlimefunItemStack("THORNYA_LEAD_ORE", new ItemStack(Material.BROWN_MUSHROOM_BLOCK), "&bLead Ore"); + public static final SlimefunItemStack TIN_ORE = new SlimefunItemStack("THORNYA_TIN_ORE", new ItemStack(Material.BROWN_MUSHROOM_BLOCK), "&bTin Ore"); + public static final SlimefunItemStack SILVER_ORE = new SlimefunItemStack("THORNYA_SILVER_ORE", new ItemStack(Material.BROWN_MUSHROOM_BLOCK), "&bSilver Ore"); + public static final SlimefunItemStack URANIUM_ORE = new SlimefunItemStack("THORNYA_URANIUM_ORE", new ItemStack(Material.BROWN_MUSHROOM_BLOCK), "&bUranium Ore"); + public static final SlimefunItemStack ALUMINUM_ORE = new SlimefunItemStack("THORNYA_ALUMINUM_ORE", new ItemStack(Material.BROWN_MUSHROOM_BLOCK), "&bAluminum Ore"); + public static final SlimefunItemStack COBALT_ORE = new SlimefunItemStack("THORNYA_COBALT_ORE", new ItemStack(Material.BROWN_MUSHROOM_BLOCK), "&bCobalt Ore"); + public static final SlimefunItemStack MAGNESIUM_ORE = new SlimefunItemStack("THORNYA_MAGNESIUM_ORE", new ItemStack(Material.BROWN_MUSHROOM_BLOCK), "&bMagnesium Ore"); + public static final SlimefunItemStack ZINC_ORE = new SlimefunItemStack("THORNYA_ZINC_ORE", new ItemStack(Material.BROWN_MUSHROOM_BLOCK), "&bZinc Ore"); + + + + + + static { + LeatherArmorMeta MK1_SPACESHIP_META = (LeatherArmorMeta) MK1_SPACESHIP.getItemMeta(); + MK1_SPACESHIP_META.setCustomModelData(999); + MK1_SPACESHIP_META.setColor(org.bukkit.Color.fromRGB(0, 0, 7)); + MK1_SPACESHIP_META.addItemFlags(ItemFlag.HIDE_DYE); + MK1_SPACESHIP.setItemMeta(MK1_SPACESHIP_META); + + + LeatherArmorMeta SPACE_HELMET_META = (LeatherArmorMeta) SPACE_HELMET.getItemMeta(); + SPACE_HELMET_META.setCustomModelData(998); + SPACE_HELMET_META.addItemFlags(ItemFlag.HIDE_DYE); + SPACE_HELMET.setItemMeta(SPACE_HELMET_META); + + ItemMeta UPGRADER_OXYGEN_TANK_META = UPGRADER_OXYGEN_TANK.getItemMeta(); + UPGRADER_OXYGEN_TANK_META.setCustomModelData(3); + UPGRADER_OXYGEN_TANK.setItemMeta(UPGRADER_OXYGEN_TANK_META); + + ItemMeta UPGRADER_UPGRADER_DEFENSE_1_META = UPGRADER_UPGRADER_DEFENSE_1.getItemMeta(); + UPGRADER_UPGRADER_DEFENSE_1_META.setCustomModelData(1); + UPGRADER_UPGRADER_DEFENSE_1.setItemMeta(UPGRADER_UPGRADER_DEFENSE_1_META); + + ItemMeta UPGRADER_UPGRADER_DEFENSE_2_META = UPGRADER_UPGRADER_DEFENSE_2.getItemMeta(); + UPGRADER_UPGRADER_DEFENSE_2_META.setCustomModelData(1); + UPGRADER_UPGRADER_DEFENSE_2.setItemMeta(UPGRADER_UPGRADER_DEFENSE_2_META); + ItemMeta UPGRADER_UPGRADER_DEFENSE_3_META = UPGRADER_UPGRADER_DEFENSE_3.getItemMeta(); + UPGRADER_UPGRADER_DEFENSE_3_META.setCustomModelData(1); + UPGRADER_UPGRADER_DEFENSE_3.setItemMeta(UPGRADER_UPGRADER_DEFENSE_3_META); + + ItemMeta OXYGEN_TANK_Mk1_META = OXYGEN_TANK_Mk1.getItemMeta(); + OXYGEN_TANK_Mk1_META.setCustomModelData(4); + OXYGEN_TANK_Mk1.setItemMeta(OXYGEN_TANK_Mk1_META); + + ItemMeta OXYGEN_TANK_Mk2_META = OXYGEN_TANK_Mk2.getItemMeta(); + OXYGEN_TANK_Mk2_META.setCustomModelData(5); + OXYGEN_TANK_Mk2.setItemMeta(OXYGEN_TANK_Mk2_META); + + ItemMeta OXYGEN_TANK_Mk3_META = OXYGEN_TANK_Mk3.getItemMeta(); + OXYGEN_TANK_Mk3_META.setCustomModelData(6); + OXYGEN_TANK_Mk3.setItemMeta(OXYGEN_TANK_Mk3_META); + } + + + + +} diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/CheatSheetSlimefunGuide.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/CheatSheetSlimefunGuide.java index 79ab38c662..1ea74514eb 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/CheatSheetSlimefunGuide.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/CheatSheetSlimefunGuide.java @@ -36,7 +36,7 @@ public class CheatSheetSlimefunGuide extends SurvivalSlimefunGuide { public CheatSheetSlimefunGuide() { super(false, true); - item = new SlimefunGuideItem(this, "&cSlimefun Guide &4(Cheat Sheet)"); + item = new SlimefunGuideItem(this, "&bCatálogo de Items &c{Staff}"); } /** diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/SurvivalSlimefunGuide.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/SurvivalSlimefunGuide.java index 154150d979..7fc25b200e 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/SurvivalSlimefunGuide.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/SurvivalSlimefunGuide.java @@ -76,7 +76,7 @@ public class SurvivalSlimefunGuide implements SlimefunGuideImplementation { public SurvivalSlimefunGuide(boolean showVanillaRecipes, boolean showHiddenItemGroupsInSearch) { this.showVanillaRecipes = showVanillaRecipes; this.showHiddenItemGroupsInSearch = showHiddenItemGroupsInSearch; - item = new SlimefunGuideItem(this, "&aSlimefun Guide &7(Chest GUI)"); + item = new SlimefunGuideItem(this, "&bCatálogo de Items"); } @Override @@ -289,7 +289,7 @@ private void displaySlimefunItem(ChestMenu menu, ItemGroup itemGroup, Player p, menu.addItem(index, new CustomItemStack(ChestMenuUtils.getNoPermissionItem(), sfitem.getItemName(), message.toArray(new String[0]))); menu.addMenuClickHandler(index, ChestMenuUtils.getEmptyClickHandler()); } else if (isSurvivalMode() && research != null && !profile.hasUnlocked(research)) { - menu.addItem(index, new CustomItemStack(ChestMenuUtils.getNotResearchedItem(), ChatColor.WHITE + ItemUtils.getItemName(sfitem.getItem()), "&4&l" + Slimefun.getLocalization().getMessage(p, "guide.locked"), "", "&a> Click to unlock", "", "&7Cost: &b" + research.getCost() + " Level(s)")); + menu.addItem(index, new CustomItemStack(ChestMenuUtils.getNotResearchedItem(), ChatColor.WHITE + ItemUtils.getItemName(sfitem.getItem()), "&4&l" + Slimefun.getLocalization().getMessage(p, "guide.locked"), "", "&a> Click to unlock", "")); menu.addMenuClickHandler(index, (pl, slot, item, action) -> { research.unlockFromGuide(this, p, profile, sfitem, itemGroup, page); return false; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/generators/Helio3Generator.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/generators/Helio3Generator.java new file mode 100644 index 0000000000..7c052fdede --- /dev/null +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/generators/Helio3Generator.java @@ -0,0 +1,36 @@ +package io.github.thebusybiscuit.slimefun4.implementation.items.electric.generators; + +import io.github.thebusybiscuit.slimefun4.api.items.ItemGroup; +import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem; +import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack; +import io.github.thebusybiscuit.slimefun4.api.recipes.RecipeType; +import io.github.thebusybiscuit.slimefun4.implementation.ThornyaItems; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel; +import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; +import org.bukkit.inventory.ItemStack; + +import javax.annotation.Nonnull; +import java.util.function.Consumer; + +public class Helio3Generator extends AGenerator { + public Helio3Generator(ItemGroup itemGroup, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { + super(itemGroup, item, recipeType, recipe); + } + + @Nonnull + @Override + public ItemStack getProgressBar() { + return ThornyaItems.HELIO3; + } + + @Override + protected void registerDefaultFuelTypes() { + registerFuel(new MachineFuel(60 * 10, ThornyaItems.HELIO3)); + } + + @Override + public void createPreset(SlimefunItem item, String title, Consumer setup) { + super.createPreset(item, title, setup); + } +} diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/OreCrusher.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/OreCrusher.java index ea5141f099..f15869d0fa 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/OreCrusher.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/multiblocks/OreCrusher.java @@ -52,11 +52,11 @@ public OreCrusher(ItemGroup itemGroup, SlimefunItemStack item) { @Override protected void registerDefaultRecipes(List recipes) { - recipes.add(new ItemStack(Material.BLACKSTONE, 8)); + recipes.add(new ItemStack(Material.NETHERRACK, 4)); recipes.add(new ItemStack(Material.RED_SAND, 1)); - recipes.add(new ItemStack(Material.COBBLESTONE, 8)); - recipes.add(new ItemStack(Material.SAND, 1)); + recipes.add(new ItemStack(Material.COBBLESTONE, 1)); + recipes.add(new ItemStack(Material.GRAVEL, 1)); recipes.add(SlimefunItems.GOLD_4K); recipes.add(SlimefunItems.GOLD_DUST); @@ -99,13 +99,12 @@ protected void registerDefaultRecipes(List recipes) { recipes.add(SlimefunItems.CARBON); recipes.add(new ItemStack(Material.COAL, 8)); - recipes.add(SlimefunItems.COMPRESSED_CARBON); recipes.add(new SlimefunItemStack(SlimefunItems.CARBON, 4)); if (Slimefun.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_17)) { - recipes.add(new ItemStack(Material.COBBLED_DEEPSLATE, 8)); - recipes.add(new ItemStack(Material.SAND, 1)); + recipes.add(new ItemStack(Material.COBBLED_DEEPSLATE, 1)); + recipes.add(new ItemStack(Material.GRAVEL, 1)); } } @@ -138,13 +137,13 @@ public void postRegister() { // Raw metal ores (1.17+) if (Slimefun.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_17)) { displayRecipes.add(new ItemStack(Material.RAW_IRON)); - displayRecipes.add(SlimefunItems.IRON_DUST); + displayRecipes.add(new SlimefunItemStack(SlimefunItems.IRON_DUST, isOreDoublingEnabled() ? 2 : 1)); displayRecipes.add(new ItemStack(Material.RAW_COPPER)); - displayRecipes.add(SlimefunItems.COPPER_DUST); + displayRecipes.add(new SlimefunItemStack(SlimefunItems.GOLD_DUST, isOreDoublingEnabled() ? 2 : 1)); displayRecipes.add(new ItemStack(Material.RAW_GOLD)); - displayRecipes.add(SlimefunItems.GOLD_DUST); + displayRecipes.add(new SlimefunItemStack(SlimefunItems.GOLD_DUST, isOreDoublingEnabled() ? 2 : 1)); } // Deepslate Ores (1.17+) @@ -161,16 +160,16 @@ public void postRegister() { // More deepslate ores and copper ore displayRecipes.add(new ItemStack(Material.DEEPSLATE_IRON_ORE)); - displayRecipes.add(new SlimefunItemStack(SlimefunItems.IRON_DUST, isOreDoublingEnabled() ? 2 : 1)); + displayRecipes.add(new SlimefunItemStack(SlimefunItems.IRON_DUST, isOreDoublingEnabled() ? 3 : 1)); displayRecipes.add(new ItemStack(Material.DEEPSLATE_GOLD_ORE)); - displayRecipes.add(new SlimefunItemStack(SlimefunItems.GOLD_DUST, isOreDoublingEnabled() ? 2 : 1)); + displayRecipes.add(new SlimefunItemStack(SlimefunItems.GOLD_DUST, isOreDoublingEnabled() ? 3 : 1)); displayRecipes.add(new ItemStack(Material.DEEPSLATE_COPPER_ORE)); - displayRecipes.add(new SlimefunItemStack(SlimefunItems.COPPER_DUST, isOreDoublingEnabled() ? 2 : 1)); + displayRecipes.add(new SlimefunItemStack(SlimefunItems.COPPER_DUST, isOreDoublingEnabled() ? 3 : 1)); displayRecipes.add(new ItemStack(Material.COPPER_ORE)); - displayRecipes.add(new SlimefunItemStack(SlimefunItems.COPPER_DUST, isOreDoublingEnabled() ? 2 : 1)); + displayRecipes.add(new SlimefunItemStack(SlimefunItems.COPPER_DUST, isOreDoublingEnabled() ? 3 : 1)); } } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/thornya/Spaceship.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/thornya/Spaceship.java new file mode 100644 index 0000000000..db52d6b52a --- /dev/null +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/thornya/Spaceship.java @@ -0,0 +1,32 @@ +package io.github.thebusybiscuit.slimefun4.implementation.items.thornya; + +import io.github.thebusybiscuit.slimefun4.api.items.ItemGroup; +import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem; +import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack; +import io.github.thebusybiscuit.slimefun4.api.recipes.RecipeType; +import io.github.thebusybiscuit.slimefun4.core.handlers.ItemUseHandler; +import io.github.thebusybiscuit.slimefun4.utils.SlimefunUtils; +import org.bukkit.block.Block; +import org.bukkit.event.block.Action; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; + +import java.util.Optional; + +public class Spaceship extends SlimefunItem { + public Spaceship(ItemGroup itemGroup, SlimefunItemStack item, ItemStack[] recipe) { + super(itemGroup, item, RecipeType.ENHANCED_CRAFTING_TABLE, recipe); + addItemHandler((ItemUseHandler) e -> { + Optional clicked = e.getClickedBlock(); + if(clicked.isPresent()) { + if(e.getInteractEvent().getAction() == Action.RIGHT_CLICK_BLOCK && e.getHand() == EquipmentSlot.HAND && e.getPlayer().isSneaking()) { + ItemStack itemInHand = e.getPlayer().getInventory().getItemInMainHand(); + if(SlimefunItem.getByItem(itemInHand) != null){ + SlimefunUtils.removeItemOnHand(e.getPlayer()); + e.getPlayer().sendMessage("Voar voar subir subir"); + } + } + } + }); + } +} diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/thornya/blocks/WorldBlocks.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/thornya/blocks/WorldBlocks.java new file mode 100644 index 0000000000..197ae03b2e --- /dev/null +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/thornya/blocks/WorldBlocks.java @@ -0,0 +1,44 @@ +package io.github.thebusybiscuit.slimefun4.implementation.items.thornya.blocks; + +import io.github.thebusybiscuit.slimefun4.api.items.ItemGroup; +import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem; +import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack; +import io.github.thebusybiscuit.slimefun4.api.recipes.RecipeType; +import io.github.thebusybiscuit.slimefun4.core.handlers.BlockBreakHandler; +import io.github.thebusybiscuit.slimefun4.core.handlers.BlockPlaceHandler; +import io.github.thebusybiscuit.slimefun4.implementation.Slimefun; + +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.inventory.ItemStack; + +import javax.annotation.Nonnull; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + + +public class WorldBlocks extends SlimefunItem { + public WorldBlocks(ItemGroup itemGroup, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { + super(itemGroup, item, recipeType, recipe); + addItemHandler(new BlockPlaceHandler(true) { + @Override + public void onPlayerPlace(@Nonnull BlockPlaceEvent e) { + Block block = e.getBlock(); + Slimefun.getCustomBlockService().setCustomBlock(block, item.getItemId()); + } + }); + + addItemHandler(new BlockBreakHandler(true, true) { + @Override + public void onPlayerBreak(BlockBreakEvent e, ItemStack item, List drops) { + if(drops.contains(new ItemStack(Material.BROWN_MUSHROOM))){ + drops.remove(new ItemStack(Material.BROWN_MUSHROOM)); + } + } + }); + + } +} diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/thornya/resources/Helio3.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/thornya/resources/Helio3.java new file mode 100644 index 0000000000..dd3d023540 --- /dev/null +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/thornya/resources/Helio3.java @@ -0,0 +1,16 @@ +package io.github.thebusybiscuit.slimefun4.implementation.items.thornya.resources; + +import io.github.thebusybiscuit.slimefun4.api.items.ItemGroup; +import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem; +import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack; +import io.github.thebusybiscuit.slimefun4.api.recipes.RecipeType; +import org.bukkit.inventory.ItemStack; + +public class Helio3 extends SlimefunItem { + public Helio3(ItemGroup itemGroup, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { + super(itemGroup, item, recipeType, recipe); + + } + + +} diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/CustomBlockService.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/CustomBlockService.java new file mode 100644 index 0000000000..807432c8cb --- /dev/null +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/CustomBlockService.java @@ -0,0 +1,84 @@ +package io.github.thebusybiscuit.slimefun4.implementation.setup; + +import io.github.bakedlibs.dough.config.Config; +import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem; +import io.github.thebusybiscuit.slimefun4.implementation.Slimefun; +import org.apache.commons.lang.Validate; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.block.data.BlockData; +import org.bukkit.block.data.MultipleFacing; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; + +import javax.annotation.Nonnull; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.util.Collection; +import java.util.logging.Level; + +public class CustomBlockService { + + private final Config config; + private final Slimefun plugin; + + public CustomBlockService(@Nonnull Slimefun plugin){ + config = new Config(plugin, "blocks.yml"); + this.plugin = plugin; + } + + public void register(@Nonnull Collection items, boolean save) { + Validate.notEmpty(items, "items must neither be null or empty."); + + loadDefaultValues(); + + for (SlimefunItem item : items) { + if (item != null) { + if (item.getId().startsWith("THORNYA")) { + config.setDefaultValue("blocks." + item.getId(), "down,east,north,south,up,west"); + } + } + } + + if (save) { + config.save(); + } + } + + private void loadDefaultValues() { + InputStream inputStream = Slimefun.class.getResourceAsStream("/blocks.yml"); + + try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))) { + FileConfiguration cfg = YamlConfiguration.loadConfiguration(reader); + + for (String key : cfg.getKeys(false)) { + if (key.startsWith("THORNYA")) { + config.setDefaultValue("blocks." + key, cfg.getInt(key)); + } + } + } catch (Exception e) { + Slimefun.logger().log(Level.SEVERE, "Failed to load default blocks.yml file", e); + } + } + + public void setCustomBlock(Block block, String id){ + BlockData blockData = block.getBlockData(); + MultipleFacing multiFacing = (MultipleFacing) blockData; + String faces = config.getString("blocks." + id); + multiFacing.getAllowedFaces().forEach(face -> multiFacing.setFace(face, false)); + String[] faceArray = faces.split(","); + for(String face : faceArray){ + if(face.equalsIgnoreCase("none")) break; + BlockFace blockFace = BlockFace.valueOf(face.toUpperCase()); + multiFacing.setFace(blockFace, true); + } + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { + block.setBlockData(multiFacing); + }); + + } +} diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/ResearchSetup.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/ResearchSetup.java index a3e3948837..fa8688fee3 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/ResearchSetup.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/ResearchSetup.java @@ -2,7 +2,12 @@ import javax.annotation.ParametersAreNonnullByDefault; +import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack; +import io.github.thebusybiscuit.slimefun4.core.guide.SlimefunGuide; +import io.github.thebusybiscuit.slimefun4.implementation.items.tools.ExplosiveShovel; +import org.bukkit.Material; import org.bukkit.NamespacedKey; +import org.bukkit.entity.Slime; import org.bukkit.inventory.ItemStack; import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem; @@ -31,264 +36,40 @@ public static void setupResearches() { alreadyRan = true; - register("walking_sticks", 0, "Walking Sticks", 1, SlimefunItems.GRANDMAS_WALKING_STICK, SlimefunItems.GRANDPAS_WALKING_STICK); - register("portable_crafter", 1, "Portable Crafter", 1, SlimefunItems.PORTABLE_CRAFTER); - register("fortune_cookie", 2, "Fortune Cookie", 1, SlimefunItems.FORTUNE_COOKIE); - register("portable_dustbin", 4, "Portable Dustbin", 2, SlimefunItems.PORTABLE_DUSTBIN); - register("meat_jerky", 5, "Jerkys", 2, SlimefunItems.BEEF_JERKY, SlimefunItems.FISH_JERKY, SlimefunItems.RABBIT_JERKY, SlimefunItems.MUTTON_JERKY, SlimefunItems.CHICKEN_JERKY, SlimefunItems.PORK_JERKY); - register("armor_forge", 6, "Armor Crafting", 2, SlimefunItems.ARMOR_FORGE); - register("glowstone_armor", 7, "Glowstone Armor", 3, SlimefunItems.GLOWSTONE_HELMET, SlimefunItems.GLOWSTONE_CHESTPLATE, SlimefunItems.GLOWSTONE_LEGGINGS, SlimefunItems.GLOWSTONE_BOOTS); - register("lumps", 8, "Lumps and Magic", 3, SlimefunItems.MAGIC_LUMP_1, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ENDER_LUMP_1, SlimefunItems.ENDER_LUMP_2, SlimefunItems.ENDER_LUMP_3); - register("ender_backpack", 9, "Ender Backpack", 4, SlimefunItems.ENDER_BACKPACK); - register("ender_armor", 10, "Ender Armor", 4, SlimefunItems.ENDER_HELMET, SlimefunItems.ENDER_CHESTPLATE, SlimefunItems.ENDER_LEGGINGS, SlimefunItems.ENDER_BOOTS); - register("magic_eye_of_ender", 11, "Magic Eye of Ender", 4, SlimefunItems.MAGIC_EYE_OF_ENDER); - register("magic_sugar", 12, "Magic Sugar", 4, SlimefunItems.MAGIC_SUGAR); - register("monster_jerky", 13, "Monster Jerky", 5, SlimefunItems.MONSTER_JERKY); - register("slime_armor", 14, "Slime Armor", 5, SlimefunItems.SLIME_HELMET, SlimefunItems.SLIME_CHESTPLATE, SlimefunItems.SLIME_LEGGINGS, SlimefunItems.SLIME_BOOTS); - register("sword_of_beheading", 15, "Sword of Beheading", 6, SlimefunItems.SWORD_OF_BEHEADING); - register("basic_circuit_board", 16, "Electric Work", 8, SlimefunItems.BASIC_CIRCUIT_BOARD); - register("advanced_circuit_board", 17, "Advanced Electricity", 9, SlimefunItems.ADVANCED_CIRCUIT_BOARD); - register("smeltery", 18, "Hot Smelting", 10, SlimefunItems.SMELTERY); - register("steel", 19, "Steel Age", 11, SlimefunItems.STEEL_INGOT); - register("misc_power_items", 20, "Important Power-Related Items", 12, SlimefunItems.SULFATE, SlimefunItems.POWER_CRYSTAL); - register("battery", 21, "Your first Battery", 10, SlimefunItems.BATTERY); - register("steel_plate", 22, "Steel Plating", 14, SlimefunItems.STEEL_PLATE); - register("steel_thruster", 23, "Steel Thruster", 14, SlimefunItems.STEEL_THRUSTER); - register("parachute", 24, "Parachute", 15, SlimefunItems.PARACHUTE); - register("grappling_hook", 25, "Grappling Hook", 15, SlimefunItems.GRAPPLING_HOOK, SlimefunItems.HOOK, SlimefunItems.CHAIN); - register("jetpacks", 26, "Jetpacks", 22, SlimefunItems.DURALUMIN_JETPACK, SlimefunItems.BILLON_JETPACK, SlimefunItems.SOLDER_JETPACK, SlimefunItems.STEEL_JETPACK, SlimefunItems.DAMASCUS_STEEL_JETPACK, SlimefunItems.REINFORCED_ALLOY_JETPACK); - register("multitools", 27, "Multi Tools", 18, SlimefunItems.DURALUMIN_MULTI_TOOL, SlimefunItems.SOLDER_MULTI_TOOL, SlimefunItems.BILLON_MULTI_TOOL, SlimefunItems.STEEL_MULTI_TOOL, SlimefunItems.DAMASCUS_STEEL_MULTI_TOOL, SlimefunItems.REINFORCED_ALLOY_MULTI_TOOL); - register("solar_panel_and_helmet", 28, "Solar Power", 17, SlimefunItems.SOLAR_PANEL, SlimefunItems.SOLAR_HELMET); - register("elemental_staff", 29, "Elemental Staves", 17, SlimefunItems.STAFF_ELEMENTAL); - register("grind_stone", 30, "Grind Stone", 4, SlimefunItems.GRIND_STONE); - register("cactus_armor", 31, "Cactus Suit", 5, SlimefunItems.CACTUS_BOOTS, SlimefunItems.CACTUS_CHESTPLATE, SlimefunItems.CACTUS_HELMET, SlimefunItems.CACTUS_LEGGINGS); - register("gold_pan", 32, "Gold Pan", 5, SlimefunItems.GOLD_PAN); - register("magical_book_cover", 33, "Magical Book Binding", 5, SlimefunItems.MAGICAL_BOOK_COVER); - register("slimefun_metals", 34, "New Metals", 6, SlimefunItems.COPPER_INGOT, SlimefunItems.TIN_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ZINC_INGOT, SlimefunItems.MAGNESIUM_INGOT); - register("ore_crusher", 35, "Ore Doubling", 6, SlimefunItems.ORE_CRUSHER); - register("bronze", 36, "Bronze Creation", 8, SlimefunItems.BRONZE_INGOT); - register("alloys", 37, "Advanced Alloys", 12, SlimefunItems.BILLON_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.BRASS_INGOT); - register("compressor_and_carbon", 38, "Carbon Creation", 9, SlimefunItems.COMPRESSOR, SlimefunItems.CARBON); - register("gilded_iron_armor", 40, "Gilded Iron Armor", 16, SlimefunItems.GILDED_IRON_HELMET, SlimefunItems.GILDED_IRON_CHESTPLATE, SlimefunItems.GILDED_IRON_LEGGINGS, SlimefunItems.GILDED_IRON_BOOTS); - register("synthetic_diamond", 41, "Synthetic Diamonds", 10, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.CARBON_CHUNK, SlimefunItems.SYNTHETIC_DIAMOND); - register("pressure_chamber", 42, "Pressure Chamber", 14, SlimefunItems.PRESSURE_CHAMBER); - register("synthetic_sapphire", 43, "Synthetic Sapphires", 16, SlimefunItems.SYNTHETIC_SAPPHIRE); - register("damascus_steel", 45, "Damascus Steel", 17, SlimefunItems.DAMASCUS_STEEL_INGOT); - register("damascus_steel_armor", 46, "Damascus Steel Armor", 18, SlimefunItems.DAMASCUS_STEEL_HELMET, SlimefunItems.DAMASCUS_STEEL_CHESTPLATE, SlimefunItems.DAMASCUS_STEEL_LEGGINGS, SlimefunItems.DAMASCUS_STEEL_BOOTS); - register("reinforced_alloy", 47, "Reinforced Alloy", 22, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT); - register("carbonado", 48, "Black Diamonds", 26, SlimefunItems.RAW_CARBONADO, SlimefunItems.CARBONADO); - register("magic_workbench", 50, "Magic Workbench", 12, SlimefunItems.MAGIC_WORKBENCH); - register("wind_staff", 51, "Wind Staff", 17, SlimefunItems.STAFF_WIND); - register("reinforced_armor", 52, "Reinforced Armor", 26, SlimefunItems.REINFORCED_ALLOY_HELMET, SlimefunItems.REINFORCED_ALLOY_CHESTPLATE, SlimefunItems.REINFORCED_ALLOY_LEGGINGS, SlimefunItems.REINFORCED_ALLOY_BOOTS); - register("ore_washer", 53, "Ore Washer", 5, SlimefunItems.ORE_WASHER, SlimefunItems.STONE_CHUNK, SlimefunItems.SIFTED_ORE); - register("gold_carats", 54, "Pure Gold", 7, SlimefunItems.GOLD_4K, SlimefunItems.GOLD_6K, SlimefunItems.GOLD_8K, SlimefunItems.GOLD_10K, SlimefunItems.GOLD_12K, SlimefunItems.GOLD_14K, SlimefunItems.GOLD_16K, SlimefunItems.GOLD_18K, SlimefunItems.GOLD_20K, SlimefunItems.GOLD_22K, SlimefunItems.GOLD_24K); - register("silicon", 55, "Silicon Valley", 12, SlimefunItems.SILICON, SlimefunItems.FERROSILICON); - register("fire_staff", 56, "Fire Staff", 2, SlimefunItems.STAFF_FIRE); - register("smelters_pickaxe", 57, "Smelters Pickaxe", 17, SlimefunItems.SMELTERS_PICKAXE); - register("common_talisman", 58, "Common Talisman", 14, SlimefunItems.COMMON_TALISMAN); - register("anvil_talisman", 59, "Talisman of the Anvil", 18, SlimefunItems.TALISMAN_ANVIL); - register("miner_talisman", 60, "Talisman of the Miner", 18, SlimefunItems.TALISMAN_MINER); - register("hunter_talisman", 61, "Talisman of the Hunter", 18, SlimefunItems.TALISMAN_HUNTER); - register("lava_talisman", 62, "Talisman of the Lava Walker", 18, SlimefunItems.TALISMAN_LAVA); - register("water_talisman", 63, "Talisman of the Water Breather", 18, SlimefunItems.TALISMAN_WATER); - register("angel_talisman", 64, "Talisman of the Angel", 18, SlimefunItems.TALISMAN_ANGEL); - register("fire_talisman", 65, "Talisman of the Firefighter", 18, SlimefunItems.TALISMAN_FIRE); - register("lava_crystal", 67, "Firey Situation", 14, SlimefunItems.LAVA_CRYSTAL); - register("magician_talisman", 68, "Talisman of the Magician", 20, SlimefunItems.TALISMAN_MAGICIAN); - register("traveller_talisman", 69, "Talisman of the Traveller", 20, SlimefunItems.TALISMAN_TRAVELLER); - register("warrior_talisman", 70, "Talisman of the Warrior", 20, SlimefunItems.TALISMAN_WARRIOR); - register("knight_talisman", 71, "Talisman of the Knight", 20, SlimefunItems.TALISMAN_KNIGHT); - register("gilded_iron", 72, "Shiny Iron", 11, SlimefunItems.GILDED_IRON); - register("synthetic_emerald", 73, "Fake Gem", 17, SlimefunItems.SYNTHETIC_EMERALD); - register("chainmail_armor", 74, "Chainmail Armor", 8, "CHAIN_HELMET", "CHAIN_CHESTPLATE", "CHAIN_LEGGINGS", "CHAIN_BOOTS"); - register("whirlwind_talisman", 75, "Talisman of the Whirlwind", 19, SlimefunItems.TALISMAN_WHIRLWIND); - register("wizard_talisman", 76, "Talisman of the Wizard", 22, SlimefunItems.TALISMAN_WIZARD); - register("lumber_axe", 77, "Lumber Axe", 21, SlimefunItems.LUMBER_AXE); - register("hazmat_suit", 79, "Hazmat Suit", 21, SlimefunItems.SCUBA_HELMET, SlimefunItems.HAZMAT_CHESTPLATE, SlimefunItems.HAZMAT_LEGGINGS, SlimefunItems.HAZMAT_BOOTS); - register("uranium", 80, "Radioactive", 30, SlimefunItems.TINY_URANIUM, SlimefunItems.SMALL_URANIUM, SlimefunItems.URANIUM); - register("crushed_ore", 81, "Ore Purification", 25, SlimefunItems.CRUSHED_ORE, SlimefunItems.PULVERIZED_ORE, SlimefunItems.PURE_ORE_CLUSTER); - register("redstone_alloy", 84, "Redstone Alloy", 16, SlimefunItems.REDSTONE_ALLOY); - register("carbonado_tools", 85, "Top Tier Machines", 24, SlimefunItems.CARBONADO_MULTI_TOOL, SlimefunItems.CARBONADO_JETPACK, SlimefunItems.CARBONADO_JETBOOTS); - register("first_aid", 86, "First Aid", 2, SlimefunItems.CLOTH, SlimefunItems.RAG, SlimefunItems.BANDAGE, SlimefunItems.SPLINT, SlimefunItems.TIN_CAN, SlimefunItems.VITAMINS, SlimefunItems.MEDICINE); - register("gold_armor", 87, "Shiny Armor", 13, SlimefunItems.GOLDEN_HELMET_12K, SlimefunItems.GOLDEN_CHESTPLATE_12K, SlimefunItems.GOLDEN_LEGGINGS_12K, SlimefunItems.GOLDEN_BOOTS_12K); - register("night_vision_googles", 89, "Night Vision Goggles", 10, SlimefunItems.NIGHT_VISION_GOGGLES); - register("pickaxe_of_containment", 90, "Pickaxe of Containment", 14, SlimefunItems.PICKAXE_OF_CONTAINMENT, SlimefunItems.BROKEN_SPAWNER); - register("table_saw", 92, "Table Saw", 4, SlimefunItems.TABLE_SAW); - register("slime_steel_armor", 93, "Slimy Steel Armor", 27, SlimefunItems.SLIME_HELMET_STEEL, SlimefunItems.SLIME_CHESTPLATE_STEEL, SlimefunItems.SLIME_LEGGINGS_STEEL, SlimefunItems.SLIME_BOOTS_STEEL); - register("blade_of_vampires", 94, "Blade of Vampires", 26, SlimefunItems.BLADE_OF_VAMPIRES); - register("water_staff", 96, "Water Staff", 8, SlimefunItems.STAFF_WATER); - register("24k_gold_block", 97, "Golden City", 19, SlimefunItems.GOLD_24K_BLOCK); - register("composter", 99, "Composting Dirt", 3, SlimefunItems.COMPOSTER); - register("farmer_shoes", 100, "Farmer Shoes", 4, SlimefunItems.FARMER_SHOES); - register("explosive_tools", 101, "Explosive Tools", 30, SlimefunItems.EXPLOSIVE_PICKAXE, SlimefunItems.EXPLOSIVE_SHOVEL); - register("automated_panning_machine", 102, "Automated Gold Pan", 17, SlimefunItems.AUTOMATED_PANNING_MACHINE); - register("boots_of_the_stomper", 103, "Boots of the Stomper", 19, SlimefunItems.BOOTS_OF_THE_STOMPER); - register("pickaxe_of_the_seeker", 104, "Pickaxe of the Seeker", 19, SlimefunItems.PICKAXE_OF_THE_SEEKER); - register("backpacks", 105, "Backpacks", 15, SlimefunItems.BACKPACK_LARGE, SlimefunItems.BACKPACK_MEDIUM, SlimefunItems.BACKPACK_SMALL); - register("woven_backpack", 106, "Woven Backpack", 19, SlimefunItems.WOVEN_BACKPACK); - register("crucible", 107, "Crucible", 13, SlimefunItems.CRUCIBLE); - register("gilded_backpack", 108, "Gilded Backpack", 22, SlimefunItems.GILDED_BACKPACK); - register("armored_jetpack", 111, "Armored Jetpack", 27, SlimefunItems.ARMORED_JETPACK); - register("ender_talismans", 112, "Ender Talismans", 28, new String[0]); - register("nickel_and_cobalt", 115, "Even more Ores", 10, SlimefunItems.NICKEL_INGOT, SlimefunItems.COBALT_INGOT); - register("magnet", 116, "Magnetic Metals", 16, SlimefunItems.MAGNET); - register("infused_magnet", 117, "Infused Magnets", 18, SlimefunItems.INFUSED_MAGNET); - register("cobalt_pickaxe", 118, "Speedy Pickaxe", 14, SlimefunItems.COBALT_PICKAXE); - register("essence_of_afterlife", 119, "Necromancy", 19, SlimefunItems.NECROTIC_SKULL, SlimefunItems.ESSENCE_OF_AFTERLIFE); - register("bound_backpack", 120, "Soulbound Storage", 22, SlimefunItems.BOUND_BACKPACK); - register("jetboots", 121, "Jet Boots", 25, SlimefunItems.DURALUMIN_JETBOOTS, SlimefunItems.BILLON_JETBOOTS, SlimefunItems.SOLDER_JETBOOTS, SlimefunItems.STEEL_JETBOOTS, SlimefunItems.DAMASCUS_STEEL_JETBOOTS, SlimefunItems.REINFORCED_ALLOY_JETBOOTS); - register("armored_jetboots", 122, "Armored Jet Boots", 27, SlimefunItems.ARMORED_JETBOOTS); - register("seismic_axe", 123, "Seismic Axe", 29, SlimefunItems.SEISMIC_AXE); - register("pickaxe_of_vein_mining", 124, "Pickaxe of Vein Mining", 29, SlimefunItems.PICKAXE_OF_VEIN_MINING); - register("bound_weapons", 125, "Soulbound Weapons", 29, SlimefunItems.SOULBOUND_SWORD, SlimefunItems.SOULBOUND_BOW, SlimefunItems.SOULBOUND_TRIDENT); - register("bound_tools", 126, "Soulbound Tools", 29, SlimefunItems.SOULBOUND_PICKAXE, SlimefunItems.SOULBOUND_AXE, SlimefunItems.SOULBOUND_SHOVEL, SlimefunItems.SOULBOUND_HOE); - register("bound_armor", 127, "Soulbound Armor", 29, SlimefunItems.SOULBOUND_HELMET, SlimefunItems.SOULBOUND_CHESTPLATE, SlimefunItems.SOULBOUND_LEGGINGS, SlimefunItems.SOULBOUND_BOOTS); - register("juicer", 129, "Delicious Drinks", 29, SlimefunItems.JUICER, SlimefunItems.APPLE_JUICE, SlimefunItems.MELON_JUICE, SlimefunItems.CARROT_JUICE, SlimefunItems.PUMPKIN_JUICE, SlimefunItems.SWEET_BERRY_JUICE, SlimefunItems.GLOW_BERRY_JUICE); - register("repaired_spawner", 130, "Repairing Spawners", 15, SlimefunItems.REPAIRED_SPAWNER); - register("enhanced_furnace", 132, "Enhanced Furnace", 7, SlimefunItems.ENHANCED_FURNACE, SlimefunItems.ENHANCED_FURNACE_2); - register("more_enhanced_furnaces", 133, "Better Furnaces", 18, SlimefunItems.ENHANCED_FURNACE_3, SlimefunItems.ENHANCED_FURNACE_4, SlimefunItems.ENHANCED_FURNACE_5, SlimefunItems.ENHANCED_FURNACE_6, SlimefunItems.ENHANCED_FURNACE_7); - register("high_tier_enhanced_furnaces", 134, "High Tier Furnace", 29, SlimefunItems.ENHANCED_FURNACE_8, SlimefunItems.ENHANCED_FURNACE_9, SlimefunItems.ENHANCED_FURNACE_10, SlimefunItems.ENHANCED_FURNACE_11); - register("reinforced_furnace", 135, "Reinforced Furnace", 32, SlimefunItems.REINFORCED_FURNACE); - register("carbonado_furnace", 136, "Carbonado Edged Furnace", 35, SlimefunItems.CARBONADO_EDGED_FURNACE); - register("electric_motor", 137, "Heating up", 32, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.HEATING_COIL); - register("block_placer", 138, "Block Placer", 17, SlimefunItems.BLOCK_PLACER); - register("scroll_of_dimensional_teleposition", 142, "Turning things around", 38, SlimefunItems.SCROLL_OF_DIMENSIONAL_TELEPOSITION); - register("special_bows", 143, "Robin Hood", 22, SlimefunItems.EXPLOSIVE_BOW, SlimefunItems.ICY_BOW); - register("tome_of_knowledge_sharing", 144, "Sharing with friends", 30, SlimefunItems.TOME_OF_KNOWLEDGE_SHARING); - register("flask_of_knowledge", 145, "XP Storage", 13, SlimefunItems.FLASK_OF_KNOWLEDGE); - register("hardened_glass", 146, "Withstanding Explosions", 15, SlimefunItems.REINFORCED_PLATE, SlimefunItems.HARDENED_GLASS); - register("golden_apple_juice", 149, "Golden potion", 24, SlimefunItems.GOLDEN_APPLE_JUICE); - register("cooler", 150, "Portable Beverages", 24, SlimefunItems.COOLING_UNIT, SlimefunItems.COOLER); - register("ancient_altar", 151, "Ancient Altar", 15, SlimefunItems.ANCIENT_PEDESTAL, SlimefunItems.ANCIENT_ALTAR); - register("wither_proof_obsidian", 152, "Wither-Proof Obsidian", 21, SlimefunItems.WITHER_PROOF_OBSIDIAN); - register("ancient_runes", 155, "Elemental Runes", 15, SlimefunItems.BLANK_RUNE, SlimefunItems.EARTH_RUNE, SlimefunItems.WATER_RUNE, SlimefunItems.AIR_RUNE, SlimefunItems.FIRE_RUNE); - register("special_runes", 156, "Purple Runes", 18, SlimefunItems.ENDER_RUNE, SlimefunItems.RAINBOW_RUNE); - register("infernal_bonemeal", 157, "Infernal Bonemeal", 12, SlimefunItems.INFERNAL_BONEMEAL); - register("rainbow_blocks", 158, "Rainbow Blocks", 24, SlimefunItems.RAINBOW_CLAY, SlimefunItems.RAINBOW_GLASS, SlimefunItems.RAINBOW_GLASS_PANE, SlimefunItems.RAINBOW_WOOL, SlimefunItems.RAINBOW_CONCRETE, SlimefunItems.RAINBOW_GLAZED_TERRACOTTA); - register("infused_hopper", 159, "Infused Hopper", 22, SlimefunItems.INFUSED_HOPPER); - register("wither_proof_glass", 160, "Wither-Proof Glass", 20, SlimefunItems.WITHER_PROOF_GLASS); - register("duct_tape", 161, "Duct Tape", 14, SlimefunItems.DUCT_TAPE); - register("plastic_sheet", 162, "Plastic", 25, SlimefunItems.PLASTIC_SHEET); - register("android_memory_core", 163, "Memory Core", 28, SlimefunItems.ANDROID_MEMORY_CORE); - register("oil", 164, "Oil", 30, SlimefunItems.OIL_BUCKET, SlimefunItems.OIL_PUMP); - register("fuel", 165, "Fuel", 30, SlimefunItems.FUEL_BUCKET, SlimefunItems.REFINERY); - register("hologram_projector", 166, "Holograms", 36, SlimefunItems.HOLOGRAM_PROJECTOR); - register("capacitors", 167, "Tier 1 Capacitors", 25, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.BIG_CAPACITOR); - register("high_tier_capacitors", 168, "Tier 2 Capacitors", 32, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.CARBONADO_EDGED_CAPACITOR); - register("solar_generators", 169, "Solar Power Plant", 14, SlimefunItems.SOLAR_GENERATOR); - register("electric_furnaces", 170, "Powered Furnace", 15, SlimefunItems.ELECTRIC_FURNACE); - register("electric_ore_grinding", 171, "Crushing and Grinding", 20, SlimefunItems.ELECTRIC_ORE_GRINDER, SlimefunItems.ELECTRIC_INGOT_PULVERIZER); - register("heated_pressure_chamber", 172, "Heated Pressure Chamber", 22, SlimefunItems.HEATED_PRESSURE_CHAMBER); - register("coal_generator", 173, "Coal Generator", 14, SlimefunItems.COAL_GENERATOR); - register("bio_reactor", 173, "Bio-Reactor", 18, SlimefunItems.BIO_REACTOR); - register("auto_enchanting", 174, "Automatic Enchanting and Disenchanting", 24, SlimefunItems.AUTO_ENCHANTER, SlimefunItems.AUTO_DISENCHANTER); - register("auto_anvil", 175, "Automatic Anvil", 34, SlimefunItems.AUTO_ANVIL, SlimefunItems.AUTO_ANVIL_2); - register("multimeter", 176, "Power Measurement", 10, SlimefunItems.MULTIMETER); - register("gps_setup", 177, "Basic GPS Setup", 28, SlimefunItems.GPS_TRANSMITTER, SlimefunItems.GPS_CONTROL_PANEL, SlimefunItems.GPS_MARKER_TOOL); - register("gps_emergency_transmitter", 178, "GPS Emergency Waypoint", 30, SlimefunItems.GPS_EMERGENCY_TRANSMITTER); - register("programmable_androids", 179, "Programmable Androids", 50, SlimefunItems.PROGRAMMABLE_ANDROID, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.PROGRAMMABLE_ANDROID_BUTCHER, SlimefunItems.PROGRAMMABLE_ANDROID_FISHERMAN, SlimefunItems.PROGRAMMABLE_ANDROID_MINER, SlimefunItems.PROGRAMMABLE_ANDROID_WOODCUTTER); - register("android_interfaces", 180, "Android Interfaces", 26, SlimefunItems.ANDROID_INTERFACE_FUEL, SlimefunItems.ANDROID_INTERFACE_ITEMS); - register("geo_scanner", 181, "GEO-Scans", 30, SlimefunItems.GPS_GEO_SCANNER, SlimefunItems.PORTABLE_GEO_SCANNER); - register("combustion_reactor", 182, "Combustion Reactor", 38, SlimefunItems.COMBUSTION_REACTOR); - register("teleporter", 183, "Teleporter Base Components", 42, SlimefunItems.GPS_TELEPORTATION_MATRIX, SlimefunItems.GPS_TELEPORTER_PYLON); - register("teleporter_activation_plates", 184, "Teleporter Activation", 36, SlimefunItems.GPS_ACTIVATION_DEVICE_PERSONAL, SlimefunItems.GPS_ACTIVATION_DEVICE_SHARED); - register("better_solar_generators", 185, "Upgraded Solar Generators", 28, SlimefunItems.SOLAR_GENERATOR_2, SlimefunItems.SOLAR_GENERATOR_3); - register("better_gps_transmitters", 186, "Upgraded Transmitters", 36, SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.GPS_TRANSMITTER_3); - register("elevator", 187, "Elevators", 28, SlimefunItems.ELEVATOR_PLATE); - register("energized_solar_generator", 188, "Full-Time Solar Power", 44, SlimefunItems.SOLAR_GENERATOR_4); - register("energized_gps_transmitter", 189, "Top Tier Transmitter", 44, SlimefunItems.GPS_TRANSMITTER_4); - register("energy_regulator", 190, "Energy Networks 101", 6, SlimefunItems.ENERGY_REGULATOR); - register("butcher_androids", 191, "Butcher Androids", 32, SlimefunItems.PROGRAMMABLE_ANDROID_BUTCHER); - register("organic_food", 192, "Organic Food", 25, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.WHEAT_ORGANIC_FOOD, SlimefunItems.CARROT_ORGANIC_FOOD, SlimefunItems.POTATO_ORGANIC_FOOD, SlimefunItems.SEEDS_ORGANIC_FOOD, SlimefunItems.BEETROOT_ORGANIC_FOOD, SlimefunItems.MELON_ORGANIC_FOOD, SlimefunItems.APPLE_ORGANIC_FOOD, SlimefunItems.SWEET_BERRIES_ORGANIC_FOOD, SlimefunItems.KELP_ORGANIC_FOOD, SlimefunItems.COCOA_ORGANIC_FOOD, SlimefunItems.SEAGRASS_ORGANIC_FOOD); - register("auto_breeder", 193, "Automated Feeding", 25, SlimefunItems.AUTO_BREEDER); - register("advanced_android", 194, "Advanced Androids", 60, SlimefunItems.PROGRAMMABLE_ANDROID_2); - register("advanced_butcher_android", 195, "Advanced Androids - Butcher", 30, SlimefunItems.PROGRAMMABLE_ANDROID_2_BUTCHER); - register("advanced_fisherman_android", 196, "Advanced Androids - Fisherman", 30, SlimefunItems.PROGRAMMABLE_ANDROID_2_FISHERMAN); - register("animal_growth_accelerator", 197, "Animal Growth Manipulation", 32, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR); - register("xp_collector", 198, "XP Collector", 36, SlimefunItems.EXP_COLLECTOR); - register("organic_fertilizer", 199, "Organic Fertilizer", 36, SlimefunItems.FOOD_COMPOSTER, SlimefunItems.WHEAT_FERTILIZER, SlimefunItems.CARROT_FERTILIZER, SlimefunItems.POTATO_FERTILIZER, SlimefunItems.SEEDS_FERTILIZER, SlimefunItems.BEETROOT_FERTILIZER, SlimefunItems.MELON_FERTILIZER, SlimefunItems.APPLE_FERTILIZER, SlimefunItems.SWEET_BERRIES_FERTILIZER, SlimefunItems.KELP_FERTILIZER, SlimefunItems.COCOA_FERTILIZER, SlimefunItems.SEAGRASS_FERTILIZER); - register("crop_growth_accelerator", 200, "Crop Growth Acceleration", 40, SlimefunItems.CROP_GROWTH_ACCELERATOR); - register("better_crop_growth_accelerator", 201, "Upgraded Crop Growth Accelerator", 44, SlimefunItems.CROP_GROWTH_ACCELERATOR_2); - register("reactor_essentials", 202, "Reactor Essentials", 36, SlimefunItems.REACTOR_COOLANT_CELL, SlimefunItems.NEPTUNIUM, SlimefunItems.PLUTONIUM); - register("nuclear_reactor", 203, "Nuclear Power Plant", 48, SlimefunItems.NUCLEAR_REACTOR); - register("freezer", 204, "Mr Freeze", 20, SlimefunItems.FREEZER); - register("cargo_basics", 205, "Cargo Basics", 30, SlimefunItems.CARGO_MOTOR, SlimefunItems.CARGO_MANAGER, SlimefunItems.CARGO_CONNECTOR_NODE); - register("cargo_nodes", 206, "Cargo Setup", 30, SlimefunItems.CARGO_INPUT_NODE, SlimefunItems.CARGO_OUTPUT_NODE); - register("electric_ingot_machines", 207, "Electric Ingot Fabrication", 18, SlimefunItems.ELECTRIC_GOLD_PAN, SlimefunItems.ELECTRIC_DUST_WASHER, SlimefunItems.ELECTRIC_INGOT_FACTORY); - register("medium_tier_electric_ingot_machines", 208, "Fast Ingot Fabrication", 25, SlimefunItems.ELECTRIC_GOLD_PAN_2, SlimefunItems.ELECTRIC_DUST_WASHER_2, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, SlimefunItems.ELECTRIC_ORE_GRINDER_2); - register("high_tier_electric_ingot_machines", 209, "Super Fast Ingot Fabrication", 32, SlimefunItems.ELECTRIC_GOLD_PAN_3, SlimefunItems.ELECTRIC_DUST_WASHER_3, SlimefunItems.ELECTRIC_INGOT_FACTORY_3, SlimefunItems.ELECTRIC_ORE_GRINDER_3); - register("better_food_fabricator", 211, "Upgraded Food Fabrication", 28, SlimefunItems.FOOD_FABRICATOR_2, SlimefunItems.FOOD_COMPOSTER_2); - register("reactor_access_port", 212, "Reactor Interaction", 18, SlimefunItems.REACTOR_ACCESS_PORT); - register("fluid_pump", 213, "Fluid Pump", 28, SlimefunItems.FLUID_PUMP); - register("better_freezer", 214, "Upgraded Freezer", 29, SlimefunItems.FREEZER_2, SlimefunItems.FREEZER_3); - register("boosted_uranium", 215, "Never-Ending Circle", 30, SlimefunItems.BOOSTED_URANIUM); - register("trash_can", 216, "Trash", 8, SlimefunItems.TRASH_CAN); - register("advanced_output_node", 217, "Advanced Output Node", 24, SlimefunItems.CARGO_OUTPUT_NODE_2); - register("carbon_press", 218, "Carbon Press", 28, SlimefunItems.CARBON_PRESS); - register("electric_smeltery", 219, "Electric Smeltery", 28, SlimefunItems.ELECTRIC_SMELTERY); - register("better_electric_furnace", 220, "Upgraded Electric Furnace", 20, SlimefunItems.ELECTRIC_FURNACE_2, SlimefunItems.ELECTRIC_FURNACE_3); - register("better_carbon_press", 221, "Upgraded Carbon Press", 26, SlimefunItems.CARBON_PRESS_2); - register("empowered_android", 222, "Empowered Androids", 60, SlimefunItems.PROGRAMMABLE_ANDROID_3); - register("empowered_butcher_android", 223, "Empowered Androids - Butcher", 30, SlimefunItems.PROGRAMMABLE_ANDROID_3_BUTCHER); - register("empowered_fisherman_android", 224, "Empowered Androids - Fisherman", 30, SlimefunItems.PROGRAMMABLE_ANDROID_3_FISHERMAN); - register("high_tier_carbon_press", 225, "Ultimate Carbon Press", 32, SlimefunItems.CARBON_PRESS_3); - register("wither_assembler", 226, "Automated Wither Killer", 35, SlimefunItems.WITHER_ASSEMBLER); - register("better_heated_pressure_chamber", 227, "Upgraded Heated Pressure Chamber", 20, SlimefunItems.HEATED_PRESSURE_CHAMBER_2); - register("elytra", 228, "Elytras", 20, "ELYTRA_SCALE", "ELYTRA"); - register("special_elytras", 229, "Special Elytras", 30, SlimefunItems.INFUSED_ELYTRA, SlimefunItems.SOULBOUND_ELYTRA); - register("electric_crucible", 230, "Electrified Crucible", 26, SlimefunItems.ELECTRIFIED_CRUCIBLE); - register("better_electric_crucibles", 231, "Hot Crucibles", 30, SlimefunItems.ELECTRIFIED_CRUCIBLE_2, SlimefunItems.ELECTRIFIED_CRUCIBLE_3); - register("advanced_electric_smeltery", 232, "Advanced Electric Smeltery", 28, SlimefunItems.ELECTRIC_SMELTERY_2); - register("advanced_farmer_android", 233, "Advanced Androids - Farmer", 30, SlimefunItems.PROGRAMMABLE_ANDROID_2_FARMER); - register("lava_generator", 234, "Lava Generator", 16, SlimefunItems.LAVA_GENERATOR); - register("nether_ice", 235, "Nether Ice Coolant", 45, SlimefunItems.NETHER_ICE, SlimefunItems.ENRICHED_NETHER_ICE, SlimefunItems.NETHER_ICE_COOLANT_CELL); - register("nether_star_reactor", 236, "Nether Star Reactor", 60, SlimefunItems.NETHER_STAR_REACTOR); - register("blistering_ingots", 237, "Blistering Radioactivity", 38, SlimefunItems.BLISTERING_INGOT, SlimefunItems.BLISTERING_INGOT_2, SlimefunItems.BLISTERING_INGOT_3); - register("automatic_ignition_chamber", 239, "Automatic Ignition Chamber", 12, SlimefunItems.IGNITION_CHAMBER); - register("output_chest", 240, "Basic machinery output chest", 20, SlimefunItems.OUTPUT_CHEST); - register("copper_wire", 241, "Thinned-down Conductivity", 15, SlimefunItems.COPPER_WIRE); - register("radiant_backpack", 242, "Radiant Backpack", 25, SlimefunItems.RADIANT_BACKPACK); - register("auto_drier", 243, "A Dry Day", 15, SlimefunItems.AUTO_DRIER); - register("diet_cookie", 244, "Diet Cookie", 3, SlimefunItems.DIET_COOKIE); - register("storm_staff", 245, "Storm Staff", 30, SlimefunItems.STAFF_STORM); - register("soulbound_rune", 246, "Soulbound Rune", 60, SlimefunItems.SOULBOUND_RUNE); - register("geo_miner", 247, "GEO-Miner", 24, SlimefunItems.GEO_MINER); - register("lightning_rune", 248, "Lightning Rune", 24, SlimefunItems.LIGHTNING_RUNE); - register("totem_of_undying", 249, "Totem of Undying", 36, "TOTEM_OF_UNDYING"); - register("charging_bench", 250, "Charging Bench", 8, SlimefunItems.CHARGING_BENCH); - register("nether_gold_pan", 251, "Nether Gold Pan", 8, SlimefunItems.NETHER_GOLD_PAN); - register("electric_press", 252, "Electric Press", 16, SlimefunItems.ELECTRIC_PRESS, SlimefunItems.ELECTRIC_PRESS_2); - register("magnesium_generator", 253, "Power from Magnesium", 20, SlimefunItems.MAGNESIUM_SALT, SlimefunItems.MAGNESIUM_GENERATOR); - register("kelp_cookie", 254, "Tasty Kelp", 4, SlimefunItems.KELP_COOKIE); - register("makeshift_smeltery", 255, "Improvised Smeltery", 6, SlimefunItems.MAKESHIFT_SMELTERY); - register("tree_growth_accelerator", 256, "Faster Trees", 18, SlimefunItems.TREE_GROWTH_ACCELERATOR); - register("industrial_miner", 95, "Industrial Mining", 28, SlimefunItems.INDUSTRIAL_MINER); - register("advanced_industrial_miner", 98, "Better Mining", 36, SlimefunItems.ADVANCED_INDUSTRIAL_MINER); - register("magical_zombie_pills", 257, "De-Zombification", 22, SlimefunItems.MAGICAL_ZOMBIE_PILLS); - register("auto_brewer", 258, "Industrial Brewery", 30, SlimefunItems.AUTO_BREWER); - register("enchantment_rune", 259, "Ancient Enchanting", 24, SlimefunItems.MAGICAL_GLASS, SlimefunItems.ENCHANTMENT_RUNE); - register("lead_clothing", 260, "Lead Clothing", 14, SlimefunItems.REINFORCED_CLOTH); - register("tape_measure", 261, "Tape Measure", 7, SlimefunItems.TAPE_MEASURE); - register("iron_golem_assembler", 262, "Automated Iron Golems", 30, SlimefunItems.IRON_GOLEM_ASSEMBLER); - register("shulker_shell", 263, "Synthetic Shulkers", 30, SlimefunItems.SYNTHETIC_SHULKER_SHELL); - register("villager_rune", 264, "Reset Villager Trades", 26, SlimefunItems.VILLAGER_RUNE, SlimefunItems.STRANGE_NETHER_GOO); - register("climbing_pick", 265, "Block Raider", 20, SlimefunItems.CLIMBING_PICK); - register("even_higher_tier_capacitors", 266, "Tier 3 Capacitors", 40, SlimefunItems.ENERGIZED_CAPACITOR); - register("caveman_talisman", 267, "Talisman of the Caveman", 20, SlimefunItems.TALISMAN_CAVEMAN); - register("elytra_cap", 268, "Crash Gear", 20, SlimefunItems.ELYTRA_CAP); - register("energy_connectors", 269, "Wired Connections", 12, SlimefunItems.ENERGY_CONNECTOR); - register("bee_armor", 270, "Bee Armor", 24, SlimefunItems.BEE_HELMET, SlimefunItems.BEE_WINGS, SlimefunItems.BEE_LEGGINGS, SlimefunItems.BEE_BOOTS); - register("wise_talisman", 271, "Talisman of the Wise", 20, SlimefunItems.TALISMAN_WISE); - register("book_binder", 272, "Enchantment Book Binding", 26, SlimefunItems.BOOK_BINDER); - register("auto_crafting", 273, "Automatic Crafting", 30, SlimefunItems.CRAFTING_MOTOR, SlimefunItems.VANILLA_AUTO_CRAFTER, SlimefunItems.ENHANCED_AUTO_CRAFTER, SlimefunItems.ARMOR_AUTO_CRAFTER); - register("produce_collector", 274, "Automatic Milking", 20, SlimefunItems.PRODUCE_COLLECTOR); - register("improved_generators", 275, "Improved Generators", 24, SlimefunItems.COAL_GENERATOR_2, SlimefunItems.LAVA_GENERATOR_2); - register("ingredients_and_cheese", 276, "Slimefun Cuisine", 5, SlimefunItems.SALT, SlimefunItems.WHEAT_FLOUR, SlimefunItems.HEAVY_CREAM, SlimefunItems.CHEESE, SlimefunItems.BUTTER); - register("medium_tier_auto_enchanting", 277, "Fast Automatic Enchanting and Disenchanting", 48, SlimefunItems.AUTO_ENCHANTER_2, SlimefunItems.AUTO_DISENCHANTER_2); - register("portable_teleporter", 278, "Teleportation from Anywhere", 42, SlimefunItems.PORTABLE_TELEPORTER); - register("trident", 279, "Trident", 20, "TRIDENT"); - register("farmer_talisman", 280, "Talisman of the Farmer", 18, SlimefunItems.TALISMAN_FARMER); - register("rainbow_armor", 281, "I wanna see the rainbow high in the sky", 22, SlimefunItems.RAINBOW_HELMET, SlimefunItems.RAINBOW_CHESTPLATE, SlimefunItems.RAINBOW_LEGGINGS, SlimefunItems.RAINBOW_BOOTS); + register("weapons", 0, "Weapons are the best defense", 69, SlimefunItems.SWORD_OF_BEHEADING, SlimefunItems.BLADE_OF_VAMPIRES, SlimefunItems.SEISMIC_AXE, new ItemStack(Material.TRIDENT)); + register("life_quality", 1, "Improving player life", 69, SlimefunItems.PORTABLE_CRAFTER, SlimefunItems.PORTABLE_DUSTBIN, SlimefunItems.RAG, SlimefunItems.BANDAGE, SlimefunItems.SPLINT, SlimefunItems.VITAMINS, SlimefunItems.MEDICINE, SlimefunItems.TAPE_MEASURE, SlimefunItems.COOLER, new ItemStack(Material.TOTEM_OF_UNDYING), SlimefunItems.FARMER_SHOES, SlimefunItems.ELYTRA_CAP, SlimefunItems.DUCT_TAPE); + register("backpack", 2, "More inventory", 69, SlimefunItems.BACKPACK_SMALL, SlimefunItems.BACKPACK_MEDIUM, SlimefunItems.BACKPACK_LARGE, SlimefunItems.WOVEN_BACKPACK, SlimefunItems.GILDED_BACKPACK, SlimefunItems.RADIANT_BACKPACK, SlimefunItems.ENDER_BACKPACK); + register("basic_machines", 3, "Beginning the technical era", 69, SlimefunItems.OUTPUT_CHEST, SlimefunItems.GRIND_STONE, SlimefunItems.ARMOR_FORGE, SlimefunItems.ORE_CRUSHER, SlimefunItems.COMPRESSOR, SlimefunItems.MAKESHIFT_SMELTERY, SlimefunItems.SMELTERY, SlimefunItems.IGNITION_CHAMBER, SlimefunItems.PRESSURE_CHAMBER, SlimefunItems.ORE_WASHER, SlimefunItems.TABLE_SAW, SlimefunItems.COMPOSTER, SlimefunItems.AUTOMATED_PANNING_MACHINE, SlimefunItems.INDUSTRIAL_MINER, SlimefunItems.CRUCIBLE, SlimefunItems.JUICER, SlimefunItems.BLOCK_PLACER); + register("furnaces", 4, "let's warm up a bit", 69, SlimefunItems.ENHANCED_FURNACE, SlimefunItems.ENHANCED_FURNACE_2, SlimefunItems.ENHANCED_FURNACE_3, SlimefunItems.ENHANCED_FURNACE_4, SlimefunItems.ENHANCED_FURNACE_5, SlimefunItems.ENHANCED_FURNACE_6, SlimefunItems.ENHANCED_FURNACE_7, SlimefunItems.ENHANCED_FURNACE_8, SlimefunItems.ENHANCED_FURNACE_9, SlimefunItems.ENHANCED_FURNACE_10, SlimefunItems.ENHANCED_FURNACE_11, SlimefunItems.REINFORCED_FURNACE, SlimefunItems.CARBONADO_EDGED_FURNACE); + register("basic_tools", 5, "Simple but useful tools", 69, SlimefunItems.CHAIN, SlimefunItems.GRAPPLING_HOOK, SlimefunItems.SMELTERS_PICKAXE, SlimefunItems.LUMBER_AXE, SlimefunItems.EXPLOSIVE_PICKAXE, SlimefunItems.EXPLOSIVE_SHOVEL, SlimefunItems.PICKAXE_OF_THE_SEEKER, SlimefunItems.COBALT_PICKAXE, SlimefunItems.PICKAXE_OF_VEIN_MINING, SlimefunItems.CLIMBING_PICK); + register("alloys", 6, "Mixing Ingots to form alloys", 69, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.BRASS_INGOT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.NICKEL_INGOT, SlimefunItems.COBALT_INGOT, SlimefunItems.FERROSILICON, SlimefunItems.GILDED_IRON, SlimefunItems.REDSTONE_ALLOY); + register("refinery", 7, "Refining our production", 69, SlimefunItems.GOLD_4K, SlimefunItems.GOLD_6K, SlimefunItems.GOLD_8K, SlimefunItems.GOLD_10K, SlimefunItems.GOLD_12K, SlimefunItems.GOLD_14K, SlimefunItems.GOLD_16K, SlimefunItems.GOLD_18K, SlimefunItems.GOLD_20K, SlimefunItems.GOLD_22K, SlimefunItems.GOLD_24K, SlimefunItems.GOLD_24K_BLOCK, SlimefunItems.SYNTHETIC_SAPPHIRE, SlimefunItems.SYNTHETIC_DIAMOND, SlimefunItems.SYNTHETIC_EMERALD, SlimefunItems.OIL_BUCKET, SlimefunItems.FUEL_BUCKET); + register("radioactive", 8, "If you don't protect yourself, you'll become nuclear", 69, SlimefunItems.TINY_URANIUM, SlimefunItems.SMALL_URANIUM, SlimefunItems.URANIUM, SlimefunItems.BOOSTED_URANIUM, SlimefunItems.BLISTERING_INGOT, SlimefunItems.BLISTERING_INGOT_2, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.NETHER_ICE, SlimefunItems.ENRICHED_NETHER_ICE, SlimefunItems.NEPTUNIUM, SlimefunItems.PLUTONIUM, SlimefunItems.REINFORCED_CLOTH, SlimefunItems.NETHER_ICE_COOLANT_CELL, SlimefunItems.HAZMAT_BOOTS, SlimefunItems.HAZMAT_LEGGINGS, SlimefunItems.HAZMAT_CHESTPLATE, SlimefunItems.SCUBA_HELMET); + register("basic_components", 9, "Basic components to evolve", 69, SlimefunItems.BASIC_CIRCUIT_BOARD, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.BATTERY, SlimefunItems.STEEL_THRUSTER, SlimefunItems.POWER_CRYSTAL, SlimefunItems.SOLAR_PANEL, SlimefunItems.MAGNET, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.HEATING_COIL, SlimefunItems.COPPER_WIRE, SlimefunItems.COOLING_UNIT, SlimefunItems.PLASTIC_SHEET, SlimefunItems.REACTOR_COOLANT_CELL, SlimefunItems.STEEL_PLATE, SlimefunItems.TIN_CAN, SlimefunItems.REINFORCED_PLATE, SlimefunItems.HARDENED_GLASS, SlimefunItems.WITHER_PROOF_GLASS, SlimefunItems.WITHER_PROOF_OBSIDIAN); + register("armors", 10, "Put on your armor to defend yourself", 69, SlimefunItems.DAMASCUS_STEEL_BOOTS, SlimefunItems.DAMASCUS_STEEL_LEGGINGS, SlimefunItems.DAMASCUS_STEEL_CHESTPLATE, SlimefunItems.DAMASCUS_STEEL_HELMET, SlimefunItems.REINFORCED_ALLOY_BOOTS, SlimefunItems.REINFORCED_ALLOY_LEGGINGS, SlimefunItems.REINFORCED_ALLOY_CHESTPLATE, SlimefunItems.REINFORCED_ALLOY_HELMET, SlimefunItems.CACTUS_BOOTS, SlimefunItems.CACTUS_LEGGINGS, SlimefunItems.CACTUS_CHESTPLATE, SlimefunItems.CACTUS_HELMET, SlimefunItems.GILDED_IRON_BOOTS, SlimefunItems.GILDED_IRON_LEGGINGS, SlimefunItems.GILDED_IRON_CHESTPLATE, SlimefunItems.GILDED_IRON_HELMET, SlimefunItems.GOLDEN_BOOTS_12K, SlimefunItems.GOLDEN_LEGGINGS_12K, SlimefunItems.GOLDEN_CHESTPLATE_12K, SlimefunItems.GOLDEN_HELMET_12K); + register("jet_armors", 11, "To infinity and beyond, or not", 69, SlimefunItems.DURALUMIN_JETPACK, SlimefunItems.SOLDER_JETPACK, SlimefunItems.BILLON_JETPACK, SlimefunItems.STEEL_JETPACK, SlimefunItems.DAMASCUS_STEEL_JETPACK, SlimefunItems.REINFORCED_ALLOY_JETPACK, SlimefunItems.CARBONADO_JETPACK, SlimefunItems.ARMORED_JETPACK, SlimefunItems.DURALUMIN_JETBOOTS, SlimefunItems.SOLDER_JETBOOTS, SlimefunItems.BILLON_JETBOOTS, SlimefunItems.STEEL_JETBOOTS, SlimefunItems.DAMASCUS_STEEL_JETBOOTS, SlimefunItems.REINFORCED_ALLOY_JETBOOTS, SlimefunItems.CARBONADO_JETBOOTS, SlimefunItems.ARMORED_JETBOOTS); + register("energy_tools", 12, "Energy tools", 69, SlimefunItems.DURALUMIN_MULTI_TOOL, SlimefunItems.SOLDER_MULTI_TOOL, SlimefunItems.BILLON_MULTI_TOOL, SlimefunItems.STEEL_MULTI_TOOL, SlimefunItems.DAMASCUS_STEEL_MULTI_TOOL, SlimefunItems.REINFORCED_ALLOY_MULTI_TOOL, SlimefunItems.CARBONADO_MULTI_TOOL, SlimefunItems.MULTIMETER); + register("basic_energy", 13, "basic of energy", 69, SlimefunItems.ENERGY_REGULATOR, SlimefunItems.ENERGY_CONNECTOR, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.BIG_CAPACITOR, SlimefunItems.SOLAR_GENERATOR, SlimefunItems.SOLAR_GENERATOR_2, SlimefunItems.COAL_GENERATOR, SlimefunItems.COAL_GENERATOR_2, SlimefunItems.BIO_REACTOR, SlimefunItems.LAVA_GENERATOR, SlimefunItems.COMBUSTION_REACTOR, SlimefunItems.MAGNESIUM_GENERATOR); + register("advanced_energy", 14, "advanced energy system", 69, SlimefunItems.SOLAR_GENERATOR_3, SlimefunItems.SOLAR_GENERATOR_4, SlimefunItems.LAVA_GENERATOR_2, SlimefunItems.NUCLEAR_REACTOR, SlimefunItems.NETHER_STAR_REACTOR); + register("basic_ore_processing", 15, "the start of real mineral processing", 69, SlimefunItems.ELECTRIC_FURNACE, SlimefunItems.ELECTRIC_GOLD_PAN, SlimefunItems.ELECTRIC_DUST_WASHER, SlimefunItems.ELECTRIC_INGOT_FACTORY, SlimefunItems.ELECTRIC_ORE_GRINDER, SlimefunItems.ELECTRIC_INGOT_PULVERIZER, SlimefunItems.ELECTRIC_SMELTERY); + register("advanced_ore_processing", 16, "Advanced Ore Processing", 69, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, SlimefunItems.ELECTRIC_FURNACE_3, SlimefunItems.ELECTRIC_GOLD_PAN_2, SlimefunItems.ELECTRIC_GOLD_PAN_3, SlimefunItems.ELECTRIC_DUST_WASHER_2, SlimefunItems.ELECTRIC_DUST_WASHER_3, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, SlimefunItems.ELECTRIC_INGOT_FACTORY_3, SlimefunItems.ELECTRIC_ORE_GRINDER_2, SlimefunItems.ELECTRIC_ORE_GRINDER_3, SlimefunItems.ELECTRIC_SMELTERY_2); + register("basic_machine", 17, "basic machines", 69, SlimefunItems.CHARGING_BENCH,SlimefunItems.ELECTRIFIED_CRUCIBLE_2 , SlimefunItems.ELECTRIFIED_CRUCIBLE_2, SlimefunItems.HEATED_PRESSURE_CHAMBER, SlimefunItems.AUTO_DRIER, SlimefunItems.ELECTRIC_PRESS, SlimefunItems.AUTO_ANVIL, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.AUTO_BREEDER, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, SlimefunItems.TREE_GROWTH_ACCELERATOR, SlimefunItems.FOOD_COMPOSTER, SlimefunItems.CROP_GROWTH_ACCELERATOR, SlimefunItems.CROP_GROWTH_ACCELERATOR_2, SlimefunItems.FREEZER, SlimefunItems.FREEZER_2, SlimefunItems.FLUID_PUMP, SlimefunItems.CARBON_PRESS, SlimefunItems.PRODUCE_COLLECTOR, SlimefunItems.AUTO_BREWER); + register("advanced_machine", 18, "advanced machines", 69, SlimefunItems.ELECTRIFIED_CRUCIBLE_3, SlimefunItems.AUTO_ANVIL_2, SlimefunItems.HEATED_PRESSURE_CHAMBER_2, SlimefunItems.ELECTRIC_PRESS_2, SlimefunItems.REFINERY, SlimefunItems.FOOD_FABRICATOR_2, SlimefunItems.FOOD_COMPOSTER_2, SlimefunItems.FREEZER_3, SlimefunItems.CARBON_PRESS_2, SlimefunItems.CARBON_PRESS_3, SlimefunItems.IRON_GOLEM_ASSEMBLER, SlimefunItems.WITHER_ASSEMBLER); + register("basic_enchanting", 19, "basic enchanting", 69, SlimefunItems.AUTO_ENCHANTER, SlimefunItems.AUTO_DISENCHANTER, SlimefunItems.BOOK_BINDER); + register("advanced_enchanting", 20, "advanced enchanting", 69, SlimefunItems.AUTO_ENCHANTER_2, SlimefunItems.AUTO_DISENCHANTER_2, SlimefunItems.EXP_COLLECTOR); + register("gps", 21, "gps system", 69, SlimefunItems.GPS_TRANSMITTER, SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.GPS_TRANSMITTER_4, SlimefunItems.GPS_CONTROL_PANEL, SlimefunItems.GPS_MARKER_TOOL, SlimefunItems.GPS_EMERGENCY_TRANSMITTER, SlimefunItems.GPS_GEO_SCANNER, SlimefunItems.OIL_PUMP, SlimefunItems.GEO_MINER, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.GPS_TELEPORTATION_MATRIX, SlimefunItems.PORTABLE_TELEPORTER, SlimefunItems.PORTABLE_GEO_SCANNER); + register("basic_androids", 22, "Basic android System", 69, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.ANDROID_INTERFACE_FUEL, SlimefunItems.ANDROID_INTERFACE_ITEMS, SlimefunItems.PROGRAMMABLE_ANDROID, SlimefunItems.PROGRAMMABLE_ANDROID_MINER, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.PROGRAMMABLE_ANDROID_WOODCUTTER, SlimefunItems.PROGRAMMABLE_ANDROID_FISHERMAN, SlimefunItems.PROGRAMMABLE_ANDROID_BUTCHER); + register("advanced_androids", 23,"Advanced android System", 69, SlimefunItems.PROGRAMMABLE_ANDROID_2, SlimefunItems.PROGRAMMABLE_ANDROID_2_FISHERMAN, SlimefunItems.PROGRAMMABLE_ANDROID_2_FARMER, SlimefunItems.PROGRAMMABLE_ANDROID_2_BUTCHER); + register("empowered_androids", 24, "Empowered android System", 69, SlimefunItems.PROGRAMMABLE_ANDROID_3, SlimefunItems.PROGRAMMABLE_ANDROID_3_FISHERMAN, SlimefunItems.PROGRAMMABLE_ANDROID_3_BUTCHER); + register("cargo_system", 25, "Cargo System, time to start the logistics system", 69, SlimefunItems.CARGO_MOTOR, SlimefunItems.CARGO_MANAGER, SlimefunItems.CARGO_CONNECTOR_NODE, SlimefunItems.CARGO_INPUT_NODE, SlimefunItems.CARGO_OUTPUT_NODE, SlimefunItems.CARGO_OUTPUT_NODE_2, SlimefunItems.REACTOR_ACCESS_PORT, SlimefunItems.CRAFTING_MOTOR, SlimefunItems.VANILLA_AUTO_CRAFTER, SlimefunItems.ENHANCED_AUTO_CRAFTER, SlimefunItems.ARMOR_AUTO_CRAFTER); + register("magic_basic", 26, "Getting started in magic", 666, SlimefunItems.MAGIC_WORKBENCH, SlimefunItems.MAGIC_LUMP_1, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ENDER_LUMP_1, SlimefunItems.ENDER_LUMP_2, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGICAL_BOOK_COVER, SlimefunItems.MAGICAL_GLASS, SlimefunItems.LAVA_CRYSTAL, SlimefunItems.STRANGE_NETHER_GOO, SlimefunItems.NECROTIC_SKULL, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.SYNTHETIC_SHULKER_SHELL); + register("magic_advanced", 27, "Technology and magic go hand in hand", 666, SlimefunItems.MAGIC_EYE_OF_ENDER, SlimefunItems.MAGICAL_ZOMBIE_PILLS, SlimefunItems.INFUSED_MAGNET, SlimefunItems.ANCIENT_PEDESTAL, SlimefunItems.ANCIENT_ALTAR, SlimefunItems.INFERNAL_BONEMEAL, SlimefunItems.ELYTRA_SCALE, SlimefunItems.INFUSED_HOPPER); + register("talisman_i", 28, "Talismans are the basics of the user's magic", 666, SlimefunItems.COMMON_TALISMAN, SlimefunItems.TALISMAN_ANVIL, SlimefunItems.TALISMAN_MINER, SlimefunItems.TALISMAN_FARMER, SlimefunItems.TALISMAN_HUNTER, SlimefunItems.TALISMAN_LAVA, SlimefunItems.TALISMAN_WATER, SlimefunItems.TALISMAN_ANGEL, SlimefunItems.TALISMAN_FIRE, SlimefunItems.TALISMAN_MAGICIAN, SlimefunItems.TALISMAN_TRAVELLER, SlimefunItems.TALISMAN_WARRIOR, SlimefunItems.TALISMAN_KNIGHT, SlimefunItems.TALISMAN_CAVEMAN, SlimefunItems.TALISMAN_WISE, SlimefunItems.TALISMAN_WHIRLWIND, SlimefunItems.TALISMAN_WIZARD); + register("runic_crafter", 29, "The creation of runes is an important part of evolution", 666, SlimefunItems.BLANK_RUNE, SlimefunItems.AIR_RUNE, SlimefunItems.WATER_RUNE, SlimefunItems.EARTH_RUNE, SlimefunItems.FIRE_RUNE, SlimefunItems.LIGHTNING_RUNE, SlimefunItems.RAINBOW_RUNE, SlimefunItems.SOULBOUND_RUNE, SlimefunItems.ENCHANTMENT_RUNE, SlimefunItems.VILLAGER_RUNE, SlimefunItems.ENDER_RUNE); + register("ender_talismans", 30, "Ender Talismans", 666, new String[0]); + register("magic_armor", 31, "The Magic Defence", 666, SlimefunItems.ENDER_BOOTS, SlimefunItems.ENDER_LEGGINGS, SlimefunItems.ENDER_CHESTPLATE, SlimefunItems.ENDER_HELMET, SlimefunItems.SLIME_BOOTS, SlimefunItems.SLIME_LEGGINGS, SlimefunItems.SLIME_CHESTPLATE, SlimefunItems.SLIME_HELMET, SlimefunItems.SLIME_BOOTS_STEEL, SlimefunItems.SLIME_LEGGINGS_STEEL, SlimefunItems.SLIME_CHESTPLATE_STEEL, SlimefunItems.SLIME_HELMET_STEEL, SlimefunItems.GLOWSTONE_BOOTS, SlimefunItems.GLOWSTONE_LEGGINGS, SlimefunItems.GLOWSTONE_CHESTPLATE, SlimefunItems.GLOWSTONE_HELMET, SlimefunItems.BEE_BOOTS, SlimefunItems.BEE_LEGGINGS, SlimefunItems.BEE_WINGS, SlimefunItems.BEE_HELMET); + register("rainbow", 32, "RGB EVERYWHERE", 666, SlimefunItems.RAINBOW_WOOL, SlimefunItems.RAINBOW_GLASS, SlimefunItems.RAINBOW_GLASS_PANE, SlimefunItems.RAINBOW_CLAY, SlimefunItems.RAINBOW_CONCRETE, SlimefunItems.RAINBOW_GLAZED_TERRACOTTA, SlimefunItems.RAINBOW_BOOTS, SlimefunItems.RAINBOW_LEGGINGS, SlimefunItems.RAINBOW_CHESTPLATE, SlimefunItems.RAINBOW_HELMET, SlimefunItems.RAINBOW_LEATHER); + register("staffs", 33, "the power of discks", 666, SlimefunItems.STAFF_WIND, SlimefunItems.STAFF_ELEMENTAL, SlimefunItems.STAFF_FIRE, SlimefunItems.STAFF_STORM, SlimefunItems.STAFF_WATER); } @ParametersAreNonnullByDefault @@ -320,4 +101,4 @@ private static void register(String key, int id, String name, int defaultCost, S research.register(); } -} +} \ No newline at end of file diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/SlimefunItemSetup.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/SlimefunItemSetup.java index 9ade30e843..8dd6e3528f 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/SlimefunItemSetup.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/SlimefunItemSetup.java @@ -588,9 +588,9 @@ public static void setup(@Nonnull Slimefun plugin) { new ItemStack[] {SlimefunItems.SIFTED_ORE, null, null, null, null, null, null, null, null}) .register(plugin); - new SlimefunItem(itemGroups.resources, SlimefunItems.COPPER_INGOT, RecipeType.SMELTERY, - new ItemStack[] {SlimefunItems.COPPER_DUST, null, null, null, null, null, null, null, null}) - .register(plugin); + new VanillaItem(itemGroups.resources, new ItemStack(Material.COPPER_INGOT), "COPPER_INGOT", RecipeType.SMELTERY, + new ItemStack[] {SlimefunItems.COPPER_DUST, null, null, null, null, null, null, null, null}) + .register(plugin); new SlimefunItem(itemGroups.resources, SlimefunItems.TIN_INGOT, RecipeType.SMELTERY, new ItemStack[] {SlimefunItems.TIN_DUST, null, null, null, null, null, null, null, null}) diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/ThornyaGroups.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/ThornyaGroups.java new file mode 100644 index 0000000000..2380edff74 --- /dev/null +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/ThornyaGroups.java @@ -0,0 +1,61 @@ +package io.github.thebusybiscuit.slimefun4.implementation.setup; + +import io.github.bakedlibs.dough.items.CustomItemStack; +import io.github.thebusybiscuit.slimefun4.api.items.groups.NestedItemGroup; +import io.github.thebusybiscuit.slimefun4.api.items.groups.SubItemGroup; +import io.github.thebusybiscuit.slimefun4.implementation.Slimefun; +import io.github.thebusybiscuit.slimefun4.implementation.ThornyaItems; +import org.bukkit.Color; +import org.bukkit.Material; +import org.bukkit.NamespacedKey; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.LeatherArmorMeta; + +public class ThornyaGroups { + + public static final NestedItemGroup THORNYA_MAIN = new NestedItemGroup(new NamespacedKey(Slimefun.instance(), "thornya_space"), getItemMain()); + public static final SubItemGroup BLOCKS = new SubItemGroup(new NamespacedKey(Slimefun.instance(), "thornya_blocks"), THORNYA_MAIN, new CustomItemStack(ThornyaItems.CHEESE_ORE, "&bBlocos"), 1); + public static final SubItemGroup SHIPS = new SubItemGroup(new NamespacedKey(Slimefun.instance(), "thornya_ships"), THORNYA_MAIN, getItemShips(), 1); + public static final SubItemGroup MATERIALS = new SubItemGroup(new NamespacedKey(Slimefun.instance(), "thornya_materials"), THORNYA_MAIN, new CustomItemStack(ThornyaItems.HELIO3, "&bMateriais"), 1); + public static final SubItemGroup SUITS = new SubItemGroup(new NamespacedKey(Slimefun.instance(), "thornya_suits"), THORNYA_MAIN, getItemSuits(), 1); + public static final SubItemGroup MACHINES = new SubItemGroup(new NamespacedKey(Slimefun.instance(), "thornya_machines"), THORNYA_MAIN, new CustomItemStack(Material.BLAST_FURNACE, "&bMáquinas"), 1); + + + static { + THORNYA_MAIN.register(Slimefun.instance()); + BLOCKS.register(Slimefun.instance()); + SHIPS.register(Slimefun.instance()); + MATERIALS.register(Slimefun.instance()); + SUITS.register(Slimefun.instance()); + MACHINES.register(Slimefun.instance()); + } + + + private static CustomItemStack getItemMain(){ + CustomItemStack item = new CustomItemStack(Material.LEATHER_HORSE_ARMOR, "&bThornya Space"); + LeatherArmorMeta meta = (LeatherArmorMeta) item.getItemMeta(); + meta.setColor(org.bukkit.Color.fromRGB(0, 0, 7)); + item.setItemMeta(meta); + item.setCustomModel(999); + return item; + } + + private static CustomItemStack getItemShips(){ + CustomItemStack item = new CustomItemStack(Material.LEATHER_HORSE_ARMOR, "&bNaves"); + LeatherArmorMeta meta = (LeatherArmorMeta) item.getItemMeta(); + meta.setColor(Color.fromRGB(0, 0, 7)); + item.setItemMeta(meta); + item.setCustomModel(999); + return item; + } + + private static CustomItemStack getItemSuits(){ + CustomItemStack item = new CustomItemStack(Material.LEATHER_HORSE_ARMOR, "&bTrajes Espaciais"); + LeatherArmorMeta meta = (LeatherArmorMeta) item.getItemMeta(); + meta.setColor(org.bukkit.Color.fromRGB(0, 0, 7)); + item.setItemMeta(meta); + item.setCustomModel(998); + return item; + } +} diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/ThornyaItemSetup.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/ThornyaItemSetup.java new file mode 100644 index 0000000000..f6537ca0c8 --- /dev/null +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/ThornyaItemSetup.java @@ -0,0 +1,105 @@ +package io.github.thebusybiscuit.slimefun4.implementation.setup; + +import io.github.thebusybiscuit.slimefun4.api.items.ItemGroup; +import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem; +import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack; +import io.github.thebusybiscuit.slimefun4.api.recipes.RecipeType; +import io.github.thebusybiscuit.slimefun4.implementation.Slimefun; +import io.github.thebusybiscuit.slimefun4.implementation.SlimefunItems; +import io.github.thebusybiscuit.slimefun4.implementation.ThornyaItems; +import io.github.thebusybiscuit.slimefun4.implementation.items.electric.generators.Helio3Generator; +import io.github.thebusybiscuit.slimefun4.implementation.items.thornya.Spaceship; +import io.github.thebusybiscuit.slimefun4.implementation.items.thornya.blocks.WorldBlocks; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.NamespacedKey; +import org.bukkit.entity.Item; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import javax.annotation.Nonnull; + +public class ThornyaItemSetup { + + private static boolean registeredItems = false; + + public static void setup(@Nonnull Slimefun plugin) { + Bukkit.getConsoleSender().sendMessage("Loading Thornya Items..."); + + if (registeredItems) { + throw new UnsupportedOperationException("Slimefun Items can only be registered once!"); + } + + registeredItems = true; + new Spaceship(ThornyaGroups.SHIPS, ThornyaItems.MK1_SPACESHIP, + new ItemStack[] {new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.NETHER_STAR), null, new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT)}) + .register(plugin); + new SlimefunItem(ThornyaGroups.SUITS, ThornyaItems.SPACE_HELMET, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.LEATHER_HELMET), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT)}) + .register(plugin); + new SlimefunItem(ThornyaGroups.SUITS, ThornyaItems.UPGRADER_OXYGEN_TANK, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.LEATHER_HELMET), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT)}, + new SlimefunItemStack(ThornyaItems.UPGRADER_OXYGEN_TANK, 1)) + .register(plugin); + new SlimefunItem(ThornyaGroups.SUITS, ThornyaItems.UPGRADER_UPGRADER_DEFENSE_1, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.LEATHER_HELMET), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT)}, + new SlimefunItemStack(ThornyaItems.UPGRADER_UPGRADER_DEFENSE_1, 1)) + .register(plugin); + new SlimefunItem(ThornyaGroups.SUITS, ThornyaItems.UPGRADER_UPGRADER_DEFENSE_2, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.LEATHER_HELMET), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT)}, + new SlimefunItemStack(ThornyaItems.UPGRADER_UPGRADER_DEFENSE_2, 1)) + .register(plugin); + new SlimefunItem(ThornyaGroups.SUITS, ThornyaItems.UPGRADER_UPGRADER_DEFENSE_3, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.LEATHER_HELMET), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT)}, + new SlimefunItemStack(ThornyaItems.UPGRADER_UPGRADER_DEFENSE_3, 1)) + .register(plugin); + new SlimefunItem(ThornyaGroups.MATERIALS, ThornyaItems.HELIO3, RecipeType.NULL, + new ItemStack[] {null, null, null, null, null, null, null, null, null}) + .register(plugin); + + new Helio3Generator(ThornyaGroups.MACHINES, ThornyaItems.HELIO3_GENERATOR, RecipeType.ENHANCED_CRAFTING_TABLE, + new ItemStack[] {null, SlimefunItems.STEEL_INGOT, new ItemStack(Material.NETHER_STAR), SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL}) + .setCapacity(1024*8) + .setEnergyProduction(1024) + .register(plugin); + + ItemStack minerBlock = new ItemStack(Material.IRON_PICKAXE); + ItemMeta MinerBlockMeta = minerBlock.getItemMeta(); + MinerBlockMeta.setDisplayName("§bMinerando"); + minerBlock.setItemMeta(MinerBlockMeta); + + new WorldBlocks(ThornyaGroups.BLOCKS, ThornyaItems.SOLAR_MOON, RecipeType.NULL, + new ItemStack[] {null, null, null, null, minerBlock, null, null, null, null}) + .register(plugin); + new WorldBlocks(ThornyaGroups.BLOCKS, ThornyaItems.SOLAR_BASE, RecipeType.NULL, + new ItemStack[] {null, null, null, null, minerBlock, null, null, null, null}) + .register(plugin); + new WorldBlocks(ThornyaGroups.BLOCKS, ThornyaItems.CHEESE_ORE, RecipeType.NULL, + new ItemStack[] {null, null, null, null, minerBlock, null, null, null, null}) + .register(plugin); + new WorldBlocks(ThornyaGroups.BLOCKS, ThornyaItems.LEAD_ORE, RecipeType.NULL, + new ItemStack[] {null, null, null, null, minerBlock, null, null, null, null}) + .register(plugin); + new WorldBlocks(ThornyaGroups.BLOCKS, ThornyaItems.TIN_ORE, RecipeType.NULL, + new ItemStack[] {null, null, null, null, minerBlock, null, null, null, null}) + .register(plugin); + new WorldBlocks(ThornyaGroups.BLOCKS, ThornyaItems.SILVER_ORE, RecipeType.NULL, + new ItemStack[] {null, null, null, null, minerBlock, null, null, null, null}) + .register(plugin); + new WorldBlocks(ThornyaGroups.BLOCKS, ThornyaItems.URANIUM_ORE, RecipeType.NULL, + new ItemStack[] {null, null, null, null, minerBlock, null, null, null, null}) + .register(plugin); + new WorldBlocks(ThornyaGroups.BLOCKS, ThornyaItems.ALUMINUM_ORE, RecipeType.NULL, + new ItemStack[] {null, null, null, null, minerBlock, null, null, null, null}) + .register(plugin); + new WorldBlocks(ThornyaGroups.BLOCKS, ThornyaItems.COBALT_ORE, RecipeType.NULL, + new ItemStack[] {null, null, null, null, minerBlock, null, null, null, null}) + .register(plugin); + new WorldBlocks(ThornyaGroups.BLOCKS, ThornyaItems.MAGNESIUM_ORE, RecipeType.NULL, + new ItemStack[] {null, null, null, null, minerBlock, null, null, null, null}) + .register(plugin); + new WorldBlocks(ThornyaGroups.BLOCKS, ThornyaItems.ZINC_ORE, RecipeType.NULL, + new ItemStack[] {null, null, null, null, minerBlock, null, null, null, null}) + .register(plugin); + } +} diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/SlimefunUtils.java b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/SlimefunUtils.java index 5fc3bda47f..54dc60667f 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/SlimefunUtils.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/SlimefunUtils.java @@ -64,6 +64,15 @@ public final class SlimefunUtils { private SlimefunUtils() {} + + public static void removeItemOnHand(Player p){ + if (p.getInventory().getItemInMainHand().getAmount() > 1) { + p.getInventory().getItemInMainHand().setAmount(p.getInventory().getItemInMainHand().getAmount() - 1); + } else { + p.getInventory().setItemInMainHand(null); + } + } + /** * This method quickly returns whether an {@link Item} was marked as "no_pickup" by * a Slimefun device. @@ -340,6 +349,8 @@ public static boolean isItemSimilar(@Nullable ItemStack item, @Nullable ItemStac return false; } else if (checkAmount && item.getAmount() < sfitem.getAmount()) { return false; + } else if (item.getType() == Material.COPPER_INGOT && sfitem.getType() == Material.COPPER_INGOT) { + return true; } else if (sfitem instanceof SlimefunItemStack stackOne && item instanceof SlimefunItemStack stackTwo) { if (stackOne.getItemId().equals(stackTwo.getItemId())) { /* diff --git a/src/main/resources/blocks.yml b/src/main/resources/blocks.yml new file mode 100644 index 0000000000..6a40527eaa --- /dev/null +++ b/src/main/resources/blocks.yml @@ -0,0 +1 @@ +blocks: diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 5e36b700b7..c5e22de65d 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -5,7 +5,7 @@ options: # You can download the latest stable build here: https://thebusybiscuit.github.io/builds/TheBusyBiscuit/Slimefun4/stable/ auto-update: true - chat-prefix: '&a&lSlimefun 4&7> ' + chat-prefix: '&a&lThornyaFun 4&7> ' armor-update-interval: 10 enable-armor-effects: true enable-radiation: true @@ -16,7 +16,7 @@ options: legacy-ore-washer: false legacy-dust-washer: false legacy-ore-grinder: true - language: en + language: pt-BR enable-translations: true log-duplicate-block-entries: true burn-players-when-radioactive: true diff --git a/src/main/resources/languages/en/researches.yml b/src/main/resources/languages/en/researches.yml index 6579ac26e1..98c7377d7d 100644 --- a/src/main/resources/languages/en/researches.yml +++ b/src/main/resources/languages/en/researches.yml @@ -1,261 +1,35 @@ slimefun: - walking_sticks: Walking Sticks - portable_crafter: Portable Crafter - fortune_cookie: Fortune Cookie - portable_dustbin: Portable Dustbin - meat_jerky: Meat Jerky - armor_forge: Armor Crafting - glowstone_armor: Glowstone Armor - lumps: Lumps and Magic - ender_backpack: Ender Backpack - ender_armor: Ender Armor - magic_eye_of_ender: Magic Eye of Ender - magic_sugar: Magic Sugar - monster_jerky: Monster Jerky - slime_armor: Slime Armor - sword_of_beheading: Sword of Beheading - basic_circuit_board: Basic Circuit Board - advanced_circuit_board: Advanced Circuit Board - smeltery: Smeltery - steel: Steel Age - misc_power_items: Important power-related Items - battery: Your first Battery - steel_plate: Steel Plating - steel_thruster: Steel Thruster - parachute: Parachute - grappling_hook: Grappling Hook - jetpacks: Jetpacks - multitools: Multi Tools - solar_panel_and_helmet: Solar Power - elemental_staff: Elemental Staves - grind_stone: Grind Stone - cactus_armor: Cactus Suit - gold_pan: Gold Pan - magical_book_cover: Magical Book Binding - slimefun_metals: New Metals - ore_crusher: Ore Doubling - bronze: Bronze Creation - alloys: Advanced Alloys - compressor_and_carbon: Carbon Creation - gilded_iron_armor: Gilded Iron Armor - synthetic_diamond: Synthetic Diamonds - pressure_chamber: Pressure Chamber - synthetic_sapphire: Synthetic Sapphires - damascus_steel: Damascus Steel - damascus_steel_armor: Damascus Steel Armor - reinforced_alloy: Reinforced Alloy - carbonado: Black Diamonds - magic_workbench: Magic Workbench - wind_staff: Wind Staff - reinforced_armor: Reinforced Armor - ore_washer: Ore Washer - gold_carats: Pure Gold - silicon: Silicon Valley - fire_staff: Fire Staff - smelters_pickaxe: Smelters Pickaxe - common_talisman: Common Talisman - anvil_talisman: Talisman of the Anvil - miner_talisman: Talisman of the Miner - hunter_talisman: Talisman of the Hunter - lava_talisman: Talisman of the Lava Walker - water_talisman: Talisman of the Water Breather - angel_talisman: Talisman of the Angel - fire_talisman: Talisman of the Firefighter - caveman_talisman: Talisman of the Caveman - wise_talisman: Talisman of the Wise - lava_crystal: Firey Situation - magician_talisman: Talisman of the Magician - traveller_talisman: Talisman of the Traveller - warrior_talisman: Talisman of the Warrior - knight_talisman: Talisman of the Knight - gilded_iron: Shiny Iron - synthetic_emerald: Fake Gem - chainmail_armor: Chainmail Armor - whirlwind_talisman: Talisman of the Whirlwind - wizard_talisman: Talisman of the Wizard - lumber_axe: Lumber Axe - hazmat_suit: Hazmat Suit - uranium: Radioactive - crushed_ore: Ore Purification - redstone_alloy: Redstone Alloy - carbonado_tools: Top Tier Machines - first_aid: First Aid - gold_armor: Shiny Armor - night_vision_googles: Night Vision Goggles - pickaxe_of_containment: Pickaxe of Containment - hercules_pickaxe: Hercules Pickaxe - table_saw: Table Saw - slime_steel_armor: Slimy Steel Armor - blade_of_vampires: Blade of Vampires - water_staff: Water Staff - 24k_gold_block: Golden City - composter: Composting Dirt - farmer_shoes: Farmer Shoes - explosive_tools: Explosive Tools - automated_panning_machine: Automated Gold Pan - boots_of_the_stomper: Boots of the Stomper - pickaxe_of_the_seeker: Pickaxe of the Seeker - backpacks: Backpacks - woven_backpack: Woven Backpack - crucible: Crucible - gilded_backpack: Gilded Backpack - armored_jetpack: Armored Jetpack + weapons: Weapons + life_quality: Life Quality + backpack: Backpack + basic_machines: Basic Machines + furnaces: Furnaces + basic_tools: Basic Tools + alloys: Alloys + refinery: Refinery + radioactive: Radioactive + basic_components: Components + armors: Armors + jet_armors: Jet Armors + energy_tools: Energy Tools + basic_energy: Basic Energy + advanced_energy: Advanced Energy + basic_ore_processing: Basic Ore Processing + advanced_ore_processing: Advanced Ore Processing + basic_machine: Basic Machine + advanced_machine: Advanced Machine + basic_enchanting: Basic Enchanting + advanced_enchanting: Advanced Enchanting + gps: GPS + basic_androids: Basic Androids + advanced_androids: Advanced Androids + empowered_androids: Empowered Androids + cargo_system: Cargo System + magic_basic: Magic Basic + magic_advanced: Magic Advanced + talisman_i: Talisman I + runic_crafter: Runic Crafter ender_talismans: Ender Talismans - nickel_and_cobalt: Even more Ores - magnet: Magnetic Metals - infused_magnet: Infused Magnets - cobalt_pickaxe: Speedy Pickaxe - essence_of_afterlife: Necromancy - bound_backpack: Soulbound Storage - jetboots: Jet Boots - armored_jetboots: Armored Jet Boots - seismic_axe: Seismic Axe - pickaxe_of_vein_mining: Pickaxe of Vein Mining - bound_weapons: Soulbound Weapons - bound_tools: Soulbound Tools - bound_armor: Soulbound Armor - juicer: Delicious Drinks - repaired_spawner: Repairing Spawners - enhanced_furnace: Enhanced Furnace - more_enhanced_furnaces: Better Furnaces - high_tier_enhanced_furnaces: High Tier Furnace - reinforced_furnace: Reinforced Furnace - carbonado_furnace: Carbonado Edged Furnace - electric_motor: Heating up - block_placer: Block Placer - scroll_of_dimensional_teleposition: Turning things around - special_bows: Robin Hood - tome_of_knowledge_sharing: Sharing with friends - flask_of_knowledge: XP Storage - hardened_glass: Withstanding Explosions - golden_apple_juice: Golden potion - cooler: Portable Beverages - ancient_altar: Ancient Altar - wither_proof_obsidian: Wither-Proof Obsidian - ancient_runes: Elemental Runes - special_runes: Purple Runes - infernal_bonemeal: Infernal Bonemeal - rainbow_blocks: Rainbow Blocks - infused_hopper: Infused Hopper - wither_proof_glass: Wither-Proof Glass - duct_tape: Duct Tape - plastic_sheet: Plastic - android_memory_core: Memory Core - oil: Oil - fuel: Fuel - hologram_projector: Holograms - capacitors: Tier 1 Capacitors - high_tier_capacitors: Tier 2 Capacitors - even_higher_tier_capacitors: Tier 3 Capacitors - solar_generators: Solar Power Plant - electric_furnaces: Powered Furnace - electric_ore_grinding: Crushing and Grinding - heated_pressure_chamber: Heated Pressure Chamber - coal_generator: Coal Generator - bio_reactor: Bio-Reactor - auto_enchanting: Automatic Enchanting and Disenchanting - auto_anvil: Automatic Anvil - multimeter: Power Measurement - gps_setup: Basic GPS Setup - gps_emergency_transmitter: GPS Emergency Waypoint - programmable_androids: Programmable Androids - android_interfaces: Android Interfaces - geo_scanner: GEO-Scans - combustion_reactor: Combustion Reactor - teleporter: Teleporter Base Components - teleporter_activation_plates: Teleporter Activation - better_solar_generators: Upgraded Solar Generators - better_gps_transmitters: Upgraded Transmitters - elevator: Elevators - energized_solar_generator: Full-Time Solar Power - energized_gps_transmitter: Top Tier Transmitter - energy_regulator: Energy Networks 101 - energy_connectors: Wired Connections - butcher_androids: Butcher Androids - organic_food: Organic Food - auto_breeder: Automated Feeding - advanced_android: Advanced Androids - advanced_butcher_android: Advanced Androids - Butcher - advanced_fisherman_android: Advanced Androids - Fisherman - animal_growth_accelerator: Animal Growth Manipulation - xp_collector: XP Collector - organic_fertilizer: Organic Fertilizer - crop_growth_accelerator: Crop Growth Acceleration - better_crop_growth_accelerator: Upgraded Crop Growth Accelerator - reactor_essentials: Reactor Essentials - nuclear_reactor: Nuclear Power Plant - freezer: Mr Freeze - cargo_basics: Cargo Basics - cargo_nodes: Cargo Setup - electric_ingot_machines: Electric Ingot Fabrication - medium_tier_electric_ingot_machines: Fast Ingot Fabrication - high_tier_electric_ingot_machines: Super Fast Ingot Fabrication - automated_crafting_chamber: Automated Crafting - better_food_fabricator: Upgraded Food Fabrication - reactor_access_port: Reactor Interaction - fluid_pump: Fluid Pump - better_freezer: Upgraded Freezer - boosted_uranium: Never-Ending Circle - trash_can: Trash - advanced_output_node: Advanced Output Node - carbon_press: Carbon Press - electric_smeltery: Electric Smeltery - better_electric_furnace: Upgraded Electric Furnace - better_carbon_press: Upgraded Carbon Press - empowered_android: Empowered Androids - empowered_butcher_android: Empowered Androids - Butcher - empowered_fisherman_android: Empowered Androids - Fisherman - high_tier_carbon_press: Ultimate Carbon Press - wither_assembler: Automated Wither Killer - better_heated_pressure_chamber: Upgraded Heated Pressure Chamber - elytra: Elytras - special_elytras: Special Elytras - trident: Trident - electric_crucible: Electrified Crucible - better_electric_crucibles: Hot Crucibles - advanced_electric_smeltery: Advanced Electric Smeltery - advanced_farmer_android: Advanced Androids - Farmer - lava_generator: Lava Generator - nether_ice: Nether Ice Coolant - nether_star_reactor: Nether Star Reactor - blistering_ingots: Blistering Radioactivity - automatic_ignition_chamber: Automatic Ignition Chamber - output_chest: Basic machinery output chest - copper_wire: Thinned-down Conductivity - radiant_backpack: Radiant Backpack - auto_drier: A Dry Day - diet_cookie: Diet Cookie - storm_staff: Storm Staff - soulbound_rune: Soulbound Rune - geo_miner: GEO-Miner - lightning_rune: Lightning Rune - totem_of_undying: Totem of Undying - charging_bench: Charging Bench - nether_gold_pan: Nether Gold Pan - electric_press: Electric Press - magnesium_generator: Power from Magnesium - kelp_cookie: Tasty Kelp - makeshift_smeltery: Improvised Smeltery - tree_growth_accelerator: Faster Trees - industrial_miner: Industrial Mining - advanced_industrial_miner: Better Mining - magical_zombie_pills: De-Zombification - auto_brewer: Industrial Brewery - climbing_pick: Block Raider - shulker_shell: Synthetic Shulkers - enchantment_rune: Ancient Enchanting - lead_clothing: Lead Clothing - tape_measure: Tape Measure - iron_golem_assembler: Automated Iron Golems - villager_rune: Reset Villager Trades - elytra_cap: Crash Gear - bee_armor: Bee Armor - book_binder: Enchantment Book Binding - auto_crafting: Automatic Crafting - produce_collector: Automatic Milking - improved_generators: Improved Generators - ingredients_and_cheese: Slimefun Cuisine - medium_tier_auto_enchanting: Fast Automatic Enchanting and Disenchanting - portable_teleporter: Teleportation from Anywhere - farmer_talisman: Talisman of the Farmer - rainbow_armor: I wanna see the rainbow high in the sky + magic_armor: Magic Armor + rainbow: Rainbow + staffs: Staffs \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 5e5a3adbe5..c0e2151321 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,13 +3,13 @@ name: Slimefun version: ${project.version} # Project metadata -author: The Slimefun 4 Community -website: https://github.com/Slimefun -description: Slimefun basically turns your entire Server into a FTB modpack without installing a single mod +author: Thornya Space +website: https://github.com/Thornya-Club/ThornyaFun +description: Thornya Fun basically turns your entire Server into a FTB modpack without installing a single mod # Technical settings main: io.github.thebusybiscuit.slimefun4.implementation.Slimefun -api-version: '1.16' +api-version: '1.20' # (Soft) dependencies of Slimefun, we hook into these plugins. softdepend: