9
0
mirror of https://github.com/Auxilor/EcoMobs.git synced 2025-12-21 07:59:28 +00:00

Added support for EcoEnchants

This commit is contained in:
Auxilor
2020-12-21 12:10:24 +00:00
parent ceeb824343
commit a84bff2de8
12 changed files with 137 additions and 13 deletions

View File

@@ -2,11 +2,12 @@ package com.willfp.illusioner.nms.api;
import org.bukkit.boss.BarColor; import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarStyle; import org.bukkit.boss.BarStyle;
import org.bukkit.boss.BossBar;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
/** /**
* NMS Interface for managing illusioner bosses * NMS Interface for managing illusioner bosses
*/ */
public interface EntityIllusionerWrapper { public interface EntityIllusionerWrapper {
void createBossbar(Plugin plugin, BarColor color, BarStyle style); BossBar createBossbar(Plugin plugin, BarColor color, BarStyle style);
} }

View File

@@ -6,7 +6,6 @@ import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.attribute.Attribute; import org.bukkit.attribute.Attribute;
import org.bukkit.boss.BarColor; import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarFlag;
import org.bukkit.boss.BarStyle; import org.bukkit.boss.BarStyle;
import org.bukkit.boss.BossBar; import org.bukkit.boss.BossBar;
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld; import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
@@ -45,8 +44,8 @@ public class EntityIllusioner extends EntityIllagerIllusioner implements EntityI
} }
@Override @Override
public void createBossbar(Plugin plugin, BarColor color, BarStyle style) { public BossBar createBossbar(Plugin plugin, BarColor color, BarStyle style) {
BossBar bossBar = Bukkit.getServer().createBossBar(this.displayName, color, style, (BarFlag) null); BossBar bossBar = Bukkit.getServer().createBossBar(this.displayName, color, style);
Bukkit.getServer().getOnlinePlayers().forEach(bossBar::addPlayer); Bukkit.getServer().getOnlinePlayers().forEach(bossBar::addPlayer);
LivingEntity entity = (LivingEntity) this.getBukkitEntity(); LivingEntity entity = (LivingEntity) this.getBukkitEntity();
@@ -62,5 +61,7 @@ public class EntityIllusioner extends EntityIllagerIllusioner implements EntityI
} }
} }
}.runTaskTimer(plugin, 0, 1); }.runTaskTimer(plugin, 0, 1);
return bossBar;
} }
} }

View File

@@ -6,7 +6,6 @@ import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.attribute.Attribute; import org.bukkit.attribute.Attribute;
import org.bukkit.boss.BarColor; import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarFlag;
import org.bukkit.boss.BarStyle; import org.bukkit.boss.BarStyle;
import org.bukkit.boss.BossBar; import org.bukkit.boss.BossBar;
import org.bukkit.craftbukkit.v1_16_R1.CraftWorld; import org.bukkit.craftbukkit.v1_16_R1.CraftWorld;
@@ -45,8 +44,8 @@ public class EntityIllusioner extends EntityIllagerIllusioner implements EntityI
} }
@Override @Override
public void createBossbar(Plugin plugin, BarColor color, BarStyle style) { public BossBar createBossbar(Plugin plugin, BarColor color, BarStyle style) {
BossBar bossBar = Bukkit.getServer().createBossBar(this.displayName, color, style, (BarFlag) null); BossBar bossBar = Bukkit.getServer().createBossBar(this.displayName, color, style);
Bukkit.getServer().getOnlinePlayers().forEach(bossBar::addPlayer); Bukkit.getServer().getOnlinePlayers().forEach(bossBar::addPlayer);
LivingEntity entity = (LivingEntity) this.getBukkitEntity(); LivingEntity entity = (LivingEntity) this.getBukkitEntity();
@@ -62,5 +61,7 @@ public class EntityIllusioner extends EntityIllagerIllusioner implements EntityI
} }
} }
}.runTaskTimer(plugin, 0, 1); }.runTaskTimer(plugin, 0, 1);
return bossBar;
} }
} }

View File

