add SpawnReason blacklist

This commit is contained in:
Xanadu13
2023-10-03 09:21:31 +08:00
parent 17b9854c92
commit 3caa4200e0
5 changed files with 66 additions and 4 deletions
@@ -0,0 +1,51 @@
package pers.xanadu.enderdragon.event;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.EnderDragon;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.CreatureSpawnEvent;
import pers.xanadu.enderdragon.manager.DragonManager;
import pers.xanadu.enderdragon.util.MyDragon;
public final class DragonRespawnEvent extends CreatureSpawnEvent {
private static final HandlerList handlers = new HandlerList();
private boolean cancel = false;
private final World world;
private final MyDragon myDragon;
public DragonRespawnEvent(final EnderDragon dragon,final SpawnReason reason,final MyDragon myDragon) {
super(dragon,reason);
world = dragon.getWorld();
this.myDragon = myDragon;
}
public EnderDragon getEnderDragon(){
return (EnderDragon) getEntity();
}
public Location getEndPortalLocation(){
return DragonManager.getEndPortalLocation(world);
}
public MyDragon getDragonConfiguration(){
return myDragon;
}
public String getDragonUniqueId(){
return myDragon.unique_name;
}
public static HandlerList getHandlerList() {
return handlers;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
@Override
public void setCancelled(final boolean cancel) {
this.cancel = cancel;
}
@Override
public boolean isCancelled() {
return cancel;
}
}
@@ -1,5 +1,6 @@
package pers.xanadu.enderdragon.listener; package pers.xanadu.enderdragon.listener;
import org.bukkit.Bukkit;
import org.bukkit.attribute.Attribute; import org.bukkit.attribute.Attribute;
import org.bukkit.boss.BarColor; import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarStyle; import org.bukkit.boss.BarStyle;
@@ -11,6 +12,7 @@ import org.bukkit.event.Listener;
import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.CreatureSpawnEvent;
import pers.xanadu.enderdragon.config.Config; import pers.xanadu.enderdragon.config.Config;
import pers.xanadu.enderdragon.config.Lang; import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.event.DragonRespawnEvent;
import pers.xanadu.enderdragon.manager.DamageManager; import pers.xanadu.enderdragon.manager.DamageManager;
import pers.xanadu.enderdragon.util.MyDragon; import pers.xanadu.enderdragon.util.MyDragon;
import pers.xanadu.enderdragon.util.Version; import pers.xanadu.enderdragon.util.Version;
@@ -26,6 +28,7 @@ public class DragonSpawnListener implements Listener {
public void OnDragonSpawn(final CreatureSpawnEvent e){ public void OnDragonSpawn(final CreatureSpawnEvent e){
if(!(e.getEntity() instanceof EnderDragon)) return; if(!(e.getEntity() instanceof EnderDragon)) return;
if(Config.blacklist_worlds.contains(e.getEntity().getWorld().getName())) return; if(Config.blacklist_worlds.contains(e.getEntity().getWorld().getName())) return;
if(Config.blacklist_spawn_reason.contains(e.getSpawnReason().name())) return;
EnderDragon dragon = (EnderDragon) e.getEntity(); EnderDragon dragon = (EnderDragon) e.getEntity();
MyDragon myDragon = null; MyDragon myDragon = null;
if(e.getSpawnReason() == CreatureSpawnEvent.SpawnReason.DEFAULT){ if(e.getSpawnReason() == CreatureSpawnEvent.SpawnReason.DEFAULT){
@@ -54,8 +57,8 @@ public class DragonSpawnListener implements Listener {
modifyAttribute(dragon, Attribute.GENERIC_ARMOR_TOUGHNESS, myDragon.armor_toughness_modify); modifyAttribute(dragon, Attribute.GENERIC_ARMOR_TOUGHNESS, myDragon.armor_toughness_modify);
String color = myDragon.glow_color.toUpperCase(); String color = myDragon.glow_color.toUpperCase();
if(!color.equals("NONE")) setGlowingColor(dragon,getGlowColor(color)); if(color.equals("NONE")) dragon.setGlowing(false);
else dragon.setGlowing(false); else setGlowingColor(dragon,getGlowColor(color));
String bossBar_color = myDragon.bossbar_color.toUpperCase(); String bossBar_color = myDragon.bossbar_color.toUpperCase();
String bossBar_style = myDragon.bossbar_style.toUpperCase(); String bossBar_style = myDragon.bossbar_style.toUpperCase();
@@ -69,7 +72,7 @@ public class DragonSpawnListener implements Listener {
else if(Version.mcMainVersion >= 12){ else if(Version.mcMainVersion >= 12){
getInstance().getBossBarManager().setBossBar(dragon.getWorld(),myDragon.display_name,bossBar_color,bossBar_style); getInstance().getBossBarManager().setBossBar(dragon.getWorld(),myDragon.display_name,bossBar_color,bossBar_style);
} }
//dragon.getMetadata(); Bukkit.getPluginManager().callEvent(new DragonRespawnEvent(dragon,e.getSpawnReason(),myDragon));
} }
} }
+4
View File
@@ -67,6 +67,10 @@ blacklist_worlds:
- 'world' - 'world'
- 'world_nether' - 'world_nether'
#生成原因包含在这里的末影龙不被插件监听
#举例: COMMAND,CUSTOM,DEFAULT
blacklist_spawn_reason: []
#可选: [default/nbt/advanced] #可选: [default/nbt/advanced]
item_format: item_format:
reward: default reward: default
+4
View File
@@ -66,6 +66,10 @@ blacklist_worlds:
- 'world' - 'world'
- 'world_nether' - 'world_nether'
#ender_dragon with these spawn reason will be ignored by this plugin.
#example: COMMAND,CUSTOM,DEFAULT
blacklist_spawn_reason: []
#optional: [default/nbt/advanced] #optional: [default/nbt/advanced]
item_format: item_format:
reward: default reward: default
+1 -1
View File
@@ -1,5 +1,5 @@
name: EnderDragon name: EnderDragon
version: 2.2.0 version: 2.3.0
main: pers.xanadu.enderdragon.EnderDragon main: pers.xanadu.enderdragon.EnderDragon
author: Xanadu13 author: Xanadu13
api-version: 1.13 api-version: 1.13