9
0
mirror of https://github.com/Auxilor/EcoMobs.git synced 2025-12-21 16:09:24 +00:00

Fixed projectiles

This commit is contained in:
Auxilor
2020-12-08 20:47:57 +00:00
parent d14da9b81a
commit 512f5f9cde
6 changed files with 37 additions and 151 deletions

View File

@@ -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();

View File

@@ -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()) {

View File

@@ -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);

View File

@@ -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));

View File

@@ -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();
}
}

View File

@@ -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);
}
}