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:
parent
8e1bbff997
commit
307a4394ff
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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());
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user