From eb6140c7edae69077aafcb4976aad4e07fe4b04b Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Tue, 10 Mar 2020 21:44:42 +0100 Subject: [PATCH] [CI skip] Added new recipe type translations --- .../setup/SlimefunItemSetup.java | 8 +-- .../Slimefun/Lists/RecipeType.java | 55 ++++++++++++++++--- src/main/resources/languages/recipes_en.yml | 18 ++++++ 3 files changed, 69 insertions(+), 12 deletions(-) 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 3759470c1..bda6ac871 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 @@ -2746,7 +2746,7 @@ public final class SlimefunItemSetup { new ItemStack[] {null, null, null, null, SlimefunItems.BUCKET_OF_OIL, null, null, null, null}) .register(plugin); - new RadioactiveItem(Categories.RESOURCES, Radioactivity.MODERATE, (SlimefunItemStack) SlimefunItems.NETHER_ICE, new RecipeType(SlimefunItems.GEO_MINER), + new RadioactiveItem(Categories.RESOURCES, Radioactivity.MODERATE, (SlimefunItemStack) SlimefunItems.NETHER_ICE, RecipeType.GEO_MINER, new ItemStack[] {null, null, null, null, null, null, null, null, null}) .register(plugin); @@ -3091,7 +3091,7 @@ public final class SlimefunItemSetup { }.register(plugin); - new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.REACTOR_COOLANT_CELL, new RecipeType(SlimefunItems.FREEZER), + new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.REACTOR_COOLANT_CELL, RecipeType.FREEZER, new ItemStack[] {new ItemStack(Material.BLUE_ICE), null, null, null, null, null, null, null, null}) .register(plugin); @@ -3099,11 +3099,11 @@ public final class SlimefunItemSetup { new ItemStack[] {SlimefunItems.ENRICHED_NETHER_ICE, null, null, null, null, null, null, null, null}) .register(plugin); - new RadioactiveItem(Categories.RESOURCES, Radioactivity.HIGH, (SlimefunItemStack) SlimefunItems.NEPTUNIUM, new RecipeType(SlimefunItems.NUCLEAR_REACTOR), + new RadioactiveItem(Categories.RESOURCES, Radioactivity.HIGH, (SlimefunItemStack) SlimefunItems.NEPTUNIUM, RecipeType.NUCLEAR_REACTOR, new ItemStack[] {SlimefunItems.URANIUM, null, null, null, null, null, null, null, null}) .register(plugin); - new RadioactiveItem(Categories.RESOURCES, Radioactivity.VERY_HIGH, (SlimefunItemStack) SlimefunItems.PLUTONIUM, new RecipeType(SlimefunItems.NUCLEAR_REACTOR), + new RadioactiveItem(Categories.RESOURCES, Radioactivity.VERY_HIGH, (SlimefunItemStack) SlimefunItems.PLUTONIUM, RecipeType.NUCLEAR_REACTOR, new ItemStack[] {SlimefunItems.NEPTUNIUM, null, null, null, null, null, null, null, null}) .register(plugin); diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Lists/RecipeType.java b/src/main/java/me/mrCookieSlime/Slimefun/Lists/RecipeType.java index 61fc5fea6..6f56f8404 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Lists/RecipeType.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Lists/RecipeType.java @@ -2,13 +2,18 @@ package me.mrCookieSlime.Slimefun.Lists; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; import java.util.List; import java.util.Locale; +import java.util.Set; import java.util.function.BiConsumer; +import java.util.logging.Level; +import org.bukkit.ChatColor; import org.bukkit.Keyed; import org.bukkit.Material; import org.bukkit.NamespacedKey; +import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -18,6 +23,7 @@ import io.github.thebusybiscuit.slimefun4.implementation.items.altar.AltarRecipe import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; public class RecipeType implements Keyed { @@ -25,7 +31,6 @@ public class RecipeType implements Keyed { public static final RecipeType MULTIBLOCK = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "multiblock"), new CustomItem(Material.BRICKS, "&bMultiBlock", "", "&a&oBuild it in the World")); public static final RecipeType ARMOR_FORGE = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "armor_forge"), (SlimefunItemStack) SlimefunItems.ARMOR_FORGE, "", "&a&oCraft it in an Armor Forge"); public static final RecipeType GRIND_STONE = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "grind_stone"), (SlimefunItemStack) SlimefunItems.GRIND_STONE, "", "&a&oGrind it using the Grind Stone"); - public static final RecipeType MOB_DROP = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "mob_drop"), new CustomItem(Material.IRON_SWORD, "&bMob Drop", "", "&a&oKill the specified Mob to obtain this Item")); public static final RecipeType SMELTERY = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "smeltery"), (SlimefunItemStack) SlimefunItems.SMELTERY, "", "&a&oSmelt it using a Smeltery"); public static final RecipeType ORE_CRUSHER = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "ore_crusher"), (SlimefunItemStack) SlimefunItems.ORE_CRUSHER, "", "&a&oCrush it using the Ore Crusher"); public static final RecipeType GOLD_PAN = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "gold_pan"), (SlimefunItemStack) SlimefunItems.GOLD_PAN, "", "&a&oUse a Gold Pan on Gravel to obtain this Item"); @@ -39,11 +44,17 @@ public class RecipeType implements Keyed { public static final RecipeType ANCIENT_ALTAR = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "ancient_altar"), (SlimefunItemStack) SlimefunItems.ANCIENT_ALTAR, (recipe, output) -> { AltarRecipe altarRecipe = new AltarRecipe(Arrays.asList(recipe), output); SlimefunPlugin.getAncientAltarListener().getRecipes().add(altarRecipe); - }, "", "&dYou will need to craft this Item", "&dby performing an Ancient Altar Ritual"); + }); - public static final RecipeType HEATED_PRESSURE_CHAMBER = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "heated_pressure_chamber"), (SlimefunItemStack) SlimefunItems.HEATED_PRESSURE_CHAMBER, "", "&a&oCraft this Item in a", "&a&oHeated Pressure Chamber"); - public static final RecipeType FOOD_FABRICATOR = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "food_fabricator"), (SlimefunItemStack) SlimefunItems.FOOD_FABRICATOR, "", "&a&oCraft this Item in a", "&a&oFood Fabricator"); - public static final RecipeType FOOD_COMPOSTER = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "food_composter"), (SlimefunItemStack) SlimefunItems.FOOD_COMPOSTER, "", "&a&oCraft this Item in a", "&a&oFood Composter"); + public static final RecipeType MOB_DROP = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "mob_drop"), new CustomItem(Material.IRON_SWORD, "&bMob Drop"), RecipeType::registerMobDrop, "", "&rKill the specified Mob to obtain this Item"); + + public static final RecipeType HEATED_PRESSURE_CHAMBER = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "heated_pressure_chamber"), (SlimefunItemStack) SlimefunItems.HEATED_PRESSURE_CHAMBER); + public static final RecipeType FOOD_FABRICATOR = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "food_fabricator"), (SlimefunItemStack) SlimefunItems.FOOD_FABRICATOR); + public static final RecipeType FOOD_COMPOSTER = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "food_composter"), (SlimefunItemStack) SlimefunItems.FOOD_COMPOSTER); + public static final RecipeType FREEZER = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "freezer"), (SlimefunItemStack) SlimefunItems.FREEZER); + + public static final RecipeType GEO_MINER = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "geo_miner"), (SlimefunItemStack) SlimefunItems.GEO_MINER); + public static final RecipeType NUCLEAR_REACTOR = new RecipeType(new NamespacedKey(SlimefunPlugin.instance, "nuclear_reactor"), (SlimefunItemStack) SlimefunItems.NUCLEAR_REACTOR); public static final RecipeType NULL = new RecipeType(); @@ -74,11 +85,17 @@ public class RecipeType implements Keyed { this(key, slimefunItem, null, lore); } - public RecipeType(NamespacedKey key, SlimefunItemStack slimefunItem, BiConsumer callback, String... lore) { - this.item = new CustomItem(slimefunItem, null, lore); - this.machine = slimefunItem.getItemID(); + public RecipeType(NamespacedKey key, ItemStack item, BiConsumer callback, String... lore) { + this.item = new CustomItem(item, null, lore); this.key = key; this.consumer = callback; + + if (item instanceof SlimefunItemStack) { + this.machine = ((SlimefunItemStack) item).getItemID(); + } + else { + this.machine = ""; + } } @Deprecated @@ -114,6 +131,13 @@ public class RecipeType implements Keyed { if (consumer != null) { consumer.accept(recipe, result); } + else { + SlimefunItem slimefunItem = SlimefunItem.getByID(this.machine); + + if (slimefunItem instanceof SlimefunMachine) { + ((SlimefunMachine) slimefunItem).addRecipe(recipe, result); + } + } } public ItemStack toItem() { @@ -133,6 +157,21 @@ public class RecipeType implements Keyed { return key; } + private static void registerMobDrop(ItemStack[] recipe, ItemStack output) { + String mob = null; + + try { + mob = ChatColor.stripColor(recipe[4].getItemMeta().getDisplayName()).toUpperCase().replace(' ', '_'); + EntityType entity = EntityType.valueOf(mob); + Set dropping = SlimefunPlugin.getRegistry().getMobDrops().getOrDefault(entity, new HashSet<>()); + dropping.add(output); + SlimefunPlugin.getRegistry().getMobDrops().put(entity, dropping); + } + catch (Exception x) { + Slimefun.getLogger().log(Level.WARNING, "An Exception occured when setting a Drop for the Mob Type: \"" + mob + "\"", x); + } + } + public static List getRecipeInputs(SlimefunMachine machine) { if (machine == null) return new ArrayList<>(); List recipes = machine.getRecipes(); diff --git a/src/main/resources/languages/recipes_en.yml b/src/main/resources/languages/recipes_en.yml index 6a2db170d..f5e90288f 100644 --- a/src/main/resources/languages/recipes_en.yml +++ b/src/main/resources/languages/recipes_en.yml @@ -104,6 +104,24 @@ slimefun: - 'Craft this Item as shown' - 'using a Food Composter' + freezer: + name: 'Freezer' + lore: + - 'Craft this Item as shown' + - 'using a Freezer' + + geo_miner: + name: 'GEO Miner' + lore: + - 'This Item can be gathered' + - 'by using a GEO Miner' + + nuclear_reactor: + name: 'Nuclear Reactor' + lore: + - 'This Item is a byproduct' + - 'of running a Nuclear Reactor' + minecraft: shaped: