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

Improved Guide Performance + Refactoring

This commit is contained in:
TheBusyBiscuit 2019-09-05 13:43:41 +02:00
parent 8e1bbff997
commit 307a4394ff
6 changed files with 49 additions and 50 deletions

View File

@ -41,11 +41,11 @@ import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout;
public class SlimefunCommand implements CommandExecutor, Listener { public class SlimefunCommand implements CommandExecutor, Listener {
private SlimefunPlugin plugin; private final SlimefunPlugin plugin;
private List<String> arguments = new ArrayList<>(); private final List<String> arguments = new ArrayList<>();
private List<String> descriptions = new ArrayList<>(); private final List<String> descriptions = new ArrayList<>();
private List<String> tabs = new ArrayList<>(); private final List<String> tabs = new ArrayList<>();
public SlimefunCommand(SlimefunPlugin plugin) { public SlimefunCommand(SlimefunPlugin plugin) {
this.plugin = plugin; this.plugin = plugin;

View File

@ -12,7 +12,7 @@ import org.bukkit.command.TabCompleter;
public class SlimefunTabCompleter implements TabCompleter { public class SlimefunTabCompleter implements TabCompleter {
private SlimefunCommand command; private final SlimefunCommand command;
public SlimefunTabCompleter(SlimefunCommand command) { public SlimefunTabCompleter(SlimefunCommand command) {
this.command = command; this.command = command;

View File

@ -27,31 +27,29 @@ import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.PlayerProfile;
import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory; import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory;
import me.mrCookieSlime.Slimefun.utils.Utilities;
public class BackpackListener implements Listener { public class BackpackListener implements Listener {
private Utilities utilities;
public BackpackListener(SlimefunPlugin plugin) { public BackpackListener(SlimefunPlugin plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin); plugin.getServer().getPluginManager().registerEvents(this, plugin);
utilities = SlimefunPlugin.getUtilities();
} }
@EventHandler @EventHandler
public void onClose(InventoryCloseEvent e) { public void onClose(InventoryCloseEvent e) {
if (utilities.enchanting.containsKey(e.getPlayer().getUniqueId())) utilities.enchanting.remove(e.getPlayer().getUniqueId()); if (SlimefunPlugin.getUtilities().enchanting.containsKey(e.getPlayer().getUniqueId())) {
SlimefunPlugin.getUtilities().enchanting.remove(e.getPlayer().getUniqueId());
}
if (utilities.backpack.containsKey(e.getPlayer().getUniqueId())) { if (SlimefunPlugin.getUtilities().backpack.containsKey(e.getPlayer().getUniqueId())) {
((Player) e.getPlayer()).playSound(e.getPlayer().getLocation(), Sound.ENTITY_HORSE_ARMOR, 1F, 1F); ((Player) e.getPlayer()).playSound(e.getPlayer().getLocation(), Sound.ENTITY_HORSE_ARMOR, 1F, 1F);
PlayerProfile.getBackpack(utilities.backpack.get(e.getPlayer().getUniqueId())).markDirty(); PlayerProfile.getBackpack(SlimefunPlugin.getUtilities().backpack.get(e.getPlayer().getUniqueId())).markDirty();
utilities.backpack.remove(e.getPlayer().getUniqueId()); SlimefunPlugin.getUtilities().backpack.remove(e.getPlayer().getUniqueId());
} }
} }
@EventHandler @EventHandler
public void onItemDrop(PlayerDropItemEvent e) { public void onItemDrop(PlayerDropItemEvent e) {
if (utilities.backpack.containsKey(e.getPlayer().getUniqueId())){ if (SlimefunPlugin.getUtilities().backpack.containsKey(e.getPlayer().getUniqueId())){
ItemStack item = e.getItemDrop().getItemStack(); ItemStack item = e.getItemDrop().getItemStack();
SlimefunItem sfItem = SlimefunItem.getByItem(item); SlimefunItem sfItem = SlimefunItem.getByItem(item);
if (sfItem instanceof SlimefunBackpack) e.setCancelled(true); if (sfItem instanceof SlimefunBackpack) e.setCancelled(true);
@ -60,8 +58,8 @@ public class BackpackListener implements Listener {
@EventHandler @EventHandler
public void onClick(InventoryClickEvent e) { public void onClick(InventoryClickEvent e) {
if (utilities.backpack.containsKey(e.getWhoClicked().getUniqueId())) { if (SlimefunPlugin.getUtilities().backpack.containsKey(e.getWhoClicked().getUniqueId())) {
ItemStack item = utilities.backpack.get(e.getWhoClicked().getUniqueId()); ItemStack item = SlimefunPlugin.getUtilities().backpack.get(e.getWhoClicked().getUniqueId());
if (e.getClick() == ClickType.NUMBER_KEY) { if (e.getClick() == ClickType.NUMBER_KEY) {
ItemStack hotbarItem = e.getWhoClicked().getInventory().getItem(e.getHotbarButton()); ItemStack hotbarItem = e.getWhoClicked().getInventory().getItem(e.getHotbarButton());
SlimefunItem sfItem = SlimefunItem.getByItem(hotbarItem); SlimefunItem sfItem = SlimefunItem.getByItem(hotbarItem);
@ -134,10 +132,10 @@ public class BackpackListener implements Listener {
} }
} }
if(!utilities.backpack.containsValue(item)) { if(!SlimefunPlugin.getUtilities().backpack.containsValue(item)) {
PlayerProfile.getBackpack(item).open(p); PlayerProfile.getBackpack(item).open(p);
p.playSound(p.getLocation(), Sound.ENTITY_HORSE_ARMOR, 1F, 1F); p.playSound(p.getLocation(), Sound.ENTITY_HORSE_ARMOR, 1F, 1F);
utilities.backpack.put(p.getUniqueId(), item); SlimefunPlugin.getUtilities().backpack.put(p.getUniqueId(), item);
} }
else Messages.local.sendTranslation(p, "backpack.already-open", true); else Messages.local.sendTranslation(p, "backpack.already-open", true);
} }

View File

@ -18,49 +18,48 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler;
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler; import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
import me.mrCookieSlime.Slimefun.utils.Utilities;
public class BowListener implements Listener { public class BowListener implements Listener {
private Utilities utilities;
public BowListener(SlimefunPlugin plugin) { public BowListener(SlimefunPlugin plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin); plugin.getServer().getPluginManager().registerEvents(this, plugin);
utilities = SlimefunPlugin.getUtilities();
} }
@EventHandler @EventHandler
public void onBowUse(EntityShootBowEvent e) { public void onBowUse(EntityShootBowEvent e) {
if (!(e.getEntity() instanceof Player) || !(e.getProjectile() instanceof Arrow)) return; if (e.getEntity() instanceof Player && e.getProjectile() instanceof Arrow && SlimefunItem.getByItem(e.getBow()) != null) {
if (SlimefunItem.getByItem(e.getBow()) != null) utilities.arrows.put(e.getProjectile().getUniqueId(), e.getBow()); SlimefunPlugin.getUtilities().arrows.put(e.getProjectile().getUniqueId(), e.getBow());
}
} }
@EventHandler @EventHandler
public void onArrowHit(final ProjectileHitEvent e) { public void onArrowHit(final ProjectileHitEvent e) {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
if (!e.getEntity().isValid()) return; if (!e.getEntity().isValid()) return;
utilities.arrows.remove(e.getEntity().getUniqueId()); SlimefunPlugin.getUtilities().arrows.remove(e.getEntity().getUniqueId());
if (e.getEntity() instanceof Arrow) handleGrapplingHook((Arrow) e.getEntity()); if (e.getEntity() instanceof Arrow) handleGrapplingHook((Arrow) e.getEntity());
}, 4L); }, 4L);
} }
private void handleGrapplingHook(Arrow arrow) { private void handleGrapplingHook(Arrow arrow) {
if (arrow != null && arrow.getShooter() instanceof Player && utilities.jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) { if (arrow != null && arrow.getShooter() instanceof Player && SlimefunPlugin.getUtilities().jumpState.containsKey(((Player) arrow.getShooter()).getUniqueId())) {
final Player p = (Player) arrow.getShooter(); final Player p = (Player) arrow.getShooter();
if (p.getGameMode() != GameMode.CREATIVE && utilities.jumpState.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK")); if (p.getGameMode() != GameMode.CREATIVE && SlimefunPlugin.getUtilities().jumpState.get(p.getUniqueId())) arrow.getWorld().dropItem(arrow.getLocation(), SlimefunItem.getItem("GRAPPLING_HOOK"));
if (p.getLocation().distance(arrow.getLocation()) < 3.0D) { if (p.getLocation().distance(arrow.getLocation()) < 3.0D) {
if (arrow.getLocation().getY() > p.getLocation().getY()) { if (arrow.getLocation().getY() > p.getLocation().getY()) {
p.setVelocity(new Vector(0.0D, 0.25D, 0.0D)); p.setVelocity(new Vector(0.0D, 0.25D, 0.0D));
} }
else p.setVelocity(arrow.getLocation().toVector().subtract(p.getLocation().toVector())); else {
p.setVelocity(arrow.getLocation().toVector().subtract(p.getLocation().toVector()));
}
for (Entity n: utilities.remove.get(p.getUniqueId())) { for (Entity n: SlimefunPlugin.getUtilities().remove.get(p.getUniqueId())) {
if (n.isValid()) n.remove(); if (n.isValid()) n.remove();
} }
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
utilities.jumpState.remove(p.getUniqueId()); SlimefunPlugin.getUtilities().jumpState.remove(p.getUniqueId());
utilities.remove.remove(p.getUniqueId()); SlimefunPlugin.getUtilities().remove.remove(p.getUniqueId());
}, 20L); }, 20L);
} }
else { else {
@ -83,13 +82,13 @@ public class BowListener implements Listener {
p.setVelocity(v); p.setVelocity(v);
for (Entity n: utilities.remove.get(p.getUniqueId())) { for (Entity n: SlimefunPlugin.getUtilities().remove.get(p.getUniqueId())) {
if (n.isValid()) n.remove(); if (n.isValid()) n.remove();
} }
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
utilities.jumpState.remove(p.getUniqueId()); SlimefunPlugin.getUtilities().jumpState.remove(p.getUniqueId());
utilities.remove.remove(p.getUniqueId()); SlimefunPlugin.getUtilities().remove.remove(p.getUniqueId());
}, 20L); }, 20L);
} }
} }
@ -98,11 +97,12 @@ public class BowListener implements Listener {
@EventHandler @EventHandler
public void onArrowSuccessfulHit(EntityDamageByEntityEvent e) { public void onArrowSuccessfulHit(EntityDamageByEntityEvent e) {
if (e.getDamager() instanceof Arrow) { if (e.getDamager() instanceof Arrow) {
if (utilities.arrows.containsKey(e.getDamager().getUniqueId()) && e.getEntity() instanceof LivingEntity) { if (SlimefunPlugin.getUtilities().arrows.containsKey(e.getDamager().getUniqueId()) && e.getEntity() instanceof LivingEntity) {
for (ItemHandler handler: SlimefunItem.getHandlers("BowShootHandler")) { for (ItemHandler handler: SlimefunItem.getHandlers("BowShootHandler")) {
if (((BowShootHandler) handler).onHit(e, (LivingEntity) e.getEntity())) break; if (((BowShootHandler) handler).onHit(e, (LivingEntity) e.getEntity())) break;
} }
utilities.arrows.remove(e.getDamager().getUniqueId());
SlimefunPlugin.getUtilities().arrows.remove(e.getDamager().getUniqueId());
} }
handleGrapplingHook((Arrow) e.getDamager()); handleGrapplingHook((Arrow) e.getDamager());

View File

@ -12,7 +12,7 @@ import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffect;
import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
import me.mrCookieSlime.Slimefun.api.PlayerProfile; import me.mrCookieSlime.Slimefun.api.PlayerProfile;
import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory; import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory;
@ -28,26 +28,30 @@ public class CoolerListener implements Listener {
if (e.getFoodLevel() < ((Player) e.getEntity()).getFoodLevel()) { if (e.getFoodLevel() < ((Player) e.getEntity()).getFoodLevel()) {
Player p = (Player) e.getEntity(); Player p = (Player) e.getEntity();
for (ItemStack item: p.getInventory().getContents()) { for (ItemStack item: p.getInventory().getContents()) {
if (SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("COOLER"), false)) { if (SlimefunManager.isItemSimiliar(item, SlimefunItems.COOLER, false)) {
BackpackInventory backpack = PlayerProfile.getBackpack(item); BackpackInventory backpack = PlayerProfile.getBackpack(item);
if (backpack != null) { if (backpack != null) {
Inventory inv = backpack.getInventory(); Inventory inv = backpack.getInventory();
ItemStack drink = null; int slot = -1;
for (ItemStack i: inv.getContents()) { for (int i = 0; i < inv.getSize(); i++) {
if (i != null && i.getType() == Material.POTION && i.hasItemMeta()) { ItemStack stack = inv.getItem(i);
drink = i; if (stack != null && stack.getType() == Material.POTION && stack.hasItemMeta() && stack.getItemMeta().hasDisplayName()) {
slot = i;
break; break;
} }
} }
if (drink != null) {
PotionMeta im = (PotionMeta) drink.getItemMeta(); if (slot >= 0) {
PotionMeta im = (PotionMeta) inv.getItem(slot).getItemMeta();
for (PotionEffect effect: im.getCustomEffects()) { for (PotionEffect effect: im.getCustomEffects()) {
p.addPotionEffect(effect); p.addPotionEffect(effect);
} }
p.setSaturation(6F); p.setSaturation(6F);
p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_DRINK, 1F, 1F); p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_DRINK, 1F, 1F);
inv.removeItem(drink); inv.setItem(slot, null);
backpack.markDirty(); backpack.markDirty();
break; break;
} }

View File

@ -26,16 +26,13 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager; import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
import me.mrCookieSlime.Slimefun.api.Slimefun; import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.api.Soul; import me.mrCookieSlime.Slimefun.api.Soul;
import me.mrCookieSlime.Slimefun.utils.Utilities;
public class DamageListener implements Listener { public class DamageListener implements Listener {
private SimpleDateFormat format = new SimpleDateFormat("(MMM d, yyyy @ hh:mm)"); private SimpleDateFormat format = new SimpleDateFormat("(MMM d, yyyy @ hh:mm)");
private Utilities utilities;
public DamageListener(SlimefunPlugin plugin) { public DamageListener(SlimefunPlugin plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin); plugin.getServer().getPluginManager().registerEvents(this, plugin);
utilities = SlimefunPlugin.getUtilities();
} }
@EventHandler @EventHandler
@ -91,9 +88,9 @@ public class DamageListener implements Listener {
@EventHandler @EventHandler
public void onArrowHit(EntityDamageEvent e) { public void onArrowHit(EntityDamageEvent e) {
if (e.getEntity() instanceof Player && e.getCause() == DamageCause.FALL && utilities.damage.contains(e.getEntity().getUniqueId())) { if (e.getEntity() instanceof Player && e.getCause() == DamageCause.FALL && SlimefunPlugin.getUtilities().damage.contains(e.getEntity().getUniqueId())) {
e.setCancelled(true); e.setCancelled(true);
utilities.damage.remove(e.getEntity().getUniqueId()); SlimefunPlugin.getUtilities().damage.remove(e.getEntity().getUniqueId());
} }
} }