From 512f5f9cde20408c5eabaaf4627a9541b17bae16 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Tue, 8 Dec 2020 20:47:57 +0000 Subject: [PATCH] Fixed projectiles --- .../illusioner/v1_16_R3/EntityIllusioner.java | 3 +- .../illusioner/listeners/AttackListeners.java | 15 +++- .../illusioner/listeners/SpawnListeners.java | 21 ++++- .../willfp/illusioner/util/StringUtils.java | 3 - .../illusioner/util/internal/Loader.java | 57 ++---------- .../util/optional/Prerequisite.java | 89 ------------------- 6 files changed, 37 insertions(+), 151 deletions(-) delete mode 100644 Plugin/src/main/java/com/willfp/illusioner/util/optional/Prerequisite.java diff --git a/NMS/v1_16_R3/src/main/java/com/willfp/illusioner/v1_16_R3/EntityIllusioner.java b/NMS/v1_16_R3/src/main/java/com/willfp/illusioner/v1_16_R3/EntityIllusioner.java index c2ef225..8ae43d4 100644 --- a/NMS/v1_16_R3/src/main/java/com/willfp/illusioner/v1_16_R3/EntityIllusioner.java +++ b/NMS/v1_16_R3/src/main/java/com/willfp/illusioner/v1_16_R3/EntityIllusioner.java @@ -46,8 +46,7 @@ public class EntityIllusioner extends EntityIllagerIllusioner implements EntityI @Override public void createBossbar(Plugin plugin, BarColor color, BarStyle style) { - String name = this.getDisplayName().getText(); - BossBar bossBar = Bukkit.getServer().createBossBar(name, color, style, (BarFlag) null); + BossBar bossBar = Bukkit.getServer().createBossBar(this.displayName, color, style, (BarFlag) null); Bukkit.getServer().getOnlinePlayers().forEach(bossBar::addPlayer); LivingEntity entity = (LivingEntity) this.getBukkitEntity(); diff --git a/Plugin/src/main/java/com/willfp/illusioner/illusioner/listeners/AttackListeners.java b/Plugin/src/main/java/com/willfp/illusioner/illusioner/listeners/AttackListeners.java index 31b983c..7857919 100644 --- a/Plugin/src/main/java/com/willfp/illusioner/illusioner/listeners/AttackListeners.java +++ b/Plugin/src/main/java/com/willfp/illusioner/illusioner/listeners/AttackListeners.java @@ -8,6 +8,7 @@ import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; @@ -25,10 +26,20 @@ public class AttackListeners implements Listener { if(!event.getDamager().getType().equals(EntityType.ILLUSIONER)) return; - if(!(event.getEntity() instanceof Player)) + Player temp = null; + + if(event.getEntity() instanceof Player) { + temp = (Player) event.getEntity(); + } else if(event.getEntity() instanceof Projectile) { + if(((Projectile) event.getEntity()).getShooter() instanceof Player) { + temp = (Player) ((Projectile) event.getEntity()).getShooter(); + } + } + + if(temp == null) return; - Player player = (Player) event.getEntity(); + Player player = temp; OptionedSound hitSound = IllusionerManager.OPTIONS.getGameplayOptions().getHitSound(); if(hitSound.isBroadcast()) { diff --git a/Plugin/src/main/java/com/willfp/illusioner/illusioner/listeners/SpawnListeners.java b/Plugin/src/main/java/com/willfp/illusioner/illusioner/listeners/SpawnListeners.java index d71783d..eb87e18 100644 --- a/Plugin/src/main/java/com/willfp/illusioner/illusioner/listeners/SpawnListeners.java +++ b/Plugin/src/main/java/com/willfp/illusioner/illusioner/listeners/SpawnListeners.java @@ -20,9 +20,24 @@ public class SpawnListeners implements Listener { boolean matches = false; Set match = new HashSet<>(); for(int i = 0; i < 3; i++) { - Block block1 = event.getBlock().getRelative(0, i, 0); - Block block2 = event.getBlock().getRelative(0, -1 + i, 0); - Block block3 = event.getBlock().getRelative(0, -2 + i, 0); + Block block1; + Block block2; + Block block3; + + if(i == 0) { + block3 = event.getBlock(); + block2 = event.getBlock().getRelative(0, -1, 0); + block1 = event.getBlock().getRelative(0, -2, 0); + } else if(i == 1) { + block1 = event.getBlock(); + block2 = event.getBlock().getRelative(0, 1, 0); + block3 = event.getBlock().getRelative(0, 2, 0); + } else { + block2 = event.getBlock(); + block1 = event.getBlock().getRelative(0, -1, 0); + block3 = event.getBlock().getRelative(0, 1, 0); + } + matches = BlockStructure.matches(new BlockStructure(block1.getType(), block2.getType(), block3.getType())); if(matches) { match.add(block1); diff --git a/Plugin/src/main/java/com/willfp/illusioner/util/StringUtils.java b/Plugin/src/main/java/com/willfp/illusioner/util/StringUtils.java index aa35e46..9230b28 100644 --- a/Plugin/src/main/java/com/willfp/illusioner/util/StringUtils.java +++ b/Plugin/src/main/java/com/willfp/illusioner/util/StringUtils.java @@ -1,6 +1,5 @@ package com.willfp.illusioner.util; -import com.willfp.illusioner.integrations.placeholder.PlaceholderManager; import net.md_5.bungee.api.ChatColor; import org.bukkit.entity.Player; import org.jetbrains.annotations.Nullable; @@ -21,7 +20,6 @@ public class StringUtils { * @return The message, translated */ public static String translate(String message, @Nullable Player player) { - message = PlaceholderManager.translatePlaceholders(message, player); message = translateHexColorCodes(message); message = ChatColor.translateAlternateColorCodes('&', message); return ChatColor.translateAlternateColorCodes('&', translateHexColorCodes(message)); @@ -35,7 +33,6 @@ public class StringUtils { * @see StringUtils#translate(String, Player) */ public static String translate(String message) { - message = PlaceholderManager.translatePlaceholders(message, null); message = translateHexColorCodes(message); message = ChatColor.translateAlternateColorCodes('&', message); return ChatColor.translateAlternateColorCodes('&', translateHexColorCodes(message)); diff --git a/Plugin/src/main/java/com/willfp/illusioner/util/internal/Loader.java b/Plugin/src/main/java/com/willfp/illusioner/util/internal/Loader.java index d90f8e7..21bd820 100644 --- a/Plugin/src/main/java/com/willfp/illusioner/util/internal/Loader.java +++ b/Plugin/src/main/java/com/willfp/illusioner/util/internal/Loader.java @@ -8,29 +8,20 @@ import com.willfp.illusioner.events.armorequip.ArmorListener; import com.willfp.illusioner.events.armorequip.DispenserArmorListener; import com.willfp.illusioner.events.entitydeathbyentity.EntityDeathByEntityListeners; import com.willfp.illusioner.events.naturalexpgainevent.NaturalExpGainListeners; +import com.willfp.illusioner.illusioner.IllusionerManager; import com.willfp.illusioner.illusioner.listeners.AttackListeners; import com.willfp.illusioner.illusioner.listeners.DeathListeners; import com.willfp.illusioner.illusioner.listeners.SpawnListeners; -import com.willfp.illusioner.integrations.placeholder.PlaceholderManager; -import com.willfp.illusioner.integrations.placeholder.plugins.PlaceholderIntegrationPAPI; import com.willfp.illusioner.nms.BlockBreak; import com.willfp.illusioner.nms.Cooldown; import com.willfp.illusioner.nms.NMSIllusioner; import com.willfp.illusioner.nms.OpenInventory; import com.willfp.illusioner.nms.TridentStack; -import com.willfp.illusioner.util.interfaces.Callable; import com.willfp.illusioner.util.internal.updater.PlayerJoinListener; import com.willfp.illusioner.util.internal.updater.UpdateChecker; -import com.willfp.illusioner.util.optional.Prerequisite; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; -import org.bukkit.plugin.Plugin; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.Set; -import java.util.stream.Collectors; /** * Class containing methods for the loading and unloading of Illusioner @@ -120,34 +111,12 @@ public class Loader { Logger.info(""); /* - Load integrations + Register options */ - - Logger.info("Loading Integrations..."); - - final HashMap integrations = new HashMap() {{ - // MISC - put("PlaceholderAPI", () -> PlaceholderManager.addIntegration(new PlaceholderIntegrationPAPI())); - }}; - - Set enabledPlugins = Arrays.stream(Bukkit.getPluginManager().getPlugins()).map(Plugin::getName).collect(Collectors.toSet()); - - integrations.forEach(((s, callable) -> { - StringBuilder log = new StringBuilder(); - log.append(s).append(": "); - if (enabledPlugins.contains(s)) { - callable.call(); - log.append("&aENABLED"); - } else { - log.append("&9DISABLED"); - } - Logger.info(log.toString()); - })); - - Prerequisite.update(); + Logger.info("Loading options..."); + IllusionerManager.OPTIONS.reload(); Logger.info(""); - /* Load Commands */ @@ -201,23 +170,6 @@ public class Loader { Logger.info("----------------------------"); }); - /* - Check for paper - */ - - if (!Prerequisite.HasPaper.isMet()) { - Logger.error(""); - Logger.error("----------------------------"); - Logger.error(""); - Logger.error("You don't seem to be running paper!"); - Logger.error("Paper is strongly recommended for all servers,"); - Logger.error("and some features may not function properly without it"); - Logger.error("Download Paper from &fhttps://papermc.io"); - Logger.error(""); - Logger.error("----------------------------"); - Logger.error(""); - } - Logger.info(""); } @@ -234,5 +186,6 @@ public class Loader { */ public static void reload() { ConfigManager.updateConfigs(); + IllusionerManager.OPTIONS.reload(); } } diff --git a/Plugin/src/main/java/com/willfp/illusioner/util/optional/Prerequisite.java b/Plugin/src/main/java/com/willfp/illusioner/util/optional/Prerequisite.java deleted file mode 100644 index 5ca1249..0000000 --- a/Plugin/src/main/java/com/willfp/illusioner/util/optional/Prerequisite.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.willfp.illusioner.util.optional; - -import com.willfp.illusioner.util.ClassUtils; -import com.willfp.illusioner.util.interfaces.ObjectCallable; -import org.bukkit.Bukkit; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * An object representing a condition that must be met in order to perform an action - */ -public class Prerequisite { - private static final List values = new ArrayList<>(); - - /** - * Requires the server to be running minecraft version 1.16 or higher - */ - public static final Prerequisite MinVer1_16 = new Prerequisite( - () -> !Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3].contains("15"), - "Requires minimum server version of 1.16" - ); - - /** - * Requires the server to be running an implementation of paper - */ - public static final Prerequisite HasPaper = new Prerequisite( - () -> ClassUtils.exists("com.destroystokyo.paper.event.player.PlayerElytraBoostEvent"), - "Requires server to be running paper (or a fork)" - ); - - private boolean isMet; - private final ObjectCallable isMetCallable; - private final String description; - - /** - * Create a prerequisite - * - * @param isMetCallable An {@link ObjectCallable} that returns if the prerequisite is met - * @param description The description of the prerequisite, shown to the user if it isn't - */ - public Prerequisite(ObjectCallable isMetCallable, String description) { - this.isMetCallable = isMetCallable; - this.isMet = isMetCallable.call(); - this.description = description; - values.add(this); - } - - /** - * Get the description of the prerequisite - * - * @return The description - */ - public String getDescription() { - return description; - } - - /** - * Get if the prerequisite has been met - * - * @return If the prerequisite is met - */ - public boolean isMet() { - return isMet; - } - - private void refresh() { - this.isMet = this.isMetCallable.call(); - } - - /** - * Update all prerequisites' {@link Prerequisite#isMet} - */ - public static void update() { - values.forEach(Prerequisite::refresh); - } - - /** - * Check if all prerequisites in array are met - * - * @param prerequisites A primitive array of prerequisites to check - * @return If all the prerequisites are met - */ - public static boolean areMet(Prerequisite[] prerequisites) { - update(); - return Arrays.stream(prerequisites).allMatch(Prerequisite::isMet); - } -}