mirror of
https://github.com/Auxilor/EcoMobs.git
synced 2025-12-21 07:59:28 +00:00
Fixed projectiles
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -20,9 +20,24 @@ public class SpawnListeners implements Listener {
|
||||
boolean matches = false;
|
||||
Set<Block> 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);
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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<String, Callable> integrations = new HashMap<String, Callable>() {{
|
||||
// MISC
|
||||
put("PlaceholderAPI", () -> PlaceholderManager.addIntegration(new PlaceholderIntegrationPAPI()));
|
||||
}};
|
||||
|
||||
Set<String> 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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Prerequisite> 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<Boolean> isMetCallable;
|
||||
private final String description;
|
||||
|
||||
/**
|
||||
* Create a prerequisite
|
||||
*
|
||||
* @param isMetCallable An {@link ObjectCallable<Boolean>} 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<Boolean> 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user