diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java index 53c72e2ba..505618460 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/LockedCategory.java @@ -111,7 +111,6 @@ public class LockedCategory extends Category { * * @since 4.0 */ - @SuppressWarnings("deprecation") public boolean hasUnlocked(Player p) { return hasUnlocked(p, PlayerProfile.get(p)); } diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index 9ed327c44..db64bbf8b 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -194,7 +194,10 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock } else { inv.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); - pushItems(b, processing.get(b).getOutput().clone()); + + for (ItemStack output: processing.get(b).getOutput()) { + inv.pushItem(output.clone(), getOutputSlots()); + } progress.remove(b); processing.remove(b); diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java index 488b613a6..32c230732 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoAnvil.java @@ -66,7 +66,7 @@ public abstract class AutoAnvil extends AContainer { } else { menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); - pushItems(b, processing.get(b).getOutput()); + menu.pushItem(processing.get(b).getOutput()[0].clone(), getOutputSlots()); progress.remove(b); processing.remove(b); @@ -94,7 +94,7 @@ public abstract class AutoAnvil extends AContainer { } if (recipe != null) { - if (!fits(b, recipe.getOutput())) return; + if (!menu.fits(recipe.getOutput()[0], getOutputSlots())) return; for (int slot: getInputSlots()) { menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1)); diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java index d51b88385..44a2de422 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutoDisenchanter.java @@ -107,16 +107,18 @@ public class AutoDisenchanter extends AContainer { if (item != null && target != null && target.getType() == Material.BOOK) { int amount = 0; - for (Map.Entry e: item.getEnchantments().entrySet()) { + for (Map.Entry e : item.getEnchantments().entrySet()) { enchantments.put(e.getKey(), e.getValue()); amount++; } + if (SlimefunPlugin.getHooks().isEmeraldEnchantsInstalled()) { - for (ItemEnchantment enchantment: EmeraldEnchants.getInstance().getRegistry().getEnchantments(item)) { + for (ItemEnchantment enchantment : EmeraldEnchants.getInstance().getRegistry().getEnchantments(item)) { amount++; enchantments2.add(enchantment); } } + if (amount > 0) { ItemStack newItem = item.clone(); newItem.setAmount(1); @@ -133,13 +135,14 @@ public class AutoDisenchanter extends AContainer { EnchantmentStorageMeta meta = (EnchantmentStorageMeta) book.getItemMeta(); - for (Map.Entry e: enchantments.entrySet()) { + for (Map.Entry e : enchantments.entrySet()) { newItem.removeEnchantment(e.getKey()); meta.addStoredEnchant(e.getKey(), e.getValue(), true); } + book.setItemMeta(meta); - for (ItemEnchantment e: enchantments2) { + for (ItemEnchantment e : enchantments2) { EmeraldEnchants.getInstance().getRegistry().applyEnchantment(book, e.getEnchantment(), e.getLevel()); EmeraldEnchants.getInstance().getRegistry().applyEnchantment(newItem, e.getEnchantment(), 0); } diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java index 4259b664c..93ac9de05 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java @@ -212,8 +212,8 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem implements I if (SlimefunPlugin.getUtilities().automatedCraftingChamberRecipes.containsKey(input)) { ItemStack output = SlimefunPlugin.getUtilities().automatedCraftingChamberRecipes.get(input).clone(); - if (fits(b, output)) { - pushItems(b, output); + if (menu.fits(output, getOutputSlots())) { + menu.pushItem(output, getOutputSlots()); ChargableBlock.addCharge(b, -getEnergyConsumption()); for (int j = 0; j < 9; j++) { if (menu.getItemInSlot(getInputSlots()[j]) != null) menu.replaceExistingItem(getInputSlots()[j], InvUtils.decreaseItem(menu.getItemInSlot(getInputSlots()[j]), 1)); diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java index 5ff440beb..5bedf129f 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricDustWasher.java @@ -59,7 +59,7 @@ public abstract class ElectricDustWasher extends AContainer { ChargableBlock.addCharge(b, -getEnergyConsumption()); menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); - pushItems(b, processing.get(b).getOutput()); + menu.pushItem(processing.get(b).getOutput()[0].clone(), getOutputSlots()); progress.remove(b); processing.remove(b); @@ -84,7 +84,7 @@ public abstract class ElectricDustWasher extends AContainer { ItemStack adding = items[new Random().nextInt(items.length)]; MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {adding}); - if (SlimefunPlugin.getSettings().legacyDustWasher && !fits(b, r.getOutput())) return; + if (SlimefunPlugin.getSettings().legacyDustWasher && !menu.fits(r.getOutput()[0], getOutputSlots())) return; menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1)); processing.put(b, r); progress.put(b, r.getTicks()); @@ -92,7 +92,7 @@ public abstract class ElectricDustWasher extends AContainer { } else if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), SlimefunItems.PULVERIZED_ORE, true)) { MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {SlimefunItems.PURE_ORE_CLUSTER}); - if (!fits(b, r.getOutput())) return; + if (!menu.fits(r.getOutput()[0], getOutputSlots())) return; menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1)); processing.put(b, r); progress.put(b, r.getTicks()); diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java index 51a094c84..2985de078 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/ElectricGoldPan.java @@ -2,12 +2,12 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.Arrays; import java.util.List; -import java.util.Random; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; +import io.github.thebusybiscuit.cscorelib2.collections.RandomizedSet; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.Slimefun.Lists.RecipeType; @@ -18,6 +18,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.api.BlockStorage; +import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.SlimefunItemStack; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; @@ -25,22 +26,55 @@ import me.mrCookieSlime.Slimefun.utils.MachineHelper; public abstract class ElectricGoldPan extends AContainer implements RecipeDisplayItem { - private Random random = new Random(); + private final RandomizedSet randomizer = new RandomizedSet<>(); + private final RandomizedSet randomizerNether = new RandomizedSet<>(); private final List displayRecipes = Arrays.asList( - new ItemStack(Material.GRAVEL), - SlimefunItems.SIFTED_ORE, - - new ItemStack(Material.GRAVEL), - new ItemStack(Material.FLINT), - - new ItemStack(Material.GRAVEL), - new ItemStack(Material.CLAY_BALL) + new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT), + new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE, + new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL), + new ItemStack(Material.GRAVEL), new ItemStack(Material.IRON_NUGGET), + + new ItemStack(Material.SOUL_SAND), new ItemStack(Material.QUARTZ), + new ItemStack(Material.SOUL_SAND), new ItemStack(Material.GOLD_NUGGET), + new ItemStack(Material.SOUL_SAND), new ItemStack(Material.NETHER_WART), + new ItemStack(Material.SOUL_SAND), new ItemStack(Material.BLAZE_POWDER), + new ItemStack(Material.SOUL_SAND), new ItemStack(Material.GLOWSTONE_DUST), + new ItemStack(Material.SOUL_SAND), new ItemStack(Material.GHAST_TEAR) ); public ElectricGoldPan(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) { super(category, item, recipeType, recipe); } + + @Override + public void postRegister() { + super.postRegister(); + + String goldPan = "GOLD_PAN"; + String netherGoldPan = "NETHER_GOLD_PAN"; + + add(false, SlimefunItems.SIFTED_ORE, (int) Slimefun.getItemValue(goldPan, "chance.SIFTED_ORE")); + add(false, new ItemStack(Material.CLAY_BALL), (int) Slimefun.getItemValue(goldPan, "chance.CLAY")); + add(false, new ItemStack(Material.FLINT), (int) Slimefun.getItemValue(goldPan, "chance.FLINT")); + add(false, new ItemStack(Material.IRON_NUGGET), (int) Slimefun.getItemValue(goldPan, "chance.IRON_NUGGET")); + + add(true, new ItemStack(Material.QUARTZ), (int) Slimefun.getItemValue(netherGoldPan, "chance.QUARTZ")); + add(true, new ItemStack(Material.GOLD_NUGGET), (int) Slimefun.getItemValue(netherGoldPan, "chance.GOLD_NUGGET")); + add(true, new ItemStack(Material.NETHER_WART), (int) Slimefun.getItemValue(netherGoldPan, "chance.NETHER_WART")); + add(true, new ItemStack(Material.BLAZE_POWDER), (int) Slimefun.getItemValue(netherGoldPan, "chance.BLAZE_POWDER")); + add(true, new ItemStack(Material.GLOWSTONE_DUST), (int) Slimefun.getItemValue(netherGoldPan, "chance.GLOWSTONE_DUST")); + add(true, new ItemStack(Material.GHAST_TEAR), (int) Slimefun.getItemValue(netherGoldPan, "chance.GHAST_TEAR")); + } + + private void add(boolean nether, ItemStack item, int chance) { + if (nether) { + randomizerNether.add(item, chance); + } + else { + randomizer.add(item, chance); + } + } @Override public String getInventoryTitle() { @@ -74,7 +108,7 @@ public abstract class ElectricGoldPan extends AContainer implements RecipeDispla ChargableBlock.addCharge(b, -getEnergyConsumption()); menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); - pushItems(b, processing.get(b).getOutput()); + menu.pushItem(processing.get(b).getOutput()[0].clone(), getOutputSlots()); progress.remove(b); processing.remove(b); @@ -83,12 +117,22 @@ public abstract class ElectricGoldPan extends AContainer implements RecipeDispla else { for (int slot: getInputSlots()) { if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), new ItemStack(Material.GRAVEL), true)) { - ItemStack output = SlimefunItems.SIFTED_ORE; - if (random.nextInt(100) < 16) output = new ItemStack(Material.FLINT); - if (random.nextInt(100) < 16) output = new ItemStack(Material.CLAY_BALL); + ItemStack output = randomizer.getRandom(); MachineRecipe r = new MachineRecipe(3 / getSpeed(), new ItemStack[0], new ItemStack[] {output}); - if (!fits(b, r.getOutput())) return; + if (!menu.fits(output, getOutputSlots())) return; + + menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1)); + processing.put(b, r); + progress.put(b, r.getTicks()); + break; + } + else if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), new ItemStack(Material.SOUL_SAND), true)) { + ItemStack output = randomizerNether.getRandom(); + + MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {output}); + if (!menu.fits(output, getOutputSlots())) return; + menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1)); processing.put(b, r); progress.put(b, r.getTicks()); diff --git a/src/main/java/me/mrCookieSlime/Slimefun/api/PlayerProfile.java b/src/main/java/me/mrCookieSlime/Slimefun/api/PlayerProfile.java index 50d38fc33..cb3af7dd4 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/api/PlayerProfile.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/api/PlayerProfile.java @@ -225,10 +225,7 @@ public final class PlayerProfile { * * @param uuid The UUID of the profile you are trying to retrieve. * @return The PlayerProfile of this player - * - * @deprecated Use {@link #fromUUID(UUID, Consumer)} */ - @Deprecated public static PlayerProfile fromUUID(UUID uuid) { PlayerProfile profile = SlimefunPlugin.getUtilities().profiles.get(uuid); diff --git a/src/main/java/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java b/src/main/java/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java index 507e86d0d..7688f200a 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/hooks/PlaceholderAPIHook.java @@ -38,7 +38,6 @@ public class PlaceholderAPIHook extends PlaceholderExpansion { return true; } - @SuppressWarnings("deprecation") @Override public String onRequest(OfflinePlayer p, String params) { if (params.equals("researches_total_xp_levels_spent")) { diff --git a/src/main/java/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java b/src/main/java/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java index ca89c98b8..943caa724 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/listeners/PlayerQuitListener.java @@ -12,8 +12,7 @@ public class PlayerQuitListener implements Listener { public PlayerQuitListener(SlimefunPlugin plugin) { plugin.getServer().getPluginManager().registerEvents(this, plugin); } - - @SuppressWarnings("deprecation") + @EventHandler public void onDisconnect(PlayerQuitEvent e) { if (PlayerProfile.isLoaded(e.getPlayer().getUniqueId())) {