@@ -6,7 +6,6 @@ import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.attribute.Attribute; import org.bukkit.attribute.Attribute;
import org.bukkit.boss.BarColor; import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarFlag;
import org.bukkit.boss.BarStyle; import org.bukkit.boss.BarStyle;
import org.bukkit.boss.BossBar; import org.bukkit.boss.BossBar;
import org.bukkit.craftbukkit.v1_16_R2.CraftWorld; import org.bukkit.craftbukkit.v1_16_R2.CraftWorld;
@@ -45,8 +44,8 @@ public class EntityIllusioner extends EntityIllagerIllusioner implements EntityI
} }
@Override @Override
public void createBossbar(Plugin plugin, BarColor color, BarStyle style) { public BossBar createBossbar(Plugin plugin, BarColor color, BarStyle style) {
BossBar bossBar = Bukkit.getServer().createBossBar(this.displayName, color, style, (BarFlag) null); BossBar bossBar = Bukkit.getServer().createBossBar(this.displayName, color, style);
Bukkit.getServer().getOnlinePlayers().forEach(bossBar::addPlayer); Bukkit.getServer().getOnlinePlayers().forEach(bossBar::addPlayer);
LivingEntity entity = (LivingEntity) this.getBukkitEntity(); LivingEntity entity = (LivingEntity) this.getBukkitEntity();
@@ -62,5 +61,7 @@ public class EntityIllusioner extends EntityIllagerIllusioner implements EntityI
} }
} }
}.runTaskTimer(plugin, 0, 1); }.runTaskTimer(plugin, 0, 1);
return bossBar;
} }
} }

View File

@@ -6,7 +6,6 @@ import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.attribute.Attribute; import org.bukkit.attribute.Attribute;
import org.bukkit.boss.BarColor; import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarFlag;
import org.bukkit.boss.BarStyle; import org.bukkit.boss.BarStyle;
import org.bukkit.boss.BossBar; import org.bukkit.boss.BossBar;
import org.bukkit.craftbukkit.v1_16_R3.CraftWorld; import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
@@ -45,8 +44,8 @@ public class EntityIllusioner extends EntityIllagerIllusioner implements EntityI
} }
@Override @Override
public void createBossbar(Plugin plugin, BarColor color, BarStyle style) { public BossBar createBossbar(Plugin plugin, BarColor color, BarStyle style) {
BossBar bossBar = Bukkit.getServer().createBossBar(this.displayName, color, style, (BarFlag) null); BossBar bossBar = Bukkit.getServer().createBossBar(this.displayName, color, style);
Bukkit.getServer().getOnlinePlayers().forEach(bossBar::addPlayer); Bukkit.getServer().getOnlinePlayers().forEach(bossBar::addPlayer);
LivingEntity entity = (LivingEntity) this.getBukkitEntity(); LivingEntity entity = (LivingEntity) this.getBukkitEntity();
@@ -62,5 +61,7 @@ public class EntityIllusioner extends EntityIllagerIllusioner implements EntityI
} }
} }
}.runTaskTimer(plugin, 0, 1); }.runTaskTimer(plugin, 0, 1);
return bossBar;
} }
} }

View File

@@ -13,6 +13,7 @@ dependencies {
implementation 'org.bstats:bstats-bukkit:1.7' implementation 'org.bstats:bstats-bukkit:1.7'
compileOnly 'org.spigotmc:spigot-api:1.16.3-R0.1-SNAPSHOT' compileOnly 'org.spigotmc:spigot-api:1.16.3-R0.1-SNAPSHOT'
compileOnly 'commons-io:commons-io:2.8.0' compileOnly 'commons-io:commons-io:2.8.0'
compileOnly 'com.willfp:EcoEnchants:5.10.5'
} }
shadowJar { shadowJar {

View File

@@ -2,6 +2,7 @@ package com.willfp.illusioner.illusioner.listeners;
import com.willfp.illusioner.events.entitydeathbyentity.EntityDeathByEntityEvent; import com.willfp.illusioner.events.entitydeathbyentity.EntityDeathByEntityEvent;
import com.willfp.illusioner.illusioner.IllusionerManager; import com.willfp.illusioner.illusioner.IllusionerManager;
import com.willfp.illusioner.integrations.ecoenchants.EcoEnchantsManager;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@@ -24,6 +25,12 @@ public class DeathListeners implements Listener {
}); });
IllusionerManager.OPTIONS.getDrops().forEach(drop -> { IllusionerManager.OPTIONS.getDrops().forEach(drop -> {
if(event.getKiller() instanceof Player) {
if (EcoEnchantsManager.isRegistered()) {
EcoEnchantsManager.dropQueueItems((Player) event.getKiller(), event.getVictim().getLocation(), drop);
return;
}
}
event.getVictim().getLocation().getWorld().dropItemNaturally(event.getVictim().getLocation(), drop); event.getVictim().getLocation().getWorld().dropItemNaturally(event.getVictim().getLocation(), drop);
}); });

