I think that while using a network based interface provides interoperability, it goes against the stated design goal of being lightweight as that would add a very noticeable overhead. For myself, C# is my job, and so being able to write plugins using it would be great. That would also allow me to much tighter integrate the server wrapper I'm making, since I'd be able to create specific functionality on the server that my wrapper can consume.
I an a c# student / user Wanna create plugins Bukkit = best 2011 event Bukkit.IsBukkitTheBest(); //will return f**k yeah
While language independence for plugins sounds cool, I'm a little worried about the performance impact of doing so. Moving data across process boundaries is expensive and in many cases OS dependent. The only OS independent method is using the TCP stack as Hey0 suggested. Doing so in an OS/Language agnostic way will require some serialization mechanism for marshaling plugin calls and data across the process boundary. There will also be an issue with type system alignment between languages that will have to be dealt with. There are existing technologies that solve some of these problems but they are quite heavy weight and are not at all appropriate for the real-time processing required for a game server. Finally, plugin portability becomes an issue when some languages are used. If all plugins are written in Java, then all plugins can be loaded into the server's process space, type systems align, and serialization overhead becomes a non-issue.
When done properly, Java -> C via JNI is pretty performant, but going the other way is very slow. Additionally, you can't easily pass the server's domain objects across the JNI boundary without first serializing them.
I've been playing arround with JPython which complies Python into Java. Seems to work just fine. Having said that, Python is OS independant anyways so JPython is kinda pointless. Maybe something like this exists for other languages though? I'm too lazy to check since I'll just be sticing to these two languages.
I think it should be 1 language only, to be honest I do not want to have to sort out dependancys for x amount of languages.
I think Python might be included, with the whole Jython thing. I'm not great with Python though, neither with Java. I'm currently trying to learn Java. --- merged: Jan 5, 2011 4:37 AM --- I don't think PHP is possible. PHP is a web language. It has a lot of uses, but not this.
Methods whith names that beginn with 'Is' should always only return a bool. (CleanCode) Additionally: C# is mostly derived from Java, if you are a nice coder you wouldnt have problems to learn java in 1 week. Wtf? Thats fail, don´t put whitespaces into varnames, or (in case you mean a stringobject) use doublequotes like this: Bukkit bukkit = new Bukkit(); bukkit.Text = "Best 2011 event."; Console.WriteLine(Bukkit.WhatIsBukket()); Whitch could produce the following output: 'Best 2011 event.' If you need help @ learning C#, OOP-Basics or sth. like that, just PN me for my MSN-Addy. RTFM... don´t speak about things you have no idea from. (PLEASE read this: http://www.php.net/manual/en/ref.sockets.php) PHP supports sockets, if the Bukkit-team implements a TCP-way communikation with the library, you would be able to write plugins in PHP too (IMHO useless, but possible). I agree with hey0´s suspicion, that they will include TCP-communication to be able to access the API with any programm written in any language. If so, your discussions about 'WHAT' languages to support are needless and dumb, addidtionally every experienced sofwareengineer (what most people posting here obviously NOT are) knows there is only support for EVERY langage, or just java. Nobody from the Bukkit dev-team will start to develop anything eg. just for C#-support or just python-support, that would be bullshit and wasted code. So please stop your 'suggestion of my favourite coding language/s', thats senseless. If BrainFuck supports sockets: You will be able to write Plugins in BrainFuck If WhiteSpace supports Sockets: You will be able to write Plugins in WhiteSpace etc. Hope you understand...
(Offtopic) Doin Funny-code is nice, but althought its 'funny'-code it has to be logical. Prove it and i believe it =) (allready released sth.?)
well, isn't the thing you startup called bukkit?? anyway the mod is called bukkit soooo... and BSM in dutch means beweging sport maatschappij (english: gymnastics, sport, commmunity) --- merged: Jan 5, 2011 1:32 PM --- and also i don't get it anymore bukkit, craftbukkit what do i need to download when bukkit is done 1 says craftbukkit is for plugin developing only and the other one says its the mod but what is bukkit then confused
If you want to try Python/Jython with hMod, use the EventScripts plugin here: http://minecraft.eventscripts.com/viewtopic.php?t=41767 I've tried to make it as similar to my EventScripts plugin for Counter-Strike: Source as possible, though a Java game engine is quite different than Source (C++). Once bukkit or Minecraft API is around, I'll be porting the same engine over there as best as possible. Here are some simple Minecraft Python examples and some released addons for reference. -Mattie
I would like to be able to program my plugins in whitespace. It is by far the best language for such a task.
Useless how? If they all use the same API, it would be as worthwhile as any other language. PHP sockets are actually rather easy to make (I've made my own PHP-based chat server using sockets) and if needed would be fine. I do agree with your statement about Bauer not understanding PHP though. @Bauer: PHP is a scripting language and isn't made specifically for the web at all, nor is JavaScript, so technically one could just as easily make a plugin in JavaScript or anything that can be run without a browser.
AppleScript: The simplicity of Apple, the speed of a 386 :-\ And why yes, I am a Mac guy. --- merged: Jan 6, 2011 2:56 AM --- Strangely enough, I read somewhere that the JVM can compile and run JavaScript as well as other languages (which is has support for). That means to me that JavaScript support won't really be needed. Not sure I'm too keen on this whole "minecraft becomes a service and you hook in via RPC on the local host" paradigm some here are talking about; it seems like a whole lot of complexity and overkill... but if it's stable and it's fast I guess I can't see a reason why not.
Are you asking how to make a plugin framework in C# or how you would be able to create a plugin for Bukkit in C#? I can help you if you are wanting a plugin framework for a C# project.
I'm pretty sure it wouldn't even be possible to do it with AppleScript. AS is confined to OS X and only meant to make services and programs specifically for your machine. It's also extremely slow.
All I ask is that the choice of languages not limit when or where the mod can run. I dont ever want to be in a situation where I cant use a linux server or host because that server doesn't support Microsoft .Net Framework, or libomfgv4 and not linomfgv3, etc.