Dragons Lair
Hey people out there!
Some would people would say "Yet again another RPG plugin?" and apparently I can't deny that but hold on, this one is different. This plugin allows you to do things that you might've ever thought of but weren't able to do. It gives life to a dead city, creating new friendships with a new way of cooperation and generally giving Minecraft that what's missing: a goal. On top of that, everything is fully customizable, so you're able to make your wishes come true in the way you want them to be. No barriers, no borders, nothing that prevents you from doing the things you've ever wanted. Everything is about to come true. Dragons Lair.
What does it provide?
- NPCs you can talk to like they're actually real!
- Dungeon system. - Group together with your friends - Save your progress and recover it on the next player - Everyone can play the same dungeon over and over like it would be their first time
- React on player actions with anything you'd imagine
- Database? Here we go!
- Easy configuration
This is just the general information, there's a lot more to discover ;)
Commands?
There are only two commands available:
/dl config:
- Opens the config for dragons lair. You just type in what you want, no additional command needed.
/dl reload:
- Only needed if you did something in the database to sync it with dragons lair.
And those are all the commands!
Permissions?
There is only one permission, which is used for the config and reload:
dragonslair.config
It gives access to the above commands.
Current Version
Version 2.3 (official release)
kumpelblase2.
Videos
Tutorials:
Part 1:
http://www.youtube.com/watch?v=QvRsR1ktvEY
Part 2:
http://www.youtube.com/watch?v=0Gvi3-aJPjI
Conversation creation:
http://www.youtube.com/watch?v=ksjdsq9fRnk
Block based triggers:
http://www.youtube.com/watch?v=7w-2tTgLpS4
Hello Kumpelblase,
thx for your work and sharing it with us. It's a great Plug. Not having such a tool in Beta made me quit MC over half a year ago.
Didin't test the Plug that much by now, but is it possible to let NPC's, created with ur tool, trigger Trigger and start Events ? Is it generally possible with the MC mechanics/possible to code ?
A specified NPC (npc_id:1;triggerable: true/false) walks over a movement trigger and starts a big script with interacts to other NPC's, have dialogs between NPC's etc etc.
@skech1080
But still, what should happen to the items?
@kumpelblase2
I like that idea. You should make it an option though, it'd be useful for some dungeons, but you should be able to set the type. Like, if for example you made your dungeon type "WoW" then it would work like that. Also, thanks again for continuing to develop this plugin. It's very useful!
Since I don't really have a good idea on how I'm gonna implement an upcoming feature, I'm gonna make it a public question. I'm planning (and already mostly finished) a respawn system like in WoW, so when you die, you get ported to the starting point of the dungeon and act like a ghost, you can't be seen by any other player, can't pickup items nor break or use stuff. When you get in range of your death point, you can either respawn (which is free) or get resurrected which costs money but will give you your old items back. The question now is, what should happen with the items on death? Should they get removed instantly? Tell me what you think!
So now I'm back from vacation :) Even though I said that I won't be able to take a look at the code, I found some time on the train to actually do something. The changes will be in the next release which might be coming out the next days already. However, I need to do some testing before that which might take a long time.
See ya, kumpelblase2.
@skech1080
All the things get saved automatically when any changes were made. E.g. : You create a new dungeon and as soon as it says "dungeon created" it's already in the database. Even if you change an option for an event, as soon as you finish editing it, it'll be in the database. Creating a manual save feature would create a lot of overhead that doesn't need to be.
@xxdabl00nxx @skech1080 @twisted420mc
Should be fixed in the next version.
@Kabyl
Take a look at the 'EXECUTE_COMMAND' event :P
However, I'm also gonna investigate in the database connection problems which some people seem to have...
i would really like to use this plugin but i get
2012-08-13 22:01:05 [INFO] [Dragons Lair] Enabling Dragons Lair v2.1 2012-08-13 22:01:17 [SEVERE] Error occurred while enabling Dragons Lair v2.1 (Is it up to date?) java.lang.NoSuchMethodError: net.minecraft.server.NetworkManager.<init>(Ljava/net/Socket;Ljava/lang/String;Lnet/minecraft/server/NetHandler;)V at com.topcat.npclib.nms.NPCNetworkManager.<init>(NPCNetworkManager.java:15) at com.topcat.npclib.NPCManager.<init>(NPCManager.java:42) at de.kumpelblase2.dragonslair.DungeonManager.<init>(DungeonManager.java:39) at de.kumpelblase2.dragonslair.DragonsLairMain.onEnable(DragonsLairMain.java:51) at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217) at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:365) at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381) at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:265) at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:247) at net.minecraft.server.MinecraftServer.i(MinecraftServer.java:296) at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:275) at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:225) at net.minecraft.server.DedicatedServer.init(DedicatedServer.java:140) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:380) at net.minecraft.server.ThreadServerApplication.run(SourceFile:539)
Hello again kumpelblase2, i hope your vacation is going well. I have a question... is it possible to set up a player command as an event, or does that functionality exist already?
An example would be using this to give players certain permission nodes based on completion of certain quests.
Thanks!
Holy shit! This is just... sick
@xxdabl00nxx
same
On the 1st compatible build of bukkit that works with the new 1.3.1 update, I got this error on start up, I hope you can fix it! :)
2012-08-02 10:58:40 [INFO] [Dragons Lair] Enabling Dragons Lair v2.1 2012-08-02 10:58:40 [SEVERE] Error occurred while enabling Dragons Lair v2.1 (Is it up to date?) java.lang.NoSuchMethodError: net.minecraft.server.NetworkManager.<init>(Ljava/net/Socket;Ljava/lang/String;Lnet/minecraft/server/NetHandler;)V at com.topcat.npclib.nms.NPCNetworkManager.<init>(NPCNetworkManager.java:15) at com.topcat.npclib.NPCManager.<init>(NPCManager.java:42) at de.kumpelblase2.dragonslair.DungeonManager.<init>(DungeonManager.java:39) at de.kumpelblase2.dragonslair.DragonsLairMain.onEnable(DragonsLairMain.java:51) at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217) at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381) at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:263) at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:245) at net.minecraft.server.MinecraftServer.i(MinecraftServer.java:292) at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:271) at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:221) at net.minecraft.server.DedicatedServer.init(DedicatedServer.java:140) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:376) at net.minecraft.server.ThreadServerApplication.run(SourceFile:539)
When I start my server too, this happens. It probably doesn't save because it's incapable of making new files...
5:45:03 PM [INFO] [Dragons Lair] Unable to load chapters from database: Table 'dragslair.chapters' doesn't exist 5:45:03 PM [INFO] [Dragons Lair] Unable to load objectives from database: Table 'dragslair.objectives' doesn't exist 5:45:03 PM [INFO] [Dragons Lair] Unable to load dialogs from database: Table 'dragslair.dialogs' doesn't exist 5:45:04 PM [INFO] [Dragons Lair] Unable to load npcs from database: 5:45:04 PM [SEVERE] com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dragslair.npcs' doesn't exist 5:45:04 PM [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 5:45:04 PM [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 5:45:04 PM [SEVERE] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 5:45:04 PM [SEVERE] at java.lang.reflect.Constructor.newInstance(Unknown Source) 5:45:04 PM [SEVERE] at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) 5:45:04 PM [SEVERE] at com.mysql.jdbc.Util.getInstance(Util.java:382) 5:45:04 PM [SEVERE] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052) 5:45:04 PM [SEVERE] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593) 5:45:04 PM [SEVERE] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525) 5:45:04 PM [SEVERE] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986) 5:45:04 PM [SEVERE] at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140) 5:45:04 PM [SEVERE] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626) 5:45:04 PM [SEVERE] at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2111) 5:45:04 PM [SEVERE] at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2273) 5:45:04 PM [SEVERE] at de.kumpelblase2.dragonslair.settings.Settings.loadNPCs(Settings.java:138) 5:45:04 PM [SEVERE] at de.kumpelblase2.dragonslair.settings.Settings.loadAll(Settings.java:26) 5:45:04 PM [SEVERE] at de.kumpelblase2.dragonslair.DragonsLairMain$1.run(DragonsLairMain.java:72) 5:45:04 PM [SEVERE] at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:126) 5:45:04 PM [SEVERE] at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:525) 5:45:04 PM [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:451) 5:45:04 PM [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:492) 5:45:04 PM [INFO] [Dragons Lair] Unable to load triggers from database: Table 'dragslair.triggers' doesn't exist 5:45:04 PM [INFO] [Dragons Lair] Unable to load events from database: Table 'dragslair.events' doesn't exist 5:45:04 PM [INFO] [Dragons Lair] Unable to load dungeons from database: Table 'dragslair.dungeons' doesn't exist 5:45:04 PM [SEVERE] com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dragslair.log' doesn't exist 5:45:04 PM [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 5:45:04 PM [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 5:45:04 PM [SEVERE] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 5:45:04 PM [SEVERE] at java.lang.reflect.Constructor.newInstance(Unknown Source) 5:45:04 PM [SEVERE] at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) 5:45:05 PM [SEVERE] at com.mysql.jdbc.Util.getInstance(Util.java:382) 5:45:05 PM [SEVERE] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052) 5:45:05 PM [SEVERE] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593) 5:45:05 PM [SEVERE] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525) 5:45:05 PM [SEVERE] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986) 5:45:05 PM [SEVERE] at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140) 5:45:05 PM [SEVERE] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626) 5:45:05 PM [SEVERE] at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2111) 5:45:05 PM [SEVERE] at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2273) 5:45:05 PM [SEVERE] at de.kumpelblase2.dragonslair.logging.LoggingManager.loadEntries(LoggingManager.java:27) 5:45:05 PM [SEVERE] at de.kumpelblase2.dragonslair.DragonsLairMain$1.run(DragonsLairMain.java:73) 5:45:05 PM [SEVERE] at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:126) 5:45:05 PM [SEVERE] at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:525) 5:45:05 PM [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:451) 5:45:05 PM [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:492) 5:45:05 PM [INFO] [Dragons Lair] Done.
when I start my server I get this error: [WARNING] [Dragons Lair] Couldn't connect to SQL database. Stopping... Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Also, I'd love to have a manual save feature. When I stop my server, this happens:
Log: [spoiler] 4:49:58 PM [INFO] [Dragons Lair] Disabling Dragons Lair v2.1 4:49:58 PM [WARNING][Dragons Lair] Error creating query 'REPLACE INTO triggers(trigger_id,trigger_type,trigger_type_options,trigger_action_event,trigger_cooldowns) VALUES(?,?,?,?,?)'. 4:49:58 PM [SEVERE] com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed by the driver. 4:49:58 PM [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 4:49:58 PM [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 4:49:58 PM [SEVERE] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 4:49:59 PM [SEVERE] at java.lang.reflect.Constructor.newInstance(Unknown Source) 4:49:59 PM [SEVERE] at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) 4:49:59 PM [SEVERE] at com.mysql.jdbc.Util.getInstance(Util.java:382) 4:49:59 PM [SEVERE] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013) 4:49:59 PM [SEVERE] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) 4:49:59 PM [SEVERE] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) 4:49:59 PM [SEVERE] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) 4:49:59 PM [SEVERE] at com.mysql.jdbc.ConnectionImpl.throwConnectionClosedException(ConnectionImpl.java:1213) 4:49:59 PM [SEVERE] at com.mysql.jdbc.ConnectionImpl.checkClosed(ConnectionImpl.java:1200) 4:50:00 PM [SEVERE] at com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4203) 4:50:00 PM [SEVERE] at com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4169) 4:50:00 PM [SEVERE] at com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4178) 4:50:00 PM [SEVERE] at de.kumpelblase2.dragonslair.DragonsLairMain.createStatement(DragonsLairMain.java:334) 4:50:00 PM [SEVERE] at de.kumpelblase2.dragonslair.api.Trigger.save(Trigger.java:191) 4:50:00 PM [SEVERE] at de.kumpelblase2.dragonslair.DungeonManager.saveCooldowns(DungeonManager.java:542) 4:50:00 PM [SEVERE] at de.kumpelblase2.dragonslair.DragonsLairMain.onDisable(DragonsLairMain.java:184) 4:50:00 PM [SEVERE] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:219) 4:50:00 PM [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:363) 4:50:01 PM [SEVERE] at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:400) 4:50:01 PM [SEVERE] at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:393) 4:50:01 PM [SEVERE] at org.bukkit.craftbukkit.CraftServer.disablePlugins(CraftServer.java:252) 4:50:01 PM [SEVERE] at net.minecraft.server.MinecraftServer.stop(MinecraftServer.java:401) 4:50:01 PM [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:481) 4:50:01 PM [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:492) 4:50:01 PM [SEVERE] Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 256,324 milliseconds ago. The last packet sent successfully to the server was 1 milliseconds ago. 4:50:01 PM [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 4:50:02 PM [SEVERE] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 4:50:02 PM [SEVERE] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 4:50:02 PM [SEVERE] at java.lang.reflect.Constructor.newInstance(Unknown Source) 4:50:02 PM [SEVERE] at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) 4:50:02 PM [SEVERE] at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116) 4:50:02 PM [SEVERE] at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3082) 4:50:02 PM [SEVERE] at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2968) 4:50:02 PM [SEVERE] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3516) 4:50:02 PM [SEVERE] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986) 4:50:03 PM [SEVERE] at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140) 4:50:03 PM [SEVERE] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626) 4:50:03 PM [SEVERE] at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2111) 4:50:03 PM [SEVERE] at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1362) 4:50:03 PM [SEVERE] at de.kumpelblase2.dragonslair.DragonsLairMain.isDatabaseAlive(DragonsLairMain.java:534) 4:50:03 PM [SEVERE] at de.kumpelblase2.dragonslair.DragonsLairMain.createStatement(DragonsLairMain.java:331) 4:50:03 PM [SEVERE] ... 11 more 4:50:03 PM [SEVERE] Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost. 4:50:03 PM [SEVERE] at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2529) 4:50:03 PM [SEVERE] at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2979) 4:50:04 PM [SEVERE] ... 20 more 4:50:04 PM [WARNING][Dragons Lair] Unable to save trigger 1 4:50:04 PM [WARNING][Dragons Lair] null [/spoiler]
Hi, I love your plugin! But the dialog system is a bit too confusing, I'd love it if you showed how you made the dialog in your tuts, like the 1 2 and 3 more clearly, also, Whenever I attack an NPC made by DL it spews errors then crashes the server.
Ok guys, I'll be on vacation for 3 weeks from tomorrow so I'm not able to answer you nor do any code related changes. I hope that I can at least take a look here one a week to see what's going on.
However, have a great time and I see you when I'm back at home :)
kumpelblase2
New Version is out!
You can now have multiple NPCs with the same name, yaay! But keep in mind: when you have more than one NPC with the same name, please use the ID for triggers and events instead of the name!
For those who're using SQLite: In order to let things work properly, please let dragons lair recreate the whole database. You do that by removing the database file, setting the 'rev' value in the config to 0 and then starting the server again. You can, of cause, save the data and later insert them again.
@Kabyl
I don't think it's a conflict because it might be a result of me not testing it completely and generally messing up the last version. I did some changes (especially the NPCs) so some things got really messy but it should be fixed in the next update which I upload in the next 5 mins or so.
Thanks for the report and sorry for any problems caused.
sorry to pester... but i have another one for you:
Could not pass event CraftItemEvent to Dragons Lair: http:pastebin.com/SQA9bYDp
I do have disablecraft installed... could this be a conflict?
@kumpelblase2
perfect! i'll try that.
thanks! :-)
update:it worked! you are much appreciated! ^_^