1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 03:35: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 {
private SlimefunPlugin plugin;
private final SlimefunPlugin plugin;
private List<String> arguments = new ArrayList<>();
private List<String> descriptions = new ArrayList<>();
private List<String> tabs = new ArrayList<>();
private final List<String> arguments = new ArrayList<>();
private final List<String> descriptions = new ArrayList<>();
private final List<String> tabs = new ArrayList<>();
public SlimefunCommand(SlimefunPlugin plugin) {
this.plugin = plugin;

View File

@ -12,7 +12,7 @@ import org.bukkit.command.TabCompleter;
public class SlimefunTabCompleter implements TabCompleter {
private SlimefunCommand command;
private final SlimefunCommand command;
public SlimefunTabCompleter(SlimefunCommand 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.Slimefun;
import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory;
import me.mrCookieSlime.Slimefun.utils.Utilities;
public class BackpackListener implements Listener {
private Utilities utilities;
public BackpackListener(SlimefunPlugin plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
utilities = SlimefunPlugin.getUtilities();
}
@EventHandler
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);
PlayerProfile.getBackpack(utilities.backpack.get(e.getPlayer().getUniqueId())).markDirty();
utilities.backpack.remove(e.getPlayer().getUniqueId());
PlayerProfile.getBackpack(SlimefunPlugin.getUtilities().backpack.get(e.getPlayer().getUniqueId())).markDirty();
SlimefunPlugin.getUtilities().backpack.remove(e.getPlayer().getUniqueId());
}
}
@EventHandler
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();
SlimefunItem sfItem = SlimefunItem.getByItem(item);
if (sfItem instanceof SlimefunBackpack) e.setCancelled(true);
@ -60,8 +58,8 @@ public class BackpackListener implements Listener {
@EventHandler
public void onClick(InventoryClickEvent e) {
if (utilities.backpack.containsKey(e.getWhoClicked().getUniqueId())) {
ItemStack item = utilities.backpack.get(e.getWhoClicked().getUniqueId());
if (SlimefunPlugin.getUtilities().backpack.containsKey(e.getWhoClicked().getUniqueId())) {
ItemStack item = SlimefunPlugin.getUtilities().backpack.get(e.getWhoClicked().getUniqueId());
if (e.getClick() == ClickType.NUMBER_KEY) {
ItemStack hotbarItem = e.getWhoClicked().getInventory().getItem(e.getHotbarButton());
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);
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);
}

View File

@ -18,49 +18,48 @@ import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.handlers.BowShootHandler;
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
import me.mrCookieSlime.Slimefun.utils.Utilities;
public class BowListener implements Listener {
private Utilities utilities;
public BowListener(SlimefunPlugin plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
utilities = SlimefunPlugin.getUtilities();
}
@EventHandler
public void onBowUse(EntityShootBowEvent e) {
if (!(e.getEntity() instanceof Player) || !(e.getProjectile() instanceof Arrow)) return;
if (SlimefunItem.getByItem(e.getBow()) != null) utilities.arrows.put(e.getProjectile().getUniqueId(), e.getBow());
if (e.getEntity() instanceof Player && e.getProjectile() instanceof Arrow && SlimefunItem.getByItem(e.getBow()) != null) {
SlimefunPlugin.getUtilities().arrows.put(e.getProjectile().getUniqueId(), e.getBow());
}
}
@EventHandler
public void onArrowHit(final ProjectileHitEvent e) {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
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());
}, 4L);
}
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();
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 (arrow.getLocation().getY() > p.getLocation().getY()) {
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();
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
utilities.jumpState.remove(p.getUniqueId());
utilities.remove.remove(p.getUniqueId());
SlimefunPlugin.getUtilities().jumpState.remove(p.getUniqueId());
SlimefunPlugin.getUtilities().remove.remove(p.getUniqueId());
}, 20L);
}
else {
@ -83,13 +82,13 @@ public class BowListener implements Listener {
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();
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
utilities.jumpState.remove(p.getUniqueId());
utilities.remove.remove(p.getUniqueId());
SlimefunPlugin.getUtilities().jumpState.remove(p.getUniqueId());
SlimefunPlugin.getUtilities().remove.remove(p.getUniqueId());
}, 20L);
}
}
@ -98,11 +97,12 @@ public class BowListener implements Listener {
@EventHandler
public void onArrowSuccessfulHit(EntityDamageByEntityEvent e) {
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")) {
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());

View File

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

View File

@ -26,16 +26,13 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.api.Soul;
import me.mrCookieSlime.Slimefun.utils.Utilities;
public class DamageListener implements Listener {
private SimpleDateFormat format = new SimpleDateFormat("(MMM d, yyyy @ hh:mm)");
private Utilities utilities;
public DamageListener(SlimefunPlugin plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
utilities = SlimefunPlugin.getUtilities();
}
@EventHandler
@ -91,9 +88,9 @@ public class DamageListener implements Listener {
@EventHandler
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);
utilities.damage.remove(e.getEntity().getUniqueId());
SlimefunPlugin.getUtilities().damage.remove(e.getEntity().getUniqueId());
}
}