Enderdragons+
Enderdragons Plus
Description
The plugin controls the spawning of Enderdragons. It fixes the feature that Enderdragons will always fly to the point 0,70,0 if they have no target. It also gives the dragons a home position, where it will return, if he flies to far away.
The Plugin will replace all dragons witch are spawned by these dragons. (except they are not of class: net.minecraft.server.EntityEnderdragon). It is compatible with DragonTravel. It is compatible with RideThaDragon.
There are multiple possibility to configure Dragons. Also there is the possibility to have different Dragon types (different Ages of Dragons) on the Server (see the section Dragon Ages).
Also you can ride dragons with this plugin and fire fireballs while riding (pure Awsomeness)!!
IMPORTANT! This will only work with CraftBukkit!!! (Tested with Version 1.7.2 R0.1) All other Bukkit Implementation and Versions can work, but it is not guaranteed.
Commands
- /edp : gives some info to the plugin
- /sedp : spawns an EnderDragon.
- /kedp [range] : kills all registered EnderDragons in the given range. range = 0 means All Enderdragons regardless of range and world.
- /edpunload : unloads all EnderDragons to an extenal files.
- /edpload : loads all external EnderDragons from files.
- /edpinfo : gives info how many EnderDragons are loaded.
- /edpreload : reloads the config of EnderDragons+.
- /edpgohome : sends all Enderdragons to their Home-Locations
- /edprespawner ... : does respawner commands
- /edpride [speed] : lets you ride a dragon.
PermissionNodes
Permissions are bound to the commands:
- edplus.create : /sedp
- edplus.kill : /kedp [range]
- edplus.commandback : /edpgohome
- edplus.reloadconfig : /edpreload
- edplus.unloadall : /edpuload
- edplus.loadall : /edpload
- edplus.info : /edpinfo
- edplus.riding.ride : /edpride [speed]
- edplus.riding.fireball : firing a fireball while riding a dragon (press q, key for throwing item away. Has to have an Item in hand)
Others:
- edplus.targeting.ignore : The person gets ignored by Dragons
- edplus.riding.fireball : fires a Fireball while riding with key 'q' (throw Item away).
Riding a Dragon
Simply use /edpride [speed] . The Speed is from very slow to unlimited. Recomondations are: slow: speed = 1, medium: speed = 3, fast: speed = 5.
You can Fire fireballs when riding a dragon. Simply press 'q' (throw Item away Key). Then The Dragon will fire a fireball on your Target location.
There are 2 Permissions. One for Riding, one for Fireball spitting. -> see Chapter: PermissionNodes.
Respawners:
IMPORTANT!!!!: if a player does not have the edplus.resawner.see Permission, he will not see the Respawner-Sign! Permissions:
- edplus.respawner.create: '/edprespawner create <spawnername> [respawnTime] [dragons]' and '/edprespawner link <spawnername>'
- edplus.respawner.remove: Hitting the sign to kill the respawner
- edplus.respawner.clear: /edprespawner clear
- edplus.respawner.info: /edprespawner info
- edplus.respawner.debug: /edprespawner debugsigns
- edplus.respawner.see: IMPORTANT: If the Player has this permission, he sees the Respawner Sign, if not, he does not see it!!
- edplus.respawner.port: /edprespawner port [number]
Commands:
- /edprespawner create <spawnername> [RespawnTime] [MaxDragons] : creates a respawner named: as in <spawnername>, with [RespawnTime] as respawn time and [MaxDragons] as maximum dragons at the same time (respawn time is in SECONDS).
- /edprespawner link <spawnername> : links your current location to the spawner named in: <spawnername>
- /edprespawner clear : clears all respawners and deletes them. (Emergency command)
- /edprespawner info : gives info where and how many Respawners are.
- /edprespawner debugsigns : if the respawner exists, but the Sign is not there, it will be replaced. ATTENTION, noticing, if the Sign is invisible!!
- /edprespawner port <Respawner Name> [number] : ports to the respawner with the name in <Respawner Name> and the Number: [number] (can be seen on sign or with /edprespawner info)
The Plugin is compatible to the following PermissionSystems:
- Vault
- PermissionsEx
- GroupManager
- BukkitPermissions
- bPermissions (experimental)
- No permissions (Op only)
Config
The Configuration is mostly good documented (config.yml).
Dragon Ages
There is another configuration. The Dragon ages located in the ageTable.yml.
Different Dragons with different ages can be spawned. This makes it possible to have different difficulties (like: small, normal, hard, etc.). For further information and syntax look at: Dragon Ages.
API (for developer)
API class: de.tobiyas.enderdragonsplus.API.DragonAPI Methods:
- public static boolean setTarget(LivingEntity dragon, LivingEntity target);
- public static boolean setTarget(LivingEntity dragon, Player player);
- public static boolean setTarget(LivingEntity dragon, Location location);
- public static boolean sendHome(LivingEntity dragon);
- public static boolean setNewHome(LivingEntity dragon, Location location);
- public static boolean setNewHomeAndGoTo(LivingEntity dragon, Location location);
- public static LivingEntity spawnNewEnderdragon(Location location);
- public static boolean setPropertyToDragon(LivingEntity dragon, String property, Object value);
- public static Object getPropertyToDragon(LivingEntity dragon, String property);
- public static boolean spitFireballOnTarget(LivingEntity dragon, Entity target);
Information that has to be given (Disclaimer):
- The Plugin is capable of uploading errors to a database. This is disabled by default. To Enable this feature, enable it in the configuration (uploadErrors: true).
- The Plugin collects metric data for usage (https://mcstats.org/). This is enabled by default. To disable this feature, set the config option to false (uploadMetrics: false).
Known Bugs (V1.11.0)
- On dragon reloading (chunk unload and reload) it will give a Bukkit warning that the dragon was stored wrong
Upcoming in next Version (V1.11.1)
- Currently working on V1.11.1:
- Untested:
- Still missing: - Fire breath (70%, looks promising, but needs more testing)
Thanks To:
- @NazzyDragon: for the Idea and the support for testing :)
- @V10Lator: for the Plugin: RideThaDragon (gonna miss you :( thanks for the cool plugin!)
- @XemsDoom, @Phiwa: for the Plugin: DragonTravel (gonna miss you :( thanks for the cool plugin!)
- @CraftBukkit team: for the API and "cleaning" Notch's code
OTHER
If you want to help me by donating, this would be great! This Project consumes a lot of time. The changes the bukkit Team / Mojang do are not always that fine to look through. Donating always motivates to do more/better work ;) . The link is on the top right!
I need some 'Beta testing people' to help me find bugs to already existing stuff. :/ can't do coding + testing at once (unfortunately I only have 2 arms...).
Update (1.5) is uploaded. Will be available soon
@Faldonboy Well this is a client Problem. I can try adding a virtuell Adapter for this. Not sure if it is easily possible. Done... Wasn't that hard after all. lol.
@Ace199102840 hm... Yeah I see the Problem.
(I can't replicate it, but I see it). I guess I will throw a new Version out today.
If the Errors happen, the whole Server will crash, because this is an Craftbukkit intern error, which is in it's main thread and crashes this. The problem is, this can't be controlled very well. :/
@Tobiyas
I won't make you do something not needed unless it becomes an issue :). I know that Towny blocks TNT and Creeper Explosions and Fire spreading, I wonder though if the event fires the same "ExplosionPrimeEvent" as a Ghast Hit Explosion. If so there should not be any issues.
@Tobiyas
hay theres another weird bug i found i just noticed you replied to my post...... there's a bug where if the player dies the whole plugin seems to crash the whole server... or other times just randomly the console says error cant find distance between dragon and the world... something along those lines... since then i deleted the plugin cause it was doing it so often.... if i can repeat the error i will put in another post about it . thank you :)
i told ya that if the error happens again id let ya know..... so here's the error i got..... >.<
2:39:37 AM [SEVERE] java.lang.IllegalArgumentException Cannot measure distance between world and world_the_end
2:39:37 AM [SEVERE] at org.bukkit.Location.distanceSquared(Location.java:381)
2:39:37 AM [SEVERE] at org.bukkit.Location.distance(Location.java:364)
2:39:37 AM [SEVERE] at de.tobiyas.enderdragonsplus.entity.LimitedEnderDragon.checkSpitFireBall(LimitedEnderDragon.java:436)
2:39:37 AM [SEVERE] at de.tobiyas.enderdragonsplus.entity.LimitedEnderDragon.e(LimitedEnderDragon.java:367)
2:39:37 AM [SEVERE] at net.minecraft.server.EntityLiving.F_(EntityLiving.java:447)
2:39:37 AM [SEVERE] at net.minecraft.server.World.entityJoinedWorld(World.java:1262)
2:39:37 AM [SEVERE] at net.minecraft.server.WorldServer.entityJoinedWorld(WorldServer.java:106)
2:39:37 AM [SEVERE] at net.minecraft.server.World.playerJoinedWorld(World.java:1244)
2:39:37 AM [SEVERE] at net.minecraft.server.World.tickEntities(World.java:1151)
2:39:37 AM [SEVERE] at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:558)
2:39:37 AM [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:459)
2:39:37 AM [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
2:39:37 AM [SEVERE] Unexpected exception
2:39:37 AM java.lang.IllegalArgumentException Cannot measure distance between world and world_the_end
2:39:37 AM at org.bukkit.Location.distanceSquared(Location.java:381)
2:39:37 AM at org.bukkit.Location.distance(Location.java:364)
2:39:37 AM at de.tobiyas.enderdragonsplus.entity.LimitedEnderDragon.checkSpitFireBall(LimitedEnderDragon.java:436)
2:39:37 AM at de.tobiyas.enderdragonsplus.entity.LimitedEnderDragon.e(LimitedEnderDragon.java:367)
2:39:37 AM at net.minecraft.server.EntityLiving.F_(EntityLiving.java:447)
2:39:37 AM at net.minecraft.server.World.entityJoinedWorld(World.java:1262)
2:39:37 AM at net.minecraft.server.WorldServer.entityJoinedWorld(WorldServer.java:106)
2:39:37 AM at net.minecraft.server.World.playerJoinedWorld(World.java:1244)
2:39:37 AM at net.minecraft.server.World.tickEntities(World.java:1151)
2:39:37 AM at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:558)
2:39:37 AM at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:459)
2:39:37 AM at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
its been doing this since before your update and it boots off everyone and doesnt accept any connection. i have to completely stop the server and start it up again for it to work..... its a nasty bug please fix :)
Any chance you could fix the graphical error caused by setting a dragons hp above 200? It's not really a problem but it looks really buggy having 3 health bars on screen when I have it's hp set to 600
Pfiou its work ! ... Very nice !
Good plugin !
Ty :)
@cet0 Try deleting the file and using it normally. There shouldn't be any error afterwards (hopefully).
Yep ... my world does not match :
homeLocation: x: -178.23448838909837 y: 99.04930962498757 z: -154.7453031624737 world: world_the_end actualPosition: x: -166.8222145220539 y: 104.88280681075477 z: -106.79362366594884 uuid: b1d2166b-c997-43ff-a83f-80685332abcd flyingHome: false health: 200
And my world name is Battlecraft_the_end
:p
@cet0 Okay... This is strang.. but well at least I see, where the problem is..
Did you have a Dragon in a world you deleted? Or renamed the world? Can you check in the folder 'plugins/Enderdragonsplus/tempDragons' all files via text editor, if the option: "homeLocation.world" is a current world name?
I'm still gonna add a try catch there. Thanks for replying so fast :) This always helps developing better and faster.
Arf sorry i'm an error in a startup logs ... I type this in chat not in console.
http://pastebin.com/w0h655ZR
Ty :)
@cet0 Very strange... Works perfectly for me. Do you type this in the chat? Or in the console? Or use another way?
Is there any Error on startup? Can't find an Error at this place. :/
Hi tobiyas,
My logs => http://pastebin.com/nydHT29h
For /edprespawner create spawner 21600 1 & /edprespawner create spawner 240 1
Ty for your help :)
@Ace199102840 grml.... Thanks for the notice... Craftbukkit changed a bit... Just saw it.
Is fixed in the next version. (Don't quite understand why the guys from Bukkit need the expValues in 2 different places.... whatever).
it doesnt seem like the xp gained from killing a dragon works.... the default is 2000 but no one gets 2000.... and in the .yml file it is set at 50000 when i went to change it and i change it to 100,000 and still they barely get an xp..... the money reward does work though so that's nice.....
@cet0 Could you provide some more information please? A Stacktrace would be nice. Sadly I can't read them directly from your log, so you have to post them, PM them to me or open a ticket. Choose one of them, or I can't help you.
Hi,
I'm installing your plugin on my bukkit 1.2.5 server. The respawner dosn't work, each times that type the command i'm error haped : Internal error ...
very nice!
@ledhead900 The Fireballs are like Ghast Fireballs.
When they hit something, they call the ProjectileHitEvent, When they Explode, they call the ExplosionPrimeEvent.
Not Sure if towny checks explosions or checks if an fireball from a Ghast hits something (very big difference). I Looked into Towny and did not find any Listener for this event. Maybe it is done in another way, but I can't actually tell you.
You will have to try it, I guess. I can add a Fireball not doing dmg flag (maybe even stuck to worlds) for the next Version, if you like.
@EdictServer You are right... I failed at writing it down :(. There is a little letter flip in it. Damn...
Try edplus.repsawner.info.
Will be changed... Thanks for the notice :)