View File

@@ -0,0 +1,5 @@
package com.willfp.illusioner.integrations;
public interface Integration {
String getPluginName();
}

View File

@@ -0,0 +1,11 @@
package com.willfp.illusioner.integrations.ecoenchants;
import com.willfp.illusioner.integrations.Integration;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public interface EcoEnchantsIntegration extends Integration {
void dropItems(Player player, Location location, ItemStack itemStack);
void dropExp(Player player, Location location, double amount);
}

View File

@@ -0,0 +1,29 @@
package com.willfp.illusioner.integrations.ecoenchants;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class EcoEnchantsManager {
private static final Set<EcoEnchantsIntegration> integrations = new HashSet<>();
public static void register(EcoEnchantsIntegration integration) {
integrations.add(integration);
}
public static void dropQueueItems(Player player, Location location, ItemStack... items) {
Arrays.stream(items).forEach(item -> integrations.forEach(integration -> integration.dropItems(player, location, item)));
}
public static void dropQueueExp(Player player, Location location, double amount) {
integrations.forEach(integration -> integration.dropExp(player, location, amount));
}
public static boolean isRegistered() {
return !integrations.isEmpty();
}
}

View File

@@ -0,0 +1,30 @@
package com.willfp.illusioner.integrations.ecoenchants.plugins;
import com.willfp.ecoenchants.util.internal.DropQueue;
import com.willfp.illusioner.integrations.ecoenchants.EcoEnchantsIntegration;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public class EcoEnchantsIntegrationImpl implements EcoEnchantsIntegration {
@Override
public void dropItems(Player player, Location location, ItemStack itemStack) {
new DropQueue(player)
.setLocation(location)
.addItem(itemStack)
.push();
}
@Override
public void dropExp(Player player, Location location, double amount) {
new DropQueue(player)
.setLocation(location)
.addXP((int) Math.ceil(amount))
.push();
}
@Override
public String getPluginName() {
return "EcoEnchants";
}
}

View File

@@ -1,5 +1,7 @@
package com.willfp.illusioner.util.internal; package com.willfp.illusioner.util.internal;
import com.willfp.ecoenchants.util.interfaces.Callable;
import com.willfp.ecoenchants.util.optional.Prerequisite;
import com.willfp.illusioner.IllusionerPlugin; import com.willfp.illusioner.IllusionerPlugin;
import com.willfp.illusioner.command.commands.CommandIldebug; import com.willfp.illusioner.command.commands.CommandIldebug;
import com.willfp.illusioner.command.commands.CommandIlreload; import com.willfp.illusioner.command.commands.CommandIlreload;
@@ -12,6 +14,8 @@ import com.willfp.illusioner.illusioner.IllusionerManager;
import com.willfp.illusioner.illusioner.listeners.AttackListeners; import com.willfp.illusioner.illusioner.listeners.AttackListeners;
import com.willfp.illusioner.illusioner.listeners.DeathListeners; import com.willfp.illusioner.illusioner.listeners.DeathListeners;
import com.willfp.illusioner.illusioner.listeners.SpawnListeners; import com.willfp.illusioner.illusioner.listeners.SpawnListeners;
import com.willfp.illusioner.integrations.ecoenchants.EcoEnchantsManager;
import com.willfp.illusioner.integrations.ecoenchants.plugins.EcoEnchantsIntegrationImpl;
import com.willfp.illusioner.nms.BlockBreak; import com.willfp.illusioner.nms.BlockBreak;
import com.willfp.illusioner.nms.Cooldown; import com.willfp.illusioner.nms.Cooldown;
import com.willfp.illusioner.nms.NMSIllusioner; import com.willfp.illusioner.nms.NMSIllusioner;
@@ -22,6 +26,12 @@ import com.willfp.illusioner.util.internal.updater.UpdateChecker;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.bstats.bukkit.Metrics; import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit; 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 * Class containing methods for the loading and unloading of Illusioner
@@ -95,6 +105,32 @@ public class Loader {
Logger.info(""); Logger.info("");
/*
Register Integrations
*/
Logger.info("Loading Integrations...");
final HashMap<String, Callable> integrations = new HashMap<String, Callable>() {{
put("EcoEnchants", () -> EcoEnchantsManager.register(new EcoEnchantsIntegrationImpl()));
}};
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("");
/* /*
Register Events Register Events
*/ */