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

Refactoring

This commit is contained in:
TheBusyBiscuit 2019-08-29 16:19:23 +02:00
parent 388873d6a2
commit bbf0bfd006
13 changed files with 146 additions and 118 deletions

View File

@ -4,6 +4,7 @@ import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.FireworkEffect;
import org.bukkit.FireworkEffect.Type;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.FireworkEffectMeta;
@ -651,9 +652,13 @@ public final class SlimefunItems {
public static final ItemStack ELYTRA = new ItemStack(Material.ELYTRA);
public static final ItemStack ELYTRA_SCALE = new CustomItem(Material.FEATHER, "&bEyltra Scale");
public static final ItemStack INFUSED_ELYTRA = new CustomItem(new CustomItem(ELYTRA, "&5Infused Elytra"), new String[] {"MENDING-1"});
public static final ItemStack INFUSED_ELYTRA = new CustomItem(ELYTRA, "&5Infused Elytra");
public static final ItemStack SOULBOUND_ELYTRA = new CustomItem(ELYTRA, "&cSoulbound Elytra");
static {
INFUSED_ELYTRA.addEnchantment(Enchantment.MENDING, 1);
}
// ChestTerminal Addon
public static final ItemStack CHEST_TERMINAL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2E0NGZmM2E1ZjQ5YzY5Y2FiNjc2YmFkOGQ5OGEwNjNmYTc4Y2ZhNjE5MTZmZGVmM2UyNjc1NTdmZWMxODI4MyJ9fX0="), "&3CT Access Terminal", "&7If this Block is connected to a", "&7Cargo Network, it will allow you to remotely", "&7interact with any Items supplied by", "&7Nodes tuned into the ChestTerminal Channel");

View File

@ -68,21 +68,6 @@ public final class SlimefunManager {
// Material.COAL, Material.SKULL_ITEM, Material.RAW_FISH, Material.COOKED_FISH);
public static boolean isItemSimiliar(ItemStack item, ItemStack SFitem, boolean lore) {
return isItemSimiliar(item, SFitem, lore, DataType.IF_COLORED);
}
@Deprecated
public static enum DataType {
ALWAYS,
NEVER,
IF_COLORED;
}
@Deprecated
public static boolean isItemSimiliar(ItemStack item, ItemStack SFitem, boolean lore, DataType data) {
if (item == null) return SFitem == null;
if (SFitem == null) return false;
@ -116,6 +101,21 @@ public final class SlimefunManager {
else return false;
}
@Deprecated
public static enum DataType {
ALWAYS,
NEVER,
IF_COLORED;
}
@Deprecated
public static boolean isItemSimiliar(ItemStack item, ItemStack SFitem, boolean lore, DataType data) {
return isItemSimiliar(item, SFitem, lore);
}
private static boolean equalsLore(List<String> lore, List<String> lore2) {
String string1 = "", string2 = "";
for (String string: lore) {

View File

@ -166,6 +166,8 @@ public final class SlimefunSetup {
private SlimefunSetup() {}
public static void setupItems() {
Random random = new Random();
new SlimefunItem(Categories.WEAPONS, SlimefunItems.GRANDMAS_WALKING_STICK, "GRANDMAS_WALKING_STICK", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null})
.register(true);
@ -556,8 +558,6 @@ public final class SlimefunSetup {
new String[] {"chance.FLINT", "chance.CLAY", "chance.SIFTED_ORE"}, new Integer[] {47, 28, 15})
.register(true, new ItemInteractionHandler() {
private Random random = new Random();
@Override
public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) {
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GOLD_PAN, true)) {
@ -1744,7 +1744,10 @@ public final class SlimefunSetup {
Block b = e.getBlock().getRelative(x, y, z);
if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), explosiveblacklist)) {
if (CSCoreLib.getLib().getProtectionManager().canBuild(e.getPlayer().getUniqueId(), b)) {
if (SlimefunStartup.instance.isCoreProtectInstalled()) SlimefunStartup.instance.getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData());
if (SlimefunStartup.instance.getHooks().isCoreProtectInstalled()) {
SlimefunStartup.instance.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData());
}
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType());
SlimefunItem sfItem = BlockStorage.check(b);
boolean allow = false;
@ -1769,7 +1772,7 @@ public final class SlimefunSetup {
b.setType(Material.AIR);
}
if (damageOnUse) {
if (!item.getEnchantments().containsKey(Enchantment.DURABILITY) || SlimefunStartup.randomize(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) {
if (!item.getEnchantments().containsKey(Enchantment.DURABILITY) || random.nextInt(100) <= (60 + 40 / (item.getEnchantmentLevel(Enchantment.DURABILITY) + 1))) {
PlayerInventory.damageItemInHand(e.getPlayer());
}
}
@ -2096,7 +2099,7 @@ public final class SlimefunSetup {
for (int i = 0; i < 4; i++) {
if (e.getPlayer().getInventory().getItemInMainHand() != null) {
if (e.getPlayer().getInventory().getItemInMainHand().getEnchantments().containsKey(Enchantment.DURABILITY)) {
if (SlimefunStartup.randomize(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer());
if (random.nextInt(100) <= (60 + 40 / (e.getPlayer().getInventory().getItemInMainHand().getEnchantmentLevel(Enchantment.DURABILITY) + 1))) PlayerInventory.damageItemInHand(e.getPlayer());
}
else PlayerInventory.damageItemInHand(e.getPlayer());
}
@ -2570,7 +2573,7 @@ public final class SlimefunSetup {
gifts.add(new CustomItem(SlimefunItems.CARROT_JUICE, 1));
}
gifts.add(new SkullItem("mrCookieSlime"));
gifts.add(new SkullItem("TheBusyBiscuit"));
gifts.add(new SkullItem("timtower"));
gifts.add(new SkullItem("bwfcwalshy"));
gifts.add(new SkullItem("jadedcat"));

View File

@ -50,8 +50,7 @@ import me.mrCookieSlime.Slimefun.autosave.BlockAutoSaver;
import me.mrCookieSlime.Slimefun.autosave.PlayerAutoSaver;
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
import me.mrCookieSlime.Slimefun.commands.SlimefunTabCompleter;
import me.mrCookieSlime.Slimefun.hooks.PlaceholderAPIHook;
import me.mrCookieSlime.Slimefun.hooks.WorldEditHook;
import me.mrCookieSlime.Slimefun.hooks.SlimefunHooks;
import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector;
import me.mrCookieSlime.Slimefun.hooks.github.GitHubSetup;
import me.mrCookieSlime.Slimefun.listeners.AncientAltarListener;
@ -61,7 +60,6 @@ import me.mrCookieSlime.Slimefun.listeners.AutonomousToolsListener;
import me.mrCookieSlime.Slimefun.listeners.BackpackListener;
import me.mrCookieSlime.Slimefun.listeners.BlockListener;
import me.mrCookieSlime.Slimefun.listeners.BowListener;
import me.mrCookieSlime.Slimefun.listeners.ClearLaggIntegration;
import me.mrCookieSlime.Slimefun.listeners.CoolerListener;
import me.mrCookieSlime.Slimefun.listeners.DamageListener;
import me.mrCookieSlime.Slimefun.listeners.FurnaceListener;
@ -77,8 +75,6 @@ import me.mrCookieSlime.Slimefun.listeners.ToolListener;
import me.mrCookieSlime.Slimefun.listeners.WorldListener;
import me.mrCookieSlime.Slimefun.utils.Settings;
import me.mrCookieSlime.Slimefun.utils.Utilities;
import net.coreprotect.CoreProtect;
import net.coreprotect.CoreProtectAPI;
public final class SlimefunStartup extends JavaPlugin {
@ -92,14 +88,9 @@ public final class SlimefunStartup extends JavaPlugin {
public static TickerTask ticker;
private CoreProtectAPI coreProtectAPI;
private Utilities utilities = new Utilities();
private Settings settings;
private boolean clearlag = false;
private boolean exoticGarden = false;
private boolean coreProtect = false;
private SlimefunHooks hooks;
// Supported Versions of Minecraft
private final String[] supported = {"v1_14_"};
@ -327,33 +318,7 @@ public final class SlimefunStartup extends JavaPlugin {
// Hooray!
System.out.println("[Slimefun] Finished!");
clearlag = getServer().getPluginManager().isPluginEnabled("ClearLag");
coreProtect = getServer().getPluginManager().isPluginEnabled("CoreProtect");
getServer().getScheduler().runTaskLater(this, () -> {
exoticGarden = getServer().getPluginManager().isPluginEnabled("ExoticGarden"); // Had to do it this way, otherwise it seems disabled.
}, 0);
if (clearlag) new ClearLaggIntegration(this);
if (coreProtect) coreProtectAPI = ((CoreProtect) getServer().getPluginManager().getPlugin("CoreProtect")).getAPI();
// WorldEdit Hook to clear Slimefun Data upon //set 0 //cut or any other equivalent
if (getServer().getPluginManager().isPluginEnabled("WorldEdit")) {
try {
Class.forName("com.sk89q.worldedit.extent.Extent");
new WorldEditHook();
System.out.println("[Slimefun] Successfully hooked into WorldEdit!");
} catch (Exception x) {
System.err.println("[Slimefun] Failed to hook into WorldEdit!");
System.err.println("[Slimefun] Maybe consider updating WorldEdit or Slimefun?");
}
}
if (getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) {
new PlaceholderAPIHook().register();
}
hooks = new SlimefunHooks(this);
OreWasher.items = new ItemStack[] {SlimefunItems.IRON_DUST, SlimefunItems.GOLD_DUST, SlimefunItems.ALUMINUM_DUST, SlimefunItems.COPPER_DUST, SlimefunItems.ZINC_DUST, SlimefunItems.TIN_DUST, SlimefunItems.LEAD_DUST, SlimefunItems.SILVER_DUST, SlimefunItems.MAGNESIUM_DUST};
@ -477,20 +442,8 @@ public final class SlimefunStartup extends JavaPlugin {
return CSCoreLib.randomizer().nextInt(max) <= percentage;
}
public boolean isClearLagInstalled() {
return clearlag;
}
public boolean isExoticGardenInstalled () {
return exoticGarden;
}
public boolean isCoreProtectInstalled() {
return coreProtect;
}
public CoreProtectAPI getCoreProtectAPI() {
return coreProtectAPI;
public SlimefunHooks getHooks() {
return hooks;
}
public Utilities getUtilities() {

View File

@ -822,7 +822,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
private void exoticFarm(Block b, Block block) {
farm(b, block);
if (SlimefunStartup.instance.isExoticGardenInstalled()) {
if (SlimefunStartup.instance.getHooks().isExoticGardenInstalled()) {
ItemStack drop = ExoticGarden.harvestPlant(block);
if (drop != null && fits(b, drop)) {
pushItems(b, drop);

View File

@ -11,7 +11,6 @@ import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager.DataType;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu;
@ -199,7 +198,6 @@ public class CargoManager {
BlockMenu menu = BlockStorage.getInventory(block.getLocation());
boolean lore = blockInfo.getString("filter-lore").equals("true");
boolean data = blockInfo.getString("filter-durability").equals("true");
if (blockInfo.getString("filter-type").equals("whitelist")) {
List<ItemStack> items = new ArrayList<>();
@ -218,18 +216,18 @@ public class CargoManager {
BlockStorage.addBlockInfo(block, "index", String.valueOf(index));
return SlimefunManager.isItemSimiliar(item, items.get(index), lore, data ? DataType.ALWAYS: DataType.NEVER);
return SlimefunManager.isItemSimiliar(item, items.get(index), lore);
}
else {
for (ItemStack stack: items) {
if (SlimefunManager.isItemSimiliar(item, stack, lore, data ? DataType.ALWAYS: DataType.NEVER)) return true;
if (SlimefunManager.isItemSimiliar(item, stack, lore)) return true;
}
return false;
}
}
else {
for (int slot: slots) {
if (menu.getItemInSlot(slot) != null && SlimefunManager.isItemSimiliar(item, new CustomItem(menu.getItemInSlot(slot), 1), lore, data ? DataType.ALWAYS: DataType.NEVER)) {
if (menu.getItemInSlot(slot) != null && SlimefunManager.isItemSimiliar(item, new CustomItem(menu.getItemInSlot(slot), 1), lore)) {
return false;
}
}

View File

@ -35,6 +35,7 @@ import me.mrCookieSlime.Slimefun.Objects.Research;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Setup.Messages;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
import me.mrCookieSlime.Slimefun.api.Slimefun;
public class SlimefunCommand implements CommandExecutor, Listener {
@ -200,8 +201,9 @@ public class SlimefunCommand implements CommandExecutor, Listener {
if (args.length == 3) {
if (Players.isOnline(args[1])) {
if (Slimefun.listIDs().contains(args[2].toUpperCase())) {
Messages.local.sendTranslation(Bukkit.getPlayer(args[1]), "messages.given-item", true, new Variable("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()), new Variable("%amount%", "1"));
Bukkit.getPlayer(args[1]).getInventory().addItem(SlimefunItem.getByID(args[2].toUpperCase()).getItem());
Player p = Bukkit.getPlayer(args[1]);
Messages.local.sendTranslation(p, "messages.given-item", true, new Variable("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()), new Variable("%amount%", "1"));
p.getInventory().addItem(SlimefunItem.getByID(args[2].toUpperCase()).getItem());
Messages.local.sendTranslation(sender, "messages.give-item", true, new Variable("%player%", args[1]), new Variable("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()), new Variable("%amount%", "1"));
}
else Messages.local.sendTranslation(sender, "messages.not-valid-item", true, new Variable("%item%", args[2]));
@ -254,15 +256,17 @@ public class SlimefunCommand implements CommandExecutor, Listener {
if (sender.hasPermission("slimefun.cheat.researches") || !(sender instanceof Player)) {
if (Players.isOnline(args[1])) {
Player p = Bukkit.getPlayer(args[1]);
PlayerProfile profile = PlayerProfile.fromUUID(p.getUniqueId());
if (args[2].equalsIgnoreCase("all")) {
for (Research res : Research.list()) {
if (!res.hasUnlocked(p)) Messages.local.sendTranslation(sender, "messages.give-research", true, new Variable("%player%", p.getName()), new Variable("%research%", res.getName()));
if (!profile.hasUnlocked(res)) Messages.local.sendTranslation(sender, "messages.give-research", true, new Variable("%player%", p.getName()), new Variable("%research%", res.getName()));
res.unlock(p, true);
}
}
else if (args[2].equalsIgnoreCase("reset")) {
for (Research res : Research.list()) {
res.lock(p);
profile.setResearched(res, false);
}
Messages.local.sendTranslation(p, "commands.research.reset", true, new Variable("%player%", args[1]));
}

View File

@ -1,4 +1,4 @@
package me.mrCookieSlime.Slimefun.listeners;
package me.mrCookieSlime.Slimefun.hooks;
import java.util.Iterator;
@ -10,9 +10,9 @@ import org.bukkit.entity.Item;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class ClearLaggIntegration implements Listener {
public class ClearLagHook implements Listener {
public ClearLaggIntegration(SlimefunStartup plugin) {
public ClearLagHook(SlimefunStartup plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}

View File

@ -0,0 +1,74 @@
package me.mrCookieSlime.Slimefun.hooks;
import me.mrCookieSlime.Slimefun.SlimefunStartup;
import net.coreprotect.CoreProtect;
import net.coreprotect.CoreProtectAPI;
public final class SlimefunHooks {
private boolean exoticGarden = false;
private boolean coreProtect = false;
private boolean clearLag = false;
private boolean worldEdit = false;
private boolean placeHolderAPI = false;
private CoreProtectAPI coreProtectAPI;
public SlimefunHooks(SlimefunStartup plugin) {
if (plugin.getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) {
placeHolderAPI = true;
new PlaceholderAPIHook().register();
}
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {
if (plugin.getServer().getPluginManager().isPluginEnabled("ClearLag")) {
clearLag = true;
new ClearLagHook(plugin);
}
exoticGarden = plugin.getServer().getPluginManager().isPluginEnabled("ExoticGarden"); // Had to do it this way, otherwise it seems disabled.
if (plugin.getServer().getPluginManager().isPluginEnabled("CoreProtect")) {
coreProtectAPI = ((CoreProtect) plugin.getServer().getPluginManager().getPlugin("CoreProtect")).getAPI();
}
// WorldEdit Hook to clear Slimefun Data upon //set 0 //cut or any other equivalent
if (plugin.getServer().getPluginManager().isPluginEnabled("WorldEdit")) {
try {
Class.forName("com.sk89q.worldedit.extent.Extent");
worldEdit = true;
new WorldEditHook();
System.out.println("[Slimefun] Successfully hooked into WorldEdit!");
} catch (Exception x) {
System.err.println("[Slimefun] Failed to hook into WorldEdit!");
System.err.println("[Slimefun] Maybe consider updating WorldEdit or Slimefun?");
}
}
});
}
public boolean isExoticGardenInstalled() {
return exoticGarden;
}
public boolean isCoreProtectInstalled() {
return coreProtect;
}
public boolean isClearLagInstalled() {
return clearLag;
}
public boolean isWorldEditInstalled() {
return worldEdit;
}
public boolean isPlaceholderAPIInstalled() {
return placeHolderAPI;
}
public CoreProtectAPI getCoreProtectAPI() {
return coreProtectAPI;
}
}

View File

@ -225,22 +225,6 @@ public class ItemListener implements Listener {
if (p.isSneaking()) SlimefunGuide.openSettings(p, item);
else p.chat("/sf cheat");
}
else if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getDeprecatedItem(true), true)) {
item = SlimefunGuide.getItem(BookDesign.BOOK);
p.getInventory().setItemInMainHand(item);
PlayerInventory.update(p);
if (p.isSneaking()) SlimefunGuide.openSettings(p, item);
else SlimefunGuide.openGuide(p, true);
}
else if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getDeprecatedItem(false), true)) {
item = SlimefunGuide.getItem(BookDesign.CHEST);
p.getInventory().setItemInMainHand(item);
PlayerInventory.update(p);
if (p.isSneaking()) SlimefunGuide.openSettings(p, item);
else SlimefunGuide.openGuide(p, false);
}
else if (SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInMainHand(), SlimefunItems.DEBUG_FISH, true) || SlimefunManager.isItemSimiliar(e.getPlayer().getInventory().getItemInOffHand(), SlimefunItems.DEBUG_FISH, true)) {
}
else if (Slimefun.hasUnlocked(p, item, true)) {

View File

@ -2,6 +2,7 @@ package me.mrCookieSlime.Slimefun.listeners;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Set;
import org.bukkit.Material;
@ -38,6 +39,8 @@ import me.mrCookieSlime.Slimefun.api.Slimefun;
public class TalismanListener implements Listener {
private Random random;
public TalismanListener(SlimefunStartup plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
@ -46,7 +49,7 @@ public class TalismanListener implements Listener {
public void onDamageGet(EntityDamageEvent e) {
if (!e.isCancelled()) {
if (e instanceof EntityDamageByEntityEvent) {
if (((EntityDamageByEntityEvent) e).getDamager() instanceof Player && SlimefunStartup.chance(100, 45)) {
if (((EntityDamageByEntityEvent) e).getDamager() instanceof Player && random.nextInt(100) < 45) {
if (SlimefunManager.isItemSimiliar(((Player) ((EntityDamageByEntityEvent) e).getDamager()).getInventory().getItemInMainHand(), SlimefunItem.getItem("BLADE_OF_VAMPIRES"), true)) {
((Player) ((EntityDamageByEntityEvent) e).getDamager()).playSound(((EntityDamageByEntityEvent) e).getDamager().getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 0.7F, 0.7F);
((Player) ((EntityDamageByEntityEvent) e).getDamager()).addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 1));
@ -124,7 +127,7 @@ public class TalismanListener implements Listener {
if ((Boolean) Slimefun.getItemValue("MAGICIAN_TALISMAN", "allow-enchantments." + en.getKey().getKey() + ".level." + i) && en.canEnchantItem(e.getItem())) enchantments.add(en.getKey().getKey() + "-" + i);
}
}
String enchant = enchantments.get(SlimefunStartup.randomize(enchantments.size()));
String enchant = enchantments.get(random.nextInt(enchantments.size()));
e.getEnchantsToAdd().put(Enchantment.getByKey(NamespacedKey.minecraft(enchant.split("-")[0])), Integer.parseInt(enchant.split("-")[1]));
}
if (!e.getEnchantsToAdd().containsKey(Enchantment.SILK_TOUCH) && Enchantment.LOOT_BONUS_BLOCKS.canEnchantItem(e.getItem())) {
@ -132,9 +135,9 @@ public class TalismanListener implements Listener {
if (e.getEnchantsToAdd().containsKey(Enchantment.LOOT_BONUS_BLOCKS)) e.getEnchantsToAdd().remove(Enchantment.LOOT_BONUS_BLOCKS);
Set<Enchantment> enchantments = e.getEnchantsToAdd().keySet();
for (Enchantment en : enchantments) {
if (SlimefunStartup.chance(100, 40)) e.getEnchantsToAdd().put(en, SlimefunStartup.randomize(3) + 1);
if (random.nextInt(100) < 40) e.getEnchantsToAdd().put(en, random.nextInt(3) + 1);
}
e.getItem().addUnsafeEnchantment(Enchantment.LOOT_BONUS_BLOCKS, SlimefunStartup.randomize(3) + 3);
e.getItem().addUnsafeEnchantment(Enchantment.LOOT_BONUS_BLOCKS, random.nextInt(3) + 3);
}
}
}
@ -152,9 +155,9 @@ public class TalismanListener implements Listener {
if (item != null) {
if (item.getEnchantments().containsKey(Enchantment.LOOT_BONUS_BLOCKS) && !item.getEnchantments().containsKey(Enchantment.SILK_TOUCH)) {
fortune = SlimefunStartup.randomize(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1;
fortune =random.nextInt(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1;
if (fortune <= 0) fortune = 1;
fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + SlimefunStartup.randomize(5) : 1) * (fortune + 1);
fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + random.nextInt(5) : 1) * (fortune + 1);
}
if (!item.getEnchantments().containsKey(Enchantment.SILK_TOUCH) && e.getBlock().getType().toString().endsWith("_ORE")) {

View File

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.Set;
import org.bukkit.Material;
@ -42,7 +43,8 @@ import me.mrCookieSlime.Slimefun.utils.Utilities;
public class ToolListener implements Listener {
// Materials that require a Block under it, e.g. Pressure Plates
private final Set<Material> sensitiveMaterials = new HashSet<>();
private Set<Material> sensitiveMaterials = new HashSet<>();
private Random random = new Random();
private Utilities utilities;
public ToolListener(SlimefunStartup plugin) {
@ -145,7 +147,7 @@ public class ToolListener implements Listener {
gifts.add(new CustomItem(SlimefunItems.CHRISTMAS_FRUIT_CAKE, 4));
gifts.add(new CustomItem(SlimefunItems.CHRISTMAS_APPLE_PIE, 4));
}
gifts.add(new SkullItem("mrCookieSlime"));
gifts.add(new SkullItem("TheBusyBiscuit"));
gifts.add(new SkullItem("timtower"));
gifts.add(new SkullItem("bwfcwalshy"));
gifts.add(new SkullItem("jadedcat"));
@ -163,7 +165,7 @@ public class ToolListener implements Listener {
"" +
"- mrCookieSlime"
);
e.getBlockPlaced().getWorld().dropItemNaturally(e.getBlockPlaced().getLocation(), gifts.get(SlimefunStartup.randomize(gifts.size())));
e.getBlockPlaced().getWorld().dropItemNaturally(e.getBlockPlaced().getLocation(), gifts.get(random.nextInt(gifts.size())));
}
else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.CARGO_INPUT, false)) {
if (e.getBlock().getY() != e.getBlockAgainst().getY()) {
@ -240,9 +242,9 @@ public class ToolListener implements Listener {
}
else if (item != null) {
if (item.getEnchantments().containsKey(Enchantment.LOOT_BONUS_BLOCKS) && !item.getEnchantments().containsKey(Enchantment.SILK_TOUCH)) {
fortune = SlimefunStartup.randomize(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1;
fortune = random.nextInt(item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) + 2) - 1;
if (fortune <= 0) fortune = 1;
fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + SlimefunStartup.randomize(5) : 1) * (fortune + 1);
fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + random.nextInt(5) : 1) * (fortune + 1);
}
for (ItemHandler handler : SlimefunItem.getHandlers("BlockBreakHandler")) {
@ -252,11 +254,13 @@ public class ToolListener implements Listener {
if (!drops.isEmpty()) {
e.getBlock().setType(Material.AIR);
if(e.isDropItems())
for (ItemStack drop : drops) {
if (drop != null)
e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation(), drop);
if (e.isDropItems()) {
for (ItemStack drop : drops) {
if (drop != null) {
e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation(), drop);
}
}
}
}
}

View File

@ -5,7 +5,7 @@ description: Slimefun basically turns your entire Server into a FTB modpack with
website: http://TheBusyBiscuit.github.io/
main: me.mrCookieSlime.Slimefun.SlimefunStartup
softdepend: [CS-CoreLib, ClearLag, WorldEdit, PlaceholderAPI]
softdepend: [CS-CoreLib, PlaceholderAPI]
api-version: 1